Prometheus: μετρήσεις συλλογής
(Τμήμα: Τεχνολογία και Υποδομές)
Σύντομη Περίληψη
Το Prometheus είναι ένα βιομηχανικό πρότυπο για μετρήσεις χρόνου: ξύνει στόχους πάνω από HTTP, αποθηκεύει σειρές σε TSDB, μετρά συγκεντρωτικά στοιχεία στην PromQL και ενεργοποιεί ειδοποιήσεις μέσω Alertmanager. Για το iGaming, αυτή είναι η βάση της προσέγγισης SLO (RED/USE, μετρήσεις επιχειρηματικών πληρωμών), ταχείας διάγνωσης p95/p99 και αυτόματων λύσεων (πάγωμα/ανατροπή).
1) Υπόδειγμα δεδομένων και πληθικότητα
Metric:' name {label1 =» v1», label2 =» v2»} value @ timestamp'.
Πληθικότητα = το προϊόν ισχύος όλων των μοναδικών συνόλων ετικετών. τον κύριο παράγοντα κόστους.
- : 'service', 'env', 'region', 'instance', 'po базовые,' container ',' version '·
- τομέας: «διαδρομή», «psp», «ενοικιαστής» (προσοχή!), «παιχνίδι _ πάροχος».
- Δεν μπορείτε να βάλετε 'χρήστης _ id', 'session _ id', τυχαίες/υψηλές τιμές.
2) Τύποι μετρήσεων
Μετρητής - αυξάνεται μόνο (για παράδειγμα, 'http _ requests _ total').
Περιτύπωμα - στιγμιαίες τιμές (για παράδειγμα, 'ουρά _ βάθος').
Ιστόγραμμα/Περίληψη - Κατανομές καθυστέρησης. Στο prod - Histogram (με υποστήριξη για 'histogram _ quantile ()' και υποδείγματα).
Τα ιθαγενή ιστογράμματα είναι μεταβλητοί κουβάδες που βελτιώνουν την ακρίβεια και εξοικονομούν μέγεθος (συμπεριλαμβάνονται όπου υπάρχουν).
go var httpLatency = prometheus. NewHistogramVec(
prometheus. HistogramOpts{
Name: "http_request_duration_seconds",
Help: "HTTP latency",
Buckets: prometheus. DefBuckets ,//or custom
},
[]string{"route","method"},
)
3) Εξαγωγείς και τι να μετρήσουν
Υπηρεσία: κωδικός σας (SDK για Go/Java/Node/Python), μετρήσεις RED API, επιχειρηματικές μετρήσεις (μετατροπή πληρωμών).
Σύστημα: node_exporter, cAdvisor/kubelet.
Τρίτος: DB/caches (mysqld_exporter, postgres_exporter, redis_exporter), NGINX/HAProxy, Kafka/RabbitMQ.
Μετρήσεις Otel: μέσω OpenTelemetry Collector → Prometheus Remote Write ή Prometheus-δέκτη → σε μια κοινή στοίβα.
4) Scrape and relabel: πώς να συνδέσετε τους στόχους
Βασικός "προμηθέας. ιμλ "
yaml global:
scrape_interval: 15s evaluation_interval: 15s external_labels:
env: "prod"
region: "eu-west"
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['10. 0. 1. 10:9100','10. 0. 1. 11:9100']
- job_name: 'payments-api'
metrics_path: /metrics scheme: https tls_config:
ca_file: /etc/ssl/ca. crt cert_file: /etc/ssl/tls. crt key_file: /etc/ssl/tls. key relabel_configs:
- source_labels: [__address__]
regex: '(.):\d+'
target_label: instance replacement: '$1'
Kubernetes через Prometheus Operator
Χρησιμοποιήστε το Servey Monitor/PodMonitor αντί για το χειροκίνητο 'scrape _ configs'.
yaml apiVersion: monitoring. coreos. com/v1 kind: ServiceMonitor metadata: { name: payments-api }
spec:
selector: { matchLabels: { app: payments-api } }
namespaceSelector: { matchNames: [ "prod" ] }
endpoints:
- port: metrics interval: 15s scheme: http relabelings:
- action: replace targetLabel: service replacement: "payments-api"
K8s σχολιασμού (χωρίς φορέα εκμετάλλευσης, απλουστευμένη)
yaml metadata:
annotations:
prometheus. io/scrape: "true"
prometheus. io/port: "9102"
prometheus. io/path: "/metrics"
5) Αποθήκευση: TSDB, WAL και διατήρηση
Το WAL (Write-Ahead Log) → ταχεία ανάκαμψη από την επανεκκίνηση.
Συμπίεση: συμπίεση μπλοκ, εξοικονόμηση δίσκων/ΚΜΕ.
Διατήρηση: Διατήρηση θερμών δεδομένων για 7-30 ημέρες. μακροπρόθεσμη - κίνηση (βλέπε κλιμάκωση).
- "- στοιβασία. tsdb. διατήρηση. χρόνος = 15 d "
- "- στοιβασία. tsdb. max-block-chunk-segment-size "
- Drive: fast SSD/NVMe αποφυγή άσκοπων όγκων δικτύου.
6) PromQL: θεμελιώδεις αρχές και συχνά πρότυπα
Ποσοστό/irate
promql rate(http_requests_total{route="/deposit"}[5m])
Σφάλματα και ποσοστά επιτυχίας
promql sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
p95 καθυστέρηση
promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket[5m]))
)
Ουρές/Κορεσμός
promql max(queue_depth{queue="withdrawals"}) by (region)
7) Κανόνες καταγραφής και επιδόσεις
Εξετάστε τις βαριές εκφράσεις εκ των προτέρων και αποθηκεύστε ως σειρές.
yaml groups:
- name: api. rules interval: 30s rules:
- record: job:http:request_duration_seconds:p95 expr:
histogram_quantile(0. 95,
sum by (le, job) (rate(http_request_duration_seconds_bucket[5m])))
- record: job:http:success_ratio expr:
sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
Plus: fast dashboards, λιγότερο φορτίο στην ΚΜΕ του Προμηθέα.
8) Προειδοποίηση и SLO (ποσοστό καύσης)
Προειδοποιήσεις ταχύτητας καύσης (πολλαπλών παραθύρων, πολλαπλών εγκαυμάτων)
yaml groups:
- name: slo. payments rules:
- alert: PaymentsSLOFastBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 14 for: 5m labels: { severity: "page" }
annotations:
summary: "SLO fast burn"
runbook: "https://runbooks/payments/slo"
- alert: PaymentsSLOSlowBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 6 for: 1h labels: { severity: "ticket" }
Alertmanager: δρομολόγηση υπηρεσίας/περιφέρειας, διπλή καταστολή, ChatOps.
9) Συσχέτιση με ίχνη και κορμούς
Ενεργοποίηση υποδειγμάτων: clickable 'trace _ id' σε κουβάδες ιστογράμματος.
Τοποθετήστε τις ετικέτες 'service', 'version', 'region' for 'release compare' στις μετρήσεις.
Σε ταμπλό - σημειώσεις απελευθέρωσης (Git SHA/έκδοση).
10) Κλιμάκωση και μακροπρόθεσμη αποθήκευση
Ομοσπονδία: τα ανώτερα μεγέθη του Προμηθέα από τα κατώτερα (με φίλτρα εργασίας/ετικέτας).
Απομακρυσμένη εγγραφή: αποστολή γραμμών σε μακροπρόθεσμα backends/συστάδες αποθήκευσης (Thanos/Cortex/Mimir).
Υπέρ: άπειρη κατακράτηση, οριζόντια κλιμάκωση, παγκόσμια προβολή.
Κατά: δυσκολότερη λειτουργία, κόστος.
Επιμερισμός ανά λειτουργία: χωριστές περιπτώσεις για μετρήσεις συστημάτων, επιχειρήσεις, ασφάλεια.
11) Ασφάλεια
TLS/mTLS μεταξύ Prometheus ↔/Alertmanager/remote _ γράψτε στόχους.
Βασική/συμβολική επαλήθευση ταυτότητας για/στόχους και API (μπροστά από την πύλη πληρεξουσίου).
RBAC: περιορισμός της πρόσβασης σε UI/σειρές ανά ρόλο· απόκρυψη ιδιωτικών ετικετών.
Υγιεινή PII: Μην γράφετε PII σε μετρήσεις. να χρησιμοποιούν hashes/ψευδώνυμα.
12) Πρακτικές Kubernetes
Prometheus Operator: CRD (Service Monitor, PodMonitor, Alertmanager, Prometheus).
kube-state-metrics + cAdvisor → μια πλήρη εικόνα του συμπλέγματος.
Ρύποι και πόροι: ειδικοί κόμβοι για την παρακολούθηση· Όρια CPU/RAM.
Μείωση θορύβου: επιλογείς ετικετών για χώρους ονομάτων «παραγωγής», scrape_interval πλήρωσης, όπου είναι δυνατόν.
13) Επιχειρηματικές μετρήσεις και προϊόντα
: 'πληρωμές _ επιτυχία _ σύνολο {psp, νόμισμα}', 'πληρωμή _ μετατροπή _ αναλογία', 'ttw _ δευτερόλεπτα _ ιστόγραμμα'.
Δραστηριότητα παιχνιδιού: στοιχήματα/λεπτά, συνεδρίες συγκράτησης ως περιτύπωμα, παράδοση σε περίπτωση σφαλμάτων.
Κίνδυνος/απάτη: ενεργοποιήσεις για ανωμαλίες ταχύτητας/γεω. καταγραφή χωριστά, μετρήσεις - συγκεντρωτικά μεγέθη.
14) Κόστος και απόδοση (FinOps)
Έλεγχος της πληθικότητας (ανασκόπηση ετικετών πριν από την προσθήκη νέας ετικέτας).
Δειγματοληψία ιστογραμμάτων/ → σπάνιων εξαγωγέων scrape_interval'↑ για μη κρίσιμους στόχους.
Μείωση της δειγματοληψίας σε μακροπρόθεσμα στηρίγματα αποθήκευσης.
Αποθήκευση σε ταμπλό και ευρεία εξάρτηση από τους κανόνες καταγραφής.
15) Παραδείγματα «ταχείας εκκίνησης»
RED Εξαγωγέας σε εφαρμογή (Python)
python from prometheus_client import Counter, Histogram, start_http_server reqs = Counter('http_requests_total','', ['route','method','status'])
lat = Histogram('http_request_duration_seconds','', ['route','method'])
start_http_server(8000)
def handle(req):
with lat. labels(req. route, req. method). time():
status = app(req)
reqs. labels(req. route, req. method, str(status)). inc()
return status
Οριακές καταχωρίσεις p95
promql alert: HighLatencyP95 expr: histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket[5m]))) > 0. 25 for: 10m labels: { severity: "page", service: "api" }
16) Κατάλογος ελέγχου εφαρμογής
1. Ορισμός ενός συνόλου βασικών μετρήσεων (RED/USE) και μετρήσεων πεδίου.
2. Συντεταγμένες ετικέτες και οδηγός από την πληθικότητα.
3. Ρύθμιση scrape/Service Monitor, TLS/mTLS, relabel.
4. Συμπερίληψη ιστογραμμάτων για βασικές διαδρομές και υποδείγματα.
5. Δημιουργία κανόνων καταγραφής για το p95, αναλογία επιτυχίας, συγκεντρωτικά μεγέθη επιχειρήσεων.
6. Εισάγετε ειδοποιήσεις SLO (ρυθμός καύσης) και ρίχνοντας Alertmanager.
7. Ανύψωση ταμπλό: χάρτης υπηρεσιών, σύγκριση απελευθέρωσης, πληρωμές.
8. Αποφασίστε για την ομοσπονδία/απομακρυσμένη _ εγγραφή και διατήρηση.
9. Περιορισμός της πρόσβασης (RBAC), έλεγχος της απουσίας PII.
10. Ενεργοποίηση βιβλίων δρομολογίων και ελέγχων ημερών παιχνιδιού.
17) Αντι-μοτίβα
Ετικέτες με υψηλή πληθικότητα (user/session/request_id).
Περίληψη αντί του Ιστογράμματος για τους βασικούς SLOs → δεν υπάρχει 'histogram _ quantile'.
Το ξύσιμο «όλα στη σειρά» χωρίς φιλτράρισμα/εναλλαγή → αύξηση του κόστους και του θορύβου.
Ειδοποιήσεις για ακατέργαστες μετρήσεις χωρίς συναγερμό SLO.
Έλλειψη κανόνων καταγραφής → «βαριά» ταμπλό.
Εμπιστοσύνη σε μετρήσεις χωρίς TLS/mTLS → κίνδυνος αλλοίωσης/διαρροής.
Περίληψη
Ο Προμηθέας δίνει στην πλατφόρμα iGaming παρατηρησιμότητα που συνδέεται με το στόχο: ακριβή ιστογράμματα, σταθερά μεγέθη, σαφείς ειδοποιήσεις SLO, και κλιμάκωση σε ένα χάρτη πολλαπλών περιοχών. Η πειθαρχία ετικετών, οι σωστοί κανόνες καταγραφής, οι σύνδεσμοι ιχνοστοιχείων/καταγραφής και μια στοχαστική αρχιτεκτονική αποθήκευσης παρέχουν γρήγορες κυκλοφορίες και προβλέψιμες p99 ακόμη και σε ώρες αιχμής.