Saltar al contenido principal

Referencia de métricas

Cada servicio exporta métricas de Prometheus en su puerto de métricas, y la pila de monitoreo las recoge sin configuración por servicio (consulta Observabilidad y métricas). Esta página lista las métricas específicas de cada servicio que no se describen con una función en otro lugar. Las que pertenecen a una función están en la página de esa función: contrapresión en la ingesta, pasadas de mantenimiento, cachés, el bucle de detección y los servicios de borde.

Los nombres son devicechain_, después el nombre del servicio sin guiones, después el nombre de la primera columna, de modo que batch_refusals_total en command-delivery es devicechain_commanddelivery_batch_refusals_total. Un nombre entre llaves tras una métrica lista sus etiquetas. Ninguna métrica de esta página está etiquetada por inquilino ni por dispositivo, así que ninguna supone un riesgo de cardinalidad al recogerla. Los contadores terminan en _total y solo suben, así que se leen como una tasa. Los indicadores (gauges) se leen tal cual.

Casi todo lo que sigue es diagnóstico: te permite saber qué hizo un servicio sin leer su log. Cuando una métrica es de las que un operador debe atender, su fila dice qué hacer y, si la vigila una alerta, se nombra.

Entrega de comandos​

Prefijo: devicechain_commanddelivery_.

Las tres alertas de entrega de comandos leen command_delivery_claims_stranded_total, command_delivery_presence_read_errors_total y batch_refusals_total{bound="reserve"}. Un panel de Command Delivery representa el resto. Es normal que varias de ellas estén muy activas y no son fallos: una proporción estable de avisos rechazados por not_sole, reclamaciones perdidas porque la pasada de barrido compitió con un aviso, y retenciones colocadas mientras los dispositivos están fuera de línea. command_delivery_responses_refused_total debería marcar cero. Una tasa creciente en command_delivery_stranded_observed_total o command_response_lost_unsettled_total significa que los comandos están caducando contra dispositivos que no hicieron nada mal. (El command_delivery_ duplicado en los nombres más antiguos es histórico y se mantiene, porque renombrar una serie rompe todos los paneles que la leen.)

MétricaSignifica
batch_cancel_commands_total{disposition}Comandos examinados por una cancelación de lote, según lo que la cancelación pudo hacer con cada uno. Una proporción sostenida de already_sent es un freno que llega siempre tarde.
batch_devices_total{disposition}Dispositivos a los que se resolvió un lote de comandos, según si el lote les encoló comandos.
batch_enqueues_total{target_kind, outcome}Lotes de comandos decididos, según cómo se nombró el destino y el resultado.
batch_refusals_total{code, bound}Rechazos de lote por dispositivo, por código y, en un rechazo por techo, por la cota que lo causó. bound=reserve significa que el dispositivo habría cabido en el techo propio del inquilino y lo rechazó solo la reserva de entrega.
command_dead_letters_not_ours_totalMensajes no entregados leídos del flujo compartido que describen otro tipo de trabajo. Se confirman y se ignoran: todos los productores escriben en un único flujo.
command_dead_letters_unreadable_totalMensajes no entregados sobre los que este consumidor no pudo actuar: sin inquilino interpretable, un cuerpo que no es un sobre, o un sobre que no nombra ningún comando. Se confirman y se cuentan en lugar de reintentarse, porque ninguna reentrega hace que un mensaje malformado se pueda interpretar.
command_delivery_claims_lost_total{path}Despachos abandonados porque otro despachador reclamó antes el comando, por la vía de despacho que perdió. «sweep» es la pasada periódica, «nudge» es el despacho emitido cuando se encola un comando; que las dos compitan por una fila es normal y seguro (la reclamación es un compare-and-set), así que lee una tasa en una vía sin ninguna en la otra, no el total.
command_delivery_claims_stranded_totalComandos que se quedaron leyéndose como SENT porque falló su publicación y también falló la liberación. En LwM2M el reconciliador de varados los rearma; en MQTT siguen caducando como TIMEOUT, culpando por error al dispositivo.
command_delivery_dispatches_exhausted_totalComandos fallados porque la plataforma no pudo publicarlos a su dispositivo tantas veces como permite la cota configurada, así que dejó de reintentar. Cada fila registra FAILED con la plataforma como causa, en lugar de reintentar hasta su TTL y registrar después TIMEOUT contra un dispositivo al que nunca llegó.
command_delivery_holds_placed_totalComandos retenidos del despacho porque el dispositivo está ausente de forma autoritativa.
command_delivery_holds_released_totalComandos retenidos devueltos a la cola de despacho porque su dispositivo volvió.
command_delivery_nudges_applied_totalAvisos de despacho que encontraron exactamente un comando en cola y lo pasaron por las puertas de entrega. NO es un recuento de publicaciones: la puerta de presencia aún puede retener o fallar el comando, exactamente como en un ciclo de barrido.
command_delivery_nudges_declined_total{reason}Avisos de despacho sobre los que el vaciado se negó a actuar, por motivo. Una tasa alta y estable de reason="not_sole" es normal (el aviso se retira siempre que un dispositivo tiene más de un comando en cola) y no es un fallo.
command_delivery_nudges_dropped_totalAvisos de despacho descartados porque la cola estaba llena. Una señal de LATENCIA, no una tasa de errores: el comando sale igualmente en el barrido de entrega, que es la red de seguridad bajo todo aviso.
command_delivery_nudges_requested_totalAvisos de despacho aceptados en la cola de despacho del momento de encolar, uno por cada comando creado mediante createCommand (un lote de flota no emite ninguno).
command_delivery_presence_read_errors_totalPasadas de barrido que no pudieron leer la proyección de presencia; la puerta falla en ABIERTO, así que una tasa sostenida aquí significa que los comandos se están despachando sin comprobación.
command_delivery_responses_dead_lettered_totalRespuestas de dispositivos a comandos escritas en el flujo de mensajes no entregados tras fallar todos los intentos de registrarlas, de modo que se pueda ver una respuesta que el dispositivo sí dio en lugar de dejar su comando pareciendo sin respuesta.
command_delivery_responses_refused_totalRespuestas de dispositivos rechazadas porque el dispositivo que las publica no es dueño del comando que nombran. Debería ser cero: o un dispositivo está respondiendo por otro, o el despacho dirigió un comando al dispositivo equivocado.
command_delivery_stranded_observed_totalComandos encontrados en SENT sin resultado durante más tiempo del que la plataforma aún podía estar reintentándolos.
command_response_lost_not_actionable_totalRespuestas a comandos enviadas a mensajes no entregados que este consumidor dejó sin tocar porque su motivo dice que la plataforma declinó escribir la respuesta en lugar de intentarlo y fallar. Nada se resuelve: no hay un resultado perdido que registrar, y el comando nombrado aún puede estar vivo. Merece mirar una tasa creciente en un motivo que nadie esperaba, porque esta puerta está deliberadamente cerrada por defecto.
command_response_lost_not_answerable_totalRespuestas enviadas a mensajes no entregados cuyo comando no estaba en un estado que una respuesta pudiera resolver: ya había llegado a un resultado terminal por otra vía, o ha vuelto a estar vivo (redespachado o retenido) desde que se perdió la respuesta. En ninguno de los dos casos se escribe nada: un mensaje no entregado tardío no debe sobrescribir un resultado que realmente ocurrió, ni hacer fallar un comando que la plataforma aún pretende entregar.
command_response_lost_settled_totalComandos llevados a un estado terminal porque la respuesta del dispositivo a ellos fue enviada a mensajes no entregados, de modo que un comando cuya respuesta la plataforma perdió deja de leerse como si siguiera en curso.
command_response_lost_unsettled_totalRespuestas enviadas a mensajes no entregados que agotaron todos los intentos de entrega sin que se escribiera la disposición de su comando. Esos comandos se leen como en curso hasta su TTL y luego caducan a TIMEOUT, culpando a un dispositivo que sí respondió.

Device management​

Prefijo: devicechain_devicemanagement_.

geofence_set_publish_failures_total alimenta la alerta GeoFenceSetPublishFailing. Un aumento de credential_misconfigured_total significa que se restauró una base de datos junto a una clave raíz distinta de la que la selló, o que nunca se almacenó la credencial de un dispositivo; las contraseñas incorrectas no se cuentan aquí. Los tres contadores de mensajes no entregados significan que un cambio de estado llegó a la base de datos pero no al bus: léelos con dcctl dead-letters.

MétricaSignifica
alarm_event_dead_lettered_totalEventos de cambio de estado de alarma que no se pudieron publicar en el flujo de eventos de alarma y se escribieron en el flujo de mensajes no entregados. Cada uno es una transición de alarma que llegó a la base de datos pero no al bus, así que nadie recibió aviso de ella: queda visible para un operador y no solo registrada en el log.
callout_in_flightSolicitudes de auth-callout de dispositivos que se están autorizando ahora mismo.
callout_refused_busy_totalSolicitudes de auth-callout de dispositivos rechazadas con la denegación genérica porque se alcanzó la cota de solicitudes en curso.
credential_misconfigured_total{path}Comprobaciones de credenciales de dispositivos rechazadas porque el secreto almacenado nunca puede coincidir: no hay ninguno almacenado, o su resumen se hizo con una clave distinta de la que deriva la clave raíz de esta instancia (lo más probable, una base de datos restaurada junto a la clave raíz equivocada). path="connect" es el auth callout de MQTT, path="event" la comprobación por evento. Las contraseñas incorrectas no se cuentan aquí.
geofence_set_publish_failures_totalManifiestos de conjuntos de geocercas que no se pudieron publicar: un error de serialización, un rechazo del broker o un fallo de transporte. Cada uno significa que no se avisó a event-processing de una edición de geocercas, así que la contención de ese inquilino conserva su conjunto de geocercas anterior hasta que una pasada de reconciliación lo repare. Una tasa sostenida distinta de cero significa que las ediciones de geocercas no están llegando al motor de detección.
raise_alarm_dead_lettered_totalAristas de raise-alarm escritas en el flujo de mensajes no entregados tras fallar todos los intentos de aplicarlas, de modo que una alarma que debía haberse levantado o despejado queda visible en lugar de solo registrada en el log.
resolve_event_time_bounded_totalHoras de evento informadas rechazadas por adelantarse al reloj del servidor más de la tolerancia configurada, y sustituidas por la última hora que permite la tolerancia.

Event processing: detección​

Prefijo: devicechain_eventprocessing_.

Las métricas que leen las alertas son detect_is_leader, detect_live, detect_checkpoints_total (la alerta DetectLeaderIsNotConsuming lee las tres) y los contadores detect_fence_* que respaldan las alertas de geocercas. detect_consumer_pending es la señal de retraso que vigila DetectConsumerBacklogHigh, y detect_watermark_lag_seconds es la que hay detrás de DetectWatermarkLagHigh. detect_loop_heartbeat_timestamp_seconds es la propia señal de vida del motor: si está obsoleta mientras detect_is_leader y detect_live marcan 1, el bucle está bloqueado dentro de una llamada.

MétricaSignifica
detect_applied_stream_seqMayor secuencia de flujo de JetStream capturada en la instantánea confirmada.
detect_checkpoint_failures_total{stage}Puntos de control programados de DETECT que no se confirmaron, por etapa (publish, serialize, save). Una llamada de punto de control que supera su plazo cuenta contra la etapa en la que se quedó atascada. Un rechazo por escritor obsoleto no se cuenta aquí: eso termina el proceso.
detect_checkpoints_totalPuntos de control de instantánea de DETECT confirmados.
detect_consumer_ack_pendingMensajes entregados pero sin confirmar en el consumidor durable de eventos resueltos (trabajo en curso).
detect_consumer_pendingMensajes sin entregar a la espera en el consumidor durable de eventos resueltos (la señal principal de retraso de DETECT).
detect_derived_events_published_totalEventos de señal derivados publicados.
detect_derived_events_rejected_total{reason}Detecciones descartadas antes de publicarse, por motivo (enumeración acotada).
detect_events_applied_totalEventos resueltos alimentados al motor DETECT.
detect_fact_persist_retries_totalReintentos de una escritura de proyección de hechos (reglas, censo, atributos, eliminaciones) que falló con un error no terminal. El hecho sigue sin confirmar y este consumidor queda bloqueado tras él hasta que un reintento se confirma.
detect_fanout_events_totalEventos núcleo por regla producidos por la expansión de eventos resueltos.
detect_fence_archive_skew_totalLecturas del archivo de geocercas que fallaron porque device-management no sirve las puertas de manifiestos: ejecuta una versión anterior a la entrega de manifiestos. Se repara solo cuando ese servicio avanza de versión.
detect_fence_geometry_cache_evictions_totalEntradas de la caché de geometrías compiladas descartadas para mantenerse dentro de la cota de vértices de la caché.
detect_fence_geometry_cache_hits_totalConsultas a la caché de geometrías compiladas servidas desde la caché, evitando tanto una lectura entre servicios como una recompilación.
detect_fence_geometry_cache_misses_totalConsultas a la caché de geometrías compiladas que tuvieron que obtener y compilar el documento.
detect_fence_geometry_cache_verticesTotal de vértices que contiene la caché de geometrías compiladas: la cantidad en la que se cuenta su cota.
detect_fence_geometry_hash_mismatch_totalDocumentos de geometría de geocercas cuyo hash no coincidió con la dirección de contenido bajo la que se pidieron. Siempre es un defecto, nunca transitorio: el par sirvió la fila equivocada, algo recodificó el documento en tránsito, o el archivo está corrupto.
detect_fence_geometry_unresolved_totalEntradas de manifiesto de geocercas cuya geometría no se pudo obtener del archivo de device-management. Cada una deja esa geocerca informando que es irresoluble en lugar de responder, y la repara la siguiente pasada de reconciliación si la causa era transitoria.
detect_idle_advances_totalAvances por inactividad según el reloj de pared que produjeron al menos una detección.
detect_idle_detections_totalDetecciones producidas por avance por inactividad según el reloj de pared (ausencia/duración/sesión que se disparan por silencio).
detect_is_leader1 mientras esta réplica tiene el arrendamiento de la partición DETECT, desde que lo adquiere y no desde el final de la construcción del turno.
detect_live1 mientras esta réplica consume dentro de un turno de liderazgo que tiene; 0 mientras está en espera O mientras construye un turno que ya ha adquirido.
detect_live_gap_fills_total{outcome}Veces que el consumo en vivo se encontró con un mensaje cuya secuencia de flujo superaba en más de uno la del motor y leyó del flujo el rango que faltaba, por resultado: filled (se leyó el rango y contenía mensajes), absent_only (el flujo no contenía nada de él: purgado o expulsado), failed (un intento de leer el rango no se completó; el consumo en vivo se detiene y el intento se repite en cada ciclo, así que una caída sostenida cuenta cada intento, no una sola vez).
detect_live_gap_sequences_total{outcome}Secuencias de flujo dentro de los rellenos de huecos en vivo, por resultado: applied (un mensaje que el broker había contado como entregado pero que nunca llegó al bucle, ahora aplicado), absent (no está en el flujo: purgado o expulsado), skipped (se leyó de vuelta sin poder procesarse, y se registró como gestionado sin aplicar nada). Una tasa de applied distinta de cero significa que se están perdiendo entregas entre el broker y este bucle.
detect_loop_heartbeat_timestamp_secondsHora Unix de la última pasada del bucle de escritor único de DETECT, refrescada al menos una vez por ciclo mientras hay un turno activo. Obsoleta mientras detect_is_leader y detect_live marcan 1 significa que el bucle está bloqueado dentro de una llamada.
detect_restore_secondsTiempo para restaurar el estado del motor desde el almacén de instantáneas al arrancar.
detect_rules_activeReglas cargadas en el motor DETECT.
detect_stale_absence_dropped_totalDetecciones de ausencia descartadas al publicar porque el dispositivo salió del alcance de la regla: se eliminó, se cambió de tipo, o la versión de la regla fue reemplazada.
detect_superseded_frontier_dropped_totalDetecciones de los tipos duración, sesión y agregado, que se disparan por el paso del tiempo, descartadas al publicar porque su versión de perfil ha sido reemplazada.
detect_tenants_over_live_key_budgetInquilinos que superan actualmente el presupuesto de claves vivas por inquilino.
detect_tenants_over_retained_sample_budgetInquilinos que superan actualmente el presupuesto de muestras retenidas por inquilino.
detect_tenants_over_rule_budgetInquilinos que superan actualmente el presupuesto de número de reglas por inquilino.
detect_watermark_lag_secondsHora del reloj de pared menos la marca de agua del motor en el último punto de control.

Event processing: reacciones​

Prefijo: devicechain_eventprocessing_.

react_events_poison_dropped_total es la serie sobre la que se dispara la alerta ReactPoisonDropping. react_actions_dropped_total{reason="unknown_kind"} debería ser siempre cero: un valor distinto de cero es un defecto que investigar, no carga. react_actions_not_enabled_total nunca debería mostrar raiseAlarm ni clearAlarm, porque ese sumidero siempre está conectado.

MétricaSignifica
react_actions_dispatched_total{action}Acciones REACT entregadas a su sumidero, por tipo de acción (incluye reproducciones idempotentes).
react_actions_dropped_total{reason}Acciones REACT omitidas sin intentarse, por motivo. unknown_kind: la definición de la regla traía un tipo de acción que esta compilación no puede despachar (una definición falsificada o editada a mano; inalcanzable por la vía de autoría admitida), así que un valor distinto de cero es un defecto que investigar, no carga.
react_actions_not_enabled_total{action}Acciones REACT reconocidas pero descartadas porque este despliegue no tiene sumidero para ellas, por tipo de acción: sendCommand sin command-delivery configurado, o httpCall/publish sin conectores de salida habilitados. El sumidero de alarmas siempre está conectado, así que raiseAlarm/clearAlarm nunca deberían aparecer aquí.
react_connector_egress_shed_total{action}Intentos de despacho a conectores (httpCall, publish) descartados en origen por superar la tasa de salida del inquilino, por tipo de acción. Se cuenta por intento: una reentrega puede descartarse y luego admitir la misma acción, así que no es un recuento de acciones descartadas de forma permanente.
react_connector_shed_dead_lettered_total{action}Acciones de conector (httpCall/publish) descartadas en origen y registradas como mensaje no entregado individual con motivo shed, por tipo de acción.
react_events_dead_lettered_totalEventos derivados escritos en el flujo de mensajes no entregados tras el tope de reentregas, para poder inspeccionar sus acciones en lugar de que desaparezcan.
react_events_orphaned_totalEventos derivados cuya regla ya no estaba en la proyección (no se despachó nada).
react_events_poison_dropped_totalEventos derivados descartados tras el tope de reentregas, porque su despacho seguía fallando. También se escriben en el flujo de mensajes no entregados, así que esto cuenta los mismos eventos que react_events_dead_lettered_total; se mantiene porque la alerta ReactPoisonDropping se dispara sobre él.

Event sources​

Prefijo: devicechain_eventsources_.

Las métricas de presencia pertenecen a la presencia MQTT afirmada por el broker que este servicio lee del broker. presence_tap_off es la que conviene alertar: vale 1 cuando esa presencia no está en marcha en una réplica, etiquetada con el motivo, y una flota MQTT de larga vida no emite avisos que lo muestren. La pareja de canarios te dice si la presencia se está leyendo siquiera: presence_canary_missed_total subiendo significa que no. presence_reconcile_regressed_sessions por encima de cero de forma sostenida significa que las reparaciones no convergen. Los contadores total_msg_* son por fuente.

MétricaSignifica
command_wake_dropped_totalDespertares de comandos descartados porque la cola estaba llena; la pasada de reconciliación de command-delivery libera después sus comandos, así que es una señal de latencia y no una pérdida.
command_wake_failed_totalDespertares de comandos que no pudieron llegar a command-delivery; los cubre la pasada de reconciliación.
command_wake_released_totalComandos retenidos devueltos a la cola de entrega porque su dispositivo se reconectó.
command_wake_requested_totalDispositivos que regresan puestos en cola para un despertar de comandos.
presence_advisories_skipped_total{reason}Avisos de conexión del broker que no produjeron ningún evento de presencia, por motivo.
presence_canary_missed_totalSondas canario cuya propia conexión al broker NO se observó: la presencia no se está leyendo.
presence_canary_observed_totalSondas canario cuya propia conexión al broker se observó de extremo a extremo.
presence_events_failed_totalTransiciones de presencia que no se pudieron escribir en el flujo de entrada.
presence_events_refused_totalTransiciones de presencia rechazadas por la puerta de admisión de ingesta (inquilino eliminado o techo del inquilino).
presence_reconcile_regressed_sessionsDispositivos encontrados ACTIVOS con un id de sesión inferior al que mantiene la proyección, en la última pasada de reconciliación. Un valor sostenido distinto de cero significa que las reparaciones no convergen.
presence_reconcile_repaired_total{direction}Transiciones de presencia emitidas por la reconciliación porque se perdió un aviso, por dirección.
presence_reconcile_runs_total{outcome}Pasadas de reconciliación de presencia, por resultado.
presence_reconcile_withheld_disconnects_totalDispositivos que se habrían marcado fuera de línea si el inventario del broker hubiera sido demostrablemente completo.
presence_released_totalDispositivos devueltos de presencia afirmada a presencia inferida porque esta fuente dejó de leer el broker.
presence_sessions_regressed_totalTransiciones de presencia observadas con un id de sesión inferior a la marca máxima de esta réplica (el reloj de un nodo del broker puede ir por detrás del de sus pares). Solo diagnóstico: que se aplique o no esa transición lo decide la proyección más adelante.
presence_still_assertedDispositivos que esta fuente aún tenía afirmados al comenzar la última pasada de liberación. El trabajo se vacía solo, así que un vaciado sano lleva esto a cero y lo mantiene ahí.
total_http_connections_closed_before_request{source}Recuento de conexiones a un oyente HTTP de ingesta que se cerraron antes de entregar una solicitud: un cierre por tiempo de espera de cabeceras, pero igualmente un escaneo de puertos, una comprobación de salud TCP o un cliente que colgó.
total_msg_decode_successful{source}Recuento total de mensajes decodificados correctamente.
total_msg_failed_decode{source}Recuento total de mensajes que fallaron al decodificarse.
total_msg_tenant_deleted{source}Recuento de mensajes entrantes rechazados porque su inquilino ha sido eliminado y sus datos se están recuperando.

Ingesta LwM2M​

Prefijo: devicechain_lwm2mingest_.

Los indicadores de líder y de servicio se describen con los servicios de borde, igual que las métricas que avisan. Las de abajo son el resto. Los contadores de comandos cuentan la historia de un comando a través del adaptador: intentado, y después con éxito o fallado, con los contadores de fuera de línea, aparcados y vaciados mostrando los comandos que esperaron a que un dispositivo despertara. command_park_errors_total y command_response_publish_failures_total son los dos que significan que un comando puede terminar como TIMEOUT aunque el dispositivo no tuviera la culpa.

MétricaSignifica
bad_requests_totalSolicitudes /rd malformadas (p. ej., una solicitud de elemento de registro sin ubicación).
coap_requests_total{code}Solicitudes CoAP a nivel de transporte atendidas por la sonda de salud L0, por código de respuesta. Los resultados de registro en /rd se miden con los contadores de registros/actualizaciones/bajas/caducidades.
command_drain_claim_errors_totalComandos acumulados NO despachados porque no se pudo establecer la propiedad con command-delivery (falla en cerrado; se reintenta enseguida, en orden).
command_drain_claims_lost_totalComandos acumulados que otro despachador o el barrido de entrega reclamó antes, de modo que este vaciado no los despachó: una actuación duplicada evitada, no un fallo.
command_drain_errors_totalLecturas de vaciado que fallaron; se reintentan tras una breve espera mientras el dispositivo sigue activo.
command_park_errors_totalComandos no entregables que NO se pudieron devolver a command-delivery; se dejan sin confirmar para reintentarse en la reentrega, y quedan atascados en SENT hasta que uno tenga éxito.
command_park_settled_totalDevoluciones que no movieron ninguna fila porque el comando ya había sido respondido, cancelado, caducado o reclamado de nuevo: un resultado ya resuelto, no un fallo.
command_park_skipped_totalComandos no entregables NO devueltos porque no hay ningún aparcador conectado o el sobre de entrega no llevaba nonce de despacho; siguen en SENT y esperan su TTL.
command_response_publish_failures_totalResultados de comandos que no se pudieron publicar en command-responses tras los reintentos locales (la operación ya se ejecutó, así que el comando no se reentrega; caducará con TIMEOUT).
commands_attempted_total{op}Comandos LwM2M despachados a un dispositivo activo (= con éxito + fallados), por operación.
commands_drained_totalComandos acumulados (retenidos o aparcados) despachados a un dispositivo activo por un vaciado, el más antiguo primero.
commands_poison_totalComandos descartados por no poder procesarse (sin inquilino interpretable en el subject, o un sobre que no se puede decodificar).
commands_served_offline_totalComandos para un dispositivo que este adaptador sirve que no tenían conexión activa: aparcados en command-delivery y vaciados en el siguiente despertar del dispositivo, o EXPIRED en su TTL si nunca despierta.
commands_succeeded_total{op}Comandos LwM2M que el dispositivo confirmó con un 2.xx, por operación.
commands_tenant_deleted_totalComandos descartados con confirmación porque su inquilino ha sido eliminado y sus datos se están recuperando: la plataforma declinando actuar sobre el hardware de un cliente dado de baja.
deregistrations_totalBajas explícitas de LwM2M (DELETE /rd/{id}).
devices_registered_totalDispositivos creados automáticamente en su primer registro LwM2M.
handshakes_totalHandshakes DTLS completados (cada uno es una nueva sesión LwM2M autenticada).
measurements_emitted_totalMuestras de medición individuales escritas de forma duradera desde LwM2M Observe/Notify.
notifies_received_totalMensajes LwM2M Notify recibidos sobre una instancia de objeto observada.
observe_terminal_notifications_totalNotificaciones que terminaron una observación (RFC 7641, p. ej. 4.04 tras eliminarse la instancia observada).
presence_dropped_totalTransiciones de presencia descartadas: un dispositivo no registrado con una credencial sin registro automático, o un presupuesto de emisión duradera agotado.
sessions_rejected_totalSesiones nuevas rechazadas porque se alcanzó el techo de sesiones activas (maxSessions).
telemetry_devices_registered_totalDispositivos creados automáticamente en una primera muestra de telemetría (poco frecuente: los dispositivos LwM2M se crean en el registro /rd).
telemetry_tenant_deleted_dropped_totalMuestras de telemetría descartadas porque el inquilino ha sido eliminado y sus datos se están recuperando.
telemetry_unknown_dropped_totalMuestras de telemetría descartadas por un dispositivo no registrado (registro automático desactivado para la credencial).

Ingesta Sparkplug​

Prefijo: devicechain_sparkplugingest_.

El resto de las métricas de Sparkplug, incluido el indicador de líder, se describen con los servicios de borde. samples_skipped_total existe porque un nodo que publica solo valores sin ninguna muestra numérica, de otro modo, se ve igual que uno inactivo.

MétricaSignifica
devices_registered_totalDispositivos registrados automáticamente en el primer avistamiento de su identidad Sparkplug.
samples_skipped_total{reason}Métricas de mensajes Sparkplug aceptados que no produjeron ninguna muestra, por motivo: non_numeric (un valor booleano, de texto, bytes, dataset o plantilla), null (is_null) o unnamed (sin nombre y sin alias resoluble). Un nodo que publica solo esas métricas, de otro modo, se ve igual que uno inactivo.

Notification management​

Prefijo: devicechain_notificationmanagement_.

Las notificaciones que fallan todos los intentos de entrega se escriben en el flujo de mensajes no entregados, donde dcctl dead-letters las lista. Este contador te dice que nunca se enviaron avisos.

MétricaSignifica
notifications_dead_lettered_totalAlarmas escritas en el flujo de mensajes no entregados tras fallar todos los intentos de entrega, para que un operador pueda ver qué avisos nunca se enviaron.

User management​

Prefijo: devicechain_usermanagement_.

Estos cuentan el consumidor de mensajes no entregados, que guarda un fallo del que un servicio se rindió en un almacén consultable para que sobreviva a la propia ventana de siete días del flujo. dead_letters_unstored_total es la que importa: un fallo que el almacén no pudo aceptar no queda registrado en ningún lugar, y DeadLetterStoreLosing se dispara sobre ella.

MétricaSignifica
dead_letters_stored_totalMensajes no entregados escritos en el almacén consultable, de modo que un fallo del que un consumidor se rindió sobrevive a la propia ventana de siete días del flujo.
dead_letters_unstorable_totalMensajes no entregados que este consumidor no pudo interpretar: sin inquilino interpretable, o un cuerpo que no es un sobre. Se CONFIRMAN y se cuentan en lugar de reintentarse, porque ninguna reentrega hace que un mensaje malformado se pueda interpretar.
dead_letters_unstored_totalMensajes no entregados que agotaron todos los intentos de entrega sin almacenarse: el almacén estuvo inalcanzable durante más tiempo del que duran los reintentos. El fallo que describían ya no queda registrado en ningún lugar, que es justo lo que este consumidor existe para evitar.

Todos los servicios​

Prefijo: devicechain_<area>_, donde <area> es el nombre del servicio sin guiones (devicechain_devicemanagement_ready). Todos los servicios exportan estas.

safety_gate_enabled es lo que lee la alerta SafetyGateDisabled. Los indicadores de JetStream informan del tamaño de cada flujo frente a sus límites configurados y de la salud de sus réplicas; las alertas de replicación de Replicación se construyen sobre esta última.

MétricaSignifica
auth_gate_attempts_totalIntentos de obtención de JWKS de la puerta de autenticación en segundo plano.
auth_gate_failures_totalFallos de obtención de JWKS de la puerta de autenticación en segundo plano.
ready1 cuando el plano de datos está listo (autenticación activa), 0 en caso contrario.
safety_gate_enabled{gate}1 cuando una puerta de seguridad opcional está conectada en este servicio, 0 cuando está APAGADA porque falta su configuración. Una puerta APAGADA deja pasar trabajo que la puerta existe para rechazar (tenant_lifecycle: trabajo de un inquilino eliminado; presence: comandos a dispositivos ausentes; rule_validation: reglas de detección que no compilan al publicar el perfil).
jetstream_peers_current{stream}Pares RAFT actualmente al día y en línea para este flujo o bucket KV, incluido el líder. Por debajo de jetstream_replicas_actual significa que el flujo está etiquetado como replicado pero no lo está.
jetstream_replicas_actual{stream}Número de réplicas que JetStream informa para este flujo o bucket KV.
jetstream_stream_limit_bytes{stream}Techo MaxBytes configurado para un flujo de JetStream.
jetstream_stream_limit_messages{stream}Techo MaxMsgs configurado para un flujo de JetStream.
jetstream_stream_used_bytes{stream}Bytes actuales almacenados en disco en un flujo de JetStream.
jetstream_stream_used_messages{stream}Número actual de mensajes en un flujo de JetStream.