Σύνδεση στο Kubernetes: EFK vs PLG

Σύνδεση στο Kubernetes: EFK vs PLG

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

Αυτά τα ίδια εργαλεία πρέπει να είναι αποτελεσματικά και παραγωγικά. Σε αυτό το άρθρο, θα εξετάσουμε δύο δημοφιλείς στοίβες τεχνολογίας: EFK (Elasticsearch) και PLG (Loki) και θα εξετάσουμε τις αρχιτεκτονικές και τις διαφορές τους.

Στοίβα ΕΦΚ

Ίσως έχετε ήδη ακούσει για τα πολύ δημοφιλή ΕΛΚ ή ΕΦΚ. Η στοίβα αποτελείται από πολλά διακριτά μέρη: Elasticsearch (αποθήκευση αντικειμένων), Logstash ή FluentD (συλλογή και συνάθροιση αρχείων καταγραφής) και Kibana για οπτικοποίηση.

Μια τυπική ροή εργασίας μοιάζει με αυτό:

Σύνδεση στο Kubernetes: EFK vs PLG

Ελαστική αναζήτηση — κατανεμημένη αποθήκευση αντικειμένων με αναζήτηση και αναλυτικά στοιχεία σε πραγματικό χρόνο. Εξαιρετική λύση για ημι-δομημένα δεδομένα όπως αρχεία καταγραφής. Οι πληροφορίες αποθηκεύονται ως έγγραφα JSON, ευρετηριάζονται σε πραγματικό χρόνο και διανέμονται σε κόμβους συμπλέγματος. Χρησιμοποιείται ένα ανεστραμμένο ευρετήριο, το οποίο περιέχει όλες τις μοναδικές λέξεις και τα σχετικά έγγραφα για αναζήτηση πλήρους κειμένου, το οποίο με τη σειρά του βασίζεται στη μηχανή αναζήτησης Apache Lucene.

FluentD είναι ένας συλλέκτης δεδομένων που ενοποιεί δεδομένα κατά τη συλλογή και την κατανάλωσή τους. Προσπαθεί να οργανώσει τα δεδομένα σε JSON όσο το δυνατόν περισσότερο. Η αρχιτεκτονική του είναι επεκτάσιμη, υπάρχουν περισσότερα εκατοντάδες διαφορετικές επεκτάσεις, που υποστηρίζεται από την κοινότητα, για όλες τις περιπτώσεις.

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

Elasticsearch αρχιτεκτονική

Τα δεδομένα συμπλέγματος Elasticsearch αποθηκεύονται κατανεμημένα σε όλους τους κόμβους του. Ένα σύμπλεγμα αποτελείται από πολλούς κόμβους για τη βελτίωση της διαθεσιμότητας και της ανθεκτικότητας. Οποιοσδήποτε κόμβος μπορεί να εκτελέσει όλους τους ρόλους του συμπλέγματος, αλλά σε αναπτύξεις μεγάλης κλίμακας, οι κόμβοι συνήθως ανατίθενται μεμονωμένες εργασίες.

Τύποι κόμβων συμπλέγματος:

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

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

Σύνδεση στο Kubernetes: EFK vs PLG

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

Σύνδεση στο Kubernetes: EFK vs PLG

Εγκατάσταση

Μπορείτε να δείτε λεπτομέρειες εδώ, θα χρησιμοποιήσω το διάγραμμα τιμονιού:

$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics

Στοίβα PLG

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

Promtail - ένας πράκτορας για την αποστολή αρχείων καταγραφής από το λειτουργικό σύστημα στο σύμπλεγμα Loki. Γκράφανα είναι ένα εργαλείο οπτικοποίησης που βασίζεται σε δεδομένα από το Loki.

Σύνδεση στο Kubernetes: EFK vs PLG

Το Loki βασίζεται στις ίδιες αρχές με το Prometheus, καθιστώντας το κατάλληλο για αποθήκευση και ανάλυση αρχείων καταγραφής Kubernetes.

Αρχιτεκτονική Loki

Το Loki μπορεί να εκτελεστεί είτε ως μία διαδικασία είτε ως πολλαπλές διεργασίες, επιτρέποντας την οριζόντια κλιμάκωση.

Σύνδεση στο Kubernetes: EFK vs PLG

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

Ας δούμε την αρχιτεκτονική του συστήματος συλλογής κορμών χωρίς να μπούμε σε λεπτομέρειες:

Σύνδεση στο Kubernetes: EFK vs PLG

Και εδώ είναι η περιγραφή (αρχιτεκτονική microservice):

Σύνδεση στο Kubernetes: EFK vs PLG

Συστατικά:

Promtail — ένας πράκτορας εγκατεστημένος σε κόμβους (ως σύνολο υπηρεσιών), αφαιρεί αρχεία καταγραφής από εργασίες και αποκτά πρόσβαση στο Kubernetes API για να αποκτήσει μεταδεδομένα που θα επισημαίνουν τα αρχεία καταγραφής. Στη συνέχεια στέλνει το αρχείο καταγραφής στην κύρια υπηρεσία Loki. Η αντιστοίχιση μεταδεδομένων υποστηρίζει τους ίδιους κανόνες προσθήκης ετικετών με τον Prometheus.

Διανομέας — ένας διανομέας υπηρεσιών που λειτουργεί ως buffer. Για να επεξεργαστεί εκατομμύρια εγγραφές, συσκευάζει τα εισερχόμενα δεδομένα, συμπιέζοντάς τα σε μπλοκ καθώς φτάνουν. Πολλές καταβολές δεδομένων εκτελούνται ταυτόχρονα, αλλά τα αρχεία καταγραφής που ανήκουν σε μία εισερχόμενη ροή δεδομένων θα πρέπει να εμφανίζονται μόνο σε μία από αυτές για όλα τα μπλοκ της. Αυτό οργανώνεται σε ένα δαχτυλίδι από νεροχύτες και διαδοχικό κατακερματισμό. Για ανοχή σφαλμάτων και πλεονασμό, αυτό γίνεται n φορές (3 εάν δεν έχουν ρυθμιστεί).

Ingester — δέκτης υπηρεσίας. Τα μπλοκ δεδομένων φτάνουν συμπιεσμένα με προσθήκη αρχείων καταγραφής. Μόλις το μπλοκ έχει επαρκές μέγεθος, το μπλοκ μεταφέρεται στη βάση δεδομένων. Τα μεταδεδομένα πηγαίνουν στο ευρετήριο και τα δεδομένα από το μπλοκ καταγραφής πηγαίνουν στα Chunks (συνήθως αποθήκευση αντικειμένων). Μετά την επαναφορά, ο δέκτης δημιουργεί ένα νέο μπλοκ όπου θα προστεθούν νέες καταχωρήσεις.

Σύνδεση στο Kubernetes: EFK vs PLG

Περιεχόμενα - βάση δεδομένων, DynamoDB, Cassandra, Google BigTable, κ.λπ.

Κομμάτια — μπλοκ καταγραφής σε συμπιεσμένη μορφή, που συνήθως αποθηκεύονται σε αποθήκευση αντικειμένων, για παράδειγμα, S3.

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

Τώρα ας δούμε τα πάντα στην πράξη.

Εγκατάσταση

Ο ευκολότερος τρόπος εγκατάστασης στο Kubernetes είναι να χρησιμοποιήσετε το τιμόνι. Υποθέτουμε ότι το έχετε ήδη εγκαταστήσει και διαμορφώσει (και η τρίτη εκδοχή! περίπου. μεταφράστης)

Προσθέστε ένα αποθετήριο και εγκαταστήστε μια στοίβα.

$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

Ακολουθεί ένα παράδειγμα πίνακα εργαλείων που δείχνει δεδομένα από το Prometheus για μετρήσεις Etcd και Loki για αρχεία καταγραφής pod Etcd.

Σύνδεση στο Kubernetes: EFK vs PLG

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

Σύγκριση

Γλώσσα ερωτήματος

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

Στην άλλη πλευρά του δαχτυλιδιού είναι η LogQL, που χρησιμοποιείται στο Loki, τον διάδοχο της PromQL (γλώσσα ερωτημάτων Prometheus). Χρησιμοποιεί ετικέτες καταγραφής για να φιλτράρει και να επιλέξει δεδομένα καταγραφής. Είναι δυνατή η χρήση ορισμένων τελεστών και αριθμητικής όπως περιγράφεται εδώ, αλλά ως προς τις δυνατότητες υστερεί σε σχέση με την ελαστική γλώσσα.

Δεδομένου ότι τα ερωτήματα στο Loki σχετίζονται με ετικέτες, είναι εύκολο να συσχετιστούν με μετρήσεις και, ως εκ τούτου, είναι ευκολότερο να οργανωθεί η λειτουργική παρακολούθηση.

Επεκτασιμότητα

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

Πολυμίσθωση

Η πολυμίσθωση συμπλέγματος είναι ένα κοινό θέμα στη συντομογραφία OPEX, και οι δύο στοίβες παρέχουν πολυμίσθωση. Υπάρχουν πολλά για το Elasticsearch τρόπους διαχωρισμός πελάτη: ξεχωριστό ευρετήριο για κάθε πελάτη, δρομολόγηση βάσει πελάτη, μοναδικά πεδία πελάτη, φίλτρα αναζήτησης. Ο Λόκι έχει υποστήριξη με τη μορφή κεφαλίδας HTTP X-Scope-OrgID.

Κόστος

Το Loki είναι αρκετά αποδοτικό λόγω του γεγονότος ότι δεν ευρετηριάζει τα δεδομένα, παρά μόνο τα μεταδεδομένα. Αυτό επιτυγχάνει εξοικονόμηση αποθήκευσης και μνήμη (cache), αφού η αποθήκευση αντικειμένων είναι φθηνότερη από την αποθήκευση μπλοκ, η οποία χρησιμοποιείται στα συμπλέγματα Elasticsearch.

Συμπέρασμα

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

Η στοίβα Loki είναι χρήσιμη στο οικοσύστημα Kubernetes λόγω του μηχανισμού ανακάλυψης μεταδεδομένων. Μπορείτε εύκολα να συσχετίσετε δεδομένα για παρακολούθηση με βάση χρονοσειρές στο Grafana και αρχεία καταγραφής.

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

Υπάρχουν περισσότερες εναλλακτικές λύσεις στην αγορά - μερικές μπορεί να είναι καλύτερες για εσάς. Για παράδειγμα, το GKE έχει μια ενσωμάτωση Stackdriver που παρέχει μια εξαιρετική λύση παρακολούθησης. Δεν τα συμπεριλάβαμε στην ανάλυσή μας σε αυτό το άρθρο.

Βιβλιογραφικές αναφορές:

Το άρθρο μεταφράστηκε και ετοιμάστηκε για το Habr από υπαλλήλους Κέντρο εκπαίδευσης Slurm — εντατικά μαθήματα, μαθήματα βίντεο και εταιρική εκπαίδευση από ειδικούς (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Πηγή: www.habr.com

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