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