Nuestra característica de descubrimiento automático de contenedores le permite configurar una integración para monitor automáticamente los servicios que se ejecutan en múltiples contenedores. En el archivo de configuración de una integración, puede establecer los criterios de coincidencia del contenedor y el agente ejecuta la integración para cada contenedor local que coincida con los criterios.
Una integración se ejecutará tantas veces como encuentre elementos de descubrimiento. Si el descubrimiento no encuentra ningún contenedor, la integración no se ejecutará.
Sugerencia
Actualmente, el agente de infraestructura puede descubrir el contenedor docker local.
Añade marcador de posición a tu configuración
En tu configuración de integración, debes crear ${discovery.<property>}
marcador de posición. Luego, estos serán reemplazados automáticamente por información específica del contenedor.
Estos ejemplos (para entornos solo docker y para Kubernetes) muestran cómo configurar una integración NGINX para monitor todos los contenedores locales que tienen un nombre de imagen que contiene nginx
y que están etiquetados como env=production
. Cada servicio estará disponible a través de diferentes IP y puertos, por lo que deben ser variables.
Agregar propiedades de descubrimiento
Para configurar el descubrimiento, configure una entrada discovery
en su configuración de integración YAML usando las siguientes propiedades. Un contenedor coincidirá cuando all las propiedades coincidan con los valores definidos.
Sugerencia
Los valores de las propiedades coincidirán con un exact string, a menos que el valor a coincidir esté establecido entre /.../
. Los contenidos dentro de las barras se compararán como expresiones regulares.
Nombre de la clave de descubrimiento | Descripción |
---|---|
Tipo: String | Tiempo de vida de los resultados de descubrimiento almacenados en caché, utilizado para minimizar la cantidad de procesos de descubrimiento. Defina como un número seguido de una unidad de tiempo ( Ejemplos: Predeterminado: 1m |
Tipo: propiedades YAML | Definición coincidente del contenedor docker . Consiste en una propiedad
|
Ejemplo de descubrimiento
El siguiente ejemplo coincide con todos los contenedores docker cuya imagen comienza con httpd:
(proporcionada como una expresión regular) y está etiquetada como scrapable=yes
. Los resultados se almacenan en caché con un tiempo de vida de 5 minutos.
discovery: ttl: 5m docker: match: image: /^httpd:/ label.scrapable: yes
Información de contenedores disponibles
Nuestra característica de descubrimiento actualmente emite las siguientes variables, que pueden usarse para configurar su integración. El agente de infraestructura los reemplaza por los valores correspondientes del contenedor descubierto.
Importante
Asegúrese de agregar el prefijo discovery.
.
Variable | Descripción |
---|---|
| Dirección IP pública del contenedor, si la hubiera |
| Dirección IP privada del contenedor |
| Número de puerto público del contenedor |
| Número de puerto privado del contenedor |
| Nombre de la imágen |
| Nombre del contenedor |
| Cualquier etiqueta de contenedor, accesible por su nombre. |
Mapeo múltiples puertos
Cuando un contenedor expone muchos puertos públicos o privados, se puede acceder a ellos a través de discovery.private.ports.
o discovery.ports.
seguido de un índice que comienza en 0. Los puertos se indexan del valor de puerto privado más bajo al más alto.
Por ejemplo, un contenedor que expone los puertos privados 80 y 443 a través de los puertos públicos 2345 y 1111, respectivamente, proporcionaría las siguientes variables con sus respectivos valores:
Variable | Valor |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Importante
Observe que la palabra port
es singular en las variables no indexadas y plural en las variables indexadas.
Puertos mapeo por nombre de protocolo
Además de la indexación de la sección anterior, también se puede hacer referencia a los puertos por su nombre de protocolo (como tcp
, udp
, etc.). Por ejemplo, ${discovery.ports.tcp}
o ${discovery.ports.udp}
.
Si varios puertos coinciden con el mismo protocolo, también se pueden indexar según las reglas de la sección anterior: ${discovery.ports.tcp.0}
, ${discovery.ports.tcp.1}
, etc.