Zum Hauptinhalt springen

Metriken

info

Der Metrik-Endpunkt ist seit Semaphore Version 2.20 verfügbar. Wenn Sie eine ältere Version verwenden, führen Sie ein Upgrade durch, um diese Funktion zu nutzen.

Semaphore stellt einen GET /api/metrics-Endpunkt im Standard-Textformat von Prometheus bereit, sodass eine bestehende Prometheus-und-Grafana-Installation den Server ohne externes Polling-Tool überwachen kann.

Es werden zwei Kategorien von Metriken bereitgestellt:

  • Prozessmetriken: Statistiken der Go-Laufzeit und des Prozesses – Anzahl der Goroutinen, Speicher (Heap/Resident), CPU-Zeit, GC-Pausen. Diese liefern die Standard-Go-/Prozess-Collector von Prometheus ohne zusätzlichen Aufwand.
  • Task-Metriken, spezifisch für die Arbeitslast von Semaphore:
    • semaphore_tasks_running (Gauge): Anzahl der aktuell laufenden Tasks.
    • semaphore_tasks_total{status} (Counter): Gesamtzahl der abgeschlossenen Tasks, aufgeschlüsselt nach Ergebnis: success, error, stopped.

Beide werden in Echtzeit aktualisiert, sobald Tasks ihren Zustand ändern – es gibt keine Polling-Verzögerung, da die Zähler direkt im Task-Runner in dem Moment aktualisiert werden, in dem sich der Status eines Tasks tatsächlich ändert.

Metriken aktivieren

Der Endpunkt ist standardmäßig deaktiviert und erfordert HTTP Basic Auth mit statischen Zugangsdaten auf Dienstebene – nicht an ein Benutzerkonto gebunden, da Prometheus keine interaktive Anmeldung durchführen kann:

{
"metrics": {
"enabled": true,
"username": "prometheus",
"password": "changeme"
}
}

Oder über Umgebungsvariablen:

SEMAPHORE_METRICS_ENABLED=true
SEMAPHORE_METRICS_USERNAME=prometheus
SEMAPHORE_METRICS_PASSWORD=changeme

Metrik-Optionen

ParameterUmgebungsvariablenBeschreibung
enabledSEMAPHORE_METRICS_ENABLEDSchaltet den /api/metrics-Endpunkt ein oder aus. Standardmäßig deaktiviert.
usernameSEMAPHORE_METRICS_USERNAMEBasic-Auth-Benutzername, der zum Abrufen des Endpunkts erforderlich ist.
passwordSEMAPHORE_METRICS_PASSWORDBasic-Auth-Passwort, das zum Abrufen des Endpunkts erforderlich ist (vertraulich).

Wenn enabled auf false belassen wird (Standard) oder die Zugangsdaten fehlen oder falsch sind, gibt jede Anfrage an /api/metrics 401 Unauthorized zurück.

Abrufen mit Prometheus

Konfigurieren Sie einen Scrape-Job mit basic_auth und den oben genannten Zugangsdaten:

scrape_configs:
- job_name: semaphore
metrics_path: /api/metrics
basic_auth:
username: prometheus
password: changeme
static_configs:
- targets: ["<semaphore-host>:3000"]

Metriken in Grafana anzeigen

In der Explore-Ansicht von Grafana können Sie beliebige PromQL-Abfragen direkt gegen die Metriken ausführen und die Rohergebnisse sehen, ohne zuerst ein Dashboard erstellen zu müssen:

Grafana Explore mit abgerufenen Semaphore-Metriken

Auf Basis derselben Metriken lässt sich anschließend ein Dashboard erstellen – dieses Beispiel deckt beide Kategorien mit vier Panels ab: laufende Tasks, Tasks gesamt nach Ergebnis, Goroutinen und Resident-Speicher des Prozesses.

Grafana-Dashboard mit Semaphore-Panels