Σας προτείνω να διαβάσετε τη μεταγραφή της αναφοράς του Roman Khavronenko "ExtendedPromQL"
Εν συντομία για μένα. Το όνομά μου είναι Ρωμαίος. Εργάζομαι στο CloudFlare και ζω στο Λονδίνο. Αλλά είμαι επίσης συντηρητής της VictoriaMetrics.
Και είμαι ο συγγραφέας
Θα ξεκινήσουμε με το πρώτο μέρος, που ονομάζεται «Δυσκολίες της Μετάφρασης» και σε αυτό θα μιλήσω για το γεγονός ότι οποιαδήποτε γλώσσα ή ακόμα και απλώς μια γλώσσα επικοινωνίας είναι πολύ σημαντική. Γιατί έτσι μεταφέρετε τις σκέψεις σας σε άλλο άτομο ή σύστημα, διατυπώνετε ένα αίτημα. Οι άνθρωποι στο Διαδίκτυο διαφωνούν για το ποια γλώσσα είναι καλύτερη - η java ή κάποια άλλη. Για τον εαυτό μου, αποφάσισα ότι πρέπει να επιλέξω ανάλογα με την εργασία, γιατί όλα αυτά είναι συγκεκριμένα.
Ας τα πάρουμε από την αρχή. Τι είναι το PromQL; Η PromQL είναι η γλώσσα ερωτημάτων Prometheus. Έτσι σχηματίζουμε ερωτήματα στον Προμηθέα για να λάβουμε δεδομένα χρονοσειρών.
Τι είναι τα δεδομένα χρονοσειρών; Κυριολεκτικά, αυτές είναι τρεις παράμετροι.
Αυτά είναι:
- Τι κοιτάμε;
- Όταν το κοιτάμε.
- Και τι αξία δείχνει;
Αν κοιτάξετε αυτό το γράφημα (αυτό το γράφημα είναι από το τηλέφωνό μου που δείχνει τα στατιστικά των βημάτων μου), μπορεί να απαντήσει γρήγορα σε αυτές τις ερωτήσεις.
Κοιτάμε τα βήματα. Βλέπουμε το νόημα και βλέπουμε την ώρα όταν το κοιτάμε. Δηλαδή, βλέποντας αυτό το διάγραμμα, μπορείς εύκολα να πεις ότι την Κυριακή περπάτησα περίπου 15 βήματα. Αυτά είναι δεδομένα χρονοσειρών.
Τώρα ας τα «διαχωρίσουμε» (μετατρέψουμε) σε άλλο μοντέλο δεδομένων με τη μορφή πίνακα. Εδώ έχουμε επίσης αυτό που εξετάζουμε. Εδώ πρόσθεσα λίγα επιπλέον δεδομένα, τα οποία θα ονομάσουμε μεταδεδομένα, δηλαδή δεν το πέρασα εγώ, αλλά δύο άτομα, για παράδειγμα, ο Τζέι και ο Σιωπηλός Μπομπ. Αυτό είναι αυτό που εξετάζουμε. τι δείχνει και πότε δείχνει αυτή την αξία.
Τώρα ας προσπαθήσουμε να αποθηκεύσουμε όλα αυτά τα δεδομένα σε μια βάση δεδομένων. Για παράδειγμα, πήρα τη σύνταξη ClickHouse. Και εδώ δημιουργούμε έναν πίνακα που ονομάζεται "Βήματα", δηλαδή αυτό που κοιτάμε. Υπάρχει μια στιγμή που το κοιτάμε. τι δείχνει και κάποια μεταδεδομένα όπου θα αποθηκεύσουμε ποιος είναι: Jay και Silent Bob.
Και για να προσπαθήσουμε να τα οπτικοποιήσουμε όλα αυτά, θα χρησιμοποιήσουμε το Grafana γιατί, πρώτα απ 'όλα, είναι όμορφο.
Θα χρησιμοποιήσουμε επίσης αυτό το πρόσθετο. Υπάρχουν δύο λόγοι για αυτό. Το πρώτο είναι επειδή το έγραψα. Και γνωρίζω ακριβώς πόσο δύσκολο είναι να αντλήσετε δεδομένα χρονοσειρών από το ClickHouse για να τα εμφανίσετε στο Grafana.
Θα το εμφανίσουμε στον πίνακα γραφημάτων. Αυτό είναι το πιο δημοφιλές πλαίσιο στο Grafana, το οποίο δείχνει την εξάρτηση μιας τιμής από το χρόνο, επομένως χρειαζόμαστε μόνο δύο παραμέτρους.
Ας γράψουμε το απλούστερο ερώτημα - πώς να εμφανίσουμε στατιστικά βημάτων στο Grafana, αποθηκεύοντας αυτά τα δεδομένα στο ClickHouse, στον πίνακα που δημιουργήσαμε. Και γράφουμε αυτό το απλό αίτημα. Επιλέγουμε από βήματα. Επιλέγουμε μια τιμή και επιλέγουμε τον χρόνο αυτών των τιμών, δηλαδή τις ίδιες τρεις παραμέτρους για τις οποίες μιλήσαμε.
Και ως αποτέλεσμα, θα πάρουμε ένα γράφημα όπως αυτό. Ποιος ξέρει γιατί είναι τόσο περίεργος;
Αυτό είναι σωστό, πρέπει να ταξινομήσουμε με βάση το χρόνο.
Και στο τέλος θα έχουμε ένα καλύτερο, αλλά και πάλι περίεργο πρόγραμμα. Ποιος ξέρει γιατί; Σωστά, υπάρχουν δύο συμμετέχοντες και εμείς στη Grafana χαρίζουμε δύο χρονοσειρές, γιατί αν κοιτάξετε ξανά το μοντέλο δεδομένων, τότε κάθε χρονοσειρά είναι ένας μοναδικός συνδυασμός ονόματος και όλων των ετικετών κλειδιών-τιμών.
Επομένως, πρέπει να επιλέξουμε ένα συγκεκριμένο άτομο. Επιλέγουμε τον Τζέι.
Και ας ζωγραφίσουμε ξανά. Τώρα το γράφημα μοιάζει με την αλήθεια. Τώρα αυτό είναι ένα κανονικό πρόγραμμα και όλα λειτουργούν καλά.
Και μάλλον ξέρετε πώς να κάνετε περίπου το ίδιο πράγμα, αλλά στον Prometheus μέσω PromQL. Κάτι σαν αυτό. Λίγο πιο απλό. Και ας τα αναλύσουμε όλα. Κάναμε Βήματα. Και φίλτρο κατά Jay. Δεν διευκρινίζουμε εδώ ότι πρέπει να πάρουμε μια τιμή και δεν επιλέγουμε χρόνο.
Τώρα ας προσπαθήσουμε να υπολογίσουμε την ταχύτητα κίνησης του Jay ή του Silent Bob. Στο ClickHouse θα χρειαστεί να κάνουμε το runningDifference, δηλαδή να υπολογίσουμε τη διαφορά μεταξύ των ζευγών σημείων και να τα διαιρέσουμε με το χρόνο για να πάρουμε την ακριβή ταχύτητα. Το αίτημα θα μοιάζει κάπως έτσι.
Και θα δείχνει περίπου αυτές τις τιμές, δηλαδή ο Silent Bob ή ο Jay κάνει περίπου 1,8 βήματα ανά δευτερόλεπτο.
Και στον Προμηθέα αυτό ξέρεις να το κάνεις. Πολύ πιο εύκολο από ότι ήταν πριν.
Και για να είναι επίσης εύκολο να γίνει στο Grafana, πρόσθεσα αυτό το περιτύλιγμα, το οποίο μοιάζει πολύ με το PromQL. Ονομάζεται Rate Macros ή όπως αλλιώς θέλετε πείτε το. Στα Grafana γράφεις απλά «rate», αλλά κάπου βαθιά μεταμορφώνεται σε αυτό το μεγάλο αίτημα. Και δεν χρειάζεται καν να το κοιτάξετε, είναι κάπου εκεί, αλλά εξοικονομείτε πολύ χρόνο, επειδή η σύνταξη τέτοιων τεράστιων ερωτημάτων SQL είναι πάντα ακριβή. Μπορείς εύκολα να κάνεις ένα λάθος και μετά να μην καταλάβεις τι συμβαίνει για πολύ καιρό.
Και αυτό είναι ένα αίτημα που δεν χωρούσε καν σε μια διαφάνεια και έπρεπε μάλιστα να το χωρίσω σε δύο στήλες. Αυτό είναι επίσης ένα αίτημα στο ClickHouse, το οποίο κάνει τον ίδιο ρυθμό, αλλά και για τις δύο χρονοσειρές: Silent Bob και Jay, έτσι ώστε να έχουμε δύο χρονοσειρές στον πίνακα. Και αυτό είναι ήδη πολύ δύσκολο, κατά τη γνώμη μου.
Και κατά τον Προμηθέα θα είναι άθροισμα (rate). Για το ClickHouse, έφτιαξα μια ξεχωριστή μακροεντολή που ονομάζεται RateColumns, η οποία μοιάζει με ερώτημα στον Prometheus.
Το εξετάσαμε και φαίνεται ότι το PromQL είναι τόσο ωραίο, αλλά έχει, φυσικά, περιορισμούς.
Αυτά είναι:
- Περιορισμένη ΕΠΙΛΟΓΗ.
- Οριακές ΣΥΝΔΕΣΕΙΣ.
- Χωρίς υποστήριξη.
Και αν έχετε δουλέψει με αυτό για πολύ καιρό, τότε ξέρετε ότι μερικές φορές είναι πολύ δύσκολο να κάνετε κάτι στο PromQL, αλλά στην SQL μπορείτε να κάνετε σχεδόν τα πάντα, επειδή όλες αυτές οι επιλογές για τις οποίες μόλις μιλήσαμε θα μπορούσαν να γίνουν σε SQL . Αλλά θα ήταν βολικό να το χρησιμοποιήσω; Και αυτό με κάνει να σκέφτομαι ότι η πιο ισχυρή γλώσσα μπορεί να μην είναι πάντα η πιο βολική.
Επομένως, μερικές φορές χρειάζεται να επιλέξετε μια γλώσσα για την εργασία. Είναι σαν ο Μπάτμαν να πολεμά τον Σούπερμαν. Είναι ξεκάθαρο ότι ο Σούπερμαν είναι πιο δυνατός, αλλά ο Μπάτμαν κατάφερε να τον νικήσει γιατί είναι πιο πρακτικός και ήξερε ακριβώς τι έκανε.
Και το επόμενο μέρος είναι το Extending PromQL.
Για άλλη μια φορά για τη VictoriaMetrics. Τι είναι η VictoriaMetrics; Αυτή είναι μια βάση δεδομένων χρονοσειρών, βρίσκεται στο OpenSource, διανέμουμε τις single και cluster εκδόσεις της. Σύμφωνα με τα σημεία αναφοράς μας, είναι πιο γρήγορο από οτιδήποτε κυκλοφορεί τώρα στην αγορά και η συμπίεση είναι παρόμοια, δηλαδή οι πραγματικοί άνθρωποι αναφέρουν συμπίεση περίπου 0,4 byte ανά σημείο, ενώ του Προμηθέα είναι 1,2-1,4.
Υποστηρίζουμε κάτι περισσότερο από τον Προμηθέα. Υποστηρίζουμε InfluxDB, Graphite, OpenTSDB.
Μπορείτε να μας «γράψετε», δηλαδή να μεταφέρετε παλιά δεδομένα.
Και επίσης συνεργαζόμαστε άψογα με τους Prometheus και Grafana, δηλαδή υποστηρίζουμε τον κινητήρα PromQL. Και στο Grafana μπορείτε απλά να αλλάξετε το τελικό σημείο του Prometheus σε VictoriaMetrics και όλοι οι πίνακες εργαλείων σας θα λειτουργήσουν όπως λειτουργούσαν.
Αλλά μπορείτε επίσης να χρησιμοποιήσετε πρόσθετες λειτουργίες που παρέχει η VictoriaMetrics.
Θα εξετάσουμε γρήγορα τις δυνατότητες που έχουμε προσθέσει.
Παράλειψη παραμέτρων διαστήματος – μπορείτε να παραλείψετε παραμέτρους διαστήματος στο Grafana. Όταν δεν θέλετε να λαμβάνετε περίεργα γραφήματα κατά τη μεγέθυνση/σμίκρυνση στον πίνακα, συνιστάται η χρήση της μεταβλητής $__interval
. Αυτή είναι μια εσωτερική αλλαγή Grafana και επιλέγει το ίδιο το εύρος δεδομένων. Και η ίδια η VictoriaMetrics μπορεί να καταλάβει ποια πρέπει να είναι αυτή η σειρά. Και δεν χρειάζεται να ενημερώσετε όλα τα αιτήματά σας. Θα είναι πολύ πιο εύκολο.
Η δεύτερη λειτουργία είναι η αναφορά διαστήματος. Μπορείτε να χρησιμοποιήσετε αυτό το διάστημα στις εκφράσεις σας. Μπορείτε να πολλαπλασιάσετε, να διαιρέσετε, να μεταφέρετε, να ανατρέξετε σε αυτό.
Ακολουθεί η οικογένεια συναρτήσεων συνάθροισης. Η συνάρτηση Συνάθροισης μετατρέπει οποιαδήποτε χρονολογική σας σειρά σε τρεις ξεχωριστές χρονοσειρές. Αυτά είναι τα ελάχιστα, μέγιστα και μέση. Το βρίσκω πολύ βολικό γιατί μερικές φορές μπορεί να δείξει κάποιες ακραίες τιμές και ανακρίβειες.
Και αν κάνετε απλώς οργή ή βαθμολογήστε, τότε πιθανότατα θα χάσετε κάποιες περιπτώσεις όπου η χρονική σειρά δεν συμπεριφέρεται όπως περιμένατε. Με αυτή τη λειτουργία είναι πολύ πιο εύκολο να το δούμε, ας πούμε ότι το μέγιστο είναι πολύ από το μέσο όρο.
Επόμενη είναι η προεπιλεγμένη μεταβλητή. Προεπιλογή - αυτό σημαίνει ποια τιμή πρέπει να λάβουμε στο Grafana εάν δεν έχουμε χρονοσειρά αυτή τη στιγμή. Πότε συμβαίνει αυτό; Ας υποθέσουμε ότι εξάγετε ορισμένες μετρήσεις σφάλματος. Και έχετε μια τόσο δροσερή εφαρμογή που όταν ξεκινάτε, δεν έχετε σφάλματα, ούτε καν σφάλματα για τις επόμενες τρεις ώρες ή ακόμα και μια μέρα. Και έχετε πίνακες εργαλείων που δείχνουν τη σχέση από επιτυχία σε λάθος. Και δεν θα σας δείξουν τίποτα επειδή δεν έχετε μέτρηση σφάλματος. Και στην προεπιλογή μπορείτε να καθορίσετε οτιδήποτε.
Keep_last_Value – αποθηκεύει την τελευταία τιμή της μέτρησης εάν λείπει. Εάν ο Prometheus δεν το βρει μέσα σε 5 λεπτά μετά το επόμενο scrape, τότε εδώ θα θυμηθούμε την τελευταία του τιμή και τα γραφήματα σας δεν θα ξανασπάσουν.
Scrape_interval – δείχνει πόσο συχνά ο Prometheus συλλέγει δεδομένα για τη μέτρησή σας και με ποια συχνότητα. Εδώ μπορείτε να δείτε ένα πάσο, για παράδειγμα.
Η αντικατάσταση ετικετών είναι ένα δημοφιλές χαρακτηριστικό. Αλλά πιστεύουμε ότι είναι λίγο περίπλοκο γιατί απαιτεί ολόκληρα επιχειρήματα. Και πρέπει όχι μόνο να θυμάστε 5 ορίσματα, αλλά και να θυμάστε τη σειρά τους.
Επομένως, γιατί να μην τα κάνουμε πιο απλά; Αναλύστε το δηλαδή σε μικρές συναρτήσεις με κατανοητή σύνταξη.
Και τώρα το διασκεδαστικό κομμάτι. Γιατί πιστεύουμε ότι αυτό είναι εκτεταμένο PromQL; Επειδή υποστηρίζουμε κοινές εκφράσεις πίνακα. Μπορείτε να ακολουθήσετε τον κωδικό QR (
Και τι είναι αυτό; Αυτό το παραπάνω αίτημα είναι ένα αρκετά δημοφιλές αίτημα. Νομίζω σε οποιοδήποτε ταμπλό σε πολλές εταιρείες χρησιμοποιείς το ίδιο φίλτρο για όλα. Συνήθως έτσι. Αλλά όταν χρειάζεται να προσθέσετε κάποιο νέο φίλτρο, πρέπει να ενημερώσετε κάθε πίνακα ή να κατεβάσετε τον πίνακα εργαλείων, να τον ανοίξετε σε JSON, να βρείτε την αντικατάσταση, κάτι που απαιτεί επίσης χρόνο. Γιατί να μην αποθηκεύσετε αυτήν την τιμή σε μια μεταβλητή και να την επαναχρησιμοποιήσετε; Αυτό φαίνεται, κατά τη γνώμη μου, πολύ πιο απλό και ξεκάθαρο.
Για παράδειγμα, όταν χρειάζεται να ενημερώσω φίλτρα στο Grafana σε όλα τα αιτήματα και ο πίνακας εργαλείων μπορεί να είναι τεράστιος ή μπορεί να υπάρχουν αρκετά από αυτά. Και πώς θα ήθελα να λύσω αυτό το πρόβλημα στη Γραφάνα;
Λύνω αυτό το πρόβλημα με αυτόν τον τρόπο: Φτιάχνω ένα κοινό φίλτρο και ορίζω αυτό το φίλτρο σε αυτό και μετά το ξαναχρησιμοποιώ σε ερωτήματα. Αλλά αν κάνετε το ίδιο τώρα, δεν θα λειτουργήσει επειδή το Grafana δεν σας επιτρέπει να χρησιμοποιείτε μεταβλητές μέσα σε μεταβλητές ερωτήματος. Και είναι λίγο περίεργο.
Και έτσι έφτιαξα μια επιλογή που σας επιτρέπει να το κάνετε αυτό. Και αν ενδιαφέρεστε ή θέλετε μια τέτοια δυνατότητα, υποστηρίξτε την ή δεν σας αρέσει αν δεν σας αρέσει αυτή η ιδέα.
Περισσότερα για την επέκταση PromQL. Εδώ ορίζουμε όχι μόνο μια μεταβλητή, αλλά μια ολόκληρη συνάρτηση. Και το ονομάζουμε ru (χρήση πόρων). Και αυτή η λειτουργία δέχεται δωρεάν πόρους, περιορισμό πόρων και φίλτρο. Η σύνταξη φαίνεται να είναι απλή. Και είναι πολύ εύκολο να χρησιμοποιήσετε αυτήν τη συνάρτηση και να υπολογίσετε το ποσοστό της ελεύθερης μνήμης που έχουμε. Δηλαδή πόση μνήμη έχουμε, ποιος είναι ο περιορισμός και πώς φιλτράρουμε. Φαίνεται πολύ πιο βολικό αν τα γράφατε όλα, χρησιμοποιώντας ξανά τα ίδια φίλτρα, γιατί θα μετατρεπόταν σε μεγάλο, μεγάλο ερώτημα.
Και εδώ είναι ένα παράδειγμα ενός τόσο μεγάλου, μεγάλου αιτήματος. Είναι από τον επίσημο πίνακα ελέγχου NodeExporter για το Grafana. Αλλά μετά βίας καταλαβαίνω τι συμβαίνει εδώ. Αυτό είναι, φυσικά, καταλαβαίνω αν κοιτάξετε προσεκτικά, αλλά ο αριθμός των παρενθέσεων μπορεί να μειώσει αμέσως το κίνητρο για να κατανοήσετε τι συμβαίνει εδώ. Και γιατί να μην το κάνουμε πιο απλό και σαφές;
Για παράδειγμα, όπως αυτό, ο διαχωρισμός σημαντικών πραγμάτων ή τμημάτων σε μεταβλητές. Και μετά κάνε τα βασικά σου μαθηματικά. Αυτό είναι ήδη περισσότερο σαν προγραμματισμός, αυτό θα ήθελα να δω στο μέλλον στη Γραφάνα.
Ακολουθεί ένα δεύτερο παράδειγμα για το πώς θα μπορούσαμε να το κάνουμε αυτό ακόμα πιο εύκολο αν είχαμε ήδη αυτήν τη λειτουργία ru και υπάρχει ήδη απευθείας στο VictoriaMetrics. Στη συνέχεια, απλώς μεταβιβάζετε την τιμή που έχει αποθηκευτεί στην προσωρινή μνήμη που δηλώσατε στο CTE.
Έχω ήδη μιλήσει για το πόσο σημαντικό είναι να χρησιμοποιείτε τη σωστή γλώσσα προγραμματισμού. Και, πιθανώς, κάθε εταιρεία στα Γραφάνα έχει κάτι διαφορετικό. Και πιθανότατα δίνετε επίσης πρόσβαση στο Grafana στους προγραμματιστές σας και οι προγραμματιστές κάνουν το δικό τους. Και όλοι το κάνουν κάπως διαφορετικά. Ήθελα όμως να είναι κάπως το ίδιο, δηλαδή να το αναγάγω σε ένα κοινό πρότυπο.
Ας υποθέσουμε ότι δεν έχετε καν μόνο μηχανικούς συστημάτων, ίσως ακόμη και ειδικούς, devops ή SRE. Ίσως έχετε ειδικούς που ξέρουν τι είναι η παρακολούθηση, που ξέρουν τι είναι το Grafana, δηλαδή δουλεύουν με αυτό χρόνια και ξέρουν ακριβώς πώς να το κάνουν σωστά. Και το έχουν γράψει ήδη 100 φορές και το έχουν εξηγήσει σε όλους, αλλά για κάποιο λόγο δεν ακούει κανείς.
Τι θα γινόταν αν μπορούσαν να βάλουν αυτές τις γνώσεις απευθείας στο Grafana, ώστε άλλοι χρήστες να μπορούν να χρησιμοποιήσουν ξανά τις δυνατότητες; Και αν χρειαζόταν να υπολογίσουν το ποσοστό της ελεύθερης μνήμης, απλώς θα εφάρμοζαν τη συνάρτηση. Τι θα γινόταν αν οι δημιουργοί των εξαγωγέων, μαζί με το προϊόν τους, παρείχαν επίσης ένα σύνολο λειτουργιών για το πώς να εργαστούν με τις μετρήσεις τους, επειδή γνωρίζουν ακριβώς ποιες είναι αυτές οι μετρήσεις και πώς να τις υπολογίσουν σωστά;
Αυτό στην πραγματικότητα δεν υπάρχει. Αυτό έκανα ο ίδιος. Αυτή είναι η υποστήριξη βιβλιοθήκης στα Γραφάνα. Ας πούμε ότι τα παιδιά που έφτιαξαν το NodeExporter έκαναν αυτό για το οποίο μίλησα. Και παρείχαν επίσης ένα σύνολο λειτουργιών.
Κάπως έτσι μοιάζει δηλαδή. Συνδέετε αυτήν τη βιβλιοθήκη με το Grafana, πηγαίνετε στην επεξεργασία και είναι γραμμένο πολύ απλά σε JSON πώς να εργαστείτε με αυτήν τη μέτρηση. Δηλαδή, κάποιο σύνολο συναρτήσεων, η περιγραφή τους και σε τι μετατρέπονται.
Νομίζω ότι αυτό θα μπορούσε να είναι χρήσιμο, γιατί τότε στα Γραφάνα θα έγραφες ακριβώς έτσι. Και η Grafana σας "λέει" ότι υπάρχει μια τέτοια λειτουργία από μια τέτοια και μια τέτοια βιβλιοθήκη - ας τη χρησιμοποιήσουμε. Νομίζω ότι θα ήταν πολύ ωραίο.
Λίγα λόγια για τη VictoriaMetrics. Κάνουμε πολλά ενδιαφέροντα πράγματα. Διαβάστε τα άρθρα μας για τη συμπίεση, για τους διαγωνισμούς μας με άλλες εφαρμογές δεδομένων χρονοσειρών, την εξήγησή μας για το πώς να δουλέψετε με την PromQL, γιατί υπάρχουν ακόμα πολλοί αρχάριοι σε αυτό, καθώς και για την κάθετη επεκτασιμότητα και για την αντιπαράθεση με τον Thanos.
Ερωτήσεις:
Θα ξεκινήσω την ερώτησή μου με μια απλή ιστορία ζωής. Όταν άρχισα να χρησιμοποιώ για πρώτη φορά το Grafana, έγραψα ένα πολύ συναρπαστικό ερώτημα που ήταν 5 γραμμές. Το τελικό αποτέλεσμα είναι ένα πολύ πειστικό γράφημα. Αυτό το πρόγραμμα έχει σχεδόν μπει στην παραγωγή. Αλλά μετά από προσεκτικότερη εξέταση, αποδείχθηκε ότι αυτό το γράφημα δείχνει απόλυτη ανοησία που δεν έχει καμία σχέση με την πραγματικότητα, αν και οι αριθμοί εμπίπτουν στο εύρος που περιμέναμε να δούμε. Και η απορία μου. Έχουμε βιβλιοθήκες, έχουμε λειτουργίες, αλλά πώς γράφουμε τεστ για τη Γραφάνα; Έχετε γράψει ένα σύνθετο αίτημα από το οποίο εξαρτάται μια επιχειρηματική απόφαση - να παραγγείλετε ένα πραγματικό κοντέινερ διακομιστών ή να μην παραγγείλετε. Και όπως γνωρίζουμε, αυτή η συνάρτηση που σχεδιάζει το γράφημα είναι παρόμοια με την αλήθεια. Ευχαριστώ.
Ευχαριστώ για την ερώτηση. Υπάρχουν δύο μέρη. Πρώτον, έχω την εντύπωση, με βάση την εμπειρία μου, ότι οι περισσότεροι χρήστες, όταν κοιτάζουν τα γραφήματα τους, δεν καταλαβαίνουν τι τους δείχνουν. Για κάποιο λόγο, οι άνθρωποι είναι πολύ καλοί στο να βρίσκουν μια δικαιολογία για οποιαδήποτε ανωμαλία που εμφανίζεται στα γραφήματα, ακόμα κι αν πρόκειται για σφάλμα μέσα σε μια συνάρτηση. Και το δεύτερο μέρος - μου φαίνεται ότι η χρήση τέτοιων συναρτήσεων θα ήταν μια πολύ καλύτερη προσέγγιση για την επίλυση του προβλήματός σας, αντί ο καθένας από τους προγραμματιστές σας να κάνει τον δικό του προγραμματισμό χωρητικότητας και να κάνει λάθη με κάποια πιθανότητα.
Πώς να ελέγξετε;
Πώς να ελέγξετε; Πιθανώς όχι.
Σαν τεστ στα Γραφανα.
Τι σχέση έχει η Γραφάνα; Η Grafana μεταφράζει αυτό το αίτημα απευθείας στο DataSource.
Προσθέτοντας λίγο στις παραμέτρους.
Όχι, δεν προστίθεται τίποτα στη Γραφάνα. Μπορεί να υπάρχουν παράμετροι GET, όπως, ας πούμε, βήμα. Δεν ορίζεται ρητά, αλλά μπορείτε να το παρακάμψετε ή να μην το παρακάμψετε, αλλά προστίθεται αυτόματα. Δεν θα γράψετε τεστ εδώ. Δεν νομίζω ότι πρέπει να βασιστούμε στη Γραφάνα ως πηγή αλήθειας εδώ.
Ευχαριστώ για την αναφορά! Ευχαριστώ για τη συμπίεση! Αναφέρατε την αντιστοίχιση μιας μεταβλητής σε ένα γράφημα, ότι στο Grafana δεν μπορείτε να χρησιμοποιήσετε μια μεταβλητή μέσα σε μια μεταβλητή. Ξέρετε τι εννοώ?
Ναι.
Αυτός ήταν αρχικά πονοκέφαλος όταν ήθελα να δημιουργήσω μια ειδοποίηση στο Grafana. Και εκεί πρέπει να κάνετε μια ειδοποίηση για κάθε κεντρικό υπολογιστή ξεχωριστά. Αυτό το πράγμα που έφτιαξες, λειτουργεί για ειδοποιήσεις στη Γραφάνα;
Εάν η Grafana δεν έχει διαφορετική πρόσβαση στις μεταβλητές, τότε ναι, θα λειτουργήσει. Αλλά η συμβουλή μου είναι να μην χρησιμοποιείτε καθόλου το alerting στο Grafana, καλύτερα να χρησιμοποιείτε το alertmanager.
Ναι, το χρησιμοποιώ, αλλά μου φάνηκε πιο εύκολο να εγκατασταθεί στα Grafana, αλλά ευχαριστώ για τη συμβουλή!
Πηγή: www.habr.com