Grafana

Dashboards y visualización de métricas

Overview

Grafana es la interfaz de visualización para métricas y logs.

URL: infra.illanes00.cl

Acceso

  • Login: OAuth via Authentik
  • Rol por defecto: Viewer
  • Admin: Solicitar a illanes00

Datasources

Nombre Tipo Uso
Prometheus prometheus Métricas de servicios
Loki loki Logs (si configurado)

Dashboards

Dashboards Existentes

Dashboard Descripción
Services Overview Estado general de todos los servicios
Node Exporter Métricas del sistema (CPU, RAM, disco)
Caddy Métricas del reverse proxy

Crear Dashboard

  1. Click en +Dashboard
  2. Add visualization
  3. Seleccionar datasource (Prometheus)
  4. Escribir query PromQL
  5. Configurar visualización
  6. Save dashboard

Ejemplo: Panel de Requests

Query:

sum by (endpoint) (rate(http_requests_total{job="mi-proyecto"}[5m]))

Visualization: Time series o Bar chart

Ejemplo: Panel de Latencia

Query:

histogram_quantile(0.99, sum by (le) (rate(http_request_duration_seconds_bucket{job="mi-proyecto"}[5m])))

Legend: p99 latency

Variables de Dashboard

Permiten hacer dashboards dinámicos.

Crear variable

  1. Dashboard settings → Variables → Add variable
  2. Tipo: Query
  3. Query: label_values(up, job)
  4. Name: job

Usar en queries

up{job="$job"}

Alertas en Grafana

Crear Alerta

  1. Edit panel → Alert tab
  2. Create alert rule
  3. Configurar:
    • Condition: When avg() of query is above 1
    • Evaluate every: 1m
    • For: 5m
  4. Configure notifications
  5. Save

Notification Channels

Canal Configurado
Telegram
Email No
Slack No

Provisioning

Grafana puede configurarse via archivos YAML.

Estructura

/srv/grafana/
├── provisioning/
│   ├── datasources/
│   │   └── datasources.yml
│   ├── dashboards/
│   │   └── dashboards.yml
│   └── alerting/
│       └── alerts.yml
└── dashboards/
    └── *.json

datasources.yml

apiVersion: 1

datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://localhost:9090
    isDefault: true

  - name: Loki
    type: loki
    access: proxy
    url: http://localhost:3100

dashboards.yml

apiVersion: 1

providers:
  - name: 'default'
    folder: 'Provisioned'
    type: file
    options:
      path: /srv/grafana/dashboards

Exportar/Importar Dashboard

Exportar

  1. Dashboard → Share → Export
  2. Save as JSON

Importar

  1. + → Import
  2. Upload JSON o pegar contenido
  3. Configure datasources
  4. Import

Comandos Útiles

# Estado de Grafana
systemctl status grafana-server

# Logs
journalctl -u grafana-server -f

# Recargar provisioning
curl -X POST http://localhost:3000/api/admin/provisioning/dashboards/reload \
  -H "Authorization: Bearer $GRAFANA_API_KEY"

# API: listar dashboards
curl http://localhost:3000/api/search \
  -H "Authorization: Bearer $GRAFANA_API_KEY"

Troubleshooting

Dashboard no carga datos

  1. Verificar que Prometheus está corriendo
  2. Verificar datasource en Grafana
  3. Probar query en Explore

“No data” en panel

# Verificar query en Prometheus directamente
curl 'http://localhost:9090/api/v1/query?query=up{job="mi-proyecto"}'

Login no funciona

Verificar configuración de OAuth en Authentik y en Grafana.