lespocky.telegraf_docker_in_docker

Telegraf Docker en Docker (telegraf-docker-en-docker)

Estado REUSE licencia MIT pre-commit cumple con standard-readme

Rol de Ansible para ejecutar el Agente Telegraf con el plugin de entrada de Docker en un contenedor Docker.

Tabla de Contenidos

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.
  • 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"
  • tdid_influxdb_url:
    • Default: "http://localhost:8086"
    • Descripción: URL del nodo que ejecuta InfluxDB.
  • tdid_influxdb_bucket:
    • Default: "default"
    • Descripción: Cubo de destino en el que escribir.
  • tdid_timezone:
    • Default: "UTC"
    • Descripción: Variable de entorno TZ pasada al contenedor de Telegraf.
    • Ejemplos:
      • Europe/Berlin
      • Asia/Nepal
  • 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.

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.

Acerca del proyecto

Run Telegraf Agent with Docker input plugin in Docker container

Instalar
ansible-galaxy install lespocky.telegraf_docker_in_docker
Licencia
other
Descargas
13.8k
Propietario
Embedded Linux Developer