GH GambleHub

Συλλογή μετρικών: Προμηθέας, Grafana

Συλλογή μετρικών: Προμηθέας, Grafana

1) Σκοπός και πλαίσιο

Το έργο του βρόχου μετρήσεων είναι η αξιόπιστη συλλογή και αποθήκευση χρονοσειρών, η παροχή γρήγορου PromQL για RCA, ειδοποιήσεις SLO και κατανοητά ταμπλό. Βασικό ζεύγος: Προμηθέας (scrape-store query) και Grafana (απεικόνιση, ειδοποιήσεις, σημειώσεις απελευθέρωσης). Για μακρά αποθήκευση και παγκόσμια ερώτηση - Θάνος/Φλοιός/Μιμίρ.

2) Μοντέλο δεδομένων και σημασιολογία

Σειρά = μετρική ονομασία + σύνολο ετικετών (κλειδί = τιμή).
Τύποι: μετρητής, μετρητής, ιστόγραμμα, περίληψη (σε prod - πιο συχνά ιστογράμμα).

Σημασιολογία:
  • RED (API): «ρυθμός», «σφάλματα», «διάρκεια» (ιστογράμματα).
  • ΧΡΗΣΙΜΟΠΟΙΗΣΗ (ресурсы): Χρησιμοποίηση, κορεσμός, σφάλματα (CPU/RAM/Disk/Net).
  • Ονομασία: 'namespace _ system _ metric _ unit' (για παράδειγμα, 'http _ server _ requests _ total', 'db _ connections _ current').

Αντι- καρδινότητα: ελαχιστοποίηση των διαφορετικών τιμών ετικέτας (χωρίς user_id request_id στην ετικέτα).

3) Έκθεση και ανακάλυψη υπηρεσίας

Εξαγωγείς: node_exporter, kube-state-metrics, cAdvisor, DB/Queues (postgres_exporter, redis_exporter, kafka_exporter).
Ιθαγενείς υπηρεσίες: βιβλιοθήκες πελατών (Go/Java/Node/Python) → '/μετρήσεις '.
Υπηρεσία Discovery: Kubernetes, EC2/ASG, πρόξενος, στατικά αρχεία.

Βασικός "προμηθέας. yml '(snippet):
yaml global:
scrape_interval: 15s evaluation_interval: 15s scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs: [{ role: node }]
relabel_configs:
- action: labelmap regex: __meta_kubernetes_node_label_(.+)
- job_name: 'apps'
kubernetes_sd_configs: [{ role: pod }]
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep regex: "true"
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
target_label: __metrics_path__
regex: (.+)
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port]
target_label: __address__
regex: (.+)
replacement: $1
Σημειώσεις του λοβού:
yaml prometheus. io/scrape: "true"
prometheus. io/path: /metrics prometheus. io/port: "8080"

4) Ιστογράμματα και καθυστέρηση

Χρήση ρητών κουβάδων για SLO σας:
  • Ιστός/API: '[10ms, 25,50,100,200,400,800,1600]'
  • Πληρωμές/πληρωμές: προσθήκη ουράς στα 5-10.
PromQL p95:
promql histogram_quantile(0. 95,
sum by (le) (rate(http_request_duration_seconds_bucket[5m]))
)
Με υποδείγματα (εάν είναι ενεργοποιημένα):
promql histogram_quantile(0. 95,
sum by (le, route) (rate(traces_spanmetrics_duration_bucket{route="/withdraw"}[5m]))
)

5) Κανόνες καταγραφής

Μείωση βαρέων αιτημάτων, τυποποίηση SLI.

yaml groups:
- name: api_sli interval: 30s rules:
- record: job:http:success_ratio:rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
- record: job:http:duration_p95:5m expr: histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

6) SLO και προειδοποιήσεις (καύση πολλαπλών παραθύρων)

SLO 99. 9% Επιτυχής Requests/30d.

yaml groups:
- name: slo_burn rules:
- alert: ErrorBudgetBurnHighShort expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 14 for: 5m labels: { severity: critical }
annotations: { summary: "Fast burn >14x for 5m" }

- alert: ErrorBudgetBurnHighLong expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 6 for: 1h labels: { severity: critical }
annotations: { summary: "Long burn >6x for 1h" }
Alertmanager (απλουστευμένο):
yaml route:
receiver: pager group_by: ["service"]
receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true

7) Υγιεινή και οικονομία του σήματος

Οι ονομασίες ετικετών είναι σταθερές και τυποποιημένες: 'service', 'env', 'region', 'route', 'code', 'version'.
Περιορισμός της πληθικότητας: Οι μετρήσεις με «διαδρομή» πρέπει να χρησιμοποιούν μοτίβο «http». διαδρομή "(όχι πλήρης URL).
Λογική δειγματοληψία - σε ίχνη. στις μετρήσεις - χωρίς user_id.
Ιδιότητες απελευθέρωσης ('service. έκδοση ") είναι χρήσιμες για τη σύγκριση παλαιών/νέων εκδόσεων.

8) Κλιμάκωση και HA

Prometheus - κάθετα και με ξύδι-στόχο:
  • Δύο Prometheus (A/B) αποσύρουν τους ίδιους στόχους (οι καταχωρίσεις HA → αντιγράφονται).
  • Θάνος: Sidecar σε κάθε Προμηθέα, Store + Query για παγκόσμια ερωτήματα και μακροχρόνια αποθήκευση (S3/GCS).
  • Εναλλακτική λύση: Cortex/Mimir (απομακρυσμένη γραφή, πολυπλοκότητα, οριζόντια κλιμάκωση).
Απομακρυσμένη εγγραφή (παράδειγμα):
yaml remote_write:
- url: https://mimir. example. com/api/v1/push basic_auth: { username: tenantA, password: $MIMIR_TOKEN }
Τοπική διατήρηση TSDB:
yaml
--storage. tsdb. retention. time=15d
--storage. tsdb. max-block-duration=2h

9) Grafana: ταμπλό, προειδοποιήσεις, σημειώσεις

Τυποποιημένα ταμπλό:

1. Επισκόπηση της πλατφόρμας (SLO/RED, προϋπολογισμός σφαλμάτων).

2. API by Route (RPS/5xx/p95, σύγκριση «έκδοση»).

3. Συστάδα/Κόμβοι (επίπεδο ελέγχου, κορεσμός).

4. DB/Cache/Queues (lag/locks/hit ratio/backlog).

5. Per - Release (πριν/μετά, release notations from CI).

Grafana Alerting: ενεργοποιήσεις στο PromQL, περιστροφές εφημερίας, mute-times «παράθυρα απελευθέρωσης».

Σχολιασμοί: Το CI προσθέτει μια εκδήλωση κυκλοφορίας με την εικόνα 'commit'. ετικέτα ", αναφορά στον αγωγό.

10) Kubernetes: τι να μετρήσετε

Επίπεδο ελέγχου: 'apiserver _ request _ total', etcd leader/fsync, καθυστέρηση προγραμματιστή.
Φόρτος εργασίας: επανεκκίνηση, 'container _ cpu _ cfs _ throttled _ seconds _ total', OOM, εν αναμονή/έξωση, παραβιάσεις PDB.
Δίκτυο: drops, conntrack, 'kube-proxy' σφάλματα.
Ποσοστώσεις/όρια: Αιτήσεις έναντι ορίων, HPA/VPA, κορεσμός κόμβων.

11) DB/κρύπτες/ουρές αναμονής: σήματα κλειδιά

PostgreSQL/MySQL: 'συνδέσεις', 'κλειδαριές', 'αδιέξοδο _ σύνολο', 'xact _ commit/rollback', καθυστέρηση αντιγραφής.
Redis: αναλογία επιτυχίας, 'εξώσεις', καθυστέρηση 'στιγμιαία _ ops _ per _ sec'.
Kafka/RabbitMQ: καταναλωτική υστέρηση, μη συσκευασμένη, ISR, χρήση δίσκων.

Παραδείγματα PromQL:
promql
Queue backlog sum by (topic) (kafka_consumergroup_lag)> 1000

Postgres replication lag max(pg_replication_lag_seconds) > 2

12) Ασφάλεια και πολυπλοκότητα

RBAC προς Prometheus/Grafana, datasource-permishens.
Αλυσίδα TLS/mTLS κατά την είσοδο/μεταξύ κατασκευαστικών στοιχείων.
απομόνωση ενοικιαστή: χωριστό σήμα Προμηθέα ή ενοικιαστή στο Cortex/Mimir· όρια σειράς και αιτήσεων.
Απόρρητα σε καταχωρίσεις/κοινοποιήσεις - απαγορευμένα (χρησιμοποιήστε ταυτότητα εισιτηρίου και όχι PII).

13) Ενσωμάτωση με εκλύσεις και αυτόματες ανατροπές

Κανόνες SLO → PropertyTemplate (Argo Rollouts) ή CI-gate.
Όταν ενεργοποιούνται προειδοποιήσεις εγκαυμάτων - παύση/ανατροπή καναριού; στο ημερολόγιο/σχολιασμό - σύνδεσμος προς την απελευθέρωση.
Σύγκριση σταθερής και καναρινικής έκδοσης μέσω της ετικέτας «έκδοση».

14) Τυπικά σφάλματα (αντίγραφα)

Μη ελεγχόμενη πληθικότητα ετικετών (user_id, url. πλήρη, δυναμικά κλειδιά).
Αναμειγνύονται το prod και το στάδιο στο ίδιο σύμπλεγμα χωρίς το 'env' label.
Μόνο περιτύπωμα χωρίς RED/USE. χωρίς p95/p99 ιστογράμματα.
Καταχωρίσεις για υλικό χωρίς δέσμευση στο θόρυβο SLO.
Έλλειψη κανόνων καταγραφής → «βαρέων» αιτημάτων σε περιστατικά παραγωγής.
Δεν υπάρχουν σημειώσεις απελευθέρωσης → είναι δύσκολο να συγκριθούν οι αλλαγές και η υποβάθμιση.

15) Κατάλογος ελέγχου εφαρμογής (0-45 ημέρες)

0- 10 ηµέρες

Node/kube-state/cAdvisor exports· «/μετρήσεις »στις υπηρεσίες.
Βασικά ταμπλό RED/USE, τυποποιημένοι κουβάδες ιστογράμματος.
Συμπεριλάβετε σημειώσεις απελευθέρωσης από τον ΚΚΠ.

11-25 ημέρες

Κανόνες καταγραφής για SLI· ειδοποιήσεις εγκαυμάτων πολλαπλών παραθύρων.
HA Prometheus (διπλό ξύρισμα), αντίγραφο ασφαλείας ρυθμίσεων GitOps.
Συναγερμός: διαδρομές/αθόρυβος τρόπος/περιστροφές εφημερίας.

26-45 ημέρες

Απομακρυσμένη γραφή σε Thanos/Cortex/Mimir, μακροπρόθεσμη αποθήκευση.
Βελτιστοποίηση της πληθικότητας, όρια σειράς, αιτήματα.
Εκπομπές αερίων SLO και ενσωμάτωση αυτόματης ανατροπής.

16) Μετρήσεις διάρκειας

Κάλυψη RED/USE για βασικές υπηρεσίες ≥ 95%.
Μέσος χρόνος εκτέλεσης «βαρέων» PromQL <2 s (p95) λόγω των κανόνων καταγραφής.
Η αναλογία χρήσιμων/θορυβωδών προειδοποιήσεων είναι> 3:1.
Καρδινότητα υπό έλεγχο: <10M ενεργές παρτίδες ανά σμήνος, χωρίς ακίδες.
Το 100% των απελευθερώσεων σημειώνονται στην Grafana και συσχετίζονται μετρήσεις πριν/μετά.

17) Χρήσιμα αποσπάσματα

Σταθερή έναντι σύγκριση καναρινιού κατά έκδοση

promql histogram_quantile(0. 95,
sum by (le, version) (rate(http_request_duration_seconds_bucket{version=~"stable    canary"}[5m]))
)

5xx Σφάλματα κατά διαδρομή

promql topk(5,
sum by (route) (rate(http_requests_total{status=~"5.."}[5m]))
)

κορεσμός CPU δοχείου

promql rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1

Σχέση μετρικών με κομμάτια (Ενεργοποιημένα υποδείγματα)

promql sum (rate (http_request_duration_seconds_bucket[5m])) by (le) # clickable to the track

18) Συμπέρασμα

Το Prometheus + Grafana είναι το de facto πρότυπο για τις μετρήσεις. Νίκη σημασιολογίας και πειθαρχίας: RED/USE, τακτοποιημένες ετικέτες, ιστογράμματα για SLO, κανόνες καταγραφής και καταχωρίσεις SLO. Προσθέστε HA και μακροχρόνια αποθήκευση, σημειώσεις απελευθέρωσης και ενσωμάτωση με auto-rollbacks - και έχετε ένα γρήγορο, κλιμακωτό και οικονομικό μετρικό βρόχο που σας βοηθά να πάρετε αποφάσεις στις πωλήσεις.

Contact

Επικοινωνήστε μαζί μας

Επικοινωνήστε για οποιαδήποτε βοήθεια ή πληροφορία.Είμαστε πάντα στη διάθεσή σας.

Telegram
@Gamble_GC
Έναρξη ολοκλήρωσης

Το Email είναι υποχρεωτικό. Telegram ή WhatsApp — προαιρετικά.

Το όνομά σας προαιρετικό
Email προαιρετικό
Θέμα προαιρετικό
Μήνυμα προαιρετικό
Telegram προαιρετικό
@
Αν εισαγάγετε Telegram — θα απαντήσουμε και εκεί.
WhatsApp προαιρετικό
Μορφή: κωδικός χώρας + αριθμός (π.χ. +30XXXXXXXXX).

Πατώντας «Αποστολή» συμφωνείτε με την επεξεργασία δεδομένων.