Ir al contenido

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.

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

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.

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.

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.

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).

  • Un router MIPS, TILE o PPC. El agente no es nada sin un contenedor, y MikroTik publica el paquete container solo para arm, arm64, x86 y CHR. /system/resource/print da el architecture-name de 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í que doctor y 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=yes exige 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.