https://youtu.be/rMvu5lUK7-I?si=Ux3ZByfZChmE68CT

Descripción

En este post vamos a instalar Grafana Loki, una solución para la gestión y almacenamiento de logs que permite recopilar, consultar y monitorizar registros de manera eficiente. Lo instalaremos utilizando Docker Compose, aunque su capacidad y escalabilidad pueden ir mucho más allá. Sin embargo, para el sistema de logs que queremos montar y el volumen que manejaremos, no necesitaremos una escalabilidad horizontal.

Docker Compose files

Las configuraciones de MinIO y Memcached que son requeridas para lanzar Grafana Loki se explican y detallan en el post de Grafana Mimir. Además del fichero .env que también está referenciado en el mismo post.

Grafana Loki

name: i40sys_observability
include:
  - ./compose-minio.yml
  - ./compose-memcached.yml
services:
  loki:
    labels:
      - logs.agent.grafana.com/log-format=json
    depends_on:
      minio:
        condition: service_healthy
    image: grafana/loki:${LOKI_VERSION:-latest}
    volumes:
      - ${PWD}/config/loki:/etc/loki
    command:
      - -config.file=/etc/loki/monolithic-mode-logs.yaml
      - -target=all
      - -config.expand-env=true
    env_file:
      - .env
    healthcheck:
      test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider <http://localhost/ready> || exit 1" ]
      interval: 10s
      timeout: 5s
      retries: 10
    networks:
      proxy-network:
      observability:
        aliases:
          - loki-memberlist

General Docker Compose

name: observability
include:
  - ./compose-mimir.yml
  - ./compose-loki.yml

networks:
  proxy-network:
    name: services
    external: true
  observability:
    name: observability

Grafana LOKI ficheros de configuración

runtime.yaml

El archivo runtime.yaml en Grafana Loki se utiliza para establecer configuraciones en tiempo de ejecución. Permite ajustar parámetros sin reiniciar el servicio, útil para administrar recursos y controlar el comportamiento de diferentes inquilinos en un entorno multi-tenant.

# This file can be used to set overrides or other runtime config.
overrides:
  "fake": # limits for anonymous that the whole cluster enforces
    ingestion_rate_mb: 1500000
    max_streams_per_user: 100000
    max_chunks_per_query: 100000
  "anonymous": # limits for anonymous that the whole cluster enforces
    ingestion_rate_mb: 1500000
    max_streams_per_user: 100000
    max_chunks_per_query: 100000

El archivo define una sección overrides con configuraciones específicas para dos inquilinos (tenants): "fake" y "anonymous".

Opciones de configuración: