TheDutchLab

Grafana Alloy, quickstart

The Dutch Lab

Om maar gelijk doe koe bij de hoorns te vatten;

Hieronder vind je een snelle manier om Grafana Alloy te installeren en te starten met een minimale configuratie. Wanneer je die werkend hebt, kan je eens kijken of je de logs kan ontvangen in je Grafana Loki installatie. Want dat is hoogstwaarschijnlijk waar je je logs naar toe wilt sturen.

Zorg eerst dat je de packages van Grafana vertrouwd door de gpg key toe te voegen aan je systeem;

sudo mkdir -p /etc/apt/keyrings/

wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

Vervolgens kan je Grafana Alloy installeren;

sudo apt-get update
sudo apt-get install alloy

sudo systemctl reload alloy

Nu komt 't, de configuratie zodat je minimaal de logs die eindigen op '.log' in de /var/log directory naar je Loki installatie kan sturen;

sudo nano /etc/alloy/config.alloy

Dit wordt de inhoud:

local.file_match "local_files" {
  path_targets = [{"__path__" = "/var/log/*.log"}]
  sync_period = "5s"
}

loki.source.file "log_scrape" {
  targets    = local.file_match.local_files.targets
  forward_to = [loki.process.filter_logs.receiver]
  tail_from_end = true
}

loki.process "filter_logs" {
  stage.drop {
    source = ""
    expression  = ".*Connection closed by authenticating user root"
    drop_counter_reason = "noisy"
  }
  forward_to = [loki.write.grafana_loki.receiver]
}

loki.write "grafana_loki" {
  endpoint {
    url = "https://loki.mijn-domein.nl/loki/api/v1/push"
    basic_auth {
      username = "je-loki-username"
      password = "je-loki-password"
    }
  }
}

In dit voorbeeld is het endpoint met basic authenticatie afgeschermd (met een NGINX config). Maar wanneer je dat niet hebt gedaan, kan je de basic_auth negeren door deze niet toe te passen.

Wanneer je goed kijkt naar hoe de configuratie is opgebouwd, herken je een patroon hoe de configuratie in elkaar zit wat helpt bij het begrijpen van de configuratie logica van Alloy, wat hier ook nog uit de doeken wordt gedaan.

Ik denk alleen dat bovenstaand voorbeeld een stuk overzichtelijker is.