
Εάν έχετε διαβάσει αυτό το ιστολόγιο για μεγάλο χρονικό διάστημα, θα ξέρετε ότι είμαι μεγάλος θαυμαστής του Splunk και χρησιμοποιώ το Splunk για την επίλυση καθημερινών προβλημάτων. Όμως, ενώ το Splunk διαπρέπει στο να μπορεί να τρώει σχεδόν οποιοδήποτε είδος εκδήλωσης ή δεδομένων, μερικές φορές χρειάζεστε ένα πιο συγκεκριμένο εργαλείο όταν εργάζεστε με έναν συγκεκριμένο τύπο δεδομένων.
Εκεί μπαίνουν όλοι ο Προμηθέας, ο Λόκι και η Γραφάνα. Προμηθέας είναι μια βάση δεδομένων χρονοσειρών που έχει δημιουργηθεί για την αποθήκευση μετρήσεων. Λόκι είναι ένα σύστημα συλλογής αρχείων καταγραφής που κλιμακώνεται οριζόντια και είναι χρήσιμο για τη συλλογή αρχείων καταγραφής εφαρμογών και Γραφάνα είναι η εφαρμογή πίνακα ελέγχου που χρησιμοποιείται για την προβολή μετρήσεων από οποιαδήποτε πλατφόρμα!
Ήθελα να μάθω περισσότερα για καθεμία από αυτές τις εφαρμογές και σκέφτηκα ότι ο καλύτερος τρόπος για να το κάνω ήταν να δημιουργήσω κάτι στο Docker που θα μου επέτρεπε να λαμβάνω δεδομένα αμέσως και, στη συνέχεια, να δημιουργήσω μερικά δείγματα πινάκων εργαλείων πάνω από αυτό. Στη συνέχεια το έκανα open source και ολόκληρο το έργο βρίσκεται στη διεύθυνση https://github.com/dmuth/grafana-playground
Ξεκινώντας
Αρχικά, κλωνοποιήστε το repo και ξεκινήστε όλα τα κοντέινερ Docker:
git clone https://github.com/dmuth/grafana-playground.git
cd grafana-playground
docker-compose up -d
Αυτό θα ξεκινήσει πολλά κοντέινερ, μερικά από τα οποία θα απορροφούν δεδομένα, μερικά από τα οποία θα αποθηκεύουν δεδομένα.
Στη συνέχεια, μεταβείτε στο http://localhost:3000/ και συνδεθείτε με το συνδυασμό ονόματος χρήστη/κωδικού πρόσβασης admin/admin
. Μπορείτε να αλλάξετε τον κωδικό πρόσβασης εάν θέλετε. Από εκεί, θα το θέλετε μεταβείτε στην ενότητα διαμόρφωσης API και δημιουργήστε ένα νέο κλειδί API με πρόσβαση διαχειριστή. Φροντίστε να σημειώσετε τι είναι το κλειδί API, καθώς θα το χρειαστείτε σύντομα.
Τέλος, θα χρειαστεί να εισαγάγετε τους προκατασκευασμένους πίνακες εργαλείων και τις πηγές δεδομένων στο Grafana και αυτό μπορεί να γίνει με ένα ειδικό κοντέινερ Docker που ονομάζεται tools
, το οποίο μπορεί να χρησιμοποιηθεί για πρόσβαση στο υπόλοιπο περιβάλλον. Δείτε πώς μπορείτε να μπείτε σε αυτό το κοντέινερ και να εισαγάγετε αυτά τα πράγματα:
docker-compose exec tools bash # Start a bash shell in the tools container
cat /mnt/config/dashboards.json | /mnt/bin/manage-dashboards.py --import --api-key API_KEY
/mnt/bin/manage-data-sources.py --api-key API_KEY
exit # Exit the tools container
Προφανώς, αντικαταστήστε API_KEY
με το κλειδί API που λάβατε παραπάνω.
Σε αυτό το σημείο, έχουν φορτωθεί πηγές δεδομένων για τους Loki και Prometheus, μαζί με όλους τους προκατασκευασμένους πίνακες εργαλείων. Μπορείτε να τα δείτε στο http://localhost:3000/dashboards αμέσως.
Προβολή πινάκων ελέγχου

Τώρα που έχετε εισαγάγει όλους τους προκατασκευασμένους πίνακες εργαλείων, ακολουθεί μια λίστα με τους διαθέσιμους πίνακες εργαλείων:
Εξαγωγή πινάκων ελέγχου
Εάν θέλετε να εξαγάγετε τυχόν πίνακες εργαλείων που αλλάξατε, δείτε πώς να το κάνετε:
docker-compose exec tools bash # Spawn a bash shell in tools container
/mnt/bin/manage-dashboards.py --export --api-key API_KEY > /mnt/dashboards.json
exit # Leave tools container
Εκτέλεση ad-hoc ερωτημάτων στη Γραφάνα
Για να εκτελέσετε ένα συγκεκριμένο ερώτημα, κάντε κλικ στην Πυξίδα στην αριστερή πλευρά οποιασδήποτε οθόνης Grafana που σας μεταφέρει στη λειτουργία Explorer. Στη συνέχεια, επικολλήστε σε αυτό το ερώτημα: { filename=~"/logs/synthetic/.*" }
. Αυτό θα πρέπει να σας δείξει αμέσως τα πιο πρόσφατα αρχεία καταγραφής που έχουν γραφτεί. Εάν αυτό δεν δείχνει τίποτα, τότε τα δεδομένα δεν μεταφέρονται στο Loki.
Μη αυτόματη έγχυση κορμών
Εάν θέλετε να εισάγετε με μη αυτόματο τρόπο έναν αυθαίρετο αριθμό αρχείων καταγραφής, αυτό μπορεί να γίνει με αυτήν την εντολή:
docker-compose run logs n
Αντικαθιστώ n
με τον αριθμό των αρχείων καταγραφής που θέλετε να γράψετε. Θα μπουν στο αρχείο /logs/synthetic/manual.log
στον τόμο αρχείων καταγραφής, ο οποίος στη συνέχεια θα παραληφθεί από το κοντέινερ promtail. Μπορούν να προβληθούν στο Grafana με αυτό το ερώτημα:
{filename=~"/logs/synthetic/manual.log"}
Αλλαγή σε ποιους κεντρικούς υπολογιστές γίνεται ping

- Επεξεργασία
docker-compose.yml
- Αλλαξε το
HOSTS
μεταβλητή για τοping
δοχείο. - Επανεκκινήστε το
ping
δοχείο μεdocker-compose kill ping; docker-compose up -d ping
- Οι τρέχοντες κεντρικοί υπολογιστές που καρφιτσώνονται μπορούν να επιθεωρηθούν με
docker inspect grafana-playground_ping_1 | jq .[].Config.Env
(προσαρμόστε ανάλογα το όνομα του δοχείου).
Βοηθητικά προγράμματα γραμμής εντολών
Εάν θέλετε να ρωτήσετε απευθείας τον Loki, γράφω ένα σενάριο γραμμής εντολών για αυτό:
./bin/query.sh
– Ερώτηση για το Dockerized παρουσία του Loki στη γραμμή εντολών.- Παραδείγματα:
./bin/query.sh '{job="logs-ping"}'
./bin/query.sh '{job="logs-ping"}' 5
./bin/query.sh '{job="logs-ping",host="docker"}'
./bin/query.sh '{job="logs-ping",filename="/logs/ping/google.com.log"}'
./bin/query.sh '{job="logs-ping",filename=~"/logs/ping.*"}'
./bin/query.sh '{job="logs-ping",filename=~"/logs/ping.*"}' 10
- Παραδείγματα:
Κλείσιμο Σκέψεων
Υπάρχουν περισσότερα στα οποία μπορώ να αναφερθώ, αλλά είναι κυρίως περιεχόμενο που είναι εξαιρετικά τεχνικό. Αντίθετα, θα ήθελα να σας παραπέμψω στο έργο GitHub στη διεύθυνση https://github.com/dmuth/grafana-playground, το οποίο περιέχει μια ανάλυση όλων των κοντέινερ του Docker και των λειτουργιών τους, ένα FAQ και πολλά άλλα!
Μη διστάσετε να με ενημερώσετε για τη γνώμη σας στα σχόλια παρακάτω ή υποβάλετε ένα ζήτημα στο έργο GitHub!