Εισαγωγή στην OpenTelemetry για αρχάριους

Ας συζητήσουμε το OpenTelemetry – έναν τυπικό τρόπο συλλογής δεδομένων τηλεμετρίας ουδέτερο από τον προμηθευτή.

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

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

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

Για να κατανοήσετε το OpenTelemetry, πρέπει πρώτα να μάθετε τι είναι η κατανεμημένη ανίχνευση.

Τι είναι η κατανεμημένη ανίχνευση;

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

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

Τι είναι το OpenTelemetry;

OpenTelemetry είναι ένα έργο ανοιχτού κώδικα που φιλοξενείται από το CNCF και παρέχει έναν τυπικό τρόπο δημιουργίας δεδομένων τηλεμετρίας. Δημιουργήθηκε από τη συγχώνευση των OpenTracingένα πρότυπο για τη δημιουργία δεδομένων ίχνους και OpenCensusτο οποίο ήταν ένα πρότυπο για τη δημιουργία δεδομένων μετρήσεων.

  Δεν λαμβάνετε το Netflix σε 4K; Δείτε πώς μπορείτε να το διορθώσετε

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

Έτσι, μπορείτε να οργανώσετε τις εφαρμογές σας χρησιμοποιώντας έναν παράγοντα αγνωστικοποίησης προμηθευτή, ενώ παράλληλα στέλνετε τις μετρήσεις και τα ίχνη σας σε έναν προμηθευτή SaaS όπως το Datadog. Στη συνέχεια, αν θέλετε να αλλάξετε προμηθευτή (π.χ. από Datadog σε Dynatrace), μπορείτε να το κάνετε χωρίς να αλλάξετε τον κωδικό της εφαρμογής σας.

Το έργο OpenTelemetry στοχεύει να παρέχει ένα ενιαίο σύνολο βιβλιοθηκών και πρακτόρων API για την καταγραφή μετρήσεων και κατανεμημένων ιχνών από τις εφαρμογές σας. Αυτό ισχύει σε πολλές γλώσσες και πλατφόρμες. Το έργο OpenTelemetry περιλαμβάνει επίσης μια προαιρετική υπηρεσία συλλογής και διαθέτει ένα ειδικό χώρο αποθήκευσης για τις προδιαγραφές. Για να είμαστε σαφείς, το OpenTelemetry δεν είναι ο Jaeger ή ο Prometheus, που είναι παρατηρήσιμα back-ends. Αλλά βοηθά στην εξαγωγή δεδομένων σε ανοιχτού κώδικα και εμπορικά back-ends.

Παρακάτω είναι οι δυνατότητες που παρέχει το OpenTelemetry:

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

Στοιχεία OpenTelemetry

Παρακάτω είναι τα βασικά στοιχεία του OpenTelemetry:

  • Proto: Αυτό το στοιχείο χρησιμοποιείται για τον ορισμό συλλεκτών, βιβλιοθηκών οργάνων κ.λπ., οι οποίοι είναι τύποι διεπαφής ανεξάρτητοι από τη γλώσσα για το OpenTelemetry.
  • Συλλέκτης: Οι συλλέκτες χρησιμοποιούνται για τη λήψη, την επεξεργασία και την εξαγωγή δεδομένων τηλεμετρίας. Αυτή η υλοποίηση των συλλεκτών πρέπει να είναι αγνωστική από τον πωλητή. Από προεπιλογή, όλα τα δεδομένα τηλεμετρίας εξάγονται από βιβλιοθήκες οργάνων σε αυτήν τη θέση.
  • Προδιαγραφή: Αυτό το στοιχείο περιγράφει τις απαιτήσεις και τις προσδοκίες της υλοποίησης σε διαφορετικές γλώσσες που αποτελούνται από API, SDK και δεδομένα. Το API δημιουργεί τα δεδομένα τηλεμετρίας, τις δυνατότητες επεξεργασίας και εξαγωγής για την υλοποίηση των API που παρέχονται από τα SDK. Τα δεδομένα έχουν τις σημασιολογικές συμβάσεις για την υποστήριξη όλων των ειδών προμηθευτών χωρίς αλλαγή κώδικα.
  • Βιβλιοθήκες οργάνων: Διατίθενται σε πολλές γλώσσες ως μέρος του έργου OpenTelemetry. Αυτές οι βιβλιοθήκες χρησιμοποιούνται για την παροχή παρατηρησιμότητας σε άλλες βιβλιοθήκες για να κάνουν όλες τις εφαρμογές που παρατηρούνται πραγματοποιώντας κλήσεις στο OpenTelemetry API.
  Οι 20 καλύτεροι δωρεάν και επί πληρωμή πόροι για την εκμάθηση στατιστικών για την Επιστήμη των Δεδομένων

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

Εικόνα από το New Relic

Σε υψηλό επίπεδο, το OpenTelemetry αποτελείται από τρία κύρια κομμάτια:

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

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

  • Το Tracer API υποστηρίζει τη δημιουργία, τον σχολιασμό και την ολοκλήρωση διαστημάτων.
  • Το API του μετρητή αποτελείται από πολλαπλά μετρικά όργανα. Παραδείγματα αυτών των οργάνων είναι παρατηρητές, καταγραφείς τιμών, μετρητές.
  • Μπορείτε να παρακολουθείτε και να εκτελέσετε το πλαίσιο έκτασης ενεργοποιώντας το API περιβάλλοντος και να διαδώσετε αυτό το πλαίσιο τόσο εντός όσο και εξωτερικά στο σύστημά σας.
  • Όλες οι οδηγίες και οι κανόνες για κυρίως την ονομασία, όπως η ονομασία των διαστημάτων, των χαρακτηριστικών, των ετικετών και των μετρικών οργάνων, υπάρχουν στις σημασιολογικές συμβάσεις. Αυτές οι συμβάσεις εφαρμόζονται για να διασφαλιστεί η συνοχή μεταξύ διαφορετικών γλωσσικών υλοποιήσεων και για εξωτερικά όργανα.

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

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

  Αποκτήστε πρόσβαση σε διακόπτη WiFi, δίκτυο και πληροφορίες από οποιαδήποτε οθόνη [Jailbreak]

Η αρχιτεκτονική OpenTelemetry προσφέρει μια ολοκληρωμένη λύση τηλεμετρίας out of the box. Μπορείτε επίσης να κάνετε προσαρμογή χρησιμοποιώντας πολλαπλά σημεία επέκτασης ανάλογα με τις ανάγκες.

Πώς λειτουργεί το OpenTelemetry;

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

Το OpenTelemetry έχει το δικό του πρωτόκολλο δεδομένων, το OTLP, αλλά ο συλλέκτης μπορεί να μεταφράσει το OTLP σε διάφορες μορφές, όπως φερμουάρ, Jaegerκαι Προμηθέας. Σημειωτέον, το OpenTelemetry δεν παρέχει το δικό του εργαλείο υποστήριξης ή ανάλυσης. Αυτό συμβαίνει επειδή είναι μια προσπάθεια τυποποίησης στην καρδιά του OpenTelemetry. Ο στόχος είναι να βρεθεί μια καθολική γλώσσα για την περιγραφή των λειτουργιών των υπολογιστών σε περιβάλλον cloud. Ο στόχος δεν είναι να τυποποιήσουμε τον τρόπο με τον οποίο αναλύουμε αυτά τα δεδομένα. Αντίθετα, ελπίζουμε ότι το OpenTelemetry θα βοηθήσει να προωθηθεί ο κόσμος της παρατηρησιμότητας, επιτρέποντας σε νέα εργαλεία ανάλυσης να ξεκινήσουν γρήγορα χωρίς να ξαναχτίσουν ολόκληρο το οικοσύστημα λογισμικού τηλεμετρίας.

Όταν στέλνετε πολλά δεδομένα σε όλο το σύστημα, υπάρχουν πολλά που πρέπει να λάβετε υπόψη. Ευτυχώς το OpenTelemetry έχει σκεφτεί όλα τα πράγματα και έχει λύσεις σε καθεμία από αυτές τις ερωτήσεις. Πρώτα και κύρια, το OpenTelemetry είναι ευέλικτο και χειρίζεται πολλαπλές μορφές διάδοσης περιβάλλοντος. Αυτό σημαίνει ότι παρόλο που υπάρχει ένα πρότυπο, εξακολουθεί να υπάρχει η δυνατότητα επιλογής εντός αυτού του προτύπου. Επομένως, εάν χρησιμοποιείτε κάτι σαν τη μορφή περιβάλλοντος ίχνους w3c ή τη διάδοση b3, αυτά είναι διαφορετικά πρότυπα εντός του προτύπου που επιτρέπουν στις υπηρεσίες σας να συνδέουν τις τελείες.

συμπέρασμα

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

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

Λοιπόν, όλα αυτά αφορούσαν το OpenTelemetry, προχωρήστε και δοκιμάστε αυτό το εργαλείο.