Índice #
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… 🐧