"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Σας προτείνω να διαβάσετε τη μεταγραφή της αναφοράς του Roman Khavronenko "ExtendedPromQL"

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Εν συντομία για μένα. Το όνομά μου είναι Ρωμαίος. Εργάζομαι στο CloudFlare και ζω στο Λονδίνο. Αλλά είμαι επίσης συντηρητής της VictoriaMetrics.
Και είμαι ο συγγραφέας Πρόσθετο ClickHouse για τη Γραφάνα και ClickHouse-proxy είναι ένας μικρός διακομιστής μεσολάβησης για το ClickHouse.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Θα ξεκινήσουμε με το πρώτο μέρος, που ονομάζεται «Δυσκολίες της Μετάφρασης» και σε αυτό θα μιλήσω για το γεγονός ότι οποιαδήποτε γλώσσα ή ακόμα και απλώς μια γλώσσα επικοινωνίας είναι πολύ σημαντική. Γιατί έτσι μεταφέρετε τις σκέψεις σας σε άλλο άτομο ή σύστημα, διατυπώνετε ένα αίτημα. Οι άνθρωποι στο Διαδίκτυο διαφωνούν για το ποια γλώσσα είναι καλύτερη - η java ή κάποια άλλη. Για τον εαυτό μου, αποφάσισα ότι πρέπει να επιλέξω ανάλογα με την εργασία, γιατί όλα αυτά είναι συγκεκριμένα.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Ας τα πάρουμε από την αρχή. Τι είναι το PromQL; Η PromQL είναι η γλώσσα ερωτημάτων Prometheus. Έτσι σχηματίζουμε ερωτήματα στον Προμηθέα για να λάβουμε δεδομένα χρονοσειρών.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Τι είναι τα δεδομένα χρονοσειρών; Κυριολεκτικά, αυτές είναι τρεις παράμετροι.

Αυτά είναι:

  • Τι κοιτάμε;
  • Όταν το κοιτάμε.
  • Και τι αξία δείχνει;

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Αν κοιτάξετε αυτό το γράφημα (αυτό το γράφημα είναι από το τηλέφωνό μου που δείχνει τα στατιστικά των βημάτων μου), μπορεί να απαντήσει γρήγορα σε αυτές τις ερωτήσεις.

Κοιτάμε τα βήματα. Βλέπουμε το νόημα και βλέπουμε την ώρα όταν το κοιτάμε. Δηλαδή, βλέποντας αυτό το διάγραμμα, μπορείς εύκολα να πεις ότι την Κυριακή περπάτησα περίπου 15 βήματα. Αυτά είναι δεδομένα χρονοσειρών.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Τώρα ας τα «διαχωρίσουμε» (μετατρέψουμε) σε άλλο μοντέλο δεδομένων με τη μορφή πίνακα. Εδώ έχουμε επίσης αυτό που εξετάζουμε. Εδώ πρόσθεσα λίγα επιπλέον δεδομένα, τα οποία θα ονομάσουμε μεταδεδομένα, δηλαδή δεν το πέρασα εγώ, αλλά δύο άτομα, για παράδειγμα, ο Τζέι και ο Σιωπηλός Μπομπ. Αυτό είναι αυτό που εξετάζουμε. τι δείχνει και πότε δείχνει αυτή την αξία.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko
Τώρα ας προσπαθήσουμε να αποθηκεύσουμε όλα αυτά τα δεδομένα σε μια βάση δεδομένων. Για παράδειγμα, πήρα τη σύνταξη ClickHouse. Και εδώ δημιουργούμε έναν πίνακα που ονομάζεται "Βήματα", δηλαδή αυτό που κοιτάμε. Υπάρχει μια στιγμή που το κοιτάμε. τι δείχνει και κάποια μεταδεδομένα όπου θα αποθηκεύσουμε ποιος είναι: Jay και Silent Bob.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και για να προσπαθήσουμε να τα οπτικοποιήσουμε όλα αυτά, θα χρησιμοποιήσουμε το Grafana γιατί, πρώτα απ 'όλα, είναι όμορφο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Θα χρησιμοποιήσουμε επίσης αυτό το πρόσθετο. Υπάρχουν δύο λόγοι για αυτό. Το πρώτο είναι επειδή το έγραψα. Και γνωρίζω ακριβώς πόσο δύσκολο είναι να αντλήσετε δεδομένα χρονοσειρών από το ClickHouse για να τα εμφανίσετε στο Grafana.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Θα το εμφανίσουμε στον πίνακα γραφημάτων. Αυτό είναι το πιο δημοφιλές πλαίσιο στο Grafana, το οποίο δείχνει την εξάρτηση μιας τιμής από το χρόνο, επομένως χρειαζόμαστε μόνο δύο παραμέτρους.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko
Ας γράψουμε το απλούστερο ερώτημα - πώς να εμφανίσουμε στατιστικά βημάτων στο Grafana, αποθηκεύοντας αυτά τα δεδομένα στο ClickHouse, στον πίνακα που δημιουργήσαμε. Και γράφουμε αυτό το απλό αίτημα. Επιλέγουμε από βήματα. Επιλέγουμε μια τιμή και επιλέγουμε τον χρόνο αυτών των τιμών, δηλαδή τις ίδιες τρεις παραμέτρους για τις οποίες μιλήσαμε.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και ως αποτέλεσμα, θα πάρουμε ένα γράφημα όπως αυτό. Ποιος ξέρει γιατί είναι τόσο περίεργος;

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Αυτό είναι σωστό, πρέπει να ταξινομήσουμε με βάση το χρόνο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και στο τέλος θα έχουμε ένα καλύτερο, αλλά και πάλι περίεργο πρόγραμμα. Ποιος ξέρει γιατί; Σωστά, υπάρχουν δύο συμμετέχοντες και εμείς στη Grafana χαρίζουμε δύο χρονοσειρές, γιατί αν κοιτάξετε ξανά το μοντέλο δεδομένων, τότε κάθε χρονοσειρά είναι ένας μοναδικός συνδυασμός ονόματος και όλων των ετικετών κλειδιών-τιμών.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Επομένως, πρέπει να επιλέξουμε ένα συγκεκριμένο άτομο. Επιλέγουμε τον Τζέι.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και ας ζωγραφίσουμε ξανά. Τώρα το γράφημα μοιάζει με την αλήθεια. Τώρα αυτό είναι ένα κανονικό πρόγραμμα και όλα λειτουργούν καλά.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και μάλλον ξέρετε πώς να κάνετε περίπου το ίδιο πράγμα, αλλά στον Prometheus μέσω PromQL. Κάτι σαν αυτό. Λίγο πιο απλό. Και ας τα αναλύσουμε όλα. Κάναμε Βήματα. Και φίλτρο κατά Jay. Δεν διευκρινίζουμε εδώ ότι πρέπει να πάρουμε μια τιμή και δεν επιλέγουμε χρόνο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Τώρα ας προσπαθήσουμε να υπολογίσουμε την ταχύτητα κίνησης του Jay ή του Silent Bob. Στο ClickHouse θα χρειαστεί να κάνουμε το runningDifference, δηλαδή να υπολογίσουμε τη διαφορά μεταξύ των ζευγών σημείων και να τα διαιρέσουμε με το χρόνο για να πάρουμε την ακριβή ταχύτητα. Το αίτημα θα μοιάζει κάπως έτσι.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και θα δείχνει περίπου αυτές τις τιμές, δηλαδή ο Silent Bob ή ο Jay κάνει περίπου 1,8 βήματα ανά δευτερόλεπτο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και στον Προμηθέα αυτό ξέρεις να το κάνεις. Πολύ πιο εύκολο από ότι ήταν πριν.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman KhavronenkoΚαι για να είναι επίσης εύκολο να γίνει στο Grafana, πρόσθεσα αυτό το περιτύλιγμα, το οποίο μοιάζει πολύ με το PromQL. Ονομάζεται Rate Macros ή όπως αλλιώς θέλετε πείτε το. Στα Grafana γράφεις απλά «rate», αλλά κάπου βαθιά μεταμορφώνεται σε αυτό το μεγάλο αίτημα. Και δεν χρειάζεται καν να το κοιτάξετε, είναι κάπου εκεί, αλλά εξοικονομείτε πολύ χρόνο, επειδή η σύνταξη τέτοιων τεράστιων ερωτημάτων SQL είναι πάντα ακριβή. Μπορείς εύκολα να κάνεις ένα λάθος και μετά να μην καταλάβεις τι συμβαίνει για πολύ καιρό.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και αυτό είναι ένα αίτημα που δεν χωρούσε καν σε μια διαφάνεια και έπρεπε μάλιστα να το χωρίσω σε δύο στήλες. Αυτό είναι επίσης ένα αίτημα στο ClickHouse, το οποίο κάνει τον ίδιο ρυθμό, αλλά και για τις δύο χρονοσειρές: Silent Bob και Jay, έτσι ώστε να έχουμε δύο χρονοσειρές στον πίνακα. Και αυτό είναι ήδη πολύ δύσκολο, κατά τη γνώμη μου.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και κατά τον Προμηθέα θα είναι άθροισμα (rate). Για το ClickHouse, έφτιαξα μια ξεχωριστή μακροεντολή που ονομάζεται RateColumns, η οποία μοιάζει με ερώτημα στον Prometheus.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Το εξετάσαμε και φαίνεται ότι το PromQL είναι τόσο ωραίο, αλλά έχει, φυσικά, περιορισμούς.

Αυτά είναι:

  • Περιορισμένη ΕΠΙΛΟΓΗ.
  • Οριακές ΣΥΝΔΕΣΕΙΣ.
  • Χωρίς υποστήριξη.

Και αν έχετε δουλέψει με αυτό για πολύ καιρό, τότε ξέρετε ότι μερικές φορές είναι πολύ δύσκολο να κάνετε κάτι στο PromQL, αλλά στην SQL μπορείτε να κάνετε σχεδόν τα πάντα, επειδή όλες αυτές οι επιλογές για τις οποίες μόλις μιλήσαμε θα μπορούσαν να γίνουν σε SQL . Αλλά θα ήταν βολικό να το χρησιμοποιήσω; Και αυτό με κάνει να σκέφτομαι ότι η πιο ισχυρή γλώσσα μπορεί να μην είναι πάντα η πιο βολική.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Επομένως, μερικές φορές χρειάζεται να επιλέξετε μια γλώσσα για την εργασία. Είναι σαν ο Μπάτμαν να πολεμά τον Σούπερμαν. Είναι ξεκάθαρο ότι ο Σούπερμαν είναι πιο δυνατός, αλλά ο Μπάτμαν κατάφερε να τον νικήσει γιατί είναι πιο πρακτικός και ήξερε ακριβώς τι έκανε.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και το επόμενο μέρος είναι το Extending PromQL.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Για άλλη μια φορά για τη VictoriaMetrics. Τι είναι η VictoriaMetrics; Αυτή είναι μια βάση δεδομένων χρονοσειρών, βρίσκεται στο OpenSource, διανέμουμε τις single και cluster εκδόσεις της. Σύμφωνα με τα σημεία αναφοράς μας, είναι πιο γρήγορο από οτιδήποτε κυκλοφορεί τώρα στην αγορά και η συμπίεση είναι παρόμοια, δηλαδή οι πραγματικοί άνθρωποι αναφέρουν συμπίεση περίπου 0,4 byte ανά σημείο, ενώ του Προμηθέα είναι 1,2-1,4.

Υποστηρίζουμε κάτι περισσότερο από τον Προμηθέα. Υποστηρίζουμε InfluxDB, Graphite, OpenTSDB.

Μπορείτε να μας «γράψετε», δηλαδή να μεταφέρετε παλιά δεδομένα.

Και επίσης συνεργαζόμαστε άψογα με τους Prometheus και Grafana, δηλαδή υποστηρίζουμε τον κινητήρα PromQL. Και στο Grafana μπορείτε απλά να αλλάξετε το τελικό σημείο του Prometheus σε VictoriaMetrics και όλοι οι πίνακες εργαλείων σας θα λειτουργήσουν όπως λειτουργούσαν.

Αλλά μπορείτε επίσης να χρησιμοποιήσετε πρόσθετες λειτουργίες που παρέχει η VictoriaMetrics.

Θα εξετάσουμε γρήγορα τις δυνατότητες που έχουμε προσθέσει.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Παράλειψη παραμέτρων διαστήματος – μπορείτε να παραλείψετε παραμέτρους διαστήματος στο Grafana. Όταν δεν θέλετε να λαμβάνετε περίεργα γραφήματα κατά τη μεγέθυνση/σμίκρυνση στον πίνακα, συνιστάται η χρήση της μεταβλητής $__interval. Αυτή είναι μια εσωτερική αλλαγή Grafana και επιλέγει το ίδιο το εύρος δεδομένων. Και η ίδια η VictoriaMetrics μπορεί να καταλάβει ποια πρέπει να είναι αυτή η σειρά. Και δεν χρειάζεται να ενημερώσετε όλα τα αιτήματά σας. Θα είναι πολύ πιο εύκολο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

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

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

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

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και αν κάνετε απλώς οργή ή βαθμολογήστε, τότε πιθανότατα θα χάσετε κάποιες περιπτώσεις όπου η χρονική σειρά δεν συμπεριφέρεται όπως περιμένατε. Με αυτή τη λειτουργία είναι πολύ πιο εύκολο να το δούμε, ας πούμε ότι το μέγιστο είναι πολύ από το μέσο όρο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Επόμενη είναι η προεπιλεγμένη μεταβλητή. Προεπιλογή - αυτό σημαίνει ποια τιμή πρέπει να λάβουμε στο Grafana εάν δεν έχουμε χρονοσειρά αυτή τη στιγμή. Πότε συμβαίνει αυτό; Ας υποθέσουμε ότι εξάγετε ορισμένες μετρήσεις σφάλματος. Και έχετε μια τόσο δροσερή εφαρμογή που όταν ξεκινάτε, δεν έχετε σφάλματα, ούτε καν σφάλματα για τις επόμενες τρεις ώρες ή ακόμα και μια μέρα. Και έχετε πίνακες εργαλείων που δείχνουν τη σχέση από επιτυχία σε λάθος. Και δεν θα σας δείξουν τίποτα επειδή δεν έχετε μέτρηση σφάλματος. Και στην προεπιλογή μπορείτε να καθορίσετε οτιδήποτε.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Keep_last_Value – αποθηκεύει την τελευταία τιμή της μέτρησης εάν λείπει. Εάν ο Prometheus δεν το βρει μέσα σε 5 λεπτά μετά το επόμενο scrape, τότε εδώ θα θυμηθούμε την τελευταία του τιμή και τα γραφήματα σας δεν θα ξανασπάσουν.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Scrape_interval – δείχνει πόσο συχνά ο Prometheus συλλέγει δεδομένα για τη μέτρησή σας και με ποια συχνότητα. Εδώ μπορείτε να δείτε ένα πάσο, για παράδειγμα.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko
Η αντικατάσταση ετικετών είναι ένα δημοφιλές χαρακτηριστικό. Αλλά πιστεύουμε ότι είναι λίγο περίπλοκο γιατί απαιτεί ολόκληρα επιχειρήματα. Και πρέπει όχι μόνο να θυμάστε 5 ορίσματα, αλλά και να θυμάστε τη σειρά τους.
"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko
Επομένως, γιατί να μην τα κάνουμε πιο απλά; Αναλύστε το δηλαδή σε μικρές συναρτήσεις με κατανοητή σύνταξη.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και τώρα το διασκεδαστικό κομμάτι. Γιατί πιστεύουμε ότι αυτό είναι εκτεταμένο PromQL; Επειδή υποστηρίζουμε κοινές εκφράσεις πίνακα. Μπορείτε να ακολουθήσετε τον κωδικό QR (https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL), δείτε συνδέσμους με παραδείγματα, από την παιδική χαρά, όπου μπορείτε να εκτελέσετε ερωτήματα απευθείας στο VictoriaMetrics χωρίς να το εγκαταστήσετε απλά στο πρόγραμμα περιήγησης.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και τι είναι αυτό; Αυτό το παραπάνω αίτημα είναι ένα αρκετά δημοφιλές αίτημα. Νομίζω σε οποιοδήποτε ταμπλό σε πολλές εταιρείες χρησιμοποιείς το ίδιο φίλτρο για όλα. Συνήθως έτσι. Αλλά όταν χρειάζεται να προσθέσετε κάποιο νέο φίλτρο, πρέπει να ενημερώσετε κάθε πίνακα ή να κατεβάσετε τον πίνακα εργαλείων, να τον ανοίξετε σε JSON, να βρείτε την αντικατάσταση, κάτι που απαιτεί επίσης χρόνο. Γιατί να μην αποθηκεύσετε αυτήν την τιμή σε μια μεταβλητή και να την επαναχρησιμοποιήσετε; Αυτό φαίνεται, κατά τη γνώμη μου, πολύ πιο απλό και ξεκάθαρο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Για παράδειγμα, όταν χρειάζεται να ενημερώσω φίλτρα στο Grafana σε όλα τα αιτήματα και ο πίνακας εργαλείων μπορεί να είναι τεράστιος ή μπορεί να υπάρχουν αρκετά από αυτά. Και πώς θα ήθελα να λύσω αυτό το πρόβλημα στη Γραφάνα;

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Λύνω αυτό το πρόβλημα με αυτόν τον τρόπο: Φτιάχνω ένα κοινό φίλτρο και ορίζω αυτό το φίλτρο σε αυτό και μετά το ξαναχρησιμοποιώ σε ερωτήματα. Αλλά αν κάνετε το ίδιο τώρα, δεν θα λειτουργήσει επειδή το Grafana δεν σας επιτρέπει να χρησιμοποιείτε μεταβλητές μέσα σε μεταβλητές ερωτήματος. Και είναι λίγο περίεργο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και έτσι έφτιαξα μια επιλογή που σας επιτρέπει να το κάνετε αυτό. Και αν ενδιαφέρεστε ή θέλετε μια τέτοια δυνατότητα, υποστηρίξτε την ή δεν σας αρέσει αν δεν σας αρέσει αυτή η ιδέα. https://github.com/grafana/grafana/pull/16694

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Περισσότερα για την επέκταση PromQL. Εδώ ορίζουμε όχι μόνο μια μεταβλητή, αλλά μια ολόκληρη συνάρτηση. Και το ονομάζουμε ru (χρήση πόρων). Και αυτή η λειτουργία δέχεται δωρεάν πόρους, περιορισμό πόρων και φίλτρο. Η σύνταξη φαίνεται να είναι απλή. Και είναι πολύ εύκολο να χρησιμοποιήσετε αυτήν τη συνάρτηση και να υπολογίσετε το ποσοστό της ελεύθερης μνήμης που έχουμε. Δηλαδή πόση μνήμη έχουμε, ποιος είναι ο περιορισμός και πώς φιλτράρουμε. Φαίνεται πολύ πιο βολικό αν τα γράφατε όλα, χρησιμοποιώντας ξανά τα ίδια φίλτρα, γιατί θα μετατρεπόταν σε μεγάλο, μεγάλο ερώτημα.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Και εδώ είναι ένα παράδειγμα ενός τόσο μεγάλου, μεγάλου αιτήματος. Είναι από τον επίσημο πίνακα ελέγχου NodeExporter για το Grafana. Αλλά μετά βίας καταλαβαίνω τι συμβαίνει εδώ. Αυτό είναι, φυσικά, καταλαβαίνω αν κοιτάξετε προσεκτικά, αλλά ο αριθμός των παρενθέσεων μπορεί να μειώσει αμέσως το κίνητρο για να κατανοήσετε τι συμβαίνει εδώ. Και γιατί να μην το κάνουμε πιο απλό και σαφές;

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

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

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Ακολουθεί ένα δεύτερο παράδειγμα για το πώς θα μπορούσαμε να το κάνουμε αυτό ακόμα πιο εύκολο αν είχαμε ήδη αυτήν τη λειτουργία ru και υπάρχει ήδη απευθείας στο VictoriaMetrics. Στη συνέχεια, απλώς μεταβιβάζετε την τιμή που έχει αποθηκευτεί στην προσωρινή μνήμη που δηλώσατε στο CTE.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Έχω ήδη μιλήσει για το πόσο σημαντικό είναι να χρησιμοποιείτε τη σωστή γλώσσα προγραμματισμού. Και, πιθανώς, κάθε εταιρεία στα Γραφάνα έχει κάτι διαφορετικό. Και πιθανότατα δίνετε επίσης πρόσβαση στο Grafana στους προγραμματιστές σας και οι προγραμματιστές κάνουν το δικό τους. Και όλοι το κάνουν κάπως διαφορετικά. Ήθελα όμως να είναι κάπως το ίδιο, δηλαδή να το αναγάγω σε ένα κοινό πρότυπο.

Ας υποθέσουμε ότι δεν έχετε καν μόνο μηχανικούς συστημάτων, ίσως ακόμη και ειδικούς, devops ή SRE. Ίσως έχετε ειδικούς που ξέρουν τι είναι η παρακολούθηση, που ξέρουν τι είναι το Grafana, δηλαδή δουλεύουν με αυτό χρόνια και ξέρουν ακριβώς πώς να το κάνουν σωστά. Και το έχουν γράψει ήδη 100 φορές και το έχουν εξηγήσει σε όλους, αλλά για κάποιο λόγο δεν ακούει κανείς.

Τι θα γινόταν αν μπορούσαν να βάλουν αυτές τις γνώσεις απευθείας στο Grafana, ώστε άλλοι χρήστες να μπορούν να χρησιμοποιήσουν ξανά τις δυνατότητες; Και αν χρειαζόταν να υπολογίσουν το ποσοστό της ελεύθερης μνήμης, απλώς θα εφάρμοζαν τη συνάρτηση. Τι θα γινόταν αν οι δημιουργοί των εξαγωγέων, μαζί με το προϊόν τους, παρείχαν επίσης ένα σύνολο λειτουργιών για το πώς να εργαστούν με τις μετρήσεις τους, επειδή γνωρίζουν ακριβώς ποιες είναι αυτές οι μετρήσεις και πώς να τις υπολογίσουν σωστά;

Αυτό στην πραγματικότητα δεν υπάρχει. Αυτό έκανα ο ίδιος. Αυτή είναι η υποστήριξη βιβλιοθήκης στα Γραφάνα. Ας πούμε ότι τα παιδιά που έφτιαξαν το NodeExporter έκαναν αυτό για το οποίο μίλησα. Και παρείχαν επίσης ένα σύνολο λειτουργιών.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Κάπως έτσι μοιάζει δηλαδή. Συνδέετε αυτήν τη βιβλιοθήκη με το Grafana, πηγαίνετε στην επεξεργασία και είναι γραμμένο πολύ απλά σε JSON πώς να εργαστείτε με αυτήν τη μέτρηση. Δηλαδή, κάποιο σύνολο συναρτήσεων, η περιγραφή τους και σε τι μετατρέπονται.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Νομίζω ότι αυτό θα μπορούσε να είναι χρήσιμο, γιατί τότε στα Γραφάνα θα έγραφες ακριβώς έτσι. Και η Grafana σας "λέει" ότι υπάρχει μια τέτοια λειτουργία από μια τέτοια και μια τέτοια βιβλιοθήκη - ας τη χρησιμοποιήσουμε. Νομίζω ότι θα ήταν πολύ ωραίο.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Λίγα λόγια για τη VictoriaMetrics. Κάνουμε πολλά ενδιαφέροντα πράγματα. Διαβάστε τα άρθρα μας για τη συμπίεση, για τους διαγωνισμούς μας με άλλες εφαρμογές δεδομένων χρονοσειρών, την εξήγησή μας για το πώς να δουλέψετε με την PromQL, γιατί υπάρχουν ακόμα πολλοί αρχάριοι σε αυτό, καθώς και για την κάθετη επεκτασιμότητα και για την αντιπαράθεση με τον Thanos.

"ExtendedPromQL" - μεταγραφή της αναφοράς από τον Roman Khavronenko

Ερωτήσεις:

Θα ξεκινήσω την ερώτησή μου με μια απλή ιστορία ζωής. Όταν άρχισα να χρησιμοποιώ για πρώτη φορά το Grafana, έγραψα ένα πολύ συναρπαστικό ερώτημα που ήταν 5 γραμμές. Το τελικό αποτέλεσμα είναι ένα πολύ πειστικό γράφημα. Αυτό το πρόγραμμα έχει σχεδόν μπει στην παραγωγή. Αλλά μετά από προσεκτικότερη εξέταση, αποδείχθηκε ότι αυτό το γράφημα δείχνει απόλυτη ανοησία που δεν έχει καμία σχέση με την πραγματικότητα, αν και οι αριθμοί εμπίπτουν στο εύρος που περιμέναμε να δούμε. Και η απορία μου. Έχουμε βιβλιοθήκες, έχουμε λειτουργίες, αλλά πώς γράφουμε τεστ για τη Γραφάνα; Έχετε γράψει ένα σύνθετο αίτημα από το οποίο εξαρτάται μια επιχειρηματική απόφαση - να παραγγείλετε ένα πραγματικό κοντέινερ διακομιστών ή να μην παραγγείλετε. Και όπως γνωρίζουμε, αυτή η συνάρτηση που σχεδιάζει το γράφημα είναι παρόμοια με την αλήθεια. Ευχαριστώ.

Ευχαριστώ για την ερώτηση. Υπάρχουν δύο μέρη. Πρώτον, έχω την εντύπωση, με βάση την εμπειρία μου, ότι οι περισσότεροι χρήστες, όταν κοιτάζουν τα γραφήματα τους, δεν καταλαβαίνουν τι τους δείχνουν. Για κάποιο λόγο, οι άνθρωποι είναι πολύ καλοί στο να βρίσκουν μια δικαιολογία για οποιαδήποτε ανωμαλία που εμφανίζεται στα γραφήματα, ακόμα κι αν πρόκειται για σφάλμα μέσα σε μια συνάρτηση. Και το δεύτερο μέρος - μου φαίνεται ότι η χρήση τέτοιων συναρτήσεων θα ήταν μια πολύ καλύτερη προσέγγιση για την επίλυση του προβλήματός σας, αντί ο καθένας από τους προγραμματιστές σας να κάνει τον δικό του προγραμματισμό χωρητικότητας και να κάνει λάθη με κάποια πιθανότητα.

Πώς να ελέγξετε;

Πώς να ελέγξετε; Πιθανώς όχι.

Σαν τεστ στα Γραφανα.

Τι σχέση έχει η Γραφάνα; Η Grafana μεταφράζει αυτό το αίτημα απευθείας στο DataSource.

Προσθέτοντας λίγο στις παραμέτρους.

Όχι, δεν προστίθεται τίποτα στη Γραφάνα. Μπορεί να υπάρχουν παράμετροι GET, όπως, ας πούμε, βήμα. Δεν ορίζεται ρητά, αλλά μπορείτε να το παρακάμψετε ή να μην το παρακάμψετε, αλλά προστίθεται αυτόματα. Δεν θα γράψετε τεστ εδώ. Δεν νομίζω ότι πρέπει να βασιστούμε στη Γραφάνα ως πηγή αλήθειας εδώ.

Ευχαριστώ για την αναφορά! Ευχαριστώ για τη συμπίεση! Αναφέρατε την αντιστοίχιση μιας μεταβλητής σε ένα γράφημα, ότι στο Grafana δεν μπορείτε να χρησιμοποιήσετε μια μεταβλητή μέσα σε μια μεταβλητή. Ξέρετε τι εννοώ?

Ναι.

Αυτός ήταν αρχικά πονοκέφαλος όταν ήθελα να δημιουργήσω μια ειδοποίηση στο Grafana. Και εκεί πρέπει να κάνετε μια ειδοποίηση για κάθε κεντρικό υπολογιστή ξεχωριστά. Αυτό το πράγμα που έφτιαξες, λειτουργεί για ειδοποιήσεις στη Γραφάνα;

Εάν η Grafana δεν έχει διαφορετική πρόσβαση στις μεταβλητές, τότε ναι, θα λειτουργήσει. Αλλά η συμβουλή μου είναι να μην χρησιμοποιείτε καθόλου το alerting στο Grafana, καλύτερα να χρησιμοποιείτε το alertmanager.

Ναι, το χρησιμοποιώ, αλλά μου φάνηκε πιο εύκολο να εγκατασταθεί στα Grafana, αλλά ευχαριστώ για τη συμβουλή!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο