Παρατηρησιμότητα: κούτσουρα, μετρήσεις, ίχνη
Παρατηρησιμότητα: κούτσουρα, μετρήσεις, ίχνη
1) Γιατί το χρειάζεστε
Παρατηρησιμότητα - Η ικανότητα ενός συστήματος να απαντά σε απρογραμμάτιστα ερωτήματα σχετικά με την κατάστασή του. Βασίζεται σε τρία κύρια σήματα:- Οι μετρήσεις είναι συμπαγή συγκεντρωτικά στοιχεία για SLI/SLO και προειδοποίηση συμπτωμάτων.
- Ίχνη - αλυσίδες ερωτημάτων από το τέλος έως το τέλος.
- Αρχεία καταγραφής - λεπτομερή γεγονότα για έρευνες και λογιστικούς ελέγχους.
Σκοπός: ταχεία RCA, προληπτικές προειδοποιήσεις και διαχείριση της αξιοπιστίας στο πλαίσιο προϋπολογισμού σφάλματος.
2) Αρχές αρχιτεκτονικής
Ενιαίο πλαίσιο: παντού ρίχνουμε 'trace _ id', 'span _ i ,' tenant _ id ',' request _ id ',' user _ agent ',' client _ ip _ hash '.
Πρότυπα: OpenTelemetry (Otel) για SDK/πράκτορες, μορφή καταγραφής JSON (κανονικό, με σχήμα).
Συμπτώματα> αιτίες: συναγερμός από συμπτώματα χρήστη (καθυστέρηση/σφάλματα), όχι από ΚΜΕ.
Επικοινωνία σήματος: από το → μετρικό στα υποδειγματικά → σε συγκεκριμένα αρχεία καταγραφής με το «trace _ id».
Ασφάλεια και προστασία της ιδιωτικής ζωής: συγκάλυψη PII σε αρχεία καταγραφής, κρυπτογράφηση υπό διαμετακόμιση/σε ηρεμία, αμετάβλητα αρχεία καταγραφής ελέγχου.
Πολυπλοκότητα: διαχωρισμός των χώρων ονομάτων/κλειδιών/πολιτικών.
3) Ταξινόμηση σημάτων και συστήματα
3. 1 Μετρήσεις
RED (ποσοστό, σφάλματα, διάρκεια) για υπηρεσίες και ΧΡΗΣΗ (χρησιμοποίηση, κορεσμός, σφάλματα) για υποδομές.
: μετρητής, μετρητής, ιστόγραμμα/περίληψη. Για καθυστέρηση, ιστόγραμμα με σταθερούς κουβάδες.
Υποδείγματα: αναφορά σε «trace _ id» σε κάδους «hot» ιστογράμματος.
name: http_server_duration_seconds labels: {service, route, method, code, tenant}
type: histogram buckets: [0. 01, 0. 025, 0. 05, 0. 1, 0. 25, 0. 5, 1, 2, 5]
exemplar: trace_id
3. 2 Ίχνη
Κλίμακα = λειτουργία με 'όνομα', 'έναρξη/τέλος', 'χαρακτηριστικά', 'γεγονότα', 'κατάσταση'.
Πλαίσιο ιχνηλασιμότητας W3C για την ανοχή.
Δειγματοληψία: βασική (κεφαλή) + δυναμική (ουρά) + κανόνες «σημασίας» (σφάλματα, υψηλή p95).
3. 3 Κούτσουρα
Μόνο δομημένο JSON. Επίπεδα: αποσφαλμάτωση/πληροφορίες/ΠΡΟΕΙΔΟΠΟΙΗΣΗ/ΣΦΑΛΜΑ.
Τα απαιτούμενα πεδία είναι 'ts _ utc', 'level', 'message', 'trace _ i ,' span _ id ',' tenant _ id ',' env ',' service ',' region ',' host ',' labels {} '.
Απαγορεύεται: μυστικά, μάρκες, PAN, κωδικοί πρόσβασης. PII - μόνο μαρκαρισμένο/μασκαρισμένο.
json
{"ts":"2025-10-31T12:05:42. 123Z","level":"ERROR","service":"checkout","env":"prod",
"trace_id":"c03c...","span_id":"9ab1...","tenant_id":"t-42","route":"/pay",
"code":502,"msg":"payment gateway timeout","retry":true}
4) Συλλογή και μεταφορά
Πράκτορες/εξαγωγείς (daemonset/sidecar) → ρυθμιστικό διάλυμα στο → λεωφορείο/κόμβο κατάποσης (TLS/mTLS) → στην αποθήκη σημάτων.
Απαιτήσεις: αντίθλιψη, αναδρομές, αποπάγωση, περιορισμός της πληθικότητας (ετικέτες!), προστασία από «καταιγίδες καταγραφής».
Μετρήσεις: έλξη (συμβατή με τον Προμηθέα) ή ώθηση μέσω OTLP.
Ίχνη: OTLP/HTTP (gRPC), δειγματολήπτες ουράς στον συλλέκτη.
Logs: τοπική συλλογή (περιοδικό/docker/stdout) → parser → normalizer.
5) Αποθήκευση και διατήρηση (κλιμακωτή)
Μετρήσεις: θερμές TSDB 7-30 ημέρες (με downsample), συγκεντρωτικά στοιχεία για μεγαλύτερο χρονικό διάστημα (90-365 ημέρες).
Ίχνη: 1-7 ημέρες πλήρες, στη συνέχεια συγκεντρωτικά στοιχεία/διαστήματα των «σημαντικών» υπηρεσιών. αποθηκεύουν δείκτες σε «υπηρεσία», «κατάσταση», «σφάλμα».
Καταγραφή: θερμός δείκτης 7-14 ημέρες, ζεστός 3-6 μήνες, αρχείο μέχρι 1-7 έτη (συμμόρφωση). Έλεγχος - WORM.
Βελτιστοποίηση κόστους: μείωση της δειγματοληψίας, φιλτράρισμα DEBUG στις πωλήσεις, ποσοστώσεις ετικετών, δειγματοληψία για κομμάτια.
6) SLI/SLO, συναγερμός και υπηρεσία
SLI: διαθεσιμότητα (% επιτυχημένα αιτήματα), καθυστέρηση (p95/p99), μερίδιο 5xx, φρεσκάδα δεδομένων, μερίδιο επιτυχημένων θέσεων εργασίας.
SLO: στόχος για SLI (π.χ. 99. 9% επιτυχής ≤ 400 ms).
Σφάλμα: 0. 1% «περιθώριο σφάλματος» → τους κανόνες της φαντασίας/των πειραμάτων.
- 'ALERT HighLatency' если 'p99 (http_server_duration_seconds{route="/pay"})> 1 5мин.
- 'ALERT RataRate' если 'rate (http_requests_total{code=~"5.."}[5m] )/rate (http_requests_total[5m])> 0. 02`.
- Silo alerts (CPU/Disk) - μόνο ως βοηθητικές, χωρίς τηλεειδοποίηση.
7) Συσχέτιση σήματος
Η μέτρηση είναι «κόκκινο» → κάντε κλικ στο παράδειγμα → ένα συγκεκριμένο 'ίχνος _ id' → κοιτάξτε το «αργό» εύρος → ανοίξτε τα αρχεία καταγραφής με το ίδιο 'ίχνος _ id'.
Συσχέτιση με τις κυκλοφορίες: χαρακτηριστικά 'έκδοση', 'εικόνα _ sha', 'χαρακτηριστικό _ σημαία'.
Για δεδομένα/ETL: 'datet _ ur ,' run _ id ', link to lineage (βλέπε αντίστοιχο άρθρο).
8) Δειγματοληψία και πληθικότητα
Μετρήσεις: περιορισμός των ετικετών (χωρίς 'χρήστης _ id', 'session _ id')· ποσοστώσεις/επικύρωση κατά την καταχώριση.
Ίχνη: συνδυάστε το δείγμα κεφαλής (στην είσοδο) και το δείγμα ουράς (στον συλλέκτη) με τους κανόνες: «οτιδήποτε είναι 5xx, p99, σφάλματα - 100%».
Αρχεία καταγραφής: επίπεδα και στραγγαλισμός. για συχνά επαναλαμβανόμενα σφάλματα - αθροιστικά γεγονότα (κλειδί dedupe).
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_code: ERROR rate_allocation: 1. 0
- type: latency threshold_ms: 900 rate_allocation: 1. 0
- type: probabilistic hash_seed: 42 sampling_percentage: 10
9) Ασφάλεια και ιδιωτικότητα
Σε διαμετακόμιση/σε ηρεμία: κρυπτογράφηση (TLS 1. 3, AEAD, KMS/HSM).
PII/μυστικά: απολυμαντικά πριν από την αποστολή, μαρκινοποίηση, συγκάλυψη.
Πρόσβαση: ABAC/RBAC για ανάγνωση. διαχωρισμός των ρόλων των παραγωγών/αναγνωστών/διαχειριστών.
Έλεγχος: αμετάβλητο ημερολόγιο πρόσβασης σε κορμούς/ίχνη. εξαγωγή - σε κρυπτογραφημένη μορφή.
Πολυπλοκότητα: χώροι ονομάτων/σήματα ενοικιαστών με πολιτικές· απομόνωση κλειδιού κρυπτογράφησης.
10) Προφίλ διαμόρφωσης (θραύσματα)
Prometheus (μετρήσεις HTTP + προειδοποίηση):yaml global: { scrape_interval: 15s, evaluation_interval: 30s }
scrape_configs:
- job_name: 'app'
static_configs: [{ targets: ['app-1:8080','app-2:8080'] }]
rule_files: ['slo. rules. yaml']
slo. κανόνες. yaml (παράδειγμα RED):
yaml groups:
- name: http_slo rules:
- record: job:http_request_duration_seconds:p99 expr: histogram_quantile(0. 99, sum(rate(http_server_duration_seconds_bucket[5m])) by (le,route))
- alert: HighLatencyP99 expr: job:http_request_duration_seconds:p99{route="/pay"} > 1 for: 5m
OpenTelemetry SDK (ψευδοκώδικας):
python provider = TracerProvider(resource=Resource. create({"service. name":"checkout","service. version":"1. 8. 3"}))
provider. add_span_processor(BatchSpanProcessor(OTLPExporter(endpoint="otel-collector:4317")))
set_tracer_provider(provider)
with tracer. start_as_current_span("pay", attributes={"route":"/pay","tenant":"t-42"}):
business logic pass
Αρχεία καταγραφής εφαρμογών (stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})
11) Δεδομένα/ETL και ροή
SLI για δεδομένα: φρεσκάδα (μέγιστη καθυστέρηση), πληρότητα (σειρές έναντι προσδοκίας), «ποιότητα» (επικυρωτές/αντίγραφα).
Ειδοποιήσεις: παραλείψιμο παραθύρων, υστέρηση καταναλωτή, αύξηση DLQ.
Συσχέτιση: 'run _ i ,' dataset _ urn ', γενεαλογικά γεγονότα. ίχνη για αγωγούς (εύρος ανά παρτίδα/κατάτμηση).
Kafka/NATS: μετρήσεις παραγωγών/καταναλωτών, υστέρηση/αποτυχία· ίχνη από κεφαλίδες (συμπεριλαμβανομένου του «ιχνοστοιχείου»).
12) Διαμόρφωση προφίλ και eBPF (πρόσθετο σήμα)
Θερμές διαδρομές χαμηλής στάθμης CPU/balticulation/IO· προφίλ ανά περιστατικό.
Τηλεμετρία eBPF (καθυστερήσεις δικτύου, DNS, κλήσεις συστήματος) συνδεδεμένη με 'trace _ id '/PID.
13) Έλεγχος παρατηρησιμότητας
Σύμβαση σήματος - Έλεγχος της εξαγωγής μετρικών/ετικετών/ιστογραμμάτων στον ΚΚΠ.
Σύνθετοι καθετήρες: σενάρια RUM/προσομοιωμένοι πελάτες για εξωτερικά SLI.
Ασκήσεις χάους/πυρκαγιάς: απενεργοποίηση εξαρτήσεων, υποβάθμιση - εξετάζουμε πώς αντιδρούν οι ειδοποιήσεις και οι συνοδοί.
Καπνίστε στο Prod: Μετά την ανάπτυξη ελέγξτε ότι τα νέα τελικά σημεία έχουν μετρήσεις και ίχνη.
14) Έλεγχος κόστους και όγκου
Προϋπολογισμοί με σήμα/εντολή. ταμπλό «κόστος ανά σήμα».
Πληθικότητα στο πλαίσιο του προϋπολογισμού (SLO για την πληθικότητα), όρια στις νέες ετικέτες.
Μείωση της δειγματοληψίας, παρουσιάσεις κλάσης δεδομένων, ψυχρά αρχεία και WORM για έλεγχο.
15) Λειτουργία και SLO της πλατφόρμας παρατηρησιμότητας
Πλατφόρμα SLO: 99. 9% των επιτυχημένων κατάποσης· καθυστέρηση του μετρικού δείκτη ≤ 30 s, κούτσουρα ≤ 2 λεπτά, ίχνη ≤ 1 λεπτό.
Ειδοποιήσεις πλατφόρμας: υστέρηση έγχυσης, ανάπτυξη πτώσης, σφάλμα υπογραφής/κρυπτογράφησης, υπερχείλιση ρυθμιστικού διαλύματος.
DR/HA: πολλαπλές περιοχές, αντιγραφή, ρυθμίσεις/αντίγραφα ασφαλείας.
16) Κατάλογοι ελέγχου
Πριν από την πώληση:- Παντού 'ίχνος _ id '/' span _ id' ρίχνεται? Αρχεία καταγραφής JSON με διάγραμμα.
- Μετρήσεις RED/ΧΡΗΣΗ με ιστογράμματα. υποδειγματική → ευθυγράμμιση.
- Ενεργοποιημένη δειγματοληψία ουράς· 5xx/p99 κανόνες = 100%.
- Ειδοποιήσεις από συμπτώματα + Runybooks; ήσυχες ώρες/αντιπτερύγιο.
- απολυμαντικά PII· Κρυπτογράφηση κατά την ανάπαυση/διαμετακόμιση WORM για έλεγχο.
- Παρακρατήσεις και προϋπολογισμοί για όγκους/πληθικότητα.
- Μηνιαία επανεξέταση συναγερμού (θόρυβος/ακρίβεια), κατώφλια ρύθμισης.
- Σφάλμα έκθεσης προϋπολογισμού και αναληφθείσες ενέργειες (fichfreeze, σκλήρυνση).
- Έλεγχος ταμπλέτας/ημερολογίου/ιχνοστοιχείων για κρίσιμες διαδρομές.
- Περιστατικά εκπαίδευσης και επικαιροποιήσεις του εγχειριδίου.
17) Runbook'и
RCA: p99/αύξηση μισθών
1. Άνοιγμα πίνακα RED για 'checkout'.
2. Πηγαίνετε στο παράδειγμα → μια αργή τροχιά → αποκαλύψετε ένα «στενό εύρος» (π.χ. "πύλη. κλήση ").
3. Άνοιγμα αρχείων καταγραφής με 'trace _ id' → προβολή χρονοδιαγραμμάτων/retrays.
4. Ενεργοποιήστε το όριο rollback/RPS, ενημερώστε τους ιδιοκτήτες εξάρτησης.
5. Μετά τη σταθεροποίηση - RCA, εισιτήρια βελτιστοποίησης, δοκιμή αναπαραγωγής.
1. SLI «φρεσκάδα» κόκκινη δουλειά κομμάτι αποτυχία γήπεδο.
2. Ελέγξτε το αρχείο καταγραφής/DLQ, σφάλματα συνδέσμου.
3. Έναρξη επανεπεξεργασίας, ενημέρωση των καταναλωτών (ΔΙ/προϊόν) μέσω διαύλου κατάστασης.
18) Συχνά σφάλματα
Αρχεία καταγραφής χωρίς σχήμα και χωρίς 'trace _ id'. Οι έρευνες καθυστερούν ενίοτε.
Προειδοποιήσεις για την υποδομή αντί για συμπτώματα. Η τηλεειδοποίηση πηγαίνει «στο γάλα».
Απεριόριστη πληθικότητα των μετρήσεων. Έκρηξη κόστους και αστάθεια.
Όλα τα κομμάτια 100%. δαπανηρό και περιττό· να καταστεί δυνατή η έξυπνη δειγματοληψία.
PII/μυστικά στα αρχεία καταγραφής. Συμπεριλαμβάνονται τα καθαριστικά και οι κόκκινες λίστες.
Χαρακτηριστικά «Mute». Νέος κωδικός χωρίς μετρήσεις/ίχνη/αρχεία καταγραφής.
19) ΣΥΧΝΈΣ ΕΡΩΤΉΣΕΙΣ
Ε: Χρειάζεται να αποθηκεύσω το ακατέργαστο κείμενο των κορμών
A: Ναι, αλλά με διατήρηση και αρχεία. για τις καταχωρίσεις και τις SLO, επαρκούν τα συγκεντρωτικά μεγέθη. Έλεγχος - στο WORM.
Ε: Τι να επιλέξετε για κομμάτια - δειγματοληψία κεφαλής ή ουράς
A: Συνδυάστε: Προβολή κεφαλής-πιθανοληπτικό για το βασικό παλτό + κανόνες ουράς για σφάλματα και ανωμαλίες.
Ε: Πώς συνδέω τις μετρήσεις χρηστών και τις τεχνικές μετρήσεις
A: Μέσω γενικών «trace _ id» και επιχειρηματικών σημάτων («route», «renant», «plan»), καθώς και μέσω γεγονότων προϊόντων (μετατροπές) με συσχέτιση με κομμάτια.
Ε: Πώς να μην πνιγείτε σε ειδοποιήσεις
A: Χτυπήστε τα συμπτώματα, εισάγετε ήσυχες ώρες, αποπροσανατολισμό, ομαδοποίηση, προτεραιότητα SLO και προεπιλογή ιδιοκτήτη ανά συναγερμό.
Συναφή υλικά:- «Λογιστικός έλεγχος και αμετάβλητα αρχεία καταγραφής»
- «Σε διαμετακόμιση/σε ανάπαυση κρυπτογράφηση»
- «Μυστική διαχείριση»
- «Προέλευση δεδομένων (γενεαλογία)»
- «Privacy by Design (GDPR)»
- «Εγγυήσεις παράδοσης Webhook»