stackit.guru
DE

STACKIT Logs – Label-basierte Log-Aggregation

#monitoring
logging logs aggregation

STACKIT Logs – Label-basierte Log-Aggregation

Klassische Log-Systeme indizieren den gesamten Inhalt jeder Nachricht – das kostet Speicher und wird bei hohem Volumen teuer. STACKIT Logs geht einen anderen Weg: Statt Volltextindizierung setzt der Service auf label-basierte Aggregation, inspiriert von Grafana Loki. Du suchst über Labels und filterst den Inhalt erst im zweiten Schritt – schnell, effizient und kostengünstig.


Was ist STACKIT Logs?

STACKIT Logs ist ein Managed-Logging-Service, der auf dem Loki-Prinzip basiert:

  • Label-basierte Speicherung – Logs werden nicht volltextindiziert, sondern über Labels (Key-Value-Paare) organisiert. Das reduziert Speicherkosten drastisch.
  • LogQL-Abfragen – Eine mächtige Query-Sprache, die Label-Filter mit Regex- und Pattern-Matching kombiniert.
  • Hochvolumen-optimiert – Ideal für Kubernetes-Cluster und Microservices, die Tausende Log-Zeilen pro Sekunde erzeugen.
  • Grafana-Integration – Native Anbindung an Grafana-Dashboards für Visualisierung und Alerting.
  • Multi-Tenancy – Strikte Trennung der Logs nach Projekt-ID.

Tutorial: STACKIT Logs einrichten und abfragen

1. Logs-Instanz erstellen

Erstelle eine STACKIT-Logs-Instanz:

stackit observability instance create \
  --project-id your-project-id \
  --name "prod-logs" \
  --plan "logs-standard"

2. Promtail als Log-Shipper konfigurieren

Installiere Promtail auf deinem Kubernetes-Cluster:

config:
  clients:
    - url: "https://logs.observability.eu01.stackit.cloud/loki/api/v1/push"
      tenant_id: "your-project-id"
  scrape_configs:
    - job_name: kubernetes
      kubernetes_sd_configs:
        - role: pod
      relabel_configs:
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod

3. Logs mit LogQL abfragen

Öffne Grafana und nutze LogQL, um deine Logs zu durchsuchen:

# Alle Logs aus dem Namespace "production"
{namespace="production"}

# Fehler-Logs eines bestimmten Pods
{namespace="production", pod=~"api-.*"} |= "error"

# JSON-Felder parsen und filtern
{app="checkout"} | json | status_code >= 500

# Aggregation: Fehler pro Minute
rate({app="api"} |= "error" [1m])

4. Alert auf Log-Muster erstellen

Definiere einen Alert in Grafana, der bei gehäuften Fehlern auslöst:

groups:
  - name: log-alerts
    rules:
      - alert: HighErrorLogRate
        expr: sum(rate({app="api"} |= "error" [5m])) > 10
        for: 5m
        annotations:
          summary: "Mehr als 10 Fehler-Logs pro Sekunde in app=api"

Nächste Schritte

  • Nutze strukturierte Labels konsequent (z. B. app, env, team), um Abfragen effizient zu halten.
  • Kombiniere STACKIT Logs mit Metriken und Traces für vollständige Observability.
  • Richte Recording Rules ein, um häufig genutzte Aggregationen vorzuberechnen.
  • Vergleiche STACKIT Logs (label-basiert) mit LogMe (Volltextsuche), um den passenden Service für deinen Use Case zu wählen.