Blog personal donde guardo mis notas sobre tecnología

Docker: TIG Telegraf+InfluxDB+Grafana

Carlos M.

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 #

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