GH GambleHub

Überwachungs-Stack

1) Warum Sie einen Beobachtbarkeits-Stack benötigen

Schnelle RCAs und reduzierte MTTRs: von Symptom zu Ursache in Minuten.
SLO-Management: Fehler-/Latenzmessung, Alerting nach fehlerhaftem Budget.
Release-Kontrolle: kanarische Berechnungen, Auto-Rollback nach Metriken.
Sicherheit und Audit: Zugangswege, Anomalien, Legal Hold.
FinOps-Transparenz: Kosten für Speicherung/Anfragen, Cost-per-SLO.

Methoden: Goldene Signale (Latenz/Verkehr/Fehler/Sättigung), ROT, USE.

2) Grundlegende Stack-Architektur

Komponenten nach Lagen

Sammlung/Agenten: Exporteure, Promtail/Fluent Bit, OTel SDK/Auto-Instr, Blackbox-probes.
Шина/ingest: Prometheus remote_write → Mimir/Thanos, Loki distributors/ingesters, Tempo/Jaeger ingesters.
Speicher: Objekt- S3/GCS/MinIO (lange Kälte), SSD (heiße Reihen).
Anfragen/Visualisierung: Grafana (Panels, SLO-Widgets), Kibana (wenn ELK).
Management: Alertmanager/Graphana-Alertas, Service-Katalog, RBAC, Secret Manager.

Bereitstellungsmuster

Managed (Grafana Cloud/Cloud Services) - schnell und teurer auf Volumen.
Self-hosted in K8s - volle Kontrolle, muss betrieben werden und FinOps.

3) Datenstandards: einheitliches „Beobachtbarkeitsschema“

3. 1 Metriken (Prometheus/OpenMetrics)

Obligatorische Etiketten: „env“, „region“, „cluster“, „namespace“, „service“, „version“, „tenant“ (wenn multi-tenant), „endpoint“.
Benennung: 'snake _ case', Suffixe'_ total','_ seconds','_ bytes'.
Histogramme: feste' Buckets'(SLO-orientiert).
Kardinalität: Keine' user _ id', 'request _ id' in Labels aufnehmen.

3. 2 Protokolle

Format: JSON; erforderliche Felder 'ts', 'level', 'service', 'env', 'trace _ id', 'span _ id', 'msg'.
PII: Maskierung des Agenten (PAN, Token, E-Mail usw.).
Loki-Labels: nur niedrige Kardinalität ('app', 'namespace', 'level', 'tenant').

3. 3 Spuren

OTel Semantik: 'service. name`, `deployment. environment`, `db. system`, `http.`.
Sampling: Die Zielpfade von p99 sind 'always _ on '/tail-sampling, der Rest ist' parent/ratio'.
ID einbetten: 'trace _ id/span _ id' in Logs und Metriken (Labels/Fields) eintragen.

4) Korrelation M-L-T (Metrics/Logs/Traces)

Aus dem Alert-Diagramm (Metrik) → gefilterte Protokolle durch 'trace _ id' → eine bestimmte Spur.
Von der Spur (Slow Span) → die Abfrage der Metriken eines bestimmten Backends im Span-Intervall.
Drilldown-Schaltflächen in den Bereichen: „zu den Protokollen“ und „zu den Spuren“ mit Variablensubstitution ('$ env','$ service','$ trace _ id').

5) OpenTelemetry Collector: Referenz-Pipeline

yaml receivers:
otlp:
protocols: { http: {}, grpc: {} }
prometheus:
config:
scrape_configs:
- job_name: kube-nodes static_configs: [{ targets: ['kubelet:9100'] }]

processors:
batch: {}
memory_limiter: { check_interval: 1s, limit_mib: 512 }
attributes:
actions:
- key: deployment. environment value: ${ENV}
action: insert tail_sampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code: { status_codes: [ERROR] }
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/payments","/login"] }
- name: probabilistic type: probabilistic probabilistic: { sampling_percentage: 10 }

exporters:
otlphttp/mimir: { endpoint: "https://mimir/api/v1/push" }
otlphttp/tempo: { endpoint: "https://tempo/api/traces" }
loki:
endpoint: https://loki/loki/api/v1/push labels:
attributes:
env: "deployment. environment"
service: "service. name"

service:
pipelines:
metrics: { receivers: [prometheus, otlp], processors: [memory_limiter, batch], exporters: [otlphttp/mimir] }
logs:   { receivers: [otlp], processors: [batch], exporters: [loki] }
traces:  { receivers: [otlp], processors: [memory_limiter, attributes, tail_sampling, batch], exporters: [otlphttp/tempo] }

6) Alerting: SLO und Multi-Burn

Die Idee: Das Alertim liegt nicht auf der Ebene „CPU> 80%“, sondern auf dem Verbrauch des Error Budgets.

PromQL-Vorlagen:
promql
5-minute error rate err_ratio_5m =
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m]))

Quick burn (1m window)
(err_ratio_1m / (1 - SLO)) > 14. 4

Slow burn (30m)
(err_ratio_30m / (1 - SLO)) > 2
Latenz (Histogramme):
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

7) Dashboards: Ordnerstruktur

00_Overview - Plattform: SLO, p95, 5xx%, Kapazität, aktive Vorfälle.
10_Services - nach Dienstleistungen: RPS, p95/p99, Fehler, Veröffentlichungen (Anmerkungen).
20_Infra - K8s/Knoten/Geschichten/Netzwerk, Etcd, Controller.
30_DB/Queues — PostgreSQL/Redis/Kafka/RabbitMQ.
40_Edge/DNS/CDN/WAF - ingress, LB, WAF-Regeln.
50_Synthetic - Aptime und Headless-Szenarien.
60_Cost/FinOps - Lagerung, Anfragen, heiß/kalt, Prognose.

Jedes Panel: Beschreibung, Einheiten, Besitzer, Runbook-Link, Drilldown.

8) Logs: LogQL Workshop

logql
API errors
{app="api", level="error"}     = "Exception"

Nginx 5xx in 5 minutes
{app="nginx"}      json      status=~"5.."      count_over_time([5m])

Extract Fields
{app="payments"}      json      code!=""      unwrap duration      avg()

9) Tracks: TraceQL und Tricks

Finde die langsamsten Spans:

{ service. name = "api" }      duration > 500ms
Sandwich „slow SQL in slow query“:

{ name = "HTTP GET /order" }      child. span. name = "SELECT" & child. duration > 50ms

10) Synthetik und Aptime

Blackbox-Exporteur: HTTP/TCP/TLS/DNS-Tests aus ≥3 Regionen/ASN.
Headless: Login/Deposit-Skripte nach Zeitplan.
Quorum-Alerts: Auslösen, wenn ≥2 Regionen einen Fehler sehen.
Status-Seite: automatische Updates + manuelle Kommentare.

11) Lagerung und Retention

Metriken: heißer 7-30 Tage (schnelle Reihen), Downsampling/Aufzeichnungsregeln, kalt - Objektspeicher (Monate).
Protokolle: heiß 3-7 Tage, dann - S3/GCS mit Index (Loki chunk store/ELK ILM).
Traces: 3-7 Tage' always _ on'+ Langzeitlagerung für Proben (tail-sampled/culling).

Empfehlungen:
  • Rollover in Größe und Zeit; Budget für Anfragen (Kontingente/Limits).
  • Separate Richtlinien für prod/stage und Sicherheitsdaten.

12) Multi-Tenant und Zugänge

Teilen Sie durch 'tenant '/' namespace '/Spaces, Index-Muster und Auflösungen.
Tagging Ressourcen für die Abrechnung: 'tenant', 'service', 'team'.
Importierte Dashboards/Alerts befinden sich in den Räumen bestimmter Teams.

13) Sicherheit und Compliance

TLS/mTLS von Agenten zu Beckends, HMAC für private Gesundheit.
Read/Write RBAC, Audit aller Anfragen und Alert.
PII-Revision am Rand; das Verbot von Geheimnissen in Protokollen; DSAR/Legal Hold.
Isolation: separate Cluster/Nijmspaces für sensible Domänen.

14) FinOps: Kosten der Beobachtbarkeit

Wir reduzieren die Kardinalität von Labels und die Logik in ingest (und nicht in Anfragen).
Track Sampling + Zielalways-on für kritische Pfade.
Downsampling/Recording-Regeln für schwere Aggregationen.
Archivierung des seltenen Zugriffs auf Cold Object.
Метрики: `storage_cost_gb_day`, `query_cost_hour`, `cost_per_rps`, `cost_per_9`.

15) CI/CD und Beobachtbarkeitstests

Linting von Metriken/Logs in CI: Verbot der „Explosion“ der Kardinalität, Überprüfung von Histogrammen/Einheiten.
Contract-Beobachtbarkeitstests: obligatorische Metriken/Logfelder, 'trace _ id' in middleware.
Canary: Anmerkungen zu Releases auf Graphen, SLO-Auto-Rollback.

16) Beispiele: schnelle Anfragen

Top-Endpunkte bei Fehlern:
promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
CPU throttling:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
Kafka lag:
promql max by (topic, group) (kafka_consumergroup_lag)

Von Protokollen zu Spuren (Loki → Tempo): Übergeben Sie' trace _ id 'als Link auf Tempo UI/Dashboard.

17) Stapelqualität: Checkliste

  • Harmonisierte Metrik-/Log-/Track-Diagramme und Einheiten.
  • 'trace _ id' in Protokollen und Metriken, Drilldown aus Panels.
  • Multi-burn SLO-Alerts ohne Flapping (quorum/multi-window).
  • Downsampling, Abfragequoten, Pitch/Range Limits.
  • Retention und Speicherklassen werden dokumentiert und angewendet.
  • RBAC/Audit/PII-Revision enthalten.
  • Dashboards: Besitzer, Runbooks, ≤2 -3 Bildschirme, schnelle Antwort.
  • FinOps-Dashboard (Volumen, Kosten, Top-Talker).

18) Implementierungsplan (3 Iterationen)

1. MVP (2 Wochen): Prometheus→Mimir, Loki, Tempo OTel Collector; grundlegende Dashboards und SLO-Alerts; Blackbox-Test.
2. Scale (3-4 Wochen): Tail-Sampling, Downsampling, Multi-Region ingest, RBAC/Spaces, FinOps-Dashboards.
3. Pro (4 + Wochen): SLO-Auto-Rollback, Schlüsselpfad-Headless-Synthetik, Legal Hold, SLO-Portfolio und Reporting.

19) Anti-Muster

„Schöne Grafiken ohne SLO“ - keine Aktion → kein Nutzen.
Etiketten mit hoher Kardinalität ('user _ id', 'request _ id') sind eine Explosion von Erinnerung und Kosten.
Logs ohne JSON und ohne' trace _ id'- keine Korrelation.
Alerts auf Ressourcen statt Symptome - Lärm und On-Call-Burnout.
Fehlende Retention-Politik - unkontrollierte Kostensteigerungen.

20) Mini-FAQ

Was soll man wählen: Loki oder ELK?
ELK für komplexe Suche/Facetten; Loki - billiger und schneller für Grep-ähnliche Szenarien. Oft wird ein Hybrid verwendet.

Braucht jeder Spuren?
Ja, zumindest auf den Schlüsselpfaden (Login, Checkout, Payments) mit Tail-Sampling - das beschleunigt die RCA drastisch.

Wie fange ich bei Null an?
OTel Collector → Mimir/Loki/Tempo → Basis-SLOs und Blackbox-Tests → dann Dashboards und Burn-Alerts.

Summe

Der Beobachtbarkeits-Stack ist keine Sammlung unterschiedlicher Tools, sondern ein kohärentes System: einheitliche Datenstandards → Korrelation von M-L-T → SLO-Alerting und Synthetics → Sicherheit und FinOps. Erfassen Sie Schaltungen, Etikettendisziplin und Retention, verbinden Sie OTel, fügen Sie Drilldown und Auto-Rollback hinzu - und Sie erhalten eine überschaubare Zuverlässigkeit mit überschaubaren Kosten.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Telegram
@Gamble_GC
Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.