Logs aus Grafana Alloy oder Promtail an UptimeEye senden

UptimeEye spricht das Loki-Push-Protokoll unter /v1/ingest/loki/api/v1/push. Alles, was nach Loki schreiben kann – Promtail, Grafana Alloy, der Grafana Agent, der loki-Sink von Vector –, kann auch an UptimeEye schreiben, auf Wunsch parallel zu deinem bestehenden Loki. Loki-Labels werden zu Stream-Feldern.

Endpunkt: https://logs.uptimeeye.com/v1/ingest/loki/api/v1/push

1.Grafana Alloy

config.alloy
local.file_match "app" {
  path_targets = [{ __path__ = "/var/log/myapp/*.log", service = "myapp", env = "prod" }]
}

loki.source.file "app" {
  targets    = local.file_match.app.targets
  forward_to = [loki.write.uptimeeye.receiver]
}

loki.write "uptimeeye" {
  endpoint {
    url          = "https://logs.uptimeeye.com/v1/ingest/loki/api/v1/push"
    bearer_token = sys.env("UPTIMEEYE_KEY")
  }
  external_labels = { host = constants.hostname }
}

2.Promtail

promtail.yaml
clients:
  - url: https://logs.uptimeeye.com/v1/ingest/loki/api/v1/push
    bearer_token: ue_ingest_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    external_labels:
      env: prod

scrape_configs:
  - job_name: myapp
    static_configs:
      - targets: [localhost]
        labels:
          service: myapp
          __path__: /var/log/myapp/*.log

3.Suchen

Labels kommen als Felder und als Stream an: service:=myapp oder _stream:{service="myapp",env="prod"} für den schnellstmöglichen Filter.

Felder, die du bekommst

Diese Felder erscheinen im Panel „Felder“ und funktionieren in jedem Filter:

  • jedes Loki-Label (service, env, host, job, filename)
  • Structured Metadata, wenn deine Pipeline sie setzt

Tipps

  • Halte die Kardinalität der Labels niedrig, genau wie bei Loki. Request-IDs und User-IDs gehören in die Zeile, nicht in Labels.
  • Die loki.process-Stages von Alloy (stage.multiline, stage.json) laufen vor dem Schreiben, so kommen extrahierte Felder auch bei UptimeEye als Felder an.

FAQ

Kann ich gleichzeitig an Loki und UptimeEye senden?

Ja. Trag in Promtail beide unter clients: ein oder leite in Alloy an zwei loki.write-Komponenten weiter.

Wo bekomme ich den Ingest-Key?

In der App unter API-Keys → Neuer API-Key → Typ „Log-Ingest“. Der Key beginnt mit ue_ingest_ und wird nur einmal angezeigt. Management-Keys (ue_live_) lehnt der Ingest-Endpoint ab.

Wie sehe ich, ob Logs ankommen?

Öffne Logs in der App, wähl den Zeitraum „15 Min.“ und such nach service:=<your service>. Neue Zeilen sind nach etwa einer Sekunde durchsuchbar; Live-Tail zeigt sie mit etwa 6 s Verzögerung.