# Documentación de mikroscope > Telemetría de kernel por debajo del segundo desde dentro de un router MikroTik, con el coste del observador medido y no prometido. Este es el índice del sitio de documentación de mikroscope. Cada entrada enlaza una página y lleva la descripción de esa página. El código y las incidencias están en https://github.com/jmrplens/mikroscope, y su página de releases lleva los archivos de la CLI, los tar de la imagen del agente y la imagen en GHCR. Inicio: [mikroscope](https://jmrplens.github.io/mikroscope/es/): Telemetría de kernel por debajo del segundo desde dentro de un router MikroTik, con el coste del observador medido y no prometido. ## Empezar aquí - [Qué es](https://jmrplens.github.io/mikroscope/es/start/): 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. - [Cinco minutos con un router](https://jmrplens.github.io/mikroscope/es/start/walkthrough/): Consigue la CLI, instala el agente, graba una ventana mientras cambias algo, añade el propio log del router como marcadores y dibuja el gráfico, con una grabación real de un RB5009. ## Lo que cuesta - [El coste del observador](https://jmrplens.github.io/mikroscope/es/cost/): Lo que cuesta el agente en un RB5009, medido desde su propio cgroup, y cómo medirlo en un equipo que no sea este. - [El techo de muestreo](https://jmrplens.github.io/mikroscope/es/cost/rate-ceiling/): Cinco ejecuciones medidas a 10, 50 y 100 Hz en un RB5009 — ninguna pierde datos — y lo que muestrear más rápido compra de verdad. - [Lo que los números no dicen](https://jmrplens.github.io/mikroscope/es/cost/limits/): Las preguntas que las medidas de este sitio no pueden responder, y a qué métrica acudir en vez de adivinar. ## Instalar - [Instalar el agente](https://jmrplens.github.io/mikroscope/es/install/): Qué hace `mikroscope install` en un equipo RouterOS y en qué orden, y cómo `upgrade` y `uninstall` lo cambian o lo quitan sin tocar nada que no hayan creado. - [Tener la CLI en tu máquina](https://jmrplens.github.io/mikroscope/es/install/cli/): Cómo tener la orden `mikroscope` en Linux, macOS o Windows — qué archivo descargar para tu propio ordenador y no para el router, cómo verificarlo, dónde ponerlo para que el intérprete lo encuentre y cómo comprobar que funciona. - [Lo que necesita el router](https://jmrplens.github.io/mikroscope/es/install/prerequisites/): La arquitectura, el paquete container y el paso de device-mode que exige una mano en el router, más lo que necesita tu propia máquina, y cómo comprueba `doctor` cada cosa. - [Cuatro formas de instalar](https://jmrplens.github.io/mikroscope/es/install/routes/): Las cuatro rutas por las que la imagen del agente llega al router — un checkout con Go, el tar publicado, un registro del que tira el router, o un script de RouterOS que pegas — qué necesita cada una, qué escribe cada una, y cómo verificar una descarga de la release. - [Las dos trampas del cortafuegos](https://jmrplens.github.io/mikroscope/es/install/firewall/): Las dos reglas raw del cortafuegos por defecto de MikroTik que descartan en silencio cada paquete que envía un contenedor, lo que añade `install` para que no lo hagan y qué pasar cuando tus listas tienen otros nombres. - [Dónde va cada cosa](https://jmrplens.github.io/mikroscope/es/install/layout/): Dónde vive en el router cada objeto que crea `install`, qué disco guarda la imagen y la raíz, qué lleva la envlist y los ajustes del contenedor que escribe install. - [Llegar al agente](https://jmrplens.github.io/mikroscope/es/install/reaching-the-agent/): Cómo llega la máquina que ejecuta `record` o `forward` a un agente que solo escucha en la dirección de su veth, qué te dice el sondeo tras `install` cuando no puede y qué cuesta cada vía, directa, relay y `--expose`. ## Grabar y capturar - [Grabar, marcar, dibujar](https://jmrplens.github.io/mikroscope/es/record/): Cómo traer a tu máquina una ventana de muestras a cadencia completa, marcar los momentos que contiene, añadir el propio log del router y dibujarla como un SVG determinista. - [Captura por disparo](https://jmrplens.github.io/mikroscope/es/record/triggers/): Cómo guarda el agente las muestras a cadencia completa alrededor de una condición que configuraste, qué dispara, cómo traer una captura y por qué el conjunto de capturas es una muestra de los eventos y no un censo. ## Colector y destinos - [El colector](https://jmrplens.github.io/mikroscope/es/sinks/): Lo que hace `mikroscope forward` entre el agente y tus almacenes — extraer, fusionar, derivar, repartir — y lo que promete cuando un almacén va lento. - [Prometheus](https://jmrplens.github.io/mikroscope/es/sinks/prometheus/): El `/metrics` propio del colector — cada familia del agente recalculada a partir de las muestras, más la capa de la API, la etapa de derivación y los contadores del colector — y los dos trabajos de scrape que lo acompañan. - [InfluxDB 3](https://jmrplens.github.io/mikroscope/es/sinks/influxdb/): El destino de protocolo de líneas de InfluxDB 3 — la URL de escritura y el token, cómo se entregan y se descartan los lotes, cada medida que escribe y lo que rechaza InfluxDB 3 Core. - [El fichero y los demás destinos](https://jmrplens.github.io/mikroscope/es/sinks/other/): El fichero JSONL, la salida estándar, SQL, Loki, OTLP, Graphite, Elasticsearch y Telegraf — qué lleva cada uno, cómo entrega y lo que su protocolo no puede prometer. - [La capa de la API de RouterOS](https://jmrplens.github.io/mikroscope/es/sinks/api-tier/): Lo que el colector sigue preguntando a RouterOS por su API binaria, por qué casi todo es opcional, y las opciones y preajustes que deciden cuánto preguntar. - [Lo que deriva el colector](https://jmrplens.github.io/mikroscope/es/sinks/derive/): Los valores que el colector calcula junto a las muestras en bruto — presión de memoria, coste de PMU por paquete, paquetes por interrupción, la marca de ráfaga y la proporción del fast path — y cuándo se omite cada uno. - [Detecciones](https://jmrplens.github.io/mikroscope/es/sinks/detections/): Las once reglas que ejecuta la etapa de derivación del colector, cada una con su condición exacta, las pruebas que necesita del despliegue y lo que no puede afirmar. - [El flujo de datos del equipo](https://jmrplens.github.io/mikroscope/es/sinks/device-info/): Lo que el agente establece sobre la placa sin la API de RouterOS — identidad, techos, cadencias — y cómo el colector lo entrega a cada destino como hechos y no como muestras. ## Paneles - [Cinco dashboards, una sola lista](https://jmrplens.github.io/mikroscope/es/dashboards/): Qué contienen los dashboards de InfluxDB 3, Prometheus, PostgreSQL, Graphite y Elasticsearch, sección a sección y en el orden en que se leen, y por qué los cinco almacenes no llevan los mismos paneles. - [Importar y comprobar](https://jmrplens.github.io/mikroscope/es/dashboards/import-and-check/): Cómo enlazar los dashboards a una fuente de datos, qué preguntan primero import y check al almacén, y qué demuestra check contra un Grafana en marcha y qué no puede ver. - [Reglas de alerta](https://jmrplens.github.io/mikroscope/es/dashboards/alerts/): Las reglas de alerta de Grafana que se generan junto a los dashboards, con qué salta cada una, de dónde sale su umbral y qué no se ha probado de ellas. ## Leer los datos - [Cómo leer lo que muestra](https://jmrplens.github.io/mikroscope/es/playbooks/): Siete lecturas de datos del kernel de un RB5009 — un fallo de producción encontrado por casualidad, tres sucesos provocados a propósito, dos que no hubo que provocar y la forma en reposo contra la que se leen. - [La forma de un router en reposo](https://jmrplens.github.io/mikroscope/es/playbooks/idle/): Sesenta segundos del RB5009 de referencia sin hacer nada en particular — el suelo de ocupación, el squeeze que nunca llega a cero y el silencio de un log del kernel sano. - [Un bucle que solo veía el kernel](https://jmrplens.github.io/mikroscope/es/playbooks/loop/): Un bucle de capa 2 en la red de producción del router de referencia que ni el log de RouterOS ni su monitor de puertos mostraron nunca, encontrado por la fuente de log del kernel del agente, diagnosticado a partir de una tasa y corregido con una actualización de firmware confirmada de dos formas independientes. - [Una carga limitada por CPU](https://jmrplens.github.io/mikroscope/es/playbooks/cpu/): Un bucle de consola que satura un núcleo del RB5009 de referencia durante un minuto — por qué el total del equipo marca un 29 %, cómo se ve la migración del planificador a 10 Hz y qué hicieron la temperatura y la frecuencia. - [Una inundación de paquetes](https://jmrplens.github.io/mikroscope/es/playbooks/packet-flood/): Diez segundos de inundación ICMP contra la propia dirección del RB5009 de referencia — la interrupción del switch que hace las veces de contador de interfaz, el único núcleo que pagó y el contador time_squeeze que merece la pena vigilar. - [Desgaste de la flash](https://jmrplens.github.io/mikroscope/es/playbooks/flash-wear/): El RB5009 de referencia escribe en su NAND en reposo sin que nadie se lo pida — cómo verlo en los contadores de YAFFS, rastrearlo hasta una regla de logging y leer los contadores ECC que avisan antes de que se pierda un bloque. - [Conntrack sin la API](https://jmrplens.github.io/mikroscope/es/playbooks/conntrack/): El namespace del propio contenedor informa de cero conexiones rastreadas, pero el asignador slab global no — cómo leer desde ficheros la población real de conntrack del router y su techo, y por qué no se provocó ninguna tormenta para mostrarlo. ## Límites - [El suelo de resolución es del kernel](https://jmrplens.github.io/mikroscope/es/limits/): Por qué una lectura de CPU no puede ser más fina que el tick de 10 ms del kernel, la única fuente que lee por debajo de él y hasta dónde puede recordar el agente. - [La CPU del router, la red del contenedor](https://jmrplens.github.io/mikroscope/es/limits/namespaces/): Qué ficheros del kernel ve un contenedor de RouterOS como los del router y cuáles como propios, por qué privileged no cambia eso, y la cuenta de conntrack que aun así se cuela. - [Lo que aporta privileged](https://jmrplens.github.io/mikroscope/es/limits/privileged/): Por qué el contenedor del agente se ejecuta con privileged=yes por defecto, las fuentes que ese ajuste hace legibles, y la red, los procesos y los sensores a los que sigue sin llegar. - [Cada fuente a su propio suelo](https://jmrplens.github.io/mikroscope/es/limits/source-floors/): Qué fuentes lee el agente en cada tick y cuáles lee o guarda con menos frecuencia, el motivo con nombre que publica cada una, y FLOOR_HZ, el único ajuste que desactiva todos los suelos. ## Seguridad - [Qué se ejecuta dónde](https://jmrplens.github.io/mikroscope/es/security/): Qué pieza de mikroscope corre en el router y cuál en tu máquina, a qué llega cada una y dónde vive cada credencial. - [El usuario de la API](https://jmrplens.github.io/mikroscope/es/security/api-user/): El usuario dedicado de RouterOS con el que entra el colector, la política que necesita cada orden y lo que esa política le deja leer. - [Lo que abre --expose](https://jmrplens.github.io/mikroscope/es/security/expose/): Las dos reglas de cortafuegos etiquetadas que añade install --expose, quién llega al agente a través de ellas y por qué el token pasa a ser obligatorio. - [Lo que el instalador rechaza](https://jmrplens.github.io/mikroscope/es/security/installer/): Los objetos sobre los que install no construye, los valores que no mete en una orden de RouterOS y cómo demuestra uninstall que no dejó nada atrás. ## Referencia - [Órdenes y opciones](https://jmrplens.github.io/mikroscope/es/reference/cli/): Cada verbo de la CLI de mikroscope y cada opción con su valor por defecto, su rango y la variable MIKROSCOPE_* que la fija, leídos de cmd/mikroscope. - [Variables de entorno](https://jmrplens.github.io/mikroscope/es/reference/environment/): Las variables MIKROSCOPE_* que lee la CLI, las credenciales que solo existen como variables y las variables de la envlist que lee el agente en el router. - [Los endpoints HTTP del agente](https://jmrplens.github.io/mikroscope/es/reference/http/): Cada ruta que sirve el agente en la veth, sus parámetros de consulta, lo que devuelve, cómo la protege el token y los formatos de línea de /snapshot y /stream. - [Familias de métricas de Prometheus](https://jmrplens.github.io/mikroscope/es/reference/metrics/): Todas las familias del /metrics del agente y de la exposición --prom del colector, agrupadas por fuente, con su tipo, sus labels y cuándo faltan. - [Medidas de InfluxDB y SQL](https://jmrplens.github.io/mikroscope/es/reference/measurements/): Cada medida que escribe el codificador de line protocol de InfluxDB y cada tabla que crea el destino SQL, con etiquetas, campos, columnas, claves, unidades y si cada valor es un delta o un nivel. - [Puertos de RouterOS y nombres del kernel](https://jmrplens.github.io/mikroscope/es/reference/port-names/): El log del kernel dice eth5 donde RouterOS dice ether6 — cómo medir la correspondencia en un puerto muerto en un solo paso seguro, qué incluye el agente para el RB5009 y cuánto de esa tabla se midió. - [Cuando algo no funciona](https://jmrplens.github.io/mikroscope/es/reference/troubleshooting/): Los síntomas que produce este proyecto, con las palabras que ves de verdad —un error de RouterOS, un contenedor que se cierra, un panel vacío, un destino que descarta—, con lo que significa cada uno y la página que lo explica. - [Cómo se prueba el proyecto a sí mismo](https://jmrplens.github.io/mikroscope/es/reference/testing/): Las tres capas de pruebas — los bytes que cada destino pone en el cable, si un almacén real los acepta y si las consultas de los propios paneles responden —, qué demuestra cada una, qué no demuestra ninguna y la orden de cada una. ## Acerca de - [En qué punto está](https://jmrplens.github.io/mikroscope/es/about/status/): Qué funciona de extremo a extremo, cuánto cuesta en el único equipo donde se ha ejecutado, qué se encontró y no se ha corregido, y qué publica la versión. - [La marca](https://jmrplens.github.io/mikroscope/es/about/brand/): Nueve barras de muestra y la línea de su propia media, por qué nada de ello se dibuja con opacidad parcial, y el contraste que mide cada tono contra su página. - [Linaje y licencia](https://jmrplens.github.io/mikroscope/es/about/lineage/): Qué partes de mikroscope vienen de cs-routeros-bouncer y de go-routeros, qué cambió por el camino y la licencia MIT con la que llegan ambas. ## Referencias legibles por máquina - [Documentación completa](https://jmrplens.github.io/mikroscope/es/llms-full.txt) (799 KB): todas las páginas en español concatenadas, en este orden Cada página de la lista se sirve también como markdown en su propia ruta con `index.md` al final, que es la forma más barata de leer una página como texto. ## Otros idiomas - [Índice de la documentación en inglés](https://jmrplens.github.io/mikroscope/llms.txt): la misma documentación en inglés, página por página