Skip to content

Runbook: Grafana dashboardy

Přehled

  • Server: Argus (100.110.6.46)
  • URL: http://100.110.6.46:3000 (Tailscale only)
  • Dashboardy jako kód: /root/projects/sentinel/monitoring/grafana/dashboards/
  • Provisioning config: /root/projects/sentinel/monitoring/grafana/provisioning/dashboards/default.yml

Dashboardy

Dashboard Soubor Popis
Server Overview node-overview.json CPU, Memory, Disk, Network, Load
HTTP Uptime http-uptime.json Endpoint status, response time, SSL expiry

Provisioning — jak to funguje

Grafana čte dashboardy ze souborů pomocí provisioning YAML:

# default.yml
apiVersion: 1
providers:
  - name: 'S60 Dashboards'
    orgId: 1
    folder: 'Studio60'
    type: file
    updateIntervalSeconds: 30
    options:
      path: /var/lib/grafana/dashboards

Dashboard JSON soubory se synchronizují z gitu na Argus.

Deploy dashboardů

# 1. Rsync dashboardy na Argus
rsync -az /root/projects/sentinel/monitoring/grafana/dashboards/ \
  root@100.110.6.46:/var/lib/grafana/dashboards/

# 2. Rsync provisioning config
rsync -az /root/projects/sentinel/monitoring/grafana/provisioning/ \
  root@100.110.6.46:/etc/grafana/provisioning/

# 3. Restart Grafana (pokud se změnil provisioning config)
ssh root@100.110.6.46 "systemctl restart grafana-server"

Formát dashboard JSON

DŮLEŽITÉ: File provisioning vyžaduje root-level dashboard objekt. NE wrapper {"dashboard": {...}}:

{
  "title": "Dashboard Name",
  "uid": "unique-uid",
  "panels": [...],
  ...
}

Pokud je dashboard zabalený v {"dashboard": {...}}, Grafana ho odmítne s chybou "title cannot be empty".

Přidání nového dashboardu

  1. Vytvořit JSON v /root/projects/sentinel/monitoring/grafana/dashboards/
  2. Dashboard musí mít unikátní uid a title
  3. Rsync na Argus (viz Deploy dashboardů)
  4. Grafana automaticky načte nový soubor do 30s

Prometheus

  • URL: http://100.110.6.46:9090
  • Config: /etc/prometheus/prometheus.yml na Argusu
  • Datasource UID: automaticky generovaný (NESPECIFIKOVAT vlastní — způsobuje konflikty)

Známé problémy (2026-03-14)

  • Prometheus targets: některé IP mohou být zastaralé (sentinel, hub-alfa) — ověřit v Prometheus UI
  • Prometheus scrape config nemá prod-alfa — přidat
  • Dashboardy se resetují pokud někdo smaže grafana.db — proto provisioning jako kód

Diagnostika

# Stav Grafany
ssh root@100.110.6.46 "systemctl status grafana-server"

# Grafana logy
ssh root@100.110.6.46 "journalctl -u grafana-server --since '1h ago' | tail -50"

# Provisioning logy (hledej errors)
ssh root@100.110.6.46 "journalctl -u grafana-server | grep -i 'provisioning\|dashboard\|error'"

# Ověřit soubory na místě
ssh root@100.110.6.46 "ls -la /var/lib/grafana/dashboards/"