Στοίβα παρατήρησης
1) Γιατί χρειάζεστε στοίβα παρατήρησης
Ταχεία RCA και μειωμένη MTTR: από σύμπτωμα σε αιτία σε λίγα λεπτά.
Διαχείριση SLO: μέτρηση σφαλμάτων/καθυστέρηση, προειδοποίηση με εσφαλμένο προϋπολογισμό.
Έλεγχος απελευθέρωσης: υπολογισμοί καναρινιού, αυτόματη ανατροπή με μετρήσεις.
Ασφάλεια και λογιστικός έλεγχος: Διαδρομές πρόσβασης, ανωμαλίες, νόμιμη κράτηση.
Διαφάνεια FinOps: κόστος αποθήκευσης/αιτήσεων, κόστος ανά SLO.
Μεθοδολογίες: Χρυσά σήματα (καθυστέρηση/κίνηση/σφάλματα/κορεσμός), RED, ΧΡΗΣΗ.
2) Βασική αρχιτεκτονική στοίβας
Στοιχεία ανά στρώμα
Συλλογή/πράκτορες: Εξαγωγείς, Promtail/Fluent Bit, Otel SDK/Auto-Instr, Blackbox-ανιχνευτές.
Prometheus Mimir/Θάνος, Λόκι διανομείς/καταπιεστές, Tempo/Jaeger ingesters.
Αποθήκευση: αντικείμενο S3/GCS/MinIO (μακρύ κρύο), SSD (θερμές σειρές).
Ερωτήσεις/οπτικοποίηση: Grafana (πάνελ, γραφικά συστατικά SLO), Kibana (εάν ELK).
Διεύθυνση: Alertmanager/Graphana alerts, service catalog, RBAC, secret manager.
Πρότυπα εγκατάστασης
Διαχείριση (Grafana Cloud/cloud services) - ταχεία και ακριβότερη σε όγκο.
Αυτόνομη φιλοξενούμενη στην K8s - πλήρης έλεγχος, λειτουργία αναγκών και FinOps.
3) Πρότυπα δεδομένων: ενοποιημένο «σύστημα παρατηρησιμότητας»
3. 1 Μετρική (Prometheus/OpenMetrics)
Απαιτούμενες ετικέτες: 'env', 'region', 'cluster', 'namespace', 'service', 'version', 'rentant' (αν είναι πολυπληθής), 'endpoint'.
Ονομασία: 'φίδι _ περίπτωση', επιθέματα '_ σύνολο', '_ δευτερόλεπτα', '_ bytes'.
Γραμμωτά διαγράμματα: σταθεροί «κουβάδες» (προσανατολισμένοι στο SLO).
Cardinality: να μη συμπεριληφθεί το «χρήστης _ id», το «request _ id» στις ετικέτες.
3. 2 Κούτσουρα
Μορφότυπος: JSON· απαιτούμενα πεδία «ts», «level», «service», «env», «trace _ i ,» span _ i , «msg».
PII: κάλυψη του πράκτορα (PAN, μάρκες, ηλεκτρονικό ταχυδρομείο κ.λπ.).
Ετικέτες Loki: μόνο χαμηλή πληθικότητα ('app', 'namespace', 'level', 'tenant').
3. 3 Κομμάτια
Σημασιολογία Otel: 'service. ονομασία "," ανάπτυξη ". περιβάλλον «,» db. σύστημα "," http ".
Δειγματοληψία: p99 διαδρομές-στόχοι είναι "πάντα _ on '/ουραία δειγματοληψία, το υπόλοιπο είναι" γονέας/λόγος ".
Ταυτότητα ενσωμάτωσης: flick 'trace _ id/span _ id' σε αρχεία καταγραφής και μετρήσεις (ετικέτες/πεδία).
4) Συσχέτιση M-L-T (Metrics/Logs/Traces)
Από το γράφημα συναγερμού (μετρικό) → φιλτραρισμένα αρχεία καταγραφής με 'trace _ id' → ένα συγκεκριμένο ίχνος.
Από το ίχνος (αργό εύρος), είναι → μια αίτηση για μετρήσεις ενός συγκεκριμένου backend στο διάστημα της κλίμακας.
Κουμπιά τρυπήματος στα πάνελ: «στα αρχεία καταγραφής» και «στα ίχνη» με μεταβλητή υποκατάσταση ('$ env', '$ service', '$ trace _ id').
5) OpenTelemetry Collector: Αγωγός αναφοράς
yaml receivers:
otlp:
protocols: { http: {}, grpc: {} }
prometheus:
config:
scrape_configs:
- job_name: kube-nodes static_configs: [{ targets: ['kubelet:9100'] }]
processors:
batch: {}
memory_limiter: { check_interval: 1s, limit_mib: 512 }
attributes:
actions:
- key: deployment. environment value: ${ENV}
action: insert tail_sampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code: { status_codes: [ERROR] }
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/payments","/login"] }
- name: probabilistic type: probabilistic probabilistic: { sampling_percentage: 10 }
exporters:
otlphttp/mimir: { endpoint: "https://mimir/api/v1/push" }
otlphttp/tempo: { endpoint: "https://tempo/api/traces" }
loki:
endpoint: https://loki/loki/api/v1/push labels:
attributes:
env: "deployment. environment"
service: "service. name"
service:
pipelines:
metrics: { receivers: [prometheus, otlp], processors: [memory_limiter, batch], exporters: [otlphttp/mimir] }
logs: { receivers: [otlp], processors: [batch], exporters: [loki] }
traces: { receivers: [otlp], processors: [memory_limiter, attributes, tail_sampling, batch], exporters: [otlphttp/tempo] }
6) Προειδοποίηση: SLO και πολλαπλών εγκαυμάτων
Η ιδέα: η εγρήγορση δεν είναι στο επίπεδο της «ΚΜΕ> 80%», αλλά στην κατανάλωση του προϋπολογισμού σφάλματος.
Υποδείγματα PromQL:promql
5-minute error rate err_ratio_5m =
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m]))
Quick burn (1m window)
(err_ratio_1m / (1 - SLO)) > 14. 4
Slow burn (30m)
(err_ratio_30m / (1 - SLO)) > 2
Καθυστέρηση (ιστογράμματα):
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
7) Ταμπλό: δομή φακέλου
πλατφόρμα: SLO, p95, 5xx%, χωρητικότητα, ενεργά περιστατικά.
κατά υπηρεσίες: RPS, p95/p99, λάθη, κυκλοφορίες (σημειώσεις).
, κλπ, ελεγκτές.
PostgreSQL/Redis/Kafka/RabbitMQ.
είσοδος, LB, WAF κανόνες.
uptime και ακέφαλα σενάρια.
Αποθήκευση, Έρευνα, Ζεστό/Κρύο, Πρόγνωση.
Κάθε πίνακας: περιγραφή, μονάδες, ιδιοκτήτης, σύνδεσμος runbook, drilldown.
8) Αρχεία καταγραφής: εργαστήριο LogQL
logql
API errors
{app="api", level="error"} = "Exception"
Nginx 5xx in 5 minutes
{app="nginx"} json status=~"5.." count_over_time([5m])
Extract Fields
{app="payments"} json code!="" unwrap duration avg()
9) Κομμάτια: TraceQL και κόλπα
Βρείτε το πιο αργό εύρος:
{ service. name = "api" } duration > 500ms
Αργή SQL σάντουιτς σε μια αργή ερώτηση:
{ name = "HTTP GET /order" } child. span. name = "SELECT" & child. duration > 50ms
10) Συνθετικά και uptime
Blackbox-exporter: δείγματα HTTP/TCP/TLS/DNS από ≥3 περιφέρειες/ASN.
Ακέφαλες: προγραμματισμένα σενάρια σύνδεσης/κατάθεσης.
Καταχωρίσεις απαρτίας: ενεργοποιούνται εάν οι περιφερειακές ≥2 διαπιστώσουν αποτυχία.
Σελίδα κατάστασης: αυτόματες επικαιροποιήσεις + χειροκίνητες παρατηρήσεις.
11) Αποθήκευση και διατήρηση
Μετρήσεις: θερμές 7-30 ημέρες (ταχείες σειρές), κανόνες κατεδάφισης/καταγραφής, αποθήκευση ψυχρών αντικειμένων (μήνες).
Κούτσουρα: ζεστά για 3-7 ημέρες και στη συνέχεια S3/GCS με δείκτη (Loki chunk store/ELK ILM).
Ίχνη: 3-7 ημέρες 'πάντα _ on' + μακροπρόθεσμη αποθήκευση για δείγματα (δειγματοληψία ουράς/απόρριψη).
- ανατροπή σε μέγεθος και χρόνο· προϋπολογισμός για τις αιτήσεις (ποσοστώσεις/όρια).
- Χωριστές πολιτικές για τα δεδομένα προόδου/σταδίου και ασφάλειας.
12) Πολυπλοκότητα και πρόσβαση
Χωριστά από τον «ενοικιαστή »/« χώρο ονομάτων »/Χώρους, πρότυπα δεικτών και αναλύσεις.
Ονοματεπώνυμο: «ενοικιαστής», «υπηρεσία», «ομάδα».
Εισαγωγή πινακίδων/ειδοποιήσεων - στους χώρους συγκεκριμένων ομάδων.
13) Ασφάλεια και συμμόρφωση
TLS/mTLS από πράκτορες σε backends, HMAC για ιδιωτική υγεία.
RBAC για ανάγνωση/εγγραφή, έλεγχο όλων των αιτήσεων και καταχωρίσεων.
Έκδοση PII στην άκρη; απαγόρευση των μυστικών στα αρχεία καταγραφής· DSAR/Νομικό υπόστεγο.
Απομόνωση: χωριστά σμήνη/nymspaces για ευαίσθητα πεδία.
14) FinOps: κόστος της παρατηρησιμότητας
Μειώνουμε την πληθικότητα των ετικετών και της λογικής στην κατάποση (και όχι στα αιτήματα).
Δειγματοληψία τροχιάς + στόχος πάντα για κρίσιμες διαδρομές.
Κανόνες μείωσης της δειγματοληψίας/καταγραφής βαρέων συγκεντρώσεων.
Αρχειοθέτηση σπάνιας πρόσβασης σε ψυχρό αντικείμενο.
: 'storage _ cost _ gb _ day', 'query _ cost _ hour', 'cost _ per _ rp Метрики,' cost _ per _ 9 '.
15) Δοκιμές CI/CD και παρατηρησιμότητας
Μετρήσεις/κορμοί επένδυσης στον ΚΚΠ: απαγόρευση της «έκρηξης» της πληθικότητας, επαλήθευση ιστογραμμάτων/μονάδων.
Δοκιμές σύμβασης παρατήρησης: απαιτούμενα πεδία μετρήσεων/καταγραφής, «trace _ id» σε μεσαίο λογισμικό.
Κανάριος: σημειώσεις των κυκλοφοριών σε γραφήματα, SLO-auto-rollback.
16) Παραδείγματα: ταχείες ερωτήσεις
Ανώτατα τελικά σημεία κατά σφάλμα:promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
Στραγγαλισμός ΚΜΕ:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
Kafka lag:
promql max by (topic, group) (kafka_consumergroup_lag)
Από αρχεία καταγραφής σε κομμάτια (Loki Tempo): περάστε 'trace _ i as ένα σύνδεσμο στο Tempo UI/ταμπλό.
17) Ποιότητα στοίβας: κατάλογος ελέγχου
- Συμφωνημένα συστήματα μέτρησης/καταγραφής/ιχνηλάτησης και μονάδες.
- «trace _ id» σε κορμούς και μετρήσεις, τρυπάνι από πίνακες.
- Ειδοποιήσεις SLO πολλαπλών εγκαυμάτων χωρίς πτερύγιο (απαρτία/πολλαπλό παράθυρο).
- Μείωση της δειγματοληψίας, ποσοστώσεις αιτήσεων, όρια βαθμίδων/εύρους.
- Οι τάξεις κατακράτησης και αποθήκευσης τεκμηριώνονται και εφαρμόζονται.
- Συμπεριλαμβανομένης της αναθεώρησης RBAC/Audit/PII.
- Ταμπλό: ιδιοκτήτης, runbooks, ≤2 -3 οθόνες, γρήγορη απάντηση.
- Ταμπλό FinOps (όγκοι, κόστος, κορυφαίοι ομιλητές).
18) Σχέδιο εφαρμογής (3 επαναλήψεις)
1. MVP (2 εβδομάδες): Prometheus→Mimir, Loki, Tempo; Συλλέκτης OTEL, τα βασικά ταμπλό και τις καταχωρίσεις SLO· δείγματα blackbox.
2. Κλίμακα (3-4 εβδομάδες): δειγματοληψία ουράς, κατολίσθηση, κατάποση πολλαπλών περιοχών, RBAC/Spaces, FinOps-dashboards.
3. Pro (4 + εβδομάδες): auto-rollback σε SLO, ακέφαλα συνθετικά των βασικών μονοπατιών, Legal Hold, SLO χαρτοφυλάκιο και υποβολή εκθέσεων.
19) Αντι-μοτίβα
«Όμορφα γραφικά χωρίς SLO» - καμία δράση δεν → κανένα όφελος.
Ετικέτες υψηλής πληθικότητας ('χρήστης _ id', 'request _ id') - έκρηξη μνήμης και κόστους.
Αρχεία καταγραφής χωρίς JSON και χωρίς 'trace _ id' - καμία συσχέτιση.
Ειδοποίηση πόρων αντί για συμπτώματα - θόρυβος και εξάντληση εφημερίας.
Έλλειψη πολιτικών διατήρησης - ανεξέλεγκτη αύξηση του κόστους.
20) Mini-FAQ
Τι να επιλέξετε: Loki ή ELK
ELK για πολύπλοκες αναζητήσεις/πτυχές· Το Loki είναι φθηνότερο και γρηγορότερο για σενάρια που μοιάζουν με grep. Χρησιμοποιείται συχνά ένα υβρίδιο.
Όλοι χρειάζονται ίχνη
Ναι, τουλάχιστον σε βασικές διαδρομές (σύνδεση, checkout, πληρωμές) με τη δειγματοληψία ουράς - αυτό επιταχύνει δραματικά την RCA.
Πώς να ξεκινήσετε από το μηδέν
Otel Collector → Mimir/Loki/Tempo → βασικά δείγματα SLO και blackbox → στη συνέχεια ταμπλό και προειδοποιήσεις καύσης.
Σύνολο
Η στοίβα παρατήρησης δεν είναι ένα σύνολο διαφορετικών εργαλείων, αλλά ένα συνεπές σύστημα: ομοιόμορφα πρότυπα δεδομένων → συσχέτιση M-L-T → συναγερμός SLO και συνθετικά → ασφάλεια και FinOps. Αιχμαλωτίστε τα σχήματα, την πειθαρχία και την κατακράτηση ετικετών, συνδέστε το OTEL, προσθέστε τρυπάνι και αυτόματη ανατροπή - και αποκτάτε διαχειρίσιμη αξιοπιστία με κατανοητό κόστος.