Docker: TIG Telegraf+InfluxDB+Grafana

2020-02-13

Índice

  1. Preparativos
    1. Docker
    2. Docker-compose
  2. Despliegue
    1. Configurar Telegraf
    2. Desplegando
  3. Referencia

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

img

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

img

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

img

Referencia

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


Ingrese la dirección de su instancia