Salud y Métricas

Los demonios de Asset Core exponen puntos finales de salud para monitoreo y métricas de Prometheus para observabilidad.

Visión general

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

Estructura

Puntos finales de salud

DaemonEndpointDescripción
WriteGET /v1/healthEstado del registro de confirmaciones y retraso
ReadGET /v1/healthFrescura de la proyección

Puntos finales de métricas

DaemonEndpointFormat
EscribirGET /v1/metricsTexto de Prometheus
LeerGET /v1/metricsTexto de Prometheus

Campos

Escribir Salud del Daemon

{
  "status": "healthy",
  "commit_log": {
    "end_seq": 1000,
    "checkpoint_seq": 1000,
    "lag": 0,
    "driver": {
      "name": "file",
      "path": "/var/lib/assetcore/commit_log.log"
    }
  }
}
CampoDescripción
statussaludable o degradado
commit_log.end_seqÚltima secuencia comprometida
commit_log.checkpoint_seqÚltima secuencia registrada en el punto de control
commit_log.lagDiferencia (debería ser 0 o cerca de 0)

Leer la Salud del Daemon

{
  "status": "healthy",
  "freshness": {
    "checkpoint_seq": 998,
    "commit_log_seq": 1000,
    "lag": 2
  }
}
CampoDescripción
freshness.checkpoint_seqSecuencias aplicadas a la proyección
freshness.commit_log_seqÚltimo en el registro de confirmaciones
freshness.lagQué tan retrasado está el daemon de lectura

Métricas Clave

Escribir Daemon

MétricaTipoDescripción
assetcore_write_requests_totalContadorTotal de solicitudes por ruta y estado
assetcore_write_request_duration_secondsHistogramaLatencia de la solicitud
assetcore_write_commit_duration_secondsHistogramaLatencia específica del compromiso
assetcore_write_ingress_queue_depthMedidorElementos esperando en la cola
assetcore_write_ingress_inflightMedidorSolicitudes en proceso
assetcore_write_commit_log_end_seqMedidorÚltima secuencia comprometida
assetcore_write_commit_log_lagMedidorRetraso de punto de control

Leer Daemon

MétricaTipoDescripción
assetcore_read_requests_totalContadorTotal de solicitudes por ruta
assetcore_read_request_duration_secondsHistogramaLatencia de la solicitud
assetcore_read_checkpoint_seqMedidorSecuencia aplicada
assetcore_read_freshness_lagMedidorEventos detrás del registro de confirmaciones
assetcore_read_snapshot_publish_duration_secondsHistogramaTiempo de publicación de instantáneas

Ejemplos

Verificar la Salud de Escritura

curl http://localhost:8080/v1/health | jq .

Verificar la Frescura de Lectura

curl http://localhost:8081/v1/read/freshness | jq .

Métricas de Scrape

Agregue a su configuración de Prometheus:

Guía adicional:

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

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

Ejemplos de Consultas de Prometheus

Tasa de solicitud:

rate(assetcore_write_requests_total[5m])

Latencia P99:

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

Lectura del retraso del daemon:

assetcore_read_freshness_lag

Tasa de error:

rate(assetcore_write_requests_total{status!="200"}[5m])

Ejemplos de Alertas

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

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

Referencias relacionadas