Κατανεμημένα ίχνη
Κατανεμημένα ίχνη
1) Γιατί και τι είναι
Η κατανεμημένη ιχνηλάτηση είναι ένας τρόπος σύνδεσης των λειτουργιών σε όλη τη διαδρομή του αιτήματος: εμπρός → πύλη API → μικροϋπηρεσίες → βάσεις δεδομένων/κρύπτες → μεσίτες → jabs/αγωγούς.
Το αποτέλεσμα είναι ένα ίχνος από το εύρος (εύρος), όπου κάθε κλίμακα αποτυπώνει τη λειτουργία του συστατικού με χαρακτηριστικά, γεγονότα και κατάσταση. Αυτό επιταχύνει την RCA, βοηθά στη διατήρηση των SLO και μειώνει την MTTR.
- Ορατότητα κρίσιμης διαδρομής και σημείων συμφόρησης.
- Συσχέτιση των συμπτωμάτων (μετρήσεις) με αιτίες (εύρος) και λεπτομέρειες (καταγραφές).
- Αναλυτική των retrays, ουρές αναμονής, DLQ, fan-outs, "saw της καθυστέρησης.
2) Μοντέλο δεδομένων ιχνηλάτησης
Ίχνος - γράφημα κλήσης με 'trace _ id'.
Span - : 'name', 'είδος' (SERVER/CLIENT/ΠΑΡΑΓΩΓΟΣ/ΚΑΤΑΝΑΛΩΤΗΣ/ΕΣΩΤΕΡΙΚΟ), 'start/end', 'status', 'fatures', 'event ,' links [] '.
Χαρακτηριστικά γνωρίσματα - κλείδα αξίας (διαδρομή, db. σύστημα, μηνύματα. σύστημα, σύννεφο. περιφέρεια κ.λπ.).
Γεγονότα - στιγμιαίες ετικέτες μέσα στο εύρος (για παράδειγμα, 'retry', 'cache _ miss').
Span Links - συνδέσεις εκτός του «γονέα-παιδιού» (batchi, retrai, fan-in/out).
Μεταδεδομένα διεργασίας/υπηρεσίας ("υπηρεσία. ονομασία ", έκδοση, περιβάλλον).
3) Πλαίσιο και ανεκτικότητα
3. 1 Πλαίσιο ιχνηλάτησης W3C
Τίτλοι:- 'traceparent': 'version-traceid-spanid-flags' (οι σημαίες περιλαμβάνουν δειγματοληψία).
- «tracestate»: ειδική κατάσταση πωλητή (ελάχιστη).
- Αποσκευές - κλειδιά για το επιχειρηματικό πλαίσιο (περιορισμένα, όχι PII/μυστικά).
3. 2 Πλαίσιο ρίψης
HTTP: 'traceparent '/' tracestate', gRPC: μεταδεδομένα· WebSocket: κατά την αναβάθμιση και σε μηνύματα.
Μηνύματα: σε κεφαλίδες (Kafka/NATS/RabbitMQ) - αποθήκευση του αρχικού πλαισίου με τον ΠΑΡΑΓΩΓΟ και μεταφορά με τον ΚΑΤΑΝΑΛΩΤΗ.
Βάσεις: μην «μεταφέρετε» το πλαίσιο - καταγράφουμε χαρακτηριστικά στο εύρος (ερώτηση, σειρές, db. σύστημα), αλλά όχι τις τιμές.
4) Δειγματοληψία: Πώς να μην σπάσει
Δειγματοληψία κεφαλής: πιθανοληπτική/κατά κανόνα (οδός, ενοικιαστής, τελικό σημείο).
Δειγματοληψία ουράς (στον συλλέκτη): αποθήκευση «ενδιαφέροντων» μονοπατιών - σφάλματα, μακρύ p95/p99, σπάνιες διαδρομές.
Παραδείγματα: Οι μετρήσεις ιστογράμματος αποθηκεύουν αναφορές σε συγκεκριμένα «trace _ id».
Σύσταση: συνδυασμός - κεφαλή 5-20% + κανόνες ουράς 100% για 5xx/timeout/p99.
5) Χαρακτηριστικά και ταξινόμηση (ελάχιστη απαιτούμενη)
Γενικά:- "service. ονοματεπώνυμο "," υπηρεσία ". εξάπλωση της έκδοσης ','. περιβάλλον «,» σύννεφο. περιφέρεια «,» http. διαδρομή ',' http. μέθοδος ',' http. , 'db. σύστημα ',' db. δήλωση «(συντομευμένη/χωρίς δεδομένα)», μηνύματα. σύστημα «,» μηνύματα. λειτουργία ',' ομότιμος. υπηρεσία ',' δίχτυ. ομότιμοι. όνομα «,» ενοικιαστής. id ',' ζητά. id '.
Εμπορικά σήματα: καθαρό, χωρίς PII. Παράδειγμα: 'order. τμήμα ',' σχέδιο. βαθμίδα '.
6) Ασύγχρονα σενάρια, ουρές και παρτίδες
ΠΑΡΑΓΩΓΟΣ → ΚΑΤΑΝΑΛΩΤΗΣ: ΔΗΜΙΟΥΡΓΗΣΗ ΠΑΡΑΓΩΓΟΥ ΣΕ ΒΑΣΗ ΜΕ ΠΛΑΙΣΙΟ στο μήνυμα - κεφαλίδες (traceparent, αποσκευές). Ο ΚΑΤΑΝΑΛΩΤΗΣ ξεκινά το SERVER/CONSUMER-span από το σύνδεσμο με τον ΠΑΡΑΓΩΓΟ (εάν δεν υπάρχει αυστηρή ιεραρχία).
Fan-out: μία είσοδος - πολλές εκροές → παιδικό εύρος ή συνδέσεις.
Παρτίδα: Το CONSUMER διαβάζει μια έκρηξη μηνυμάτων Ν ένα εύρος με 'event για κάθε μήνυμα Id ή' links 'για N ξεχωριστά πλαίσια.
DLQ: χωριστή κλίμακα 'messaging. dlq. δημοσιεύει "с λόγο и καταμέτρηση.
Retrai: 'event: retry' + 'retry. ιδιότητα καταμέτρησης· κατά προτίμηση ένα νέο εύρος CHILD για να δοκιμάσετε.
7) Ενσωμάτωση με κορμούς και μετρήσεις
Γράφουμε αρχεία καταγραφής JSON με 'trace _ id '/' span _ id' → από το εύρος πηγαίνουμε στα αρχεία καταγραφής κάνοντας κλικ.
Οι μετρήσεις RED/USE περιέχουν υποδείγματα → από τις κορυφές του p99 φτάνουμε στο «κακό» εύρος.
Τα ίχνη δημιουργούν τεχνικά σήματα (σφάλματα εξάρτησης) και επιχειρηματικά σήματα (μετατροπή) μέσω γεγονότων.
8) Επιδόσεις και κόστος
Δειγματοληψία γεγονότων και στραγγαλισμός.
Μείωση της πληθικότητας των χαρακτηριστικών (no 'user _ i /' session _ i as label!).
Συμπίεση/σύσφιξη από τον εξαγωγέα. τα όρια εξαγωγής χρόνου εξαγωγής.
Αποθήκευση: ζεστές 1-7 ημέρες, τότε - μονάδες/μόνο «προβλήματα» μονοπάτια.
Κατηγορίες δαπανών: συλλέκτες, δείκτες, αποθήκευση, έξοδος.
9) Ασφάλεια και ιδιωτικότητα
Κατά τη διαμετακόμιση: TLS 1. · Κρυπτογράφηση ιδιωτικών κλειδιών (βλέπε «Κρυπτογράφηση σε διαμετακόμιση/σε ανάπαυση»).
PII και μυστικά: μην γράφετε σε χαρακτηριστικά/γεγονότα; μαρκαρίσματος/συγκάλυψης του παραγωγού.
Πολλαπλή μίσθωση: "ενοικιαστής. i ως σήμα πόρων και απομόνωση χώρων, πολιτικές ανάγνωσης· πρόσβαση σε ιχνοστοιχεία ελέγχου (βλέπε Ακρόαση και μη τροποποιημένα αρχεία καταγραφής).
10) Συστήματα εφαρμογής (παραπομπή)
10. 1 OpenTelemetry SDK (ψευδοκώδικας)
python from opentelemetry import trace from opentelemetry. sdk. trace import TracerProvider from opentelemetry. sdk. resources import Resource from opentelemetry. sdk. trace. export import BatchSpanProcessor from opentelemetry. exporter. otlp. proto. grpc. trace_exporter import OTLPSpanExporter
provider = TracerProvider(resource=Resource. create({
"service. name":"checkout","service. version":"1. 12. 0","deployment. environment":"prod"
}))
provider. add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317", insecure=True)))
trace. set_tracer_provider(provider)
tr = trace. get_tracer("checkout")
with tr. start_as_current_span("POST /pay", attributes={
"http. route":"/pay","http. method":"POST","tenant. id":"t-42"
}):
business logic, external API call and pass DB
10. 2 Otel Collector - δειγματοληψία ουράς (θραύσμα)
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_codes: [ERROR]
- type: latency threshold_ms: 900
- type: probabilistic sampling_percentage: 10 exporters:
otlphttp: { endpoint: http://trace-backend:4318 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tailsampling]
exporters: [otlphttp]
10. 3 Kafka - Μεταφορά πλαισίου (Έννοια)
ΠΑΡΑΓΩΓΟΣ: προσθήκη κεφαλίδων «traceparent», «αποσκευές».
ΚΑΤΑΝΑΛΩΤΗΣ: εάν το μήνυμα εισάγει μια νέα ροή - ένα νέο εύρος SERVER/ΚΑΤΑΝΑΛΩΤΗ από σύνδεσμο σε πλαίσιο από κεφαλίδες.
11) Δεδομένα/ETL и ML
Για τους αγωγούς παρτίδας: εμβαδόν σε παρτίδα/κατάτμηση με 'dataset. τεφροδόχος ',' τρέχει. id ',' σειρές. in/out ',' φρεσκάδα. υστέρηση '.
Για ML: διαστήματα εκπαίδευσης/συμπερασμάτων, έκδοση μοντέλου, καθυστέρηση, αποθήκευση χαρακτηριστικών.
Σύνδεση με τη γραμμή: 'run. σύνολο δεδομένων id 'и'. Σας επιτρέπει να πηδήξετε από το ίχνος στο γράφημα προέλευσης δεδομένων.
12) Πλατφόρμα ιχνηλάτησης SLO
Κατάποση: ≥ 99. 9%
Καθυστέρηση στην ευρετηρίαση: ≤ 60 s p95
Κάλυψη του δείγματος κεφαλής: ≥ 5-10% των βασικών διαδρομών
100% εξοικονόμηση διαδρομών με ERROR κατάστασης και με όριο καθυστέρησης> σύμφωνα με τον κατάλογο «κρίσιμων διαδρομών»
Συναγερμοί πλατφόρμας: αύξηση των σταγόνων, χρονικά περιθώρια εξαγωγής, υστέρηση δεικτών, υπερθέρμανση του πληθικού.
13) Δοκιμές και εξακρίβωση
Σύμβαση ιχνηλάτησης σε CI: παρουσία διαστημάτων σε βασικά τελικά σημεία, υποχρεωτικά χαρακτηριστικά, σωστή «ιχνηλάτηση» μύγες μέσω της πύλης/διαμεσολαβητή.
Συνθετικά δείγματα/δείγματα ρούμι: συλλέγονται ίχνη από το εξωτερικό.
Χάος/περιστατικά: απενεργοποίηση εξαρτήσεων, έλεγχος ότι ο δειγματολήπτης «παραλαμβάνει» σφάλματα.
Καπνός στις πωλήσεις: μετά την απελευθέρωση - «υπάρχουν περιθώρια» και υποδειγματικά ίχνη →.
14) Κατάλογοι ελέγχου
Πριν από την πώληση
- W3C Trace Context ρίχνεται παντού? για μηνύματα - κεφαλίδες.
- Η βασική δειγματοληψία κεφαλής είναι ενεργοποιημένη. Οι κανόνες ουράς για το 5xx/p99 είναι διαμορφωμένοι.
- Υποχρεωτικά χαρακτηριστικά γνωρίσματα είναι η διαδρομή, η μέθοδος, η κατάσταση, η υπηρεσία. έκδοση, ενοικιαστής. id.
- Αρχεία καταγραφής JSON με «trace _ id »/« span _ id», μετρήσεις με υποδείγματα.
- απολυμαντικά PII· Κρυπτογράφηση εν κινήσει/σε ανάπαυση πολιτικών πρόσβασης.
- Ταμπλό: «κρίσιμη διαδρομή», «σφάλματα εξάρτησης», «ρετράς/χρονοδιαγράμματα».
Πράξη
- Μηνιαία επανεξέταση της πληθικότητας των χαρακτηριστικών· ποσοστώσεις.
- Δειγματοληψία ουράς ρύθμισης από SLO (λιγότερος θόρυβος, όλος ο «θερμός» - στο δείγμα).
- Κατάρτιση RCA με τη μέτρηση της μετάβασης υποδειγματικό ιχνοστοιχείο.
- Καλύμματα ελέγχου για ουρές αναμονής, DLQs, θέσεις εργασίας ETL.
15) Runbook'и
RCA: p99 αύξηση/αμοιβή
1. Άνοιγμα του ταμπλό RED. από το bin p99 πηγαίνετε υποδειγματικά στο ίχνος.
2. Βρείτε ένα «στενό» εύρος CLIENT (για παράδειγμα, 'πύλη. call '), check' retry. Μετρήστε ', timeouts.
3. Συγκρίνετε εκδόσεις/εξαρτήσεις υπηρεσιών, περιοχή/ζώνη.
4. Ενεργοποίηση της υποβάθμισης (απόκριση αποθήκευσης/όριο RPS), γνωστοποίηση των ιδιοκτητών εξάρτησης.
5. Μετά το fix - RCA και εισιτήρια βελτιστοποίησης.
Αύξηση DLQ
1. Φίλτρο εντοπισμού με 'messaging. dlq. δημοσιεύει ".
2. Ελέγξτε τους λόγους (γεγονότα), συσχετίζονται με την έκδοση.
3. Έναρξη επανεπεξεργασίας, προσωρινή αύξηση του χρονικού περιθωρίου για τον ΚΑΤΑΝΑΛΩΤΗ, γνωστοποίηση στους κατάντη ιδιοκτήτες.
16) Συχνά σφάλματα
Δεν υπάρχει πρόβλεψη πλαισίου μέσω πυλών/μεσιτών. Λύση: μεσαία σκεύη/διασταυρώσεις, μονές βιβλιοθήκες.
Όλα τα μονοπάτια 100%. Ακριβή και άσκοπη δειγματοληψία στην ουρά.
Αρχεία καταγραφής χωρίς 'trace _ id'. Η συσχέτιση → MTTR ↑ χάνεται.
PII σε χαρακτηριστικά. Μάσκα/μαρκανισμός. διατηρεί μόνο το τεχνικό πλαίσιο.
«Mute» background jabs. Προσθήκη διαστάσεων στην παρτίδα/κατάτμηση και 'run. id '.
Ονομασία απόκλισης. Εισάγετε ένα λεξικό με διαστήματα και κλειδιά χαρακτηριστικών.
17) ΣΥΧΝΈΣ ΕΡΩΤΉΣΕΙΣ
Ε: Είναι καλύτερη η δειγματοληψία κεφαλής ή ουράς
A: Συνδυασμός. Η κεφαλή δίνει το βασικό στρώμα, η ουρά εγγυάται τη διατήρηση των ανωμαλιών/σφαλμάτων.
Ε: Πώς μπορώ να εντοπίσω μέσα από την Κάφκα χωρίς μια άκαμπτη ιεραρχία
Α: Διασύνδεση του πεδίου εφαρμογής μεταξύ ΠΑΡΑΓΩΓΟΥ και ΚΑΤΑΝΑΛΩΤΗ· πλαίσιο - σε κεφαλίδες.
Ε: Τι να κάνετε με το ευαίσθητο SQL
A: 'db. δήλωση 'συντομευμένη/κανονικοποιημένη (χωρίς τιμές), ή' db. λειτουργία "+ διαστάσεις/χρόνος.
Ε: Πώς σχετίζεστε με τις επιχειρηματικές μετρήσεις
Α: Προσθήκη χαρακτηριστικών του τομέα χωρίς PII (σχέδιο/τμήμα), χρήση γεγονότων «επιχειρηματικών σταδίων» εντός του εύρους και μετάβαση από μετρήσεις μετατροπής σε υποδειγματικές.
Συναφή υλικά:- «Παρατηρησιμότητα: κούτσουρα, μετρήσεις, ίχνη»
- «Λογιστικός έλεγχος και αμετάβλητα αρχεία καταγραφής»
- «Σε διαμετακόμιση/σε ανάπαυση κρυπτογράφηση»
- «Προέλευση δεδομένων (γενεαλογία)»
- «Privacy by Design (GDPR)»
- «Μυστική διαχείριση»