mikroscope
Medido, no presupuestado
Las tres primeras, desde el propio cgroup del agente y /metrics; la cuarta, desde los tres destinos a los que reenviaba el colector; en un RB5009 (4 × 1,4 GHz Cortex-A72, RouterOS 7.24.2), ventanas de 60 s en régimen estacionario, 2026-09-15. Las cifras a 10 Hz superan el presupuesto de ≤ 2 % y ≤ 16 MiB.
Una media de un segundo es un informe sobre un segundo
La API de RouterOS publica cpu-load una vez por segundo. Un núcleo saturado 100 ms y ocioso los otros 900 mueve la media de un segundo de cuatro núcleos en 2,5 %. Es aritmética, no una medida, y la cifra es cierta: solo que no puede decir cuándo.
El agente lee /proc/stat, /proc/interrupts, /proc/softirqs y /proc/net/softnet_stat desde dentro del router, a 10 Hz por defecto, y envía los deltas crudos de ticks con el intervalo que cubre cada uno. Nunca calcula un porcentaje; la ventana la eliges tú.
El suelo es del kernel, no de la herramienta. /proc/stat cuenta en ticks de 10 ms, así que una muestra de 100 ms resuelve un núcleo en escalones de 10 %. En el RB5009 (RouterOS 7.24.2, Linux 5.6.3) no hay PSI ni schedstat con los que afinar: ambos ficheros faltan, comprobado el 2026-09-11.
Lo que cuesta, a tres cadencias
Cada fila es una ventana de 60 s con el anillo ya lleno. La memoria cambia por fila porque cambian el anillo y el límite de memoria.
Medido en RB5009UG+S+ · 4 × 1,4 GHz Cortex-A72 · RouterOS 7.24.2 · · ventanas de 60 s en régimen estacionario (con el anillo ya lleno), conjunto completo de fuentes, colector reenviando a la vez a fichero, a una exposición Prometheus y a InfluxDB 3
| cadencia | suelos | CPU de un núcleo | µs/ | RSS | ticks retrasados | huecos / |
|---|---|---|---|---|---|---|
| 10 Hz (por defecto) | por defecto | 2,85 % | 2 856 | 31,3 MiB | 0 | 0 / 0 |
| 50 Hz | por defecto | 10,13 % | 2 026 | 51,9 MiB | 0 | 0 / 0 |
| 100 Hz | por defecto | 17,81 % | 1 781 | 76,5 MiB | 5 (0,08 %) | 0 / 0 |
Desliza en horizontal para ver todas las columnas
No se perdió nada a ninguna de estas cadencias: todos los destinos informaron de 0 huecos y 0 descartes, y la cadencia entregada coincidió con la configurada a tres cifras. Con los suelos por defecto y a 100 Hz, todas las fuentes de un tick se leyeron en menos de 2 ms en el 97,5 % de las muestras, dentro de un periodo de 10 ms.
Las cinco ejecuciones, incluida la de todas las fuentes en cada tick →
La CPU del router desde el kernel, sus interfaces desde la API
Capa del kernel · el agente · de 10 a 100 Hz
Globales dentro del contenedor, así que son los del propio router: ticks de CPU por núcleo, interrupciones, softirqs, descartes y time squeezes de softnet, /proc/meminfo, /proc/vmstat, carga y E/S de disco. Un contenedor privilegiado añade el log del kernel como eventos con marca de tiempo y las cachés slab globales.
Capa de la API · el colector · 1 Hz
El contenedor tiene su propio espacio de nombres de red, así que /proc/net/dev describe al contenedor, no al router. Los bytes y paquetes por interfaz vienen de la API de RouterOS y los fusiona el colector, sin interpolar. privileged=yes no cambia eso (comprobado el 2026-09-12).
Cada escritura, listada antes de hacerla
Descarga el archivo para tu plataforma de la versión publicada, o compila la CLI desde una copia del repositorio con make build. El router necesita RouterOS 7.24 o posterior —el paso del contenedor escribe privileged=, un atributo que las versiones 7.x anteriores rechazan— con el paquete container y device-mode container=yes, que MikroTik condiciona a pulsar el botón de reset o a un corte de alimentación. arm64, arm y x86_64; ni MIPS ni TILE.
- mikroscope doctor
Comprobación de solo lectura; nombra el arreglo de lo que falte.
- mikroscope plan
Cada orden de RouterOS, sin escribir nada.
- mikroscope install
Doctor, confirmación, las escrituras y luego una sonda al agente. La imagen sale de tu propia toolchain de Go, del tar del agente publicado o del registro del que el router se la descarga.
- mikroscope status
Recuento de propiedad y salud del agente.
- mikroscope uninstall
Elimina y verifica.
Lo que install escribe en tu router
- una veth
- una dirección
- una pertenencia a lista de interfaces
- una entrada de address-list
- una envlist
- el tar de la imagen, salvo que
--remote-imagehaga que el router se la baje - el contenedor
Cada objeto lleva el comentario mikroscope:<name> (managed by mikroscope)
mikroscope plan imprime cada orden antes de escribir nada.
uninstall elimina por etiqueta exacta más identidad, nunca por patrón, y falla nombrando el paso si queda algo.