Grafana Loki es una herramienta que crear un panel para indexar los logs de sus sistemas y visualizarlos en un Tablero de Grafana. Grafana Loki en si no indexa el contenido de los logs, sino que sólo indexa las etiquetas de los mismos.

En este caso, usaremos Promtail, que al igual que Prometheus, es un recolector de registros para Loki que envía las etiquetas de los registros a Grafana Loki para su indexación.

Instalación de Grafana

Para instalar Grafana, tenéis este otro tutorial con todo los detalles dependiendo el sistema operativo que uséis.

Para CentOS / Red Hat y derivadas:

Instalar Grafana en CentOS / OpenSUSE / RedHat
Grafana es un Software Libre basado en licencia Apache 2.0 que permite la visualización y el formado de datos métricos. Con Grafana crear cuadros de mando y gráficos a partir de diferentes fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB o OpenTSDB.

Para Debian / Ubuntu y derivadas:

Instalar Grafana en Debian / Ubuntu
Grafana es un Software Libre basado en licencia Apache 2.0 que permite la visualización y el formado de datos métricos. Con Grafana crear cuadros de mando y gráficos a partir de diferentes fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB o OpenTSDB.

Instalación de Grafana Loki

Ahora procedemos a instalar Grafana Loki siguiendo estos pasos. Lo primero es ir a la web de Releases y descargar el paquete de la última versión de Loki, mientras se escribe este tutorial es la versión v.2.8.1.

wget https://github.com/grafana/loki/releases/download/v2.8.1/loki-linux-amd64.zip

Descomprimimos el binario y lo movemos:

unzip loki-linux-amd64.zip
mv loki-linux-amd64 /usr/local/bin/loki

Y revisamos que funciona correctamente mostrando la versión:

# loki --version
loki, version 2.8.1 (branch: HEAD, revision: dd763dcff)
  build user:       root@5da030531423
  build date:       2023-04-24T20:55:11Z
  go version:       go1.20.1
  platform:         linux/amd64

Lo siguiente será configurar el fichero de configuración así como algunos directorios para que funcione correctamente Loki.

mkdir -p /data/loki

Creamos el fichero /etc/loki-local-config.yaml y añadimos el siguiente contenido:

# nano /etc/loki-local-config.yaml

auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s
  max_transfer_retries: 0

schema_config:
  configs:
    - from: 2018-04-15
      store: boltdb
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 168h

storage_config:
  boltdb:
    directory: /data/loki/index

  filesystem:
    directory: /data/loki/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h

chunk_store_config:
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: false
  retention_period: 0s

Ahora creamos el servicio para Loki con SystemD, creamos el fichero con el siguiente contenido:

# nano /etc/systemd/system/loki.service

[Unit]
Description=Loki service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/loki -config.file /etc/loki-local-config.yaml

[Install]
WantedBy=multi-user.target

Y recargamos los demonios y lo iniciamos:

systemctl daemon-reload
systemctl start loki.service
systemctl enable loki.service

Instalación de Promtail

Ahora procedemos a instalar Promtail siguiendo estos pasos. Lo primero es ir a la web de Releases y descargar el paquete de la última versión de Promtail, mientras se escribe este tutorial es la versión v.2.4.1.

wget https://github.com/grafana/loki/releases/download/v2.4.1/promtail-linux-amd64.zip

Descomprimimos el binario y lo movemos:

unzip promtail-linux-amd64.zip
mv promtail-linux-amd64 /usr/local/bin/promtail

Y revisamos que funciona correctamente mostrando la versión:

# promtail --version
promtail, version 2.4.1 (branch: HEAD, revision: f61a4d261)
  build user:       root@9cbe2f86250f
  build date:       2021-11-08T13:05:10Z
  go version:       go1.16.2
  platform:         linux/amd64

Creamos el fichero /etc/promtail-local-config.yaml y añadimos el siguiente contenido:

# nano /etc/promtail-local-config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /data/loki/positions.yaml

clients:
  - url: http://localhost:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: syslog
      __path__: /var/log/syslog*log
  - targets:
      - localhost
    labels:
      jobs: apache
      __path__: /var/log/apache2/*log

Ahora creamos el servicio para Promtail con SystemD, creamos el fichero con el siguiente contenido:

# nano /etc/systemd/system/promtail.service

[Unit]
Description=Promtail service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail-local-config.yaml

[Install]
WantedBy=multi-user.target

Y recargamos los demonios y lo iniciamos:

systemctl daemon-reload
systemctl start promtail.service
systemctl enable promtail.service

Cómo configurar Loki en Grafana

Accedemos a Grafana por la interfaz web y vamos a Configuration > Data Sources y seleccionamos Loki y rellenamos los datos como en la captura:

Verifica que la configuración funciona correctamente haciendo clic en Save & Test.

Visualizar logs en Grafana

Ahora solo tenemos que ir al apartado de Explorer y seleccionar arriba la fuente de datos Loki y filtrar por los logs que hayamos configurado:

Si seleccionáis un Job configurado, podréis visualizar los datos:

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación