lespocky.telegraf_docker_in_docker
Telegraf Docker en Docker (telegraf-docker-en-docker)
Rol de Ansible para ejecutar el Agente Telegraf con el plugin de entrada de Docker en un contenedor Docker.
Tabla de Contenidos
- Antecedentes
- Requisitos
- Instalación
- Variables del Rol
- Dependencias
- Ejemplo de Playbook
- Contribución
- Licencia
- Información del Autor
Antecedentes
Telegraf es un agente que se utiliza a menudo para enviar métricas a InfluxDB. Ambos están escritos en el lenguaje Go, que es difícil de empaquetar para distribuciones tradicionales como Debian GNU/Linux, así que ejecutar estos en Docker es conveniente.
El plugin de entrada de Docker de Telegraf recopila métricas de contenedores Docker en ejecución desde la API de Docker Engine. Ejecutar el agente Telegraf en un contenedor Docker requiere acceso al endpoint de Docker en el host, generalmente un socket UNIX. Desde el punto de vista de la seguridad, tiene sentido ejecutar el agente como un usuario no privilegiado, lo que hace necesario tener un usuario en el sistema host que pertenezca al grupo docker, el cual puede ser utilizado desde dentro del contenedor para acceder a ese endpoint.
Este proyecto realiza toda la configuración de ese usuario y del contenedor en un rol de Ansible.
Requisitos
Los contenedores se configuran con el módulo community.docker.docker_container, que es parte de la colección community.docker. Puede que ya lo tenga instalado. Si no, siga la documentación del módulo sobre cómo instalarlo.
Instalación
Este rol se puede instalar a través de su requirements.yml, ya sea desde Ansible Galaxy o a través del repositorio Git.
Variables del Rol
Variables Obligatorias
tdid_influxdb_org
:- Descripción: Nombre de la organización en InfluxDB.
tdid_influx_token
:- Descripción: Token de la API de InfluxDB. Se recomienda no incluirlo en el playbook, sino usar un vault o una búsqueda segura.
Variables Opcionales
tdid_conf_dir
:- Default:
"/etc"
- Descripción: El directorio de destino en el host donde el rol copia el archivo de configuración.
- Default:
tdid_docker_image
:- Default:
"telegraf:latest"
- Descripción: Combinación de "telegraf" y alguna etiqueta. El valor por defecto usa la última imagen de Docker Hub.
- Ejemplos:
"telegraf:latest"
"telegraf:alpine"
"telegraf:1.23"
"telegraf:1.24-alpine"
- Default:
tdid_influxdb_url
:- Default:
"http://localhost:8086"
- Descripción: URL del nodo que ejecuta InfluxDB.
- Default:
tdid_influxdb_bucket
:- Default:
"default"
- Descripción: Cubo de destino en el que escribir.
- Default:
tdid_timezone
:- Default:
"UTC"
- Descripción: Variable de entorno
TZ
pasada al contenedor de Telegraf. - Ejemplos:
Europe/Berlin
Asia/Nepal
- Default:
tdid_user
:- Default:
"telegraf"
- Descripción: Usuario del sistema creado o modificado en el host.
- Antecedentes: Mapear usuarios arbitrarios del host a usuarios de contenedor no es fácil. Los derechos de acceso en el host se aplican a los mismos UIDs y GIDs numéricos dentro de los contenedores. Un proceso dentro de un contenedor que accede a algo en el host debe ejecutarse con el uid/gid requerido en el host para acceder a ciertas cosas. Es necesario tener un usuario en el grupo docker para acceder al endpoint de la API de Docker sin permisos de superusuario. Si no está presente en el host, este usuario se creará como un usuario del sistema y se agregará al grupo 'docker'. El agente de Telegraf puede ejecutarse dentro del contenedor con ese UID.
- Default:
Dependencias
No se utilizan otros roles de Galaxy, solo el módulo de la comunidad listado arriba.
Ejemplo de Playbook
Simplemente incluya el rol y establezca algunas variables.
Ejemplo Mínimo
- hosts: servers
roles:
- role: telegraf_docker_in_docker
vars:
tdid_influxdb_org: Home
tdid_influx_token: "{{ lookup( … ) }}"
Ejemplo Completo
- hosts: servers
roles:
- role: telegraf_docker_in_docker
vars:
tdid_influxdb_org: Home
tdid_influx_token: "{{ lookup( … ) }}"
tdid_conf_dir: "/etc/telegraf"
tdid_influxdb_bucket: devops
tdid_influxdb_url: "http://influx.example.org:8086"
tdid_docker_image: telegraf:1.24-alpine
tdid_timezone: "Europe/Berlin"
tdid_user: telegraf
Contribución
Se aceptan solicitudes de extracción.
Licencia
Este proyecto está licenciado bajo la Licencia MIT a menos que se indique lo contrario en el archivo y cumple con la conformidad REUSE.
© 2022 Alexander Dahl y colaboradores
Información del Autor
Escrito por Alexander Dahl para el monitoreo de infraestructura de Netz39.
Run Telegraf Agent with Docker input plugin in Docker container
ansible-galaxy install lespocky.telegraf_docker_in_docker