Qué es
mikroscope son dos programas y un contenedor.
El agente es un binario Go estático en un contenedor scratch dentro del
router. Un contenedor de RouterOS comparte el kernel del anfitrión, así que el
/proc de dentro es el /proc del propio router: /proc/stat por núcleo,
/proc/interrupts, /proc/softirqs, /proc/net/softnet_stat, /proc/meminfo,
/proc/vmstat, /proc/diskstats, /dev/kmsg. Los muestrea con un temporizador de 1 a 100 Hz (10 Hz por defecto; medidos a 10, 50 y 100 Hz), guarda los últimos 300 segundos en un anillo y los sirve. No tiene conexión saliente ni presenta ninguna credencial; el único secreto que guarda es el token opcional que exige a quien lo lea.
La CLI corre en tu máquina. Instala y desinstala el agente, graba una
ventana con marcadores, dibuja un SVG determinista de ella, y funciona como
colector que tira del agente, fusiona una capa de la API de RouterOS a 1 Hz y
reparte a fichero, Prometheus e InfluxDB 3. Se publica como un archivo por
plataforma —linux, macOS, Windows y FreeBSD en amd64, arm64 y arm— y el agente
a su lado como un tar de imagen por arquitectura y como imagen de registro, en
Docker Hub como jmrplens/ y en GHCR como
ghcr., así que instalar solo necesita una
toolchain de Go cuando quieres el agente construido desde tu propio árbol.
Cuatro límites, dichos antes que nada
Sección titulada «Cuatro límites, dichos antes que nada»-
Los requisitos que la herramienta no puede quitar. RouterOS 7.24 o posterior con el paquete
containerydevice-mode container=yes— que MikroTik protege tras una pulsación física del botón de reset o un ciclo de alimentación. El suelo es 7.24 porque el paso del contenedor escribeprivileged=, un atributo que MikroTik añadió en esa versión;--privileged=falsecambia su valor, no si se escribe. arm64, arm y x86_64; ni MIPS ni TILE. -
El suelo de resolución es el del kernel, no el de la herramienta.
/proc/statavanza a 100 Hz, así que una ventana de 100 ms resuelve un núcleo en escalones del 10 %. El agente envía ticks crudos para que la ventana la elijas tú. No esperes PSI: el kernel del RB5009 no tiene ni PSI ni schedstat.Medido en RB5009UG+S+ · 4 × 1,4 GHz Cortex-A72 · RouterOS 7.24.2 · Linux 5.6.3 · ·
/proc/pressurey/proc/schedstatausentes -
El contenedor ve la CPU y la memoria del router, pero su propia red.
/proc/net/dev,/proc/net/snmpynf_conntrack_countson por espacio de nombres de red y describen el contenedor; la cuenta de conntrack del slab conprivilegedes la excepción, y describe el router. Los contadores de interfaz vienen de la API de RouterOS y se fusionan, no se inventan. -
El observador cuesta algo, y está escrito. Un 2,85 % de un núcleo a 10 Hz en un RB5009, un 17,81 % a 100 Hz. Lo que cuesta tiene la tabla completa y sus condiciones. Todas las cifras de este sitio salen de ese único equipo, un RB5009UG+S+ con RouterOS 7.24.2, arm64: las compilaciones para arm y x86_64 son cruzadas y pasan por CI, pero no han corrido nunca en hardware.
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.
Lo que no hace
Sección titulada «Lo que no hace»No sustituye a la API de RouterOS: se fusiona con ella. No afirma un número que no haya medido: donde una fuente no existe en una placa, la métrica falta en vez de valer cero. Y no decide por ti qué significa un porcentaje, porque nunca calcula ninguno.