Ir al contenido

Glosario

Una frase por término, en el sentido en que lo usan estas páginas, cada una enlazada a la página que lo explica entero; un término del kernel enlaza además la documentación del propio kernel.

El búfer en memoria del agente con los últimos --buffer segundos de muestras, 60 s por defecto, más allá del cual no existe nada en el router: hasta dónde recuerda el agente.

La parte del colector que mantiene una sesión con la API binaria de RouterOS y lee lo que el contenedor no ve, sobre todo los bytes y paquetes por interfaz, regulada con --api-mode off, slow o full: la capa de la API de RouterOS.

Las muestras del kernel del router que toma el agente, tal como las extrae el colector, en cuyo reloj se sella la capa de la API: lo que hace una ejecución.

Las muestras a frecuencia completa que el agente conserva alrededor del momento en que saltó una condición de disparo, de su conjunto por defecto o del que se pasó con --triggers, 5 s a cada lado por defecto, y que se recogen después por HTTP: captura por disparo.

mikroscope forward en tu máquina, que extrae el anillo del agente, muestrea la capa de la API, ejecuta la etapa de derivación y escribe la línea temporal fusionada en cada destino que nombres: el colector.

La tabla de seguimiento de conexiones de Linux, cuyo nf_conntrack_count dentro del contenedor cuenta solo las conexiones del propio contenedor, así que el agente toma la cuenta del router de la caché slab nf_conntrack con privileged=yes: conntrack sin la API.

La implementación de MikroTik de los contenedores Linux, en el paquete container (la página de contenedores de MikroTik), que comparte el kernel del router, así que el /proc de dentro es el del propio router salvo los ficheros de red, que van por espacio de nombres: la CPU del router, la red del contenedor.

Un contenedor cuya imagen parte de nada (el scratch de Docker), que en el caso del agente es un binario estático y nada más, como dice Dockerfile.agent: qué se ejecuta dónde.

La cifra de CPU que da /system/resource de RouterOS para todos los núcleos juntos, una media móvil de más o menos un segundo: cuántos segundos promedia.

Un sitio al que escribe el colector, uno de once que van de un fichero y la salida estándar a Prometheus, InfluxDB 3 y PostgreSQL: los once destinos.

Un evento discreto que el colector pone en la línea temporal cuando salta una de sus once reglas, un «mira aquí» y no un veredicto: detecciones.

El ajuste de RouterOS que limita qué funciones permite un router, en el que container=yes activa los contenedores y, por diseño de MikroTik, exige pulsar un botón o un arranque en frío para confirmarlo: device-mode container=yes.

La duración real del intervalo de una muestra en nanosegundos, enviada junto a los ticks crudos para que quien los lea divida por el tiempo que de verdad pasó: una línea de muestra.

Una lista con nombre de variables de entorno en /container/envs de RouterOS con la que arranca un contenedor (la página de contenedores de MikroTik), donde install escribe la configuración del agente, su marca de propiedad y ninguna credencial salvo el token opcional: lo que lleva la envlist.

El paso del colector que calcula valores junto a cada muestra del kernel y cada sondeo de contadores, como mem_pressure, packets_per_irq y burst, y ejecuta las reglas de detección: lo que deriva el colector.

El comentario mikroscope:<name> (managed by mikroscope) que install escribe en cada objeto que admite comentario, y como MIKROSCOPE_TAG en la envlist, por el que se selecciona al desinstalar y nunca por patrón: cómo se decide la propiedad.

Una serie de muestras que el agente ya no tiene cuando alguien las pide, que se informa con los números de secuencia perdidos y nunca se rellena: hasta dónde recuerda el agente.

Instrucciones por ciclo, a partir de las cuentas instructions y cycles de la PMU, que el agente envía crudas sin dividir y que vigila la detección ipc-collapse del colector: la única fuente por debajo del tick.

La fuente del agente para /dev/kmsg, el búfer de log del propio kernel (documentación de la ABI del kernel), que se vacía en cada tick con privileged=yes y lleva líneas que el log de RouterOS no muestra: un bucle que solo veía el kernel.

Una nota con marca de tiempo en una grabación, escrita en record, añadida con mark o tomada del propio log del router, que plot dibuja en el gráfico: los marcadores, y en qué reloj están.

La unidad de monitorización del rendimiento de la CPU, leída mediante perf_event_open como la fuente perf del agente, que cuenta ciclos, instrucciones y eventos de caché y de saltos por núcleo por debajo del tick y solo con privileged=yes: la única fuente por debajo.

El ajuste de contenedor privileged=yes, que RouterOS tiene desde la 7.24 y que quita el espacio de nombres de usuario del contenedor para que el log del kernel, /proc/slabinfo, los contadores ECC de la MTD y la PMU se puedan leer, sin ampliar su espacio de nombres de red ni de PID: lo que aporta privileged.

Los ticks ocupados de un núcleo divididos entre todos sus ticks en una muestra, con tope en 1 donde se deriva, mientras los ticks mismos se envían crudos: ticks, no tiempo.

La información de bloqueo por presión (pressure stall information), la parte del tiempo que las tareas pasan esperando CPU, memoria o E/S, en /proc/pressure (documentación del kernel), que el agente lee donde el kernel la tiene y que algunos kernels de RouterOS no tienen: ningún reloj más fino desde el kernel.

El transporte que extrae el anillo del agente a través del propio router, ejecutando /tool fetch por la API binaria de RouterOS, para una máquina que no tiene ruta hacia la veth: relay, a través de la API de RouterOS.

/proc/schedstat, las cuentas por CPU del planificador del tiempo pasado ejecutando y esperando para ejecutar (documentación del kernel), ausente en algunos kernels de RouterOS y leído donde existe: ningún reloj más fino desde el kernel.

/proc/slabinfo, las cachés del asignador del kernel y cuántos objetos tiene cada una (slabinfo(5)), global y solo para root, así que el agente lo lee con privileged=yes: lo que aporta privileged.

El trabajo de interrupción diferido del kernel, que incluye la recepción de red y los temporizadores, contado por CPU y por tipo en /proc/softirqs (documentación del kernel) y enviado por núcleo por el agente: ruta de recepción e interrupciones.

Las colas por CPU de paquetes entrantes del kernel, cuyo /proc/net/softnet_stat cuenta los paquetes procesados, descartados y los squeezes por CPU y sigue siendo el del router incluso dentro del contenedor: la CPU y la memoria son del router.

La cadencia más lenta a la que se lee o se guarda una fuente de nivel, fijada por fuente por una razón que el agente nombra en /capabilities, nunca aplicada a un contador y desactivada en todas partes con FLOOR_HZ: cada fuente a su propio suelo.

Dos cosas en este sitio: la unidad de tiempo de CPU del kernel en /proc/stat, un periodo de USER_HZ de 10 ms, y una vuelta del muestreador del agente a la frecuencia configurada: ticks, no tiempo.

El contador de softnet de las veces que el softirq de recepción agotó su presupuesto con paquetes aún en cola, distinto de cero incluso con el router en reposo y digno de vigilar cuando sube con el caudal plano: una inundación de paquetes.

La unidad en la que /proc/stat cuenta el tiempo de CPU (documentación del kernel), un tick de 10 ms con el USER_HZ habitual de 100, que fija el paso de CPU más fino que puede ver cualquiera que lea ese fichero: ticks, no tiempo.

Una interfaz Ethernet virtual (veth(4)) que une el contenedor con el router, que install crea como veth-mikroscope en una /30 con el router en .1 y el agente en .2, la única dirección en la que escucha el agente: los objetos y sus valores por defecto.