Sobes.tech
Middle

Ποιοι τύποι μετρήσεων στο Prometheus γνωρίζετε;

sobes.tech AI

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

Το Prometheus υποστηρίζει τέσσερις βασικούς τύπους μετρήσεων:

  1. Counter (Μετρητής): Τιμή που αυξάνεται μονοτονικά, μπορεί μόνο να αυξηθεί (ή να επαναφερθεί στο μηδέν κατά την επανεκκίνηση της διαδικασίας). Χρησιμοποιείται για την καταμέτρηση επαναλαμβανόμενων γεγονότων, όπως αιτήματα, σφάλματα ή ολοκληρωμένες εργασίες.
    // Παράδειγμα σε Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Συνολικός αριθμός αιτημάτων HTTP.",
        },
    )
    
  2. Gauge (Δείκτης): Τυχαία αριθμητική τιμή που μπορεί να αυξηθεί ή να μειωθεί. Χρησιμοποιείται για τη μέτρηση της τρέχουσας κατάστασης κάτι, όπως η χρήση CPU, η μνήμη, ο αριθμός ενεργών χρηστών ή το μέγεθος της ουράς.
    # Παράδειγμα σε Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Τρέχον ποσοστό χρήσης CPU')
    cpu_usage.set(55.5)
    
  3. Histogram (Ιστόγραμμα): Μετρά την κατανομή δειγμάτων (π.χ. χρόνους απόκρισης αιτημάτων) και τα ομαδοποιεί σε διαμορφώσιμα κουτιά (buckets). Επιτρέπει την απόκτηση δεδομένων σχετικά με τον αριθμό δειγμάτων σε κάθε κουτί και το συνολικό άθροισμα των τιμών. Χρησιμοποιείται για ανάλυση καθυστερήσεων.
    // Παράδειγμα σε Java
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Διάρκεια αιτήματος σε δευτερόλεπτα.")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Κουτιά
        .register();
    
  4. Summary (Περίληψη): Παρόμοιο με το ιστόγραμμα, αλλά υπολογίζει διαμορφώσιμα ποσοστά κατανομής δειγμάτων σε ένα κυλιόμενο παράθυρο χρόνου. Παρέχει επίσης τον συνολικό αριθμό δειγμάτων και το άθροισμά τους. Κατάλληλο για μέτρηση καθυστερήσεων, όταν τα ποσοστά είναι σημαντικά, αλλά απαιτεί μεγαλύτερη υπολογιστική ισχύ και μπορεί να δώσει λιγότερο ακριβή ποσοστά κατά την ομαδοποίηση.
    # Παράδειγμα σε Ruby
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Διάρκεια αιτήματος σε δευτερόλεπτα.')
    

Η επιλογή του τύπου μετρήσεως εξαρτάται από τη φύση των δεδομένων που πρέπει να παρακολουθούνται.