FluentD es un reenviador de datos rápido y ligero el cual se puede configurar como complemento de salida de Loki para enviar los registros «interesantes» y poder monitorearlos con Grafana. A continuación el docker-compose para correr estos tres componentes con docker.
version: "3"
volumes:
grafana-data:
loki-data:
networks:
lokinet:
Se definen la versión del docker file, volúmenes permanentes y red
loki:
image: grafana/loki:latest
volumes:
- ./conf/loki-config.yaml:/etc/config/loki.yaml
command:
- -config.file=/etc/config/loki.yaml
- loki-data:/loki
networks:
- lokinet
El contenedor Loki se genera a partir de la imagen oficial de Grafana. Se define el archivo de configuración y el volumen permanente donde se almacenarán los datos. El archivo de configuración ejemplo se puede descargar del siguiente link: loki-config.yaml
grafana:
image: grafana/grafana:latest
volumes:
- grafana-data:/var/lib/grafana
- ./conf/grafana.ini:/etc/grafana/grafana.ini
ports:
- 3000:3000
networks:
- lokinet
El contenedor de Grafana se genera a partir de la imagen oficial de Grafana. Se definen el volumen permanente donde se almacenan los datos de Grafana y el archivo grafana.ini donde se pueden agregar los parámetros de configuración que sobre escriben a la configuración default. Se expone el puerto 3000 al Host para poder accederlo desde un browser. Un archivo de configuración de Grafana ejemplo se puede dercargar desde aquí: grafana.ini
fluentd:
image: grafana/fluent-plugin-loki:master
command:
- "fluentd"
- "-v"
- "-p"
- "/fluentd/plugins"
volumes:
- "./conf/fluent.conf:/fluentd/etc/fluent.conf:ro"
environment:
LOKI_URL: http://loki:3100
LOKI_USERNAME:
LOKI_PASSWORD:
ports:
- "24224:24224"
- "24224:24224/udp"
networks:
- lokinet
El contenedor de Fluent se genera a partir de la imagen oficial, pero no de FluentD sino de Grafana, ya que contiene el plugin para conectar a Loki. Se define el volumen permanente al archivo de configuración de Fluent y definen los parametros de acceso al loki. Como está dentro del mismo grupo de contenedores el acceso se logra sin la necesidad de publicar el puerto 3100 del Loki al Host. Sí es necesario exponer los puertos 24224tcp/udp al Host para publicar el servicio de forward del Fluent, esperando logs de otros Hosts que serán reenviados al Loki. Un archivo de configuración de ejemplo de Fluent se puede descargar desde este link: fluent.conf
Resta acceder al Grafana y activar el Data Sources Loki como se ve en la siguiente captura.
El docker-compoose.yaml completo se puede dercargar del siguiente link: https://gitlab.com/pablosarubbi/grafanalokifluentddocker-compose/-/blob/main/docker-compose.yaml