GH GambleHub

SLO/SLA y métricas

SLO/SLA y métricas

1) Términos y jerarquía

SLI (Service Level Indicator) es un indicador medible de «cómo nos ve el usuario»: proporción de solicitudes exitosas, p95 latencia, frescura de datos, proporción de batches procesados con éxito, etc.
SLO (Objective Service Level): valor de destino SLI en el intervalo de observación (28/30/90 días). Ejemplo: "99. El 9% de las solicitudes/pagos se completan ≤ 400 ms".
Error budget — 1 − SLO. Con SLO 99. 9% presupuesto de error = 0. 1% de tiempo/consultas.
SLA (Agreement) - Nivel de servicio legalmente significativo: incluye SLO, medición, excepciones, compensaciones/multas.

2) Principios de diseño

Síntomas> métricas internas. Los SLIs deben reflejar la experiencia real del usuario.
Pequeño número de SLI clave. En el servicio - 2-5 principales: éxito, latencia, ancho de banda/frescura, corrección.
Cobertura de vías críticas. Para cada escenario empresarial (checkout, login, webhook, ETL-download), su propio conjunto SLI/SLO.
Una estricta semántica de «éxito». No es el «código 200», sino que «el usuario ha recibido una respuesta a tiempo y el resultado es válido».
Separación de SLO externos e internos. Interior - más estricto; el SLA externo ≤ en 1-2 novenas abajo.

3) Catálogo SLI (referencia)

3. 1 API/servicios en línea

Éxito: 'SLI _ success = 1 − (5xx + timeout + business_error )/ all_requests'

Latencia: p95/p99 'http _ server _ duration _ seconds' en rutas/métodos/inquilinos

Ancho de banda: 'RPS '/límites/cuotas

Corrección: proporción de respuestas válidas (firmas, esquemas, invariantes)

3. 2 Webhooks/entregas asíncronas

Entrega: proporción de eventos confirmados en T segundos y ≤ N retraídos

Clientes: porcentaje de suscriptores sin retraso prolongado (per-tenant)

3. 3 Datos/ETL/DWH

Frescura (freshness): 'now − last_successful_ingest_ts'

Integridad: 'ingested _ rows/ expected_rows'

Corrección: porcentaje de registros que han superado los controles de calidad

Pipelines: proporción de jobs completados antes de la línea de salida

3. 4 SDK móvil/cliente

Éxito del cliente: proporción de sesiones sin errores fatales

Latencia round-trip: p95 desde la consulta hasta el renderizado

Hits de caché: porcentaje de los atendidos de la caché (como síntoma de rendimiento)

4) Fórmulas y ejemplos de objetivos

Disponibilidad (previa solicitud):
  • `SLI_req_avail = 1 − (failed_requests / total_requests)`
  • `SLO_req_avail = 99. 95% 'durante 30 días → error budget = 0. 05% de las consultas.
Disponibilidad (en el tiempo):
  • `uptime = (obs_window − downtime) / obs_window`
Latencia:
  • ' SLO _ latency = p95 (route = »/pay») ≤ 400 ms' en cortes de 7 días, excluyendo los calores de caché (1%)
La frescura de los datos:
  • ' SLO _ freshness (dataset =» orders») ≤ 10 min' p99 en 24 horas.

5) Error budget y gestión de cambios

Presupuesto (B): 'B = 1 − SLO'.
Gasto presupuestario (burn): relación entre los errores reales y los válidos.

Políticas:
  • Sobrecarga (burn> 1) → fieltro, enfoque en la fiabilidad.
  • Con burn rate> X en la ventana corta - incidente y cap. medidas.
  • Planificación: la proporción de sprint por fiabilidad se correlaciona con burn durante el período anterior.

6) Alerting: burn rate y reglas de múltiples ventanas

La idea: atrapar fugas rápidas y una deriva lenta.

Ejemplo (SLO 99. 9%, presupuesto 0. 1%):
  • Crítico: «2% del presupuesto en 1 hora» (fuego rápido).
  • Advertencia: «5% del presupuesto en 6 horas» (degradación deslizante).
Reglas:
  • Ventana corta (minuto-hora) para incidentes rápidos.
  • Ventana larga (6-24 horas) para las tendencias.
  • Latencia: alerta de p99> umbral de ≥5 min, con supresión de flapping y comunicación con instancias de trazados.
Expresiones de ejemplo (lógica):

error_ratio_5m = errors[5m] / requests[5m]
error_ratio_1h = errors[1h] / requests[1h]
burn_5m     = error_ratio_5m / error_budget_fraction burn_1h     = error_ratio_1h / error_budget_fraction alert_critical if burn_1h > 14 and burn_5m > 14 alert_warning  if burn_6h > 6 and burn_30m > 6

7) Multiarrendamiento (multi-tenant) y segmentación

SLI/SLO se consideran por inquilinos/planes/regiones, de lo contrario la mediana «amordazará» los fallos.
Número mínimo de eventos para significación estadística (guard-rails).
El SLA puede variar según las tarifas (por ejemplo, "Pro 99. 9%, Free 99. 5%»).

8) Relación con la observabilidad y trazabilidad

Métricas de SLI: de histogramas/contadores con exemplares → pasar a tracks «malos».
Los registros son la fuente de las razones: timeouts, códigos de error de negocio, límites.
Para los datos, un ligamento con lineage: «qué joba retrasó la métrica de frescura».

9) Contratos y SLA

Contenido del SLA:
  • Definiciones SLI/Método de medición/ventana.
  • Excepciones (trabajos programados, fuerza mayor).
  • Procedimiento de incidentes y comunicaciones (status page, RFO/RCA).
  • Compensación (créditos de servicio) y orden de solicitud.
  • Jurisdicción, período de validez, condiciones de revisión.
Recomendaciones:
  • Nunca prometa un SLO público más estricto de lo que permite la arquitectura y las prácticas operativas.
  • Separe los SLO internos y los SLA externos.

10) Costo y prioridad

El precio de las novenas no sube linealmente. «99. 9% → 99. 99%" = otra clase de arquitectura (N + 1, multitisona, activo-activo).
Pon SLO en las acciones personalizadas más valiosas.
Controle el costo de la telemetría: downsampling, cupos, réplica y almacenamiento por clase.

11) Procedimientos y presentación de informes

Informes semanales: ejecución de SLO por servicios/inquilinos, gasto presupuestario, razones principales, planes de mejora.
RCA postincidentes: Asociamos con las piezas del presupuesto; fijamos objetivos para abordar las causas subyacentes.
Fichfrisis: criterios de inclusión/retirada.

12) Plantillas (para inicio rápido)

12. 1 Tarjeta SLO (ejemplo)


Service: Checkout API
SLI:
success: 1 - (5xx+timeouts+biz_failures)/all latency_p95: p95(http_server_duration_seconds{route="/pay"})
SLO:
success: 99. 95% / 30d latency_p95: ≤ 400ms / 7d
Windows:
primary: 30d rolling secondary: 7d rolling
Burn Alerts:
critical: use 1h/5m > 14 warning: use 6h/30m > 6
Owner: Team Checkout
Tenancy: per-tenant (≥ 1k req/day threshold)
Dashboards: RED + trace exemplars

12. 2 Tabla «Madurez de SLO»

NivelCaracterísticas
0No SLI, alertas por CPU/Memoria
1Hay SLI, umbrales simples
2SLO con alertas burn-rate, informes
3SLO multi-alquiler, Fiechfriz, Captación de acuerdo con el plan
4SLO de extremo a extremo (kliyent→bekend→dannyye), auto-remediación, SLO canario

13) Ejemplos de reglas (fragmentos)

PromQL - éxito/errores/latencia:
promql
Error rate (5xx + timeout) for the sum (rate (http_requests_total{route="/pay",code=~"5. route.    599"}[5m]))
/ sum(rate(http_requests_total{route="/pay"}[5m]))

p99 histogram_quantile latency (0. 99, sum(rate(http_server_duration_seconds_bucket{route="/pay"}[5m])) by (le))
Alertas burn-rate (idea para reglas):
promql error_budget_fraction = 0. 001 for 99. 9%
(err_rate_5m / 0. 001 > 14) and (err_rate_1h / 0. 001 > 14) # critical
(err_rate_30m / 0. 001 > 6) and (err_rate_6h / 0. 001 > 6)  # warning
La frescura de los datos:
promql
Data order lag (minutes)
(max(time()) - max(last_ingest_ts_seconds{dataset="orders"})) / 60

14) SLO para datos y ML (características)

Datos SLO de extremo a extremo: frescura p99, plenitud p99, tiempo de «sobreesfuerzo» después de la falla.
Contratos de datos: esquemas previstos, volúmenes, líneas de datos; violación → incidente de datos.
ML: SLO sobre la latencia del infierno, SLA sobre la disponibilidad del fitsor, monitoreo de la deriva (la calidad del modelo es un tema separado, fuera del SLA).

15) Integración con seguridad y privacidad

Registros SLI sin PII/secretos; tokenización/enmascaramiento.
Auditar los cambios de SLO/SLA y las publicaciones de informes en revistas inmutables.
Para las vías regulatorias (pagos/PII) - SLO separados, más estrictos.

16) Hojas de cheques

Antes de iniciar el servicio/fichas

  • SLI «éxito/latencia/ancho de banda/frescura».
  • Dados SLO y ventanas; presupuesto de errores calculado.
  • alertas de burn-rate personalizadas (corto + largo).
  • Dashboards RED + exemplars → la pista; ruinabooks de incidentes.
  • Cortes multiarrendamiento y umbrales de significación.
  • Procedimiento de fiecfrisis y presentación de informes.
  • Informe semanal sobre SLO/burn, planes de hardening.
  • Revalorización de SLO cuando cambia la arquitectura/carga.
  • Ocasionales «incidentes-ejercicios» y actualización de rúnicas.
  • Control del costo de telemetría y de la cantidad de SLI.

17) Runbook’и

Runbook: crecimiento rápido p99/pay

1. Alerta p99> umbral → abrir el dashboard → ir por exemplar a la pista.
2. Encontrar un CLIENTE/SERVIDOR-span estrecho, comparar regiones/versiones.
3. Habilitar la degradación (caché/límite/folback), notificar al comando de dependencia.
4. Después de la estabilización - RCA, tareas de optimización, actualización de las mediciones SLO.

Runbook: gasto presupuestario> 50% en una semana

1. Congelar los fichajes, elevar la prioridad de la fiabilidad.
2. Clustering de errores: por rutas/inquilinos/dependencias.
3. Poner en marcha las correcciones → confirmar la recuperación de la tendencia.
4. Retrospectiva y ajuste de alertas/umbrales.

18) FAQ

P: ¿Cuánto SLO necesita?
R: Mínimo en escenarios críticos del usuario: éxito + latencia. Todo lo demás es necesario.

P: ¿Qué es mejor: disponibilidad en el tiempo o a petición?
R: A petición, una métrica más personalizada. Conveniente para componentes de red/infra en el tiempo.

P: ¿Por qué p95, no la media?
R: El medio oculta la cola; el usuario siente p95/p99.

P: ¿Cómo no «torcer las tuercas» demasiado?
R: Comience con metas realistas (datos históricos), luego endurezca a medida que madure.

Materiales relacionados:
  • «Observabilidad: registros, métricas, trazados»
  • «Trazados distribuidos»
  • «Auditoría y registros inmutables»
  • "Garantías de entrega de webhooks'
  • «Encriptación In Transit/At Nat»
  • «Origen de los datos (Lineage)»
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.