GH GambleHub

Grafana y visualización de datos

(Sección: Tecnologías e Infraestructura)

Resumen breve

Grafana es un escaparate de toda la observabilidad: métricas, registros, trazados, indicadores de negocio y alertas en un solo lugar. Para iGaming, esto es: monitoreo p95/p99, conversión de pagos, Time-to-Wallet, disponibilidad de proveedores de juegos, geo-distribución de incidentes y comparación de lanzamientos (stable vs canary). Éxito: plantillas (variables), paneles claros, anotaciones de lanzamientos, SLO-dashboards y disciplina de derechos de acceso.

1) Arquitectura de conexión

Datasources: Prometheus (métricas), Loki/ELK (registros), Tempo/Jaeger (tracks), ClickHouse/BigQuery/PG (datos de negocios), OTLP a través de Gateway.
Relaciones clave: desde la métrica → exemplar → trace → registros relacionados por 'trace _ id'.
Carpetas y RBAC: carpetas individuales 'SRE', 'Payments', 'Risk', 'Games', 'BizOps'; роли `Viewer/Editor/Admin` и granular permissions.

2) Diseño de dashboards: principios

1. La respuesta a la pregunta es 1-2 clics: de la tarjeta SLO a los detalles.
2. RED/USE para cada servicio + tarjetas de dominio (TTW, conversión de depósitos).
3. Malla estable: 24 columnas, KPI grandes en la parte superior, detalles en la parte inferior.
4. Colores y umbrales: mínimo, sólo por SLA/SLO.
5. Anotaciones de lanzamientos: Git SHA, versión, tipo de lanzamiento (canario/azul-verde).

3) Variables y templates (templating)

Las variables convierten un dashboard en mucho.

Ejemplo (Prometheus query-variable):
  • Name: `service`
  • Query: `label_values(up, service)`
  • Multi-select + include all - conveniente para agregados.
Variables en cascada:
  • `region` → `env` → `service` → `instance`.
  • Usa 'regex '/' sort' para UX y 'refresh: On dashboard load'.

4) Paneles y tipos de visualización

Time series: p50/p95/p99, error-rate, throughput.
Stat/Gauge: KPI de destino (disponibilidad, TTW p95).
Bar gauge/Table: top N rutas/PSP/proveedores de juegos.
Geomap: mapas térmicos de incidentes/latencia por país/RR.
Canvas: flujos esquemáticos (Player → API → PSP → Bank).
Node graph: dependencias de servicios, coloración por error.

Transformaciones:
  • Labels to fields, Outer join (pegatina de métricas y tablas de negocios), Reducir (min/max/avg), Añadir campo de calculación (conversión).

5) Ejemplos de consultas y paneles

5. 1 p95 latency (PromQL)

promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket{service="$service",region="$region"}[5m]))
)

5. 2 Éxito de las solicitudes (SLO proxy)

promql sum(rate(http_requests_total{service="$service",status=~"2..    3.."}[5m]))
/
sum(rate(http_requests_total{service="$service"}[5m]))

5. 3 Conversión de pagos (agregado PromQL)

promql sum(rate(payments_success_total{psp=~"$psp",currency=~"$currency"}[15m]))
/
sum(rate(payments_attempt_total{psp=~"$psp",currency=~"$currency"}[15m]))

5. 4 Salto rápido a la pista (exemplars)

En el panel Series de tiempo, active Exemplars → haga clic en el punto de → para abrir Tempo con 'trace _ id'.

5. 5 Registros de trace_id (Loki)

logql
{service="$service"}     = "$traceID"

6) Anotaciones y eventos

Anotación de Release: Auto-agregar un evento en deplay (versión, autor, peso canario).
Incident/Freeze: marcas de inicio/final del incidente y ventanas de congelación de lanzamientos.
Eventos de negocios: grandes campañas/torneos - marque en los gráficos.

7) Alertas en Grafana

Alert rules centralizado (en la base Prometheus/Loki/Cloud).
Contact points: PagerDuty/Slack/Email; Políticas de notificación (rutina por carpeta/etiquetas).
Multi-window burn-rate: un presupuesto rápido y lento.
Silencios: en ventanas planificadas y en duplicados.

Ejemplo de expresión para p95:
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25

8) Providencia como código (IaC)

Almacenar fuentes/dashboards/alertas en Git.

datasource. 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

dashboard. yaml

yaml apiVersion: 1 providers:
- name: sres folder: SRE type: file disableDeletion: false options:
path: /var/lib/grafana/dashboards/sre

grafana. ini (fragmento)

ini
[auth]
disable_login_form = false
[users]
viewers_can_edit = false
[alerting]
enabled = true
[unified_alerting. screenshots]
capture = true

9) Seguridad y acceso

SSO (OIDC/SAML), grupos → roles de carpeta →.
Derechos de datasources: sólo las carpetas deseadas, sólo read-only para Viewer.
Higiene PII: no tirar de campos con PII en el panel; para los registros: filtre/enmascare.
Secretos: sólo a través de Vault/secure JSON fields, sin «texto de juego» en los dashboards.

10) Rendimiento y costo

Reglas de grabación en Prometheus para expresiones pesadas.
Downsampling/Retention en backends de almacenamiento de información a largo plazo.
Cash dashboards e intervalos honestos (no "1s' en todas partes).
Limitación de la cardinalidad de las variables (no sustituya 'user _ id '/' session _ id').
Redistribución: instancias/carpetas individuales para comandos ruidosos.

11) Dashboards especializados para iGaming

Pagos: intentos/éxito/TTW p95, error de PSP/ruta, geo-mapa de desviación.
Games/Providers: latency y error-rate por estudio/juego, conversión de lanzamiento.
Risk/Fraud: velocidad de acción, ráfagas de dispositivos/IP, correlaciones (tabla + bar-gage).
RG/Compliance: sesiones> umbral, crecimiento de filetes, alertas por anomalías.
Release Compare: estable vs canario por p95/error/métricas de negocio.
Infra/USE: Utilization/Saturation/Errors por clústeres y colas.

12) Ejemplo de JSON-dashboard (fragmento)

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) Mejoras de Runbooks y UX

Cada alerta es Runbook URL (instrucción de acción).
Enlaces en dashboards relacionados (Pagos ↔ Infra ↔ PSP).
Drilldown: clics de etiquetas → filtros (región/psp/ruta).
Variables por default: 'env = prod',' region = eu '- acelera el inicio.

14) Lista de verificación de implementación

1. Configurar datasources: Prometheus/Loki/Tempo/SQL.
2. Escriba las carpetas y RBAC; auditoría de derechos.
3. Cree variables de plantilla (region/env/service).
4. Construya SLO-dashboards (availability, p95, error-rate, presupuesto de errores).
5. Agregue anotaciones de lanzamiento y comparación stable/canary.
6. Habilite exemplars y navegue a rutas/logs con un clic.
7. Ajuste las alertas (multi-window burn-rate) y la rutina.
8. Provisión de todo como código, almacenar en Git, hacer rugidos.
9. Optimice el rendimiento: reglas de grabación, intervalos, caché.
10. Introduzca dashboards empresariales (TTW, conversión de pagos, tarjetas GGR).

15) Antipattern

«Zoo» de dashboards descoordinados sin variables y estándares.
Los paneles con PromQL pesados sin reglas de grabación → una IU lenta.
Sobreabundancia de colores/leyendas/eje-Y con diferentes escalas.
Conexión PII en el panel abierto para Viewer.
La ausencia de anotaciones de lanzamientos no está claro de dónde provienen los saltos.
Un «monovoy» dashboard en lugar de una estructura folder.

Resultados

Grafana es una interfaz donde la técnica se encuentra con el producto: métricas, registros y pistas se conectan con pinturas de negocios. Plantillas, paneles correctos, anotaciones y alertas convierten los datos en soluciones: diagnóstico rápido, lanzamientos predecibles y coste de observación manejable.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.