Docker: TIG Telegraf+InfluxDB+Grafana

3 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

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

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

1usermod -aG docker <your_user>

Docker-compose

Instala pip

1sudo apt install python3-pip

Instala docker-compose

1sudo pip3 install docker-compose

Y para comprobar que todo ha ido bien, ejecutamos

1docker-compose --version

Despliegue

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

 1version: '3.5'
 2services:
 3  influxdb:
 4    image: influxdb
 5    environment:
 6      - INFLUXDB_DB=telegraf
 7      - INFLUXDB_USER=telegraf
 8      - INFLUXDB_USER_PASSWORD=xxxxxxx
 9    volumes:
10      - influxdb:$PWD/var/lib/influxdb
11    ports:
12      - "8086:8086"
13    networks:
14      - backend
15    labels:
16      - "container_group=TIG"
17
18  telegraf:
19    image: telegraf
20    volumes:
21      - $PWD/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
22    links:
23      - influxdb
24    networks:
25      - backend
26    labels:
27      - "container_group=TIG"
28
29  grafana:
30    image: grafana/grafana
31    environment:
32      - GF_SERVER_ROOT_URL=http://192.168.2.3
33      - GF_SECURITY_ADMIN_PASSWORD=xxxxxxxx
34      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,raintank-worldping-app,jdbranham-diagram-panel
35      - GF_USERS_ALLOW_SIGN_UP=false
36      - GF_SECURITY_DISABLE_GRAVATAR=true
37      - GF_SERVER_DOMAIN=ejemplo.com
38    volumes:
39      - grafana:$PWD/var/lib/grafana
40    networks:
41      - backend
42    ports:
43      - 3000:3000
44    labels:
45      - "container_group=TIG"
46
47networks:
48  backend:
49
50volumes:
51  grafana:
52  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:

1volumes:
2      - $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:

 1
 2###############################################################################
 3#                              CONFIGURATION                                  #
 4###############################################################################
 5
 6[global_tags]
 7
 8[agent]
 9 interval = "10s"
10 round_interval = true
11 metric_batch_size = 1000
12 metric_buffer_limit = 10000
13 collection_jitter = "0s"
14 flush_interval = "10s"
15 flush_jitter = "0s"
16 debug = false
17 quiet = false
18 hostname = "" # opcional
19 omit_hostname = false
20
21
22###############################################################################
23#                              OUTPUT PLUGINS                                 #
24###############################################################################
25
26[[outputs.influxdb]]
27 urls = ["http://influxdb:8086"]
28 database = "telegraf"
29 retention_policy = ""
30 write_consistency = "any"
31 timeout = "5s"
32 username = "telegraf"
33 password = "TelegrafPassword"
34
35###############################################################################
36#                              INPUT PLUGINS                                  #
37###############################################################################
38
39# CPU
40######
41
42[[inputs.cpu]]
43 percpu = false
44 totalcpu = true
45 fielddrop = ["time_*"]
46
47# DISK
48#######
49
50[[inputs.disk]]
51 ignore_fs = ["tmpfs", "devtmpfs", "none"]
52
53[[inputs.diskio]]
54
55# Kernel
56########
57
58[[inputs.kernel]]
59
60# Memory
61#########
62
63[[inputs.mem]]
64
65# NET
66######
67
68[[inputs.net]]
69 interfaces = ["eth0"]
70
71# Netstat
72#########
73
74[[inputs.netstat]]
75
76# Processes
77############
78
79[[inputs.processes]]
80
81# System
82#########
83
84[[inputs.system]]

Desplegando

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

1docker-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: