Prometheus
--prom :9124 hace que el colector sirva texto de Prometheus en GET /metrics en esa
dirección. Esta página responde a qué lleva esa exposición, qué no puede llevar y tiene
que venir del agente, y cómo hacer scrape de los dos sin contar nada dos veces.
Recalculado a partir de las muestras
Sección titulada «Recalculado a partir de las muestras»Las familias de la capa del kernel en el colector las renderiza el mismo código que ejecuta el agente — sus contadores acumulados, su histograma de ticks ocupados y sus ventanas móviles — alimentado con las muestras que recibió el colector. Un despliegue cuyo colector solo llega al agente por el relay sigue teniendo métricas que no dependen de quién hace scrape ni de cuándo.
Por encima de ellas el colector añade lo que solo tiene él: los gauges de la capa de la
API de RouterOS, los valores de la etapa de derivación, sus contadores de detecciones y
de huecos, y las familias de datos del equipo que salen de las /capabilities del agente.
Dos trabajos de scrape
Sección titulada «Dos trabajos de scrape»El panel de Prometheus espera dos trabajos: el colector, que tiene todas las familias del
agente más las suyas, y el propio agente, con un relabel keep que lo deja en las
familias que solo el muestreador puede producir — sus histogramas de temporización de
ticks, los contadores de disparos y capturas, los ticks perdidos:
- job_name: "mikroscope" scrape_interval: 5s static_configs: [{ targets: ["<máquina del colector>:9124"] }]- job_name: "mikroscope-agent" scrape_interval: 5s static_configs: [{ targets: ["172.30.10.2:9123"] }] metric_relabel_configs: - source_labels: [__name__] regex: "mikroscope_(tick_.*|trigger_.*|capture.*|captures_held|slipped_total)" action: keepHacer scrape del agente sin la lista keep duplicaría cada contador que el colector
también expone. Apunta Prometheus a la máquina del colector, o directamente al agente si
puede llegar a la veth.
Lo que solo puede decir el agente
Sección titulada «Lo que solo puede decir el agente»El colector no renderiza mikroscope_slipped_total ni mikroscope_,
mikroscope_ o mikroscope_: nunca ejecutó el
muestreador, y un 0 ahí sería una afirmación sobre un temporizador que no es suyo. El
índice de capturas del agente y sus contadores mikroscope_trigger_* también viven en el
agente; el colector cuenta los marcadores de disparo que vio en
mikroscope_.
Lo que añade el colector
Sección titulada «Lo que añade el colector»Los contadores propios del colector
Sección titulada «Los contadores propios del colector»| Familia | Tipo | Lleva |
|---|---|---|
mikroscope_ |
counter | huecos del anillo que vio el colector: muestras perdidas entre extracciones |
mikroscope_ |
counter | disparos de captura que lanzó el agente, por causa; presente en cuanto se ha visto uno |
mikroscope_ |
counter | eventos de detección por regla, cada una de las once reglas a 0 desde el primer scrape |
mikroscope_ |
counter | muestras que la etapa de derivación marcó como ráfaga por debajo de la muestra |
Desliza en horizontal para ver todas las columnas
Las detecciones y las ráfagas son contadores para que quien solo usa Prometheus se entere de un evento aunque se pierda un scrape, y cada regla se renderiza a 0 desde el principio porque una familia que solo aparece tras su primer evento no se puede leer como «ninguno hasta ahora».
La etapa de derivación
Sección titulada «La etapa de derivación»| Familia | Tipo | Lleva |
|---|---|---|
mikroscope_ |
gauge | la escalera de escalada del asignador en la muestra más reciente, de 0 a 4 |
mikroscope_ |
gauge | ciclos de PMU por paquete procesado, sumados sobre los núcleos; ausente sin PMU, en una muestra sin paquetes o tras un reinicio de contador |
mikroscope_ |
gauge | instrucciones de PMU por paquete, mismas condiciones |
mikroscope_ |
gauge | fallos de caché de PMU por paquete, mismas condiciones |
mikroscope_ |
gauge | paquetes por interrupción de dispositivo; ausente cuando la fila del temporizador no estaba en el top-K de la muestra |
mikroscope_ |
gauge | proporción por fast path del tráfico que la interfaz entrega a la CPU, entre las dos últimas lecturas de contadores; no es una proporción del cable; solo rx mientras fp-tx-byte no haya contado nunca |
Desliza en horizontal para ver todas las columnas
Son los valores de la muestra más reciente, un nivel en el momento del scrape; la serie completa está en los almacenes que guardan cada muestra. Lo que significa cada uno, y cuándo se omite, está en lo que deriva el colector.
La capa de la API
Sección titulada «La capa de la API»Solo presentes cuando la capa de la API ha entregado una muestra; con --api-mode off o
sin credenciales de la API no existe ninguna de estas familias.
| Familia | Tipo | Lleva |
|---|---|---|
mikroscope_api_up |
gauge | 1 mientras la capa de la API entrega muestras |
mikroscope_api_cpu_load |
gauge | el cpu-load de RouterOS desde /system/resource |
mikroscope_ |
gauge | free y total desde /system/resource |
mikroscope_ |
gauge | uptime de RouterOS |
mikroscope_ |
gauge | porcentaje load, irq y disk por núcleo desde /system/resource/cpu |
mikroscope_ |
gauge | cada lectura de /system/health |
mikroscope_ |
gauge | rx_bps, tx_bps, rx_pps, tx_pps de monitor-traffic, más cada tasa de pérdidas que devolvió el router |
mikroscope_ |
gauge | siempre 1; una serie por interfaz salida del inventario de configuración: su comentario, el tipo de RouterOS, sus listas de interfaces, su bridge y su nombre de fábrica |
mikroscope_ |
counter | cada contador acumulado por puerto que devolvió el router, con el nombre de contador del propio RouterOS |
mikroscope_ |
gauge | el número de conexiones, cuando --conntrack-every lo pide |
Desliza en horizontal para ver todas las columnas
mikroscope_api_up nunca se renderiza como 0: antes de la primera muestra de la API, y
cuando la capa está apagada, la familia no existe.
El número de conexiones, los contadores de puerto y las proporciones del fast path llegan con cadencias más lentas que el scrape. El colector guarda el último valor de cada uno entre lecturas, así que un scrape que cae entre dos lecturas sigue viendo la familia en vez de una serie que aparece y desaparece.
Qué es cada interfaz
Sección titulada «Qué es cada interfaz»La capa de la API lee qué es cada interfaz — su comentario, el tipo de RouterOS, sus
listas de interfaces, el bridge del que es puerto, su nombre de fábrica y su MTU — con
tres lecturas solo de configuración al arrancar el colector y de nuevo cada
--labels-every (5 min por defecto). En /metrics ese inventario es una serie info
por interfaz.
Nada de eso es etiqueta de las series de tasas ni de contadores: el comentario lo edita una persona, y una etiqueta cambiada abriría una serie nueva para cada tasa y para cada uno de los sesenta y pico contadores de ese puerto en cada edición. Únelo en la consulta:
mikroscope_api_interface_counter_total * on(interface) group_left(label, type, role) mikroscope_api_interface_infoToda interfaz del inventario tiene serie, tenga comentario o no; un valor vacío de
label es como Prometheus escribe «ninguno», así que el juego de etiquetas es el mismo
en todas. type dice qué significan los contadores de esa interfaz: un puerto ether
de un bridge cuenta su cable, incluidas las tramas que el chip de switching reenvió por
hardware, mientras que el bridge cuenta su lado de CPU. Ninguno es un subconjunto del
otro — en el RB5009 de referencia (RouterOS 7.24.2, 2026-09-16) ether1 recibió 255,8 GB
en el cable y entregó 29,7 GB a la CPU — así que no sumes un puerto y su bridge.
mikroscope_ tiene una serie por puerto y contador que el
router informa: 9 puertos × unos 60 contadores en el RB5009 de referencia. Un contador que
un puerto no informa no tiene serie, y una tasa de pérdidas que el router no devolvió no
tiene kind. Las claves que se leen como enteros pero no cuentan nada — mtu,
actual-mtu, l2mtu, max-l2mtu, sfp-shutdown-temperature — son tamaños y
configuración y no tienen serie de contador; el MTU forma parte del inventario. En el
RB5009 con RouterOS 7.24.2 (2026-09-15) monitor-traffic devuelve rx-drops,
tx-drops y tx-queue-drops y ninguna clave de errores.
Familias de datos del equipo
Sección titulada «Familias de datos del equipo»La exposición del colector lleva las mismas familias de datos del equipo que el propio
/metrics del agente, a partir de lo que obtuvo de /capabilities:
mikroscope_device_info, los techos que publica la placa
(mikroscope_, mikroscope_,
mikroscope_, mikroscope_,
mikroscope_, mikroscope_,
mikroscope_) y mikroscope_.
Consulta el flujo de datos del equipo.