Docker: TIG Telegraf+InfluxDB+Grafana

2 minutos de lectura

En un anterior articulo expliqué la forma de instalar TIG (Telegraf+ InfluxDB+Grafana), puedes ir creando los contenedores de forma individual pero esta vez vamos a crear un stack sobre Docker y lo desplegaremos con docker-compose.

Preparativos

Docker

Debes de tener instalado docker en tu sistema, si aun no lo has hecho, abre una terminal y escribe el siguiente codigo


sudo apt-get update
sudo curl -sSL https://get.docker.com | sh

Para evitar errores de permisos, añade tu usuario al grupo docker

usermod -aG docker <your_user>

Docker-compose

Instala pip

sudo apt install python3-pip

Instala docker-compose

sudo pip3 install docker-compose

Y para comprobar que todo ha ido bien, ejecutamos

docker-compose --version

Despliegue

Creamos el fichero docker-compose.yml y pegamos el siguiente código

version: '3.5'
services:
  influxdb:
    image: influxdb
    environment:
      - INFLUXDB_DB=telegraf
      - INFLUXDB_USER=telegraf
      - INFLUXDB_USER_PASSWORD=xxxxxxx
    volumes:
      - influxdb:$PWD/var/lib/influxdb
    ports:
      - "8086:8086"
    networks:
      - backend
    labels:
      - "container_group=TIG"

  telegraf:
    image: telegraf
    volumes:
      - $PWD/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
    links:
      - influxdb
    networks:
      - backend
    labels:
      - "container_group=TIG"

  grafana:
    image: grafana/grafana
    environment:
      - GF_SERVER_ROOT_URL=http://192.168.2.3
      - GF_SECURITY_ADMIN_PASSWORD=xxxxxxxx
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,raintank-worldping-app,jdbranham-diagram-panel
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_SECURITY_DISABLE_GRAVATAR=true
      - GF_SERVER_DOMAIN=ejemplo.com
    volumes:
      - grafana:$PWD/var/lib/grafana
    networks:
      - backend
    ports:
      - 3000:3000
    labels:
      - "container_group=TIG"

networks:
  backend:

volumes:
  grafana:
  influxdb:

Pon los valores que se correspondan con tu configuración como el nombre de la base de datos, contraseñas, etc.

Configurar Telegraf

Si queremos personalizar el agente Telegraf podemos entrar en la shell del contenedor y editar el fichero de configuración /etc/teleggraf/telegraf.conf

O bien podemos crear un fichero de configuración y presentarlo como un volumen, para ello en el fichero docker-compose.yml escribimos:

volumes:
      - $PWD/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro

Y creamos una carpeta llamada conf y dentro creamos el fichero telegraf.con con el siguiente contenido:


###############################################################################
#                              CONFIGURATION                                  #
###############################################################################

[global_tags]

[agent]
 interval = "10s"
 round_interval = true
 metric_batch_size = 1000
 metric_buffer_limit = 10000
 collection_jitter = "0s"
 flush_interval = "10s"
 flush_jitter = "0s"
 debug = false
 quiet = false
 hostname = "" # opcional
 omit_hostname = false


###############################################################################
#                              OUTPUT PLUGINS                                 #
###############################################################################

[[outputs.influxdb]]
 urls = ["http://influxdb:8086"]
 database = "telegraf"
 retention_policy = ""
 write_consistency = "any"
 timeout = "5s"
 username = "telegraf"
 password = "TelegrafPassword"

###############################################################################
#                              INPUT PLUGINS                                  #
###############################################################################

# CPU
######

[[inputs.cpu]]
 percpu = false
 totalcpu = true
 fielddrop = ["time_*"]

# DISK
#######

[[inputs.disk]]
 ignore_fs = ["tmpfs", "devtmpfs", "none"]

[[inputs.diskio]]

# Kernel
########

[[inputs.kernel]]

# Memory
#########

[[inputs.mem]]

# NET
######

[[inputs.net]]
 interfaces = ["eth0"]

# Netstat
#########

[[inputs.netstat]]

# Processes
############

[[inputs.processes]]

# System
#########

[[inputs.system]]

Desplegando

Una vez configurado el agente de Telegraf, solo queda levantar el stack.

docker-compose up -d

Con esto ya hemos terminado, si utilizas portainer puedes ver el stack desplegado

\
También vemos los contenedores que hemos creado y como forman parte de la misma red

Referencia

https://blog.ichasco.com/tig-graficar-metricas-de-hosts-y-docker-con-telegraf-influxdb-y-grafana/

Espero que te haya gustado, pasa un buen día… :penguin: