Comparado con alternativas
mikroscope lee el kernel Linux de un router MikroTik desde dentro de un contenedor de RouterOS, a entre 1 y 100 Hz. SNMP, The Dude, Graphing y el Profiler del propio RouterOS, mktxp y mikrotik-exporter leen lo que informa el propio RouterOS. La tabla pone los siete uno junto a otro; las secciones que la siguen dicen de dónde sale cada celda y cuándo uno de los otros seis es mejor opción.
Tabla comparativa
Sección titulada «Tabla comparativa»| Herramienta | Dónde corre | Qué lee | Vista de CPU más fina | softirq y softnet por núcleo | Log del kernel | Contadores de interfaz | Lo que necesita en el router |
|---|---|---|---|---|---|---|---|
| mikroscope | un agente en un contenedor de RouterOS; la CLI y el colector en tu máquina | el kernel del router: /proc, /sys, /dev/kmsg, perf_event_open |
por núcleo, los ticks crudos de /proc/stat a 1–100 Hz; una muestra de 100 ms resuelve un núcleo en pasos de 10 % |
sí, por CPU, en cada tick | sí, /dev/kmsg, con privileged=yes |
de la API de RouterOS, fusionados: el espacio de nombres de red del contenedor oculta los del router | RouterOS 7.24 o posterior, el paquete container, device-mode container=yes; arm64, arm o x86_64 |
| SNMP | un agente integrado en RouterOS; el sondeador en otra máquina | MIB: MIB-2, HOST-RESOURCES-MIB, IF-MIB, MIKROTIK-MIB y otras | hrProcessorLoad por procesador, definido como una media de un minuto (RFC 2790) |
ningún objeto para ninguno de los dos en la MIKROTIK-MIB | no; los traps avisan de cambios de interfaz, del arranque del servicio SNMP y de un umbral de temperatura (temp-exception) |
sí, IF-MIB | /snmp set enabled=yes (desactivado por defecto) y una comunidad o un usuario SNMPv3 |
| The Dude | el paquete dude (arm, arm64, mmips, tile, x86, CHR); MikroTik lo da por descontinuado |
no lo dicen las páginas actuales de MikroTik | no lo dicen las páginas actuales de MikroTik | no lo dicen las páginas actuales de MikroTik | no consta | no lo dicen las páginas actuales de MikroTik | el paquete dude; las páginas actuales de MikroTik no dicen nada más |
| Graphing | dentro de RouterOS; las gráficas en WebFig y WinBox | las cifras de recursos y tráfico del propio RouterOS | no consta; store-every, 5 min por defecto, es cada cuánto escribe en disco |
no: dibuja recursos, interfaces y colas simples | no | tráfico por interfaz | entradas en /tool graphing; desactivado por defecto |
| Profiler | dentro de RouterOS, /tool/profile, a mano |
la contabilidad de CPU por proceso de RouterOS | por núcleo y por clase de proceso; instantáneas de un segundo (coste de la capa API) | no: CPU por clase de proceso | no | no | nada: viene integrado |
| mktxp | tu máquina: Python 3.9 o posterior en Linux, macOS o FreeBSD, o Docker | la API de RouterOS | cpu-load de /system/resource: una sola cifra para todo el router |
ningún colector para ninguno de los dos (código en 1e4412a) |
no; el syslog de RouterOS va al MKTXP Stack, un proyecto aparte | sí, por la API | un usuario de la API con api,read |
| mikrotik-exporter | tu máquina | la API de RouterOS | cpu-load de /system/resource/print: una sola cifra para todo el router |
ningún colector para ninguno de los dos (código en 428dbfc) |
no | sí, /interface/print |
un usuario de la API con api,read,winbox |
Desliza en horizontal para ver todas las columnas
Las otras seis filas son lo que dice la documentación o el código de cada herramienta, con “no
consta” o “no lo dicen” donde no dicen nada. Ninguna de las seis se ejecutó para esta tabla, así que
ninguna celda de sus filas es una medición. Las fuentes son las páginas de MikroTik sobre
paquetes y
/system/resource además de
las cuatro enlazadas en la tabla; el fichero MIKROTIK-MIB,
ninguno de cuyos objetos se llama ni se describe como contador de softirq, de softnet, de
interrupciones o de log; la
guía del exportador y el
colector de recursos
de mktxp en el commit 1e4412a; y el
colector de recursos
de mikrotik-exporter en el commit 428dbfc. Las herramientas de terceros cambian: comprueba sus
páginas antes de fiarte de una celda.
La fila de mikroscope sale de este sitio: Cómo funciona, Límites de resolución, Modo privilegiado, Visibilidad del contenedor y Requisitos. La resolución de su celda de CPU es aritmética a partir del tick del kernel, no una lectura.
cpu-load en los exportadores
Sección titulada «cpu-load en los exportadores»mktxp y mikrotik-exporter leen los dos cpu-load, que MikroTik define como el porcentaje de los
recursos de CPU usados con todas las CPU juntas. Es una media móvil de alrededor de un
segundo, así que
una ráfaga más corta que ese segundo queda promediada dentro. Hay cifras por núcleo en
/system/resource/cpu de RouterOS, que lee la capa de la API de mikroscope y que el código de
ninguno de los dos exportadores pide.
Señales solo del kernel
Sección titulada «Señales solo del kernel»Un bucle de capa 2 puede dejar el log y el monitor de puertos de RouterOS informando de un equipo
sano mientras el log del kernel recoge la propia dirección del router volviendo a entrar en el
bridge en cada hello de STP. mikroscope lee ese log a través de /dev/kmsg, y ninguno de los otros
seis documenta leerlo. Bucle de capa 2 es un caso real,
diagnosticado.
Tampoco sustituye a la API de RouterOS: los bytes y paquetes por interfaz vienen de esa API, y el colector los fusiona con las muestras del kernel con el reloj del agente.
Coste para el router
Sección titulada «Coste para el router»Con los 10 Hz por defecto de la instalación, el agente cuesta 2,69 % de un núcleo y 13,2 MiB de RSS, de su propio cgroup (Coste del agente). Su capa de la API, que pregunta a RouterOS una ronda por segundo, tiene un coste propio: Coste de la capa API. Esa cifra es el cliente del propio mikroscope preguntando sus propias órdenes, no un exportador.
Lo que cuesta a un router el sondeo SNMP, The Dude, Graphing, el Profiler, mktxp o
mikrotik-exporter, con qué frecuencia puede sondear cada uno con utilidad, y qué pone RouterOS en
hrProcessorLoad no se ha medido (No probado).
Cuándo usar otra herramienta
Sección titulada «Cuándo usar otra herramienta»- Un router MIPS, TILE o PPC. El agente no es nada sin un contenedor, y MikroTik publica el
paquete
containersolo para arm, arm64, x86 y CHR./system/resource/printda elarchitecture-namede tu router. SNMP, o un exportador de la API como mktxp, lee lo que informa RouterOS en cualquiera de ellos. - RouterOS anterior a 7.24. El paso del contenedor escribe
privileged=, un atributo que RouterOS añadió en la 7.24, así quedoctory el script de instalación se detienen en una versión anterior antes de escribir nada. Actualiza RouterOS, o usa SNMP o mktxp, que no necesitan contenedor. - Sin paquete
container, o sin nadie que pulse el botón.device-mode container=yesexige pulsar el botón reset o mode, o un reinicio en frío, en los cinco minutos siguientes a la orden. La página de device-mode de MikroTik exige acceso físico a propósito, así que ninguna sesión remota puede concederlo. SNMP necesita activar un servicio, y un exportador, un usuario de la API. - Solo quieres el tráfico de las interfaces a un intervalo de scrape. mikroscope toma los bytes y paquetes por interfaz de la misma API de RouterOS que lee un exportador, porque el contenedor no los ve. Un exportador los obtiene sin poner nada en el router.
- Necesitas verlo probado antes en tu placa. Probado en enumera las placas y versiones de RouterOS en las que ha funcionado. Un informe de placa añade la tuya.