Grafana και οπτικοποίηση δεδομένων
(Τμήμα: Τεχνολογία και Υποδομές)
Σύντομη Περίληψη
Η Grafana είναι μια βιτρίνα για κάθε παρατηρησιμότητα: μετρήσεις, αρχεία καταγραφής, ίχνη, επιχειρηματικούς δείκτες και προειδοποιήσεις σε ένα μέρος. Για το iGaming, αυτά είναι: p95/p99 παρακολούθηση, μετατροπή πληρωμών, Time-to-Wallet, διαθεσιμότητα παρόχου παιχνιδιών, γεωγραφική κατανομή συμβάντων, και σταθερή έναντι καναρινιού. Επιτυχία: υποδείγματα (μεταβλητές), κατανοητά πάνελ, σημειώσεις έκδοσης, ταμπλό SLO και πειθαρχία για τα δικαιώματα πρόσβασης.
1) Αρχιτεκτονική σύνδεσης
Πηγές δεδομένων: Prometheus (metrics), Loki/ELK (logs), Tempo/Jaeger (trails), ClickHouse/BigQuery/PG (business data), OTLP via Gateway.
Βασικοί σύνδεσμοι: από τα υποδειγματικά ιχνηθετικά αρχεία καταγραφής με το «trace _ id».
Φάκελοι και RBAC: ξεχωριστοί φάκελοι 'SRE', 'Πληρωμές', 'Κίνδυνος', 'Παιχνίδια', 'BizOps'. 'Θεατής/Επεξεργαστής/Εισαγωγή' κοκκώδεις άδειες.
2) Σχεδιασμός ταμπλό: αρχές
1. Η απάντηση στην ερώτηση σε 1-2 κάνει κλικ: από την κάρτα SLO σε λεπτομέρειες.
2. RED/ΧΡΗΣΙΜΟΠΟΙΗΣΗ για κάθε υπηρεσία + κάρτες τομέα (TTW, μετατροπή καταθέσεων).
3. Σταθερό πλέγμα: 24-στήλη, μεγάλο KPI στην κορυφή, λεπτομέρειες στο κάτω μέρος.
4. Χρώματα και κατώφλια: ελάχιστο, SLA/SLO μόνο.
5. Σημειώσεις κυκλοφορίας: Git SHA, έκδοση, τύπος κυκλοφορίας (καναρίνι/μπλε-πράσινο).
3) Μεταβλητές και υποδείγματα (υπόδειγμα)
Οι μεταβλητές μετατρέπουν ένα ταμπλό σε πολλά.
Παράδειγμα (Prometheus query-variable):- Όνομα: «υπηρεσία»
- Ερώτηση: 'label _ value (up, service)'
- Τα πολυ-επιλεγμένα + περιλαμβάνουν όλα - βολικά για συγκεντρωτικά στοιχεία.
- «περιφέρεια» → «env» → «υπηρεσία» → «παράδειγμα».
- Χρήση 'regex '/' sor για UX και' ανανέωση: φορτίο ταμπλό '.
4) Ομάδες και τύποι δειγματοληψίας
Χρονολογικές σειρές: p50/p95/p99, ρυθμός σφάλματος, απόδοση.
Stat/Gauge: Στόχος KPI (διαθεσιμότητα, TTW p95).
Bar gauge/Πίνακας: κορυφαίες διαδρομές N/πάροχοι PSP/παιχνιδιών.
Geomap: χάρτες θερμικού συμβάντος/καθυστέρησης ανά χώρα/ROR.
Καμβάς: σχηματικές ροές (Player → API → PSP → Bank).
Γράφημα κόμβου: εξαρτήσεις υπηρεσιών, χρωματισμός από σφάλματα.
- Ετικέτες σε πεδία, Εξωτερική ένωση, Μείωση (min/max/avg), Προσθήκη πεδίου από τον υπολογισμό (μετατροπή).
5) Παραδείγματα ερωτήσεων και επιτροπών
5. 1 p95 καθυστέρηση (PromQL)
promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket{service="$service",region="$region"}[5m]))
)
5. 2 Επιτυχία των αιτήσεων (εκχώρηση δικαιώματος ψήφου SLO)
promql sum(rate(http_requests_total{service="$service",status=~"2.. 3.."}[5m]))
/
sum(rate(http_requests_total{service="$service"}[5m]))
5. 3 Μετατροπή πληρωμών (σύνολο PromQL)
promql sum(rate(payments_success_total{psp=~"$psp",currency=~"$currency"}[15m]))
/
sum(rate(payments_attempt_total{psp=~"$psp",currency=~"$currency"}[15m]))
5. 4 Γρήγορο άλμα στην τροχιά (υποδειγματικά)
Στον πίνακα της σειράς 'Time series', ενεργοποιήστε τα Examplars → κάνοντας κλικ στο σημείο → το Tempo ανοίγει με το 'trace _ id'.
5. 5 Loki trace_id
logql
{service="$service"} = "$traceID"
6) Σχολιασμοί και εκδηλώσεις
Σημειώσεις απελευθέρωσης: αυτόματη προσθήκη ενός γεγονότος κατά τη διάρκεια της εξάντλησης (έκδοση, συγγραφέας, βάρος καναρινιού).
Περιστατικό/Πάγωμα: Σημάδια έναρξης/τέλους περιστατικού και αποσυσκευασμένα παράθυρα.
Επιχειρηματικές εκδηλώσεις: μεγάλες εκστρατείες/τουρνουά - σημάδι στα διαγράμματα.
7) Καταχωρίσεις στο Grafana
Κανόνες συναγερμού κεντρικά (βάσει Prometheus/Loki/Cloud).
Σημεία επαφής: PagerDuty/Slack/Email; Πολιτικές κοινοποίησης (ρίζα με φάκελο/ετικέτες).
Ρυθμός καύσης πολλαπλών παραθύρων: γρήγορο και αργό ψήσιμο του προϋπολογισμού.
Σιωπές: σε προγραμματισμένα παράθυρα και με αντίγραφα.
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25
8) Πρόβλεψη ως κωδικός (IaC)
Αποθήκευση πηγών/ταμπλό/ειδοποιήσεων σε Git.
βάση δεδομένων. yaml
yaml apiVersion: 1 datasources:
- name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true
- name: Loki type: loki url: http://loki:3100
- name: Tempo type: tempo url: http://tempo:3100
ταμπλό. yaml
yaml apiVersion: 1 providers:
- name: sres folder: SRE type: file disableDeletion: false options:
path: /var/lib/grafana/dashboards/sre
grafana. ini (θραύσμα)
ini
[auth]
disable_login_form = false
[users]
viewers_can_edit = false
[alerting]
enabled = true
[unified_alerting. screenshots]
capture = true
9) Ασφάλεια και πρόσβαση
SSO (OIDC/SAML), ομάδες → ρόλοι → φακέλους.
Δικαιώματα σε πηγές δεδομένων: μόνο οι απαραίτητοι φάκελοι, μόνο ανάγνωση για τον προβολέα.
PII υγιεινή: μην τραβάτε πεδία με PII στο πάνελ· για κούτσουρα - φίλτρο/μάσκα.
Μυστικά: μόνο μέσω θησαυροφυλακίου/ασφαλών πεδίων JSON, χωρίς «απλό κείμενο» στα ταμπλό.
10) Επιδόσεις και κόστος
Κανόνες καταγραφής στον Προμηθέα για βαριές εκφράσεις.
Μείωση της δειγματοληψίας/Διατήρηση σε μακροπρόθεσμα στηρίγματα αποθήκευσης.
Κρύπτη ταμπλό και δίκαια διαστήματα (όχι «1» παντού).
Περιορισμός της πληθικότητας των μεταβλητών (μην αντικαταστήσετε το 'χρήστης _ id '/' session _ id').
Ανακατανομή: ξεχωριστές περιπτώσεις/φάκελοι για θορυβώδεις ομάδες.
11) Εξειδικευμένα ταμπλό για iGaming
Πληρωμές: απόπειρες/επιτυχία/TTW p95, σφάλμα PSP/διαδρομής, χάρτης γεω-απόκλισης.
Παιχνίδια/πάροχοι: καθυστέρηση και ποσοστό σφάλματος ανά στούντιο/παιχνίδι, μετατροπή έναρξης.
Κίνδυνος/Απάτη: ταχύτητα δράσης, εκρήξεις συσκευών/IP, συσχετίσεις (πίνακας + ράβδος).
RG/Συμμόρφωση: συνεδρίες> κατώφλια, ανάπτυξη μπριζόλας, προειδοποιήσεις ανωμαλίας.
Σύγκριση απελευθέρωσης: σταθερή έναντι καναρίνι με p95/σφάλμα/επιχειρηματικές μετρήσεις.
Infra/USE: Χρήση/κορεσμός/σφάλματα από το σύμπλεγμα και τη σειρά αναμονής.
12) Παράδειγμα ταμπλέτας JSON (θραύσμα)
json
{
"title": "Payments SLO",
"tags": ["slo","payments"],
"time": {"from":"now-6h","to":"now"},
"panels": [
{
"type":"stat",
"title":"Availability",
"targets":[{"expr":"sum(rate(http_requests_total{service=\"payments-api\",status=~\"2.. 3..\"}[5m]))/sum(rate(http_requests_total{service=\"payments-api\"}[5m]))"}],
"thresholds":{"mode":"absolute","steps":[{"color":"red","value":0},{"color":"green","value":0. 999}]}
},
{
"type":"timeseries",
"title":"p95 latency",
"exemplars": {"color":"rgba(31,120,193,0. 6)"},
"targets":[{"expr":"histogram_quantile(0. 95,sum by (le) (rate(http_request_duration_seconds_bucket{service=\"payments-api\"}[5m])))"}]
}
]
}
13) Runbooks και UX βελτιώσεις
Κάθε καταχώριση έχει URL Runbook (οδηγίες δράσης).
Σύνδεσμοι με συναφή ταμπλό (πληρωμές ↔ Infra ↔ PSP).
Drilldown: κλικ σε ετικέτες → φίλτρα (περιοχή/psp/διαδρομή).
Μεταβλητές αθετήσεις: 'env = prod', 'region = eu' - επιταχύνει την εκκίνηση.
14) Κατάλογος ελέγχου εφαρμογής
1. Ρύθμιση πηγών δεδομένων: Prometheus/Loki/Tempo/SQL.
2. Εισάγετε φακέλους και RBAC. τον έλεγχο των δικαιωμάτων.
3. Δημιουργία μεταβλητών προτύπου (περιοχή/env/υπηρεσία).
4. Κατασκευή πινάκων SLO (διαθεσιμότητα, p95, ποσοστό σφάλματος, προϋπολογισμός σφάλματος).
5. Προσθήκη σημειώσεων απελευθέρωσης και συγκρίσεων σταθερών/καναρινιών.
6. Ενεργοποίηση υποδειγμάτων και μετάβαση σε ίχνη/κούτσουρα κάνοντας κλικ.
7. Ρύθμιση ειδοποιήσεων (ρυθμός καύσης πολλαπλών παραθύρων) και ρίζα.
8. Να προβλεφθούν τα πάντα ως κώδικας, να αποθηκευτούν στο Git, να κάνουν μια αναθεώρηση.
9. Βελτιστοποίηση των επιδόσεων: κανόνες εγγραφής, διαστήματα, μνήμη.
10. Εισάγετε τα ταμπλό (TTW, μετατροπή πληρωμών, κάρτες GGR).
15) Αντιπατερίδια
Ασυνεπή ταμπλό «ζωολογικού κήπου» χωρίς μεταβλητές και πρότυπα.
Πίνακες με βαρύ PromQL χωρίς κανόνες καταγραφής → αργή UI.
Υπεραφθονία χρωμάτων/θρύλων/άξονα Y με διαφορετικές κλίμακες.
Η σύνδεση PII σε πάνελ άνοιξε για το Viewer.
Έλλειψη σημειώσεων απελευθέρωσης - δεν είναι σαφές από πού προέρχονται τα άλματα.
Ένα ταμπλό «monovew» αντί για μια δομή φακέλου.
Περίληψη
Grafana είναι η διεπαφή όπου η τεχνική ανταποκρίνεται στο προϊόν: μετρήσεις, κορμοί και κομμάτια συνδέονται με επιχειρηματικές εικόνες. Τα πρότυπα, τα σωστά πάνελ, οι σημειώσεις και οι προειδοποιήσεις μετατρέπουν τα δεδομένα σε λύσεις: ταχεία διάγνωση, προβλέψιμες εκλύσεις και διαχειρίσιμο κόστος παρατήρησης.