Hands-on Lab

#Lab: Centralized Logging

Set up centralized logging with Loki and Grafana.

#🎯 Objectives

  • Deploy Loki stack
  • Configure log collection
  • Query logs in Grafana

#Task 1: Docker Compose

yaml
1version: '3.8'
2services:
3  loki:
4    image: grafana/loki:2.9.0
5    ports:
6      - "3100:3100"
7    command: -config.file=/etc/loki/local-config.yaml
8
9  promtail:
10    image: grafana/promtail:2.9.0
11    volumes:
12      - /var/log:/var/log
13      - ./promtail-config.yaml:/etc/promtail/config.yaml
14    command: -config.file=/etc/promtail/config.yaml
15
16  grafana:
17    image: grafana/grafana:latest
18    ports:
19      - "3000:3000"

#Task 2: Promtail Config

yaml
1# promtail-config.yaml
2server:
3  http_listen_port: 9080
4
5clients:
6  - url: http://loki:3100/loki/api/v1/push
7
8scrape_configs:
9  - job_name: system
10    static_configs:
11      - labels:
12          job: varlogs
13          __path__: /var/log/*log

#Task 3: Query in Grafana

Add Loki data source, then query:

logql
{job="varlogs"} |= "error"

#✅ Success Criteria

  • Loki receiving logs
  • Grafana shows logs
  • Can filter by label