Runbook: Prometheus

Trajanje: ~15 minut
Vloga: DevOps, SRE
Predpogoj: Prometheus strežnik, Gateway deluje

Zbiranje metrik iz Data Gateway s Prometheus.


Potek dela

flowchart TD A[Začetek] --> B[Aktiviraj metrike] B --> C[Prometheus konfiguracija] C --> D[Dodaj Scrape-Job] D --> E[Prometheus reload] E --> F[Preveri cilje] F --> G{Aktiven?} G -->|Da| H[Končano] G -->|Ne| I[Preveri požarni zid/končno točko] style H fill:#e8f5e9 style I fill:#ffebee


1. Aktiviranje metrik v Gateway

appsettings.json:

{
  "Metrics": {
    "Enabled": true,
    "Endpoint": "/metrics"
  }
}

Ali prek NuGet (če ni vgrajeno):

# prometheus-net.AspNetCore
dotnet add package prometheus-net.AspNetCore

Program.cs:

// Metrics Middleware
app.UseHttpMetrics();
app.MapMetrics(); // /metrics končna točka

2. Testiranje končne točke metrik

curl http://localhost:5000/metrics
 
# Pričakovan izpis (Prometheus oblika):
# HELP http_requests_total Total HTTP requests
# TYPE http_requests_total counter
# http_requests_total{method="GET",endpoint="/api/v1/dsn/demo/tables",status="200"} 42

3. Konfiguracija Prometheus

/etc/prometheus/prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  # Data Gateway
  - job_name: 'data-gateway'
    static_configs:
      - targets: ['gateway.example.com:5000']
    metrics_path: /metrics
    scheme: http  # ali https
 
  # Več instanc
  - job_name: 'data-gateway-cluster'
    static_configs:
      - targets:
          - 'gateway-1.example.com:5000'
          - 'gateway-2.example.com:5000'
          - 'gateway-3.example.com:5000'

4. Ponovno nalaganje Prometheus

# Config-Reload (brez ponovnega zagona)
curl -X POST http://localhost:9090/-/reload
 
# Ali ponovni zagon
sudo systemctl restart prometheus

5. Preverjanje ciljev

Spletni vmesnik: http://prometheus:9090/targets

Ali prek API:

curl -s http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | {job: .labels.job, health: .health}'

Pričakovan izpis:

{
  "job": "data-gateway",
  "health": "up"
}

6. Pomembne poizvedbe

PromQL primeri:

# Stopnja zahtev (na sekundo)
rate(http_requests_total{job="data-gateway"}[5m])

# Povprečni odzivni čas
rate(http_request_duration_seconds_sum{job="data-gateway"}[5m])
/
rate(http_request_duration_seconds_count{job="data-gateway"}[5m])

# Stopnja napak (5xx)
sum(rate(http_requests_total{job="data-gateway",status=~"5.."}[5m]))
/
sum(rate(http_requests_total{job="data-gateway"}[5m]))

# Poraba pomnilnika
process_resident_memory_bytes{job="data-gateway"}

# Aktivne povezave
http_requests_in_progress{job="data-gateway"}

7. Kontrolni seznam

# Točka preverjanja V
———–
1 Končna točka metrik aktivirana
2 /metrics dosegljiv
3 Prometheus konfiguracija posodobljena
4 Prometheus ponovno naložen
5 Cilj „up“ v Prometheus
6 Metrike vidne v Grafana

Odpravljanje težav

Težava Vzrok Rešitev
————————–
Cilj „down“ Končna točka ni dosegljiva Požarni zid, URL preveri
connection refused Gateway ne deluje Zaženi Gateway
404 Not Found Metrike niso aktivirane Preveri appsettings.json
Brez metrik Napačna pot Preveri metrics_path

Kubernetes ServiceMonitor

Za Prometheus Operator:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: data-gateway
  namespace: monitoring
  labels:
    release: prometheus
spec:
  selector:
    matchLabels:
      app: data-gateway
  namespaceSelector:
    matchNames:
      - data-gateway
  endpoints:
    - port: http
      path: /metrics
      interval: 15s

Povezani Runbooks


« <- Nadzor | -> Grafana nadzorna plošča »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional

Zuletzt geändert: dne 29.01.2026 ob 23:36