# Qué es

Un agente dentro del router leyendo el kernel compartido, una CLI fuera, y los cuatro límites que no se pueden diseñar para que desaparezcan.

Source: https://jmrplens.github.io/mikroscope/es/start/

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/mikroscope-agent` y en GHCR como
`ghcr.io/jmrplens/mikroscope-agent`, 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

1. **Los requisitos que la herramienta no puede quitar.** RouterOS 7.24 o
   posterior con el paquete `container` y `device-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 escribe
   `privileged=`, un atributo que MikroTik añadió en esa versión;
   `--privileged=false` cambia su valor, no si se escribe. arm64, arm y x86_64;
   ni MIPS ni TILE.

2. **El suelo de resolución es el del kernel, no el de la herramienta.**
   `/proc/stat` avanza 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 · 2026-09-11 · `/proc/pressure` y `/proc/schedstat` ausentes

3. **El contenedor ve la CPU y la memoria del router, pero su propia red.**
   `/proc/net/dev`, `/proc/net/snmp` y `nf_conntrack_count` son por espacio de nombres de red y describen el contenedor; la cuenta de conntrack del slab con `privileged` es la excepción, y describe el router. Los contadores de interfaz
   vienen de la API de RouterOS y se fusionan, no se inventan.

4. **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](/mikroscope/es/cost/) 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-image` haga 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

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.

## Véase también

- [El coste del observador](/mikroscope/es/cost/): el presupuesto, el resultado medido y cómo
  medirlo en tu propio equipo.
- [El techo de muestreo](/mikroscope/es/cost/rate-ceiling/): las cinco ejecuciones detrás de las
  cifras del punto 4.
- [Lo que los números no dicen](/mikroscope/es/cost/limits/): lo que un equipo en un día no te
  puede decir.
