Sobes.tech
Senior

Έχεις εσύ ο ίδιος περιγράψει κάτι για την observability — μετρήσεις, ειδοποιήσεις;

sobes.tech AI

Απάντηση από AI

Για την παρατηρησιμότητα σε έργα Go, περιέγραψα μετρήσεις χρησιμοποιώντας τη βιβλιοθήκη Prometheus client_golang. Συνήθως δημιουργούσα μετρητές (Counters) για την καταμέτρηση γεγονότων, ιστογράμματα (Histograms) για τη μέτρηση χρόνου εκτέλεσης και Gauge για τρέχουσες τιμές.

Παράδειγμα δημιουργίας και εγγραφής μετρήσεων:

var httpRequestsTotal = prometheus.NewCounterVec(
    prometheus.CounterOpts{
        Name: "http_requests_total",
        Help: "Αριθμός αιτήσεων HTTP",
    },
    []string{"method", "endpoint"},
)

func init() {
    prometheus.MustRegister(httpRequestsTotal)
}

func handler(w http.ResponseWriter, r *http.Request) {
    httpRequestsTotal.WithLabelValues(r.Method, r.URL.Path).Inc()
    // επεξεργασία αιτήματος
}

Για ειδοποιήσεις, συνήθως ρυθμίζω κανόνες στο Prometheus Alertmanager, π.χ., αν ο αριθμός σφαλμάτων υπερβαίνει ένα όριο σε μια συγκεκριμένη περίοδο. Αυτό επιτρέπει την άμεση ανταπόκριση σε προβλήματα στην υπηρεσία.