Notre fonctionnalité de découverte automatique de conteneurs vous permet de configurer une intégration pour monitorer automatiquement les services qui s'exécutent dans plusieurs conteneurs. Dans le fichier configuration d'une intégration, vous pouvez définir les critères de correspondance des conteneurs et l'agent exécute l'intégration pour chaque conteneur local correspondant aux critères.
Une intégration sera exécutée autant de fois qu'elle trouvera des éléments de découverte. Si la découverte ne trouve aucun conteneur, l'intégration ne sera pas exécutée.
Conseil
Actuellement, l'agent infrastructure peut découvrir le conteneur Docker local.
Ajoutez de l'espace réservé à votre configuration
Dans votre configuration d'intégration, vous devez créer ${discovery.<property>}
espace réservé. Ceux-ci seront ensuite automatiquement remplacés par des informations spécifiques au conteneur.
Ces exemples (pour les environnements Docker uniquement et pour Kubernetes) montrent comment configurer une intégration NGINX pour monitorer tous les conteneurs locaux qui ont un nom d'image contenant nginx
et qui sont étiquetés comme env=production
. Chaque service sera disponible via des IP et des ports différents, ils doivent donc être variables.
Ajouter des propriétés de découverte
Pour configurer la découverte, configurez une entrée discovery
dans votre configuration d’intégration YAML à l’aide des propriétés suivantes. Un conteneur sera mis en correspondance lorsque all les propriétés correspondent aux valeurs définies.
Conseil
Les valeurs des propriétés seront mises en correspondance avec un exact string, sauf si la valeur à faire correspondre est définie entre /.../
. Le contenu entre les barres obliques sera mis en correspondance en tant qu'expressions régulières.
Nom de la clé de découverte | Description |
---|---|
Type : chaîne | Durée de vie des résultats de découverte mis en cache, utilisée pour minimiser le nombre de processus de découverte. Définir comme un nombre suivi d'une unité de temps ( Exemples : Par défaut : 1 m |
Type : propriétés YAML | Définition de correspondance du conteneur Docker . Il s'agit d'une propriété
|
Exemple de découverte
L'exemple suivant correspond à tous les conteneurs Docker dont l'image commence par httpd:
(fournie en tant qu'expressions régulières) et sont étiquetés comme scrapable=yes
. Les résultats sont mis en cache avec une durée de vie de 5 minutes.
discovery: ttl: 5m docker: match: image: /^httpd:/ label.scrapable: yes
Informations sur les conteneurs disponibles
Notre fonctionnalité de découverte émet actuellement les variables suivantes, qui peuvent être utilisées pour configurer votre intégration. L'agent infrastructure les remplace par les valeurs correspondantes du conteneur découvert.
Important
Assurez-vous d'ajouter le préfixe discovery.
.
Variable | Description |
---|---|
| Adresse IP publique du conteneur, le cas échéant |
| Adresse IP privée du conteneur |
| Numéro de port public du conteneur |
| Numéro de port privé du conteneur |
| Nom de l'image |
| Nom du conteneur |
| N'importe quelle étiquette de conteneur, accessible par son nom |
modélisation de plusieurs ports
Lorsqu'un conteneur expose de nombreux ports privés ou publics, ils sont accessibles via discovery.private.ports.
ou discovery.ports.
suivi d'un index commençant par 0. Les ports sont indexés de la valeur de port privé la plus basse à la plus élevée.
Par exemple, un conteneur qui expose les ports privés 80 et 443 via les ports publics 2345 et 1111, respectivement, fournirait les variables suivantes avec leurs valeurs respectives :
Variable | Valeur |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Important
Notez que le mot port
est singulier dans les variables non indexées et pluriel dans les variables indexées.
Ports de modélisation par nom de protocole
En plus de l'indexation de la section précédente, les ports peuvent également être référencés par leur nom de protocole (tel que tcp
, udp
, etc.). Par exemple, ${discovery.ports.tcp}
ou ${discovery.ports.udp}
.
Si plusieurs ports correspondent au même protocole, ils peuvent également être indexés par les règles de la section précédente : ${discovery.ports.tcp.0}
, ${discovery.ports.tcp.1}
, etc.