Αγωγοί καταγραφής: ELK και Loki
1) Γιατί και πότε: στόχοι υλοτομίας
Παρατηρησιμότητα και RCA: επιτάχυνση Debag, μεταθανάτια, έλεγχος SLO/SLA.
Ασφάλεια και έλεγχος: ίχνη πρόσβασης, ανωμαλίες, έρευνες.
Επιχειρηματικές μετρήσεις: μετατροπή, ροή πληρωμών, σφάλματα PSP, συμπεριφορά χρήστη.
Συμμόρφωση: αποθήκευση, συγκάλυψη PII, πολιτικές διατήρησης, νόμιμη λαβή.
Τύποι αρχείων καταγραφής: εφαρμογή, υποδομή (kubelet, kube-proxy, CNI, είσοδος), δίκτυο, έλεγχος, πληρωμή, εκδηλώσεις στο διαδίκτυο, Nginx/Envoy, βάση δεδομένων.
2) Αρχιτεκτονικές υψηλού επιπέδου
Επιλογή Α: ELK
Παραγωγοί Logshipper (Filebeat/Fluent Bit/Vector) Logstash/Beats input Elasticsearch
Επιλογή B: Loki
Παραγωγοί → Promtail/Fluent Bit → Loki διανομέας/ingester/querier → Grafana/Алертинг
Υβριδικό
ELK για αναζήτηση πλήρους κειμένου/όψης, Loki για χαμηλού κόστους κλιμακωτή αποθήκευση και ταχείες ερωτήσεις τύπου γραφήματος· συσχέτιση με μετρήσεις/ίχνη στην Grafana.
3) Επίπεδα ροής και επεξεργασίας δεδομένων
1. Συλλογή: byte tail files, journal, syslog, stdout containers, HTTP.
2. Εμπλουτισμός: κανονικοποίηση χρονοσφραγίδας, host/pod/namespace, env (prod/stage), release, commit SHA, trace/span id.
3. Ανάλυση: JSON → επίπεδα πεδία. grok/regex· μορφότυποι Nginx/απεσταλμένου· καθεστώτα πληρωμών (κωδικοί σφάλματος ΠΥΠ).
4. Φιλτράρισμα/επεξεργασία: κομμένα PII (PAN, CVV, e-mail, διευθύνσεις), μυστικά, μάρκες.
5. Δρομολόγηση: ανά ενοικιαστή/υπηρεσία/επίπεδο ημερολογίου. ζεστό/ζεστό/κρύο· να S3/object την αποθήκευση.
6. Αποθήκευση και διατήρηση: πολιτική TTL ανά κατηγορία δεδομένων.
7. Πρόσβαση/Ανάλυση/καταχωρίσεις.
4) ELK: βασικές λύσεις
4. 1 Logstash/beats
Χρησιμοποιήστε Beats/Fluent Bit σε κόμβους για εύκολο picker, Logstash ως κεντρικό ETL (grok, dissect, mutate, geoip, translate).
Logstash pools: inholding-ETL, security-ETL, payments-ETL - για την απομόνωση φορτίων.
4. Ελαστικοποίηση
Sharding: εστίαση σε ~ 20-50 GB ανά θραύσμα· αποφυγή «έκρηξης θραύσματος».
Στρατηγική δεικτών: 'logs- <ενοικιαστής> - <υπηρεσία> -ΕΕΕΕ. MMDD 'ή ροές δεδομένων, ανατροπή κατά μέγεθος/χρόνο.
- θερμό: SSD, 1-7 ημέρες, θερμό: HDD, 7-30 ημέρες, κρύο: ογκομετρικό· πάγωμα: ελάχιστο κόστος με βραδύτερη πρόσβαση.
- Χαρτογραφήσεις - Πεδία σκληρού τύπου, περιορισμός πεδίων και δημιουργία δυναμικών πεδίων.
- Cache και ερωτήματα: φίλτρα ανά πεδία λέξεων-κλειδιών, συγκεντρωτικά μεγέθη - τακτοποιημένα· pin-to-hot για αναζήτηση υψηλής συχνότητας.
4. 3 Kibana
Χώροι πολυκατοικίας.
Αποθηκευμένες αναζητήσεις, φακοί/TSVB, μετρήσεις κατωφλίου/συναγερμού.
RBAC ανά πρότυπο δείκτη («logs-tenant-»).
5) Loki: βασικές αποφάσεις
5. 1 Μοντέλο ετικέτας
Οι ετικέτες είναι ο δείκτης του Λόκι. "Χρησιμοποιήστε χαμηλή πληθικότητα: 'cluster', 'namespace', 'app', 'level', 'env', 'tenant'.
Πεδία με υψηλή πληθικότητα (uid, request_id) - στη σειρά. να ανακτήσει το ' =', το 'json', το '\regexp 'όταν ρωτηθεί μέσω του LogQL.
5. 2 Συστατικά μέρη
Promtail: сбор stdout, φάκελοι, δημοσιογραφία. parsers (JSON, regex, cri).
Διανομέας/Ingester/Querier/Query-frontend: κλιμάκωση ανά ρόλο. να ζητούν την αποθήκευση.
Αποθήκευση αντικειμένου (S3/GCS/MinIO) για μακροπρόθεσμη αποθήκευση κορμών.
5. 3 Τεχνικές LogQL
Fast grep: '{app = «πληρωμές», επίπεδο = «error»}
JSON: '{app = «api»}
Συσχέτιση με τις μετρήσεις: 'rate ({app = «nginx »\=« 200 »[5m])'
6) Σύγκριση ELK έναντι Loki (εν συντομία)
Αναζήτηση/ομαδοποίηση: Η ELK είναι ισχυρότερη για πολύπλοκα ερωτήματα πλήρους κειμένου και όψης. Loki - grep-like, γρήγορη και φθηνή.
Κόστος: Το Λόκι είναι συχνά φθηνότερο σε μεγαλύτερους όγκους (αποθήκευση αντικειμένων + μικρότερος δείκτης).
Επιχειρησιακή πολυπλοκότητα: Η ELK απαιτεί πειθαρχία στους δείκτες/ILM, Javu-hips. Loki - κλάδοι ετικετών.
Συσχέτιση με μετρήσεις/ίχνη: Loki ενσωματώνεται φυσικά με τη στοίβα Grafana/Otel. Η ELK γνωρίζει επίσης πώς, αλλά συχνότερα μέσω της ολοκλήρωσης.
7) Ασφάλεια και συμμόρφωση
PII έκδοση στην άκρη (αποστολέας): μάσκα PAN, e-mail, τηλέφωνο, διευθύνσεις, μάρκες.
TLS κατά τη διαμετακόμιση, mTLS μεταξύ πρακτόρων και λεωφορείων.
RBAC: δείκτες ανά ενοικιαστή/ετικέτες· απομόνωση νέων χώρων/χώρων.
Υγιεινή μυστικών: περιβαλλοντικές μεταβλητές χωρίς μυστικά, μεμονωμένοι μυστικοί διαχειριστές.
Μηχανισμός δέσμευσης τμήματος/δείκτη να γραφεί μία φορά για αμφισβητούμενες περιόδους.
Διαγραφή/διατήρηση: πολιτικές TTL ανά κατηγορία δεδομένων (prod/stateful/payments/audit).
Διαδρομές λογιστικού ελέγχου πρόσβασης.
8) Αξιοπιστία και απόδοση
Ρυθμιστικό διάλυμα και αντίθλιψη: τοπικά αρχεία/δίσκοι για παράγοντες. υποχωρεί με εκθετική οπισθοδρόμηση.
Idempotency: 'inest _ i /' log _ i fields για την αποφυγή αντιγράφων κατά τη διάρκεια αντιγράφων.
HA: τουλάχιστον 3 κόμβοι για πλοιάρχους/κατάποδες Loki ES· Αντιθεραπεία по AZ.
Ποσοστώσεις και όρια συντελεστών ανά ενοικιαστή/υπηρεσία προστασία από την υλοτομία «καταιγίδων».
Σύστημα επιπέδου καταγραφής: 'ERROR' περιορισμένη, 'DEBUG' μόνο προσωρινά μέσω δυναμικών σημαιών.
9) Επιδόσεις και ρύθμιση
ELK:- Σωρός JVM 50% RAM (αλλά ~ 30-32 GB ανά κόμβο), η μνήμη σελίδας είναι σημαντική.
- Έξυπνη ανατροπή (20-50 GB/shard), 'refresh _ interval' ↑ για δείκτες κατάποσης.
- Στο Logstash, αποφύγετε το «βαρύ» άλσος. εάν είναι δυνατόν, καταγραφή JSON στην πηγή.
- Το σωστό σύνολο ετικετών είναι το κλειδί για την ταχύτητα.
- Μεγάλα κομμάτια → φθηνότερη αποθήκευση, αλλά πιο ακριβή μνήμη στο ingester? ισορροπία.
- Ερώτηση-frontend + cache (meme/Redis) για επαναλαμβανόμενες αιτήσεις.
10) FinOps για κορμούς (κόστος)
Μείωση της πληθικότητας των πεδίων/ετικετών.
Δειγματοληψία αποσφαλμάτωσης και δυναμικοί «διακόπτες καταγραφής».
Περιστροφή: κοντό ζεστό, μακρύ κρύο στο αντικείμενο.
Αφαίρεση και ενοποιημένα μηνύματα (παρτίδα).
Η αρχειοθέτηση σπάνια χρησιμοποιούσε κούτσουρα σε φτηνές τάξεις αποθήκευσης.
Ταμπλό αξίας: όγκος/ροές δεδομένων/ετικέτες/δείκτες/ενοικιαστές.
11) Παρατηρησιμότητα 3-σε-1
ID/Span-ID για κάθε ημερολόγιο (μεσαίο λογισμικό σε πύλες και υπηρεσίες API).
OpenTelemetry: ενιαίο πλαίσιο. εξαγωγείς στην Tempo/Jaeger, μετρήσεις στην Prometheus/Mimir, καταγραφές στην Loki/ELK.
Γρήγορα σενάρια: «ειδοποίηση με μετρικό → άλμα στα αντίστοιχα κούτσουρα → άλμα στην πίστα».
12) Πολυπλοκότητα και απομόνωση
απομόνωση βάσει ονομάτων (K8s ετικέτες), χωριστά πρότυπα δεικτών/ετικέτες «ενοικιαστής».
Διαχωρισμός καταχωρίσεων/ταμπλό/retenschna ανά ενοικιαστή.
Τιμολόγηση της κατανάλωσης: όγκος κατάποσης, αποθήκευση, αιτήσεις.
13) Παρακολούθηση και SLO για τον ίδιο τον μεταφορέα
SLO καταπίνει: "99. 9% κούτσουρα που παραδίδονται Αναζήτηση SLO: «p95 ερωτήσεις <Y sec». 14) Τυπικά συστήματα εγκατάστασης Διεύθυνση: Elasticsearch Service/Opensearch, Grafana Cloud Loki. 15) Παραδείγματα διαμόρφωσης 15. 1 Promtail (K8s, CRI JSON) 15. 2 Logstash (κατάποση και συγκάλυψη) 16) Προειδοποιήσεις και ταμπλέτες (υποδείγματα) API: 'rate ({app = «api «, level =» error»} [5m])> κατώφλι ' PagerDuty/Telegram. 17) Έλεγχοι ποιότητας (log-QA) Συμβάσεις καταγραφής: μορφή JSON, απαιτούμενα πεδία («ts», «level», «service», «env», «trace _ id», «msg»). 18) Συχνά σφάλματα και αντι-πρότυπα Οι ετικέτες Loki με υψηλή πληθικότητα ('χρήστης _ id', 'request _ id') → μια έκρηξη μνήμης. 19) Σχέδιο εφαρμογής (επαναλήψεις) 1. MVP: πράκτορες + ένας αγωγός (εφαρμογές), βασικά ταμπλό, έκδοση PII. 20) Κατάλογος ελέγχου της εκτόξευσης στην παραγωγή 21) Mini-FAQ Τι να επιλέξετε - ELK ή Loki
Τεχνικές μετρήσεις: βάθος αναμονής, κούτσουρα, ρυθμός επανεπεξεργασίας, ποσοστό σφάλματος parser, βλάβη κόμβου ingester/ES.
Αυτόνομη : Stat Sets for ES/Loki, anti-affinity for AZ, PersistentVolumes, object storage.
Παράγοντες ακμής (εφαρμογές στις περιφέρειες): τοπικό ρυθμιστικό διάλυμα + κανάλι TLS για την κεντρική απορρόφηση.yaml scrape_configs:
- job_name: kubernetes-pods kubernetes_sd_configs:
- role: pod pipeline_stages:
- cri: {}
- json:
expressions:
level: level msg: message trace: trace_id
- labels:
level:
app:
namespace:
- match:
selector: '{namespace="prod"}'
stages:
- regex:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
- replace:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
replace: '[REDACTED_PAN]'
relabel_configs:
- action: replace source_labels: [__meta_kubernetes_pod_label_app]
target_label: app
- action: replace source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- action: replace source_labels: [__meta_kubernetes_pod_node_name]
target_label: noderuby input {
beats { port => 5044 }
}
filter {
json { source => "message" skip_on_invalid_json => true }
mutate { add_field => { "env" => "%{[kubernetes][labels][env]}" } }
PII mutate {
gsub => [
"message", "\b[0-9]{12,19}\b", "[REDACTED_PAN]",
"message", "(?i)(authorization: Bearer)([A-Za-z0-9\.\-_]+)", "\1[REDACTED_TOKEN]"
]
}
}
output {
elasticsearch {
hosts => ["https://es-hot-1:9200","https://es-hot-2:9200"]
index => "logs-%{[fields][tenant]}-%{[app]}-%{+YYYY. MM. dd}"
ilm_enabled => true ssl => true cacert => "/etc/ssl/certs/ca. crt"
user => "${ES_USER}"
password => "${ES_PASS}"
}
}
5xx splash in Nginx/Envoy σταγόνα κατάποσης σε παράγοντες· ανάπτυξη της αναζήτησης με καθυστέρηση.
Linter logs in CI: απαγόρευση νέων πεδίων με υψηλή πληθικότητα χωρίς συμφωνία.
Υπηρεσίες καναρινιών: δημιουργία αρχείων αναφοράς για την έγκαιρη ανίχνευση παλινδρόμησης.
Δυναμικά πεδία σε ES χωρίς χαρτογράφηση → «έκρηξη δείκτη».
Αποσφαλμάτωση στην πώληση "για πάντα. "Ανάψτε με σημαίες και με TTL.
Απουσία αναθεώρησης του PII.
Ένας κοινός «μονολιθικός» αγωγός για τα πάντα - καλύτερα τμήματα ανά τομέα.
2. Επέκταση: δίκτυο/infra-logs, καταχωρίσεις SLO, συσχέτιση με τροχιές.
3. FinOps: πίνακας κατακράτησης, έκθεση κόστους, βελτιστοποίηση ετικέτας/δείκτη.
4. Πολυπληθής: χώροι, RBAC, τιμολόγηση κατανάλωσης.
5. Αξιοπιστία: HA, ασκήσεις καταστροφών, νόμιμη κράτηση.