Ir al contenido

Preguntas frecuentes

Cada respuesta es la versión corta de una página que tiene el detalle, y enlaza a ella.

mikroscope no funciona en routers MIPS ni TILE. El agente se ejecuta en un contenedor de RouterOS, y MikroTik publica el paquete container solo para arm, arm64, x86 y CHR (la lista de paquetes de MikroTik). mikroscope compila su agente para arm64, arm y x86_64. En una placa MIPS o TILE, la herramienta es SNMP o un exportador de la API: Cuándo usar otra herramienta.

Probado en enumera cada equipo y versión de RouterOS en los que ha funcionado mikroscope, físicos y virtuales, con lo que se ejecutó en cada uno y lo que no se ha probado. Un informe de placa desde otro router lo añade allí.

El paso del contenedor escribe privileged=, un atributo que RouterOS añadió en la 7.24, diga lo que diga --privileged. doctor y el script de instalación comprueban primero la versión y se detienen en una anterior sin escribir nada: Requisitos.

MikroTik lo diseñó así. Device-mode limita lo que permite un router, para protegerlo de un atacante que haya conseguido acceso, así que cambiarlo exige acceso físico: tras /system/device-mode/update container=yes, alguien pulsa el botón reset o mode, o corta la alimentación del router, en menos de cinco minutos (la página de device-mode de MikroTik). Ninguna herramienta puede hacerlo en remoto: Device mode.

Con los 10 Hz por defecto de la instalación, el agente cuesta 2,69 % de un núcleo y 13,2 MiB de memoria, leídos de su propio cgroup, y cuesta 16,83 % a 100 Hz. Eso supera el presupuesto de CPU del propio proyecto, de 2 %, y cabe en su presupuesto de memoria, de 16 MiB: Coste del agente, con cómo medirlo en tu router.

El agente nunca se conecta hacia fuera y no presenta ninguna credencial. Cada escritura se enumera antes de hacerse y va etiquetada, y uninstall retira todo lo que creó la instalación y verifica que no queda nada: un ciclo con guion dejó el /export del router idéntico byte a byte (verificado). El contenedor se ejecuta con privileged=yes, una concesión real: Modelo de seguridad.

No desde dentro del contenedor. /proc/net/dev y los demás ficheros de red van por espacio de nombres de red, así que allí cuentan la propia veth del contenedor, y privileged=yes no lo cambia. Los bytes y paquetes por interfaz vienen de la API de RouterOS, que el colector fusiona con el reloj del agente: Visibilidad del contenedor.

Alrededor de un segundo. El cpu-load de RouterOS sigue una media móvil de aproximadamente un segundo del tiempo ocupado del kernel, llega a la API una fracción de segundo tarde y no es una media de sesenta segundos (medido). Una ráfaga más corta que ese segundo queda promediada dentro: Capa de la API de RouterOS.

mikroscope no sustituye a SNMP ni a mktxp. Tampoco sustituye a la API de RouterOS, de la que toma el tráfico por interfaz. Lo que añade es la vista del propio kernel, que ninguno de los otros documenta leer: ticks por núcleo hasta a 100 Hz, softirqs, descartes y squeezes de softnet, y el log del kernel. Donde no se ejecuta ningún contenedor, la herramienta es SNMP o mktxp: Comparado con alternativas.

install no configura Grafana: solo escribe en el router. Lo hace el colector, cuando se ejecuta con --grafana <url> y un token de cuenta de servicio de Grafana en GRAFANA_TOKEN: en cada arranque crea o corrige la fuente de datos y publica el dashboard de cada almacén que sabe describir: InfluxDB, Elasticsearch y PostgreSQL (con --postgres) sin más, y Prometheus y Graphite cuando se les da la dirección en --grafana-datasource-url. mikroscope dashboards publish, con las opciones de destino del colector y --grafana, hace lo mismo una sola vez sin recoger, y dashboards import o la importación del propio Grafana asocian un dashboard a una fuente de datos que ya tienes: Configurar en Grafana.

El agente no envía nada fuera del router. Sirve HTTP en la dirección de su veth, no abre ninguna conexión saliente y no busca actualizaciones. Tu colector tira de él, y cada token de destino y credencial de la API se queda en tu equipo, porque todo lo que está en la envlist del contenedor se trata como legible por cualquier usuario de RouterOS con read: Modelo de seguridad.