Documentos de Asset Core

Documentación del motor de estado mundial determinista y referencias de API.

Documentos de Decision Gate

Salud y Métricas

Los demonios de Asset Core exponen puntos finales de salud para monitoreo y métricas de Prometheus para observabilidad. Estas señales están diseñadas para mostrar disponibilidad, frescura y retraso, de modo que los operadores puedan detectar problemas antes de que afecten a los usuarios.

Resumen

Ambos demonios de escritura y lectura proporcionan:

  • Punto final de salud: estado JSON para balanceadores de carga y monitoreo
  • Punto final de métricas: métricas en formato Prometheus para paneles de control y alertas (deshabilitado por defecto, servido en un oyente dedicado)

Estructura

Puntos finales de salud

DaemonEndpointDescripción
WriteGET /v1/write/healthEstado, versión y tiempo de actividad
ReadGET /v1/read/healthDisponibilidad más frescura para un espacio de nombres (utiliza x-assetcore-namespace cuando no está configurado)

Puntos finales de métricas

DaemonEndpointFormat
EscribirGET /v1/write/metricsTexto de Prometheus (en el oyente de métricas)
LeerGET /v1/read/metricsTexto de Prometheus (en el oyente de métricas)

Las métricas están deshabilitadas por defecto. Actívelas en daemon-write ([logging] metrics_enabled) y daemon-read ([observability] metrics_enabled), establezca valores distintos para metrics_address y, opcionalmente, permita listas de principios para /v1/write/metrics y /v1/read/metrics. Planee recopilar estos puntos finales temprano en producción para que pueda ver las tendencias de retraso de frescura.

Campos

Respuesta de Salud

{
  "status": "ready",
  "freshness": {
    "namespace": 1,
    "world_seq": 128,
    "commit_log_world_seq": 130,
    "lag": 2,
    "lag_ms": 250
  }
}
CampoDescripción
statusLeer: starting, ready, degraded; Escribir: healthy
versionCadena de versión del daemon solo para escritura
api_versionCadena de versión de la API solo para escritura
build_git_shaSHA del commit de Git solo para escritura cuando esté disponible
uptime_secsSegundos desde el inicio del proceso solo para escritura
freshnessMetadatos de frescura solo para lectura del espacio de nombres

Métricas Clave

Escribir daemon

MétricaTipoDescripción
ingress_requests_totalContadorTotal de solicitudes de ingreso por ruta/resultados
ingress_request_duration_secondsHistogramaLatencia de solicitudes de ingreso
commit_duration_secondsHistogramaLatencia de compromiso de extremo a extremo
ingress_queue_depthMedidorElementos en espera en la cola
ingress_inflightMedidorSolicitudes en proceso
commit_log_end_seqMedidorÚltima secuencia comprometida
commit_log_driver_lag_eventsMedidorRetraso del controlador del registro de compromisos en eventos

Leer daemon

MétricaTipoDescripción
http_requests_totalContadorTotal de solicitudes HTTP por ruta/resultado
http_request_duration_secondsHistogramaLatencia de solicitudes HTTP
read_checkpoint_seqMedidorSecuencia aplicada
read_commit_log_end_seqMedidorSecuencia de registro de confirmaciones observada
freshness_lag_eventsMedidorEventos detrás del registro de confirmaciones
freshness_lag_msMedidorMilisegundos detrás del registro de confirmaciones
snapshot_publish_duration_secondsHistogramaTiempo de publicación de instantáneas

Ejemplos

Verificar la Salud de Escritura

curl -H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
  http://localhost:8080/v1/write/health | jq .

Verificar la Frescura de Lectura

curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
  http://localhost:8081/v1/read/namespaces/5001/freshness | jq .

Métricas de Scrape

Agrega a tu configuración de Prometheus:

scrape_configs:
  - job_name: 'assetcore-write'
    static_configs:
      - targets: ['localhost:9100']
    metrics_path: '/v1/write/metrics'

  - job_name: 'assetcore-read'
    static_configs:
      - targets: ['localhost:9101']
    metrics_path: '/v1/read/metrics'

Ejemplos de Consultas de Prometheus

Tasa de solicitud:

rate(ingress_requests_total[5m])

Latencia P99:

histogram_quantile(0.99, rate(ingress_request_duration_seconds_bucket[5m]))

Lectura del retraso del daemon:

freshness_lag_events

Tasa de error:

rate(http_requests_total{outcome!="success"}[5m])

Ejemplos de Alertas

groups:
  - name: assetcore
    rules:
      - alert: HighReadLag
        expr: freshness_lag_events > 100
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Read daemon is behind commit log"

      - alert: WriteQueueFull
        expr: ingress_queue_depth > 900
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Write queue approaching capacity"