prometheus/client_golang Go: Komplettguide mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

prometheus/client_golang für Go: Das vollständige Handbuch

1. Was ist das und warum braucht man es?

Die Bibliothek prometheus/client_golang ist der offizielle Client für das Monitoring-System Prometheus, geschrieben in Go. Sie bietet Entwicklern ein leistungsstarkes und flexibles Toolkit zum Sammeln, Aggregieren und Exportieren von Metriken aus Go-Anwendungen. Prometheus selbst ist eines der beliebtesten Systeme für Metrik-Erfassung und Monitoring in der DevOps- und Cloud-Welt, besonders im Kubernetes-Ökosystem.

Warum ist das wichtig? In modernen Microservice-Architekturen ist es entscheidend zu verstehen, wie Ihre Anwendung läuft: wie viele Anfragen sie verarbeitet, wie hoch die Antwortzeiten sind, wie viel Speicher sie verbraucht und wie oft Fehler auftreten. prometheus/client_golang ermöglicht es Ihnen, Ihren Code einfach zu instrumentieren und diese Metriken hinzuzufügen. Die Bibliothek stellt automatisch einen Endpunkt (meist /metrics) bereit, den Prometheus in regelmäßigen Abständen "scrapen" (abfragen) kann. So können Sie Dashboards in Grafana erstellen, Alarme konfigurieren und erhalten ein vollständiges Bild vom Zustand Ihres Dienstes.

Zu den wichtigsten Funktionen der Bibliothek gehört die Unterstützung der vier grundlegenden Prometheus-Metriktypen: Counter (ein Zähler, der nur steigen kann), Gauge (ein Messwert, der sowohl steigen als auch fallen kann), Histogram (ein Histogramm zur Messung von Werteverteilungen, z. B. Antwortzeiten) und Summary (ähnlich wie ein Histogramm, berechnet aber Quantile clientseitig). Darüber hinaus bietet die Bibliothek praktische "Collectors" für Standard-Go-Metriken (Speicher, Goroutinen, GC) und den HTTP-Server.

2. Installation

Die Installation der Bibliothek erfolgt mit dem Standardbefehl go get. Stellen Sie sicher, dass Go in Version 1.16 oder höher installiert ist (die aktuelle stabile Version wird empfohlen).

go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promhttp

Nach der Ausführung dieser Befehle erscheint die Abhängigkeit in Ihrer go.mod-Datei. Das Paket prometheus enthält den Kern der Bibliothek (Metriktypen, Registrierung), während promhttp den HTTP-Handler für den Metrik-Export bereitstellt.

3. Schnellstart – ein minimales Arbeitsbeispiel

Lassen Sie uns eine minimale Anwendung erstellen, die eine einzelne Metrik exportiert – die Anzahl der verarbeiteten HTTP-Anfragen.

package main

import (
    "fmt"
    "net/http"

    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
)

var (
    // Definiere einen Anfragenzähler mit dem Label "path"
    requestsTotal = prometheus.NewCounterVec(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Gesamtzahl der HTTP-Anfragen.",
        },
        []string{"path"},
    )
)

func init() {
    // Metrik im globalen Registry registrieren
    prometheus.MustRegister(requestsTotal)
}

func main() {
    // Handler für den Hauptpfad
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // Zähler für den Pfad "/" erhöhen
        requestsTotal.WithLabelValues("/").Inc()
        fmt.Fprintf(w, "Hallo, Welt!")
    })

    // Handler für den Prometheus-Metrik-Endpunkt
    http.Handle("/metrics", promhttp.Handler())

    fmt.Println("Server gestartet auf :8080")
    http.ListenAndServe(":8080", nil)
}

Starten Sie diesen Code (go run main.go) und öffnen Sie http://localhost:8080/metrics im Browser. Sie sehen viele Metriken, darunter unsere http_requests_total. Jedes Mal, wenn Sie http://localhost:8080/ aufrufen, wird der Zählerwert erhöht.

4. Wichtige Methoden/Funktionen/Klassen

4.1. prometheus.NewCounter / prometheus.NewCounterVec

Empfehlungen