This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Conceptos básicos sobre la monitorización de archivos
Con Checkmk puedes realizar la monitorización de archivos por número, tamaño y antigüedad, tanto de forma individual como en grupos. Esta función se puede utilizar de muchas formas diferentes, como por ejemplo para la monitorización del éxito de las estrategias de copia de seguridad: ¿Alguna de las copias de seguridad tiene más de X días? ¿Alguna de las copias de seguridad tiene un tamaño sospechosamente grande o pequeño? También puedes check los servidores de archivos de toda la empresa para ver si los usuarios los están utilizando indebidamente como almacenamiento privado para películas, o vigilar los clásicos archivos de intercambio o archivos volátiles como los contenedores.
El procedimiento básico sigue el estándar de Checkmk: Se instala un plugin/configuración en el agente que incorpora la información deseada sobre archivos o grupos de archivos a la monitorización. Allí, se utilizan conjuntos de reglas correspondientes para determinar qué propiedades dan lugar a qué estados.
El filtrado propiamente dicho, es decir, determinar qué datos acaban realmente en la monitorización, tiene lugar en el agente.
Puedes usar patrones globales para incluir de forma recursiva archivos de directorios completos, por ejemplo, o solo determinados tipos de archivos o incluso archivos individuales.
Al usar patrones globales como /myfiles/*.*, puedes acabar con listas de archivos enormemente grandes, aunque quizá solo te interesen los archivos especialmente antiguos o grandes.
Debido a esto, actualmente hay dos agentes y conjuntos de reglas de monitorización asociados:
El antiguo fileinfo ya está integrado en el agente y filtra solo por patrón de globbing/ruta, mientras que el más nuevo, mk_filestats, debe instalarse por separado como un plugin de agente y filtra por otras propiedades.
Hay otras diferencias entre mk_filestats y fileinfo, que explicaremos a continuación. Sin embargo, la diferencia más importante es que mk_filestats solo puede realizar la monitorización de hosts Linux, mientras que fileinfo también puede realizar la monitorización de hosts Windows. Para hosts Linux, normalmente deberías usar el más actualizado mk_filestats.
2. Las diferencias entre mk_filestats y fileinfo
Si quieres ver los conjuntos de reglas de las dos variantes una al lado de la otra para mayor claridad, solo tienes que escribir «size age» en el menú «Setup».
Las reglas para archivos individuales y grupos tienen (en gran parte) los mismos nombres, pero las reglas de mk_filestats están identificadas explícitamente como tales.
Ambas variantes de reglas de servicio están disponibles además como servicios aplicados.

Existen diferencias entre las dos variantes a nivel de agente y de servicio. Para empezar, aquí tienes las diferencias teóricas básicas. Encontrarás detalles específicos más adelante en las instrucciones del plugin de agente mk_filestats, así como en las de fileinfo del agente.
En el caso del agente, mk_filestats se distingue por dos opciones de las que carece fileinfo:
En primer lugar, mk_filestats ofrece las opciones de filtrado adicionales ya mencionadas, a saber, por tamaño de archivo, número y nombre, este último en forma de expresiones regulares.
Por ejemplo, con un patrón de globbing «/myfiles/*», podrías incluir en la monitorización solo aquellos archivos que sean mayores de 1 KB y contengan «backup» en algún lugar del nombre del archivo.
Por otro lado, con mk_filestats, los grupos de archivos también se especifican directamente en la configuración del plugin de agente, simplemente creando múltiples filtros, cada uno de los cuales acaba siendo una sección propia en la salida del agente y al que posteriormente se puede hacer referencia mediante reglas a través del título de la sección.
En cuanto a las reglas de monitorización de servicios, los enfoques utilizados por mk_filestats y fileinfo difieren más en los detalles. Ambos pueden restringir las evaluaciones a periodos de tiempo específicos, pero solo fileinfo permite especificar explícitamente ventanas de tiempo por día directamente en la regla. Además, de forma exclusiva, fileinfo puede configurar los llamados «conjunctions» para grupos de archivos. Esto asocia un conjunto de condiciones a cada estado, por ejemplo: «El estado pasa a CRIT tan pronto como el archivo más antiguo del grupo tenga exactamente 5 horas y el archivo más pequeño tenga exactamente 8 megabytes». A su vez, para los grupos de archivos, mk_filestats ofrece la opción de definir casos atípicos: Supongamos que un grupo de archivos debe pasar a CRIT tan pronto como el tamaño del grupo supere los 2 gigabytes. Sin embargo, si el grupo no debe pasar a CRIT cuando un único archivo concreto supere 1 gigabyte (como un archivo temporal), puedes definir esto como un caso especial, anulando la regla del grupo caso por caso.
Vista general de las diferencias:
| Característica | mk_filestats | fileinfo |
|---|---|---|
Sistemas operativos compatibles |
Linux |
Linux y Windows |
Agente |
Plugin de agente |
Incluido en el agente |
Filtro |
Filtros directamente en el agente para patrones globales y propiedades |
Filtros en el agente solo para patrones de globbing |
Listas de archivos |
Proporciona listas de archivos concisas |
Ofrece listas de archivos a veces muy detalladas |
Agrupación de archivos |
Agrupa directamente en el agente |
Agrupa mediante un conjunto de reglas de monitorización independiente |
Mostrar archivos |
Mostrar archivos en los detalles del servicio de forma opcional |
Mostrar siempre los archivos en los detalles del servicio |
Evaluación de archivos |
Se pueden tener en cuenta los valores atípicos en los archivos |
Puede tener en cuenta las relaciones entre archivos |
En los siguientes capítulos verás las dos funciones por separado en ejemplos prácticos; así, las diferencias y características descritas te quedarán más claras.
El propio mk_filestats también proporciona información detallada a través de la llamada filestats.py --help.
3. Monitorización de archivos con mk_filestats (Linux)
El siguiente ejemplo muestra el procedimiento para grupos de archivos.
Para archivos individuales, el procedimiento es idéntico, solo que hay menos opciones.
Supongamos que quieres realizar la monitorización de un grupo de un número determinado de archivos de copia de seguridad (mybackup_01.zip, etc.) y que estos archivos no deben bajar de un tamaño mínimo; en ese caso, puedes proceder de la siguiente manera:
3.1. Configuración de la regla para el plugin de agente
Configuración a través de Agent bakery
En las ediciones comerciales, primero
abre la regla para el plugin de agente Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Count, size and age of files - mk_filestats (Linux).
En «Section name» (Nombre de la regla), asigna un nombre arbitrario, que aparecerá más tarde en la salida del agente como una sección independiente.
En «Globbing pattern for input files» (Exclusiones), especifica a continuación qué archivos se van a realizar la monitorización. Puedes utilizar patrones de globbing, es decir, especificaciones de ruta de archivo con comodines. En este punto, queremos utilizar una especificación de ruta absoluta que incluya todos los archivos de la carpeta especificada.
El filtrado adicional se realiza mediante las dos opciones siguientes: «Filter files by matching regular expression» incluye archivos según una plantilla especificada; en este ejemplo, archivos que contengan «my» en algún lugar de sus nombres, y
«Filter files by not matching regular expression», que excluye archivos; en este caso, aquellos que terminen en «tmp».

Con esto se completa la configuración y ya puedes distribuir el Plugin, incluida su configuración, a través de Agent bakery.
Configuración manual
En
Checkmk Community, configuras el Plugin como de costumbre utilizando un archivo de texto:
como usuario del site, puedes encontrar una configuración de ejemplo en el archivo share/check_mk/agents/cfg_examples/filestats.cfg.
Una configuración según las especificaciones anteriores quedaría así:
[myfiles]
input_patterns: /media/evo/myfiles/
filter_regex: .*my.*
filter_regex_inverse: tmp$Con esto queda completada la configuración y ya puedes instalar el plugin de agente manualmente.
Datos en la salida del agente
A continuación, encontrarás el resultado de tu configuración en forma de datos sin procesar en la salida del agente:
<<<filestats:sep(0)>>>
[[[file_stats myfiles]]]
{'type': 'file', 'path': '/media/evo/myfiles/mybackup_01.zip', 'stat_status': 'ok', 'size': 13146562, 'age': 339080, 'mtime': 1633966263}
{'type': 'file', 'path': '/media/evo/myfiles/mybackup_02.zip', 'stat_status': 'ok', 'size': 13145766, 'age': 325141, 'mtime': 1633980202}
{'type': 'file', 'path': '/media/evo/myfiles/mybackup_03.zip', 'stat_status': 'ok', 'size': 13151050, 'age': 325352, 'mtime': 1633979991}
...3.2. Configuración de la regla de servicio
La monitorización ya tiene acceso a los datos de los archivos a través del agente. Para la evaluación, llama a la regla Setup > Services > Service monitoring rules > Size, age and count of file groups (mk_filestats). En nuestro ejemplo, queremos recibir una alerta tan pronto como se supere o no se alcance un número específico de archivos. Esto se hace mediante las opciones Minimal file count y Maximal file count, que se utilizan para establecer los límites superior e inferior. Todas las demás opciones de mínimo-máximo funcionan de manera análoga.

Pero, ¿qué archivo genera, por ejemplo, un estado «CRIT»? La opción Show files in service details te ayuda aquí: Si está activada, verás una lista de los archivos afectados en la vista de tabla del servicio.

Ahora bien, podría darse el caso de que el número de archivos sea correcto, pero que haya valores atípicos en cuanto a su tamaño, por ejemplo. Para este tipo de excepciones, puedes usar la opción «Additional rules for outliers»: Esto especifica, por ejemplo, que para archivos de menos de 5 megabytes se establezca el estado «WARN», y que para archivos de menos de 1 megabyte el servicio pase a «CRIT». Esto puede ser útil, por ejemplo, para recibir notificaciones de copias de seguridad que puedan estar defectuosas.

En la caja «Conditions», ahora puedes especificar que la regla se aplique exclusivamente al grupo de archivos «myfiles» configurado en el plugin de agente:
Para ello, introduce el nombre que asignaste en el plugin de agente en «Section name» como «File Group Name».

Con esto también se completa la regla de servicio. Opcionalmente, también podrías limitar la evaluación a un único periodo de tiempo. Una vez completado, añade el nuevo servicio a los hosts afectados y activa los cambios como de costumbre.
3.3. mk_filestats en la monitorización
A continuación, podrás ver la evaluación desde la monitorización en las listas y, por supuesto, en los detalles. Además de los parámetros del servicio, ahora también podrás ver los archivos responsables del estado «WARN» o «CRIT».

Sin embargo, se recomienda precaución con la opción «Mostrar archivos en los detalles del servicio»: Si muchos archivos han sido responsables de un cambio de estado, se mostrarán todos, lo que puede dar lugar a listas largas y a problemas de rendimiento y vista de tabla asociados.

4. Monitorización de archivos con fileinfo (Linux, Windows)
La monitorización de archivos con fileinfo es básicamente igual que con mk_filestats, así que el procedimiento aquí es un poco más breve, pero vuelve a ser para grupos de archivos.
4.1. Configuración de la regla para el agente
Configuración de Agent bakery
La configuración del agente en las ediciones comerciales, en Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Count, size and age of files (Linux, Windows), es mucho más sencilla:
Aquí solo tienes que definir la ruta del archivo en forma de plantilla de globbing.
Esto también plantea el problema de transferir listas de archivos extremadamente largas, lo que puede ralentizar notablemente la monitorización. Además, por defecto se crea un servicio independiente para cada archivo encontrado, lo que solo se puede evitar formando grupos.

Incluir todos los subdirectorios:
Solo en hosts Windows, puedes usar el llamado «globstar» (dos asteriscos consecutivos) para incluir todos los archivos de todos los subdirectorios.
Sin embargo, usa esta opción con precaución.
Un «C:\**» descuidado da lugar a un número de servicios de 6 dígitos o a un timeout durante el descubrimiento de servicios.

Fecha adicional:
En los servidores Linux tienes la posibilidad de filtrar por fecha:
En el patrón de globbing, puedes usar la variable $DATE para incluir solo los archivos cuyos nombres contengan la fecha actual.
El formato de esta variable es el mismo que el del programa de Linux date.

Una especificación como /backups/mybackup_*_$DATE:%Y%m%d$ encontraría —a día de hoy, 22/10/2021— archivos como mybackup_01_20211022 y mybackup_foobar_20211022:

Puedes encontrar más información directamente en la página de la regla, así como en la ayuda en línea relacionada.
Con esto se completa la configuración y puedes distribuir el Plugin, incluida su configuración, a través de Agent bakery.
Configuración manual
En
Checkmk Community con fileinfo también debes configurar utilizando archivos, que varían según el sistema operativo:
Linux: el archivo de configuración es fileinfo.cfg:
C:\myfiles\*
/myfiles/*
/media/evo/test_$DATE:%Y%m%d$Windows: el archivo de configuración es check_mk.user.yml:
Solo en hosts Windows, puedes usar el llamado «globstar» (dos asteriscos consecutivos) para incluir todos los archivos de todos los subdirectorios.
Sin embargo, usa esta opción con precaución.
Un archivo «C:\**» mal configurado puede provocar un número de servicios de 6 dígitos o un timeout durante el descubrimiento de servicios.
Datos en la salida del agente
A continuación, encontrarás el resultado de tu configuración en forma de datos sin procesar en la salida del agente, comenzando con el título de la sección fileinfo:
<<<fileinfo:sep(124)>>>
1743070736
C:\myfiles\myfile01|30219|1724242936
C:\myfiles\myfile02|30219|1724242936
C:\myfiles\myfile03|1337|1741368907
C:\myotherfiles\myotherfile01|1900|1743070353
C:\myotherfiles\myotherfile02|728|1743070370
C:\myotherfiles\myotherfile03|1023120|1743070389
C:\myotherfiles\mysubdirectory\myfileinasubdirectory|14114|1743070321Esta es una salida de ejemplo que podría corresponder al archivo de configuración para un host Windows indicado anteriormente.
4.2. Configuración de la regla de servicio
En el segundo paso, se vuelve a configurar la regla del servicio Setup > Services > Service monitoring rules > Size, age and count of file groups. Las opciones de mínimo y máximo se corresponden con las de mk_filestats, pero aquí no están presentes las opciones para mostrar los nombres de los archivos afectados en los detalles del servicio ni las relativas a los valores atípicos. Hay dos opciones adicionales para esto: En primer lugar, puedes introducir directamente un periodo de tiempo mediante Add time range; fuera de este periodo de tiempo, el servicio siempre tendrá el estado OK.
Por otro lado, está disponible la potente función «Level conjunctions»: Esto te permite establecer una serie de condiciones para cada uno de los cuatro estados: «OK», «WARN», «CRIT» y «UNKNOWN». Por ejemplo, podrías especificar que el servicio pase a «CRIT» si…
hay exactamente 7 archivos
el archivo más pequeño tiene menos de 10 megabytes,
el archivo más antiguo tiene menos de 5 días

Y, de nuevo, puedes restringir esta regla al grupo myfiles que desees con File Group Name en la caja Conditions.
A diferencia de mk_filestats, la formación de grupos solo tiene lugar en la monitorización a través de la regla de servicio Setup > Services > Service monitoring rules > File grouping patterns.
Aseguras la asignación introduciendo también el grupo myfiles en Group name.
Los patrones para los archivos que se deben incluir y que están excluidos no se especifican aquí de forma predeterminada mediante expresiones regulares, sino solo mediante globbing.
Sin embargo, si antepones una tilde (~), también puedes usar expresiones regulares aquí.

Fecha adicional: De nuevo, es posible usar la variable $DATE. Como alternativa, también puedes usar $YESTERDAY para filtrar, lo que simplemente resta un día a $DATE.
Como siempre, puedes obtener más información al respecto en la ayuda en línea.
4.3. fileinfo en la monitorización
En la monitorización, la vista de un grupo fileinfo no difiere mucho de la de un grupo mk_filestats.
Sin embargo, fileinfo siempre crea una lista explícita de todos los archivos afectados, independientemente de si son responsables de un cambio de estado o no.
Aquí, en el ejemplo, puedes ver los dos archivos yourfile con 0 megabytes, que no tiene ningún efecto sobre el estado, y yourfile_2.exe con sus casi 11 megabytes, que por lo tanto activa el estado CRIT:

yourfile
se muestra en fileinfo, aunque no es responsable del cambio de estadoTodos los archivos entregados a la monitorización por fileinfo y que no están asignados a un grupo permanecen como servicios individuales:

Esta misma lista muestra por qué es tan importante ser preciso con los filtros en fileinfo:
Por ejemplo, si aquí se especificara C:\ sin ninguna restricción, habría posteriormente varios cientos de miles de servicios individuales en la monitorización.
5. Solución de problemas
5.1. No hay archivos o hay demasiados archivos en la monitorización
Tanto si trabajas con mk_filestats como con fileinfo, la falta de archivos o incluso un exceso de entradas en la monitorización suelen deberse a filtros incorrectos.
Hay dos causas principales para esto: un conflicto entre un patrón de globbing y una expresión regular, o una configuración incorrecta.
Por ejemplo, el asterisco se comporta de forma diferente en las dos variantes:
En el globbing, * actúa como comodín para cualquier número de caracteres arbitrarios, y en una expresión regular, representa una o más apariciones del carácter que le precede. Para lograr una coincidencia con cualquier carácter en cualquier cantidad mediante una expresión regular, tendrías que utilizar .* en consecuencia.
6. Archivos y directorios
Como siempre, todas las rutas de los archivos del servidor Checkmk son relativas al directorio del site (p. ej., /omd/sites/mysite).
6.1. mk_filestats
| Ubicación | Ruta del archivo | Contenido |
|---|---|---|
Servidor Checkmk |
|
Archivo de configuración de ejemplo |
Servidor Checkmk |
|
Plugin de agente para Python 3 con explicaciones |
Servidor Checkmk |
|
Plugin de agente para Python 2 con explicaciones |
Host Linux |
|
Archivo de configuración: creado por la Agent bakery o manualmente |
6.2. fileinfo
| Ubicación | Ruta del archivo | Contenido |
|---|---|---|
servidor Checkmk |
|
Archivo de configuración de ejemplo |
Host Linux |
|
Archivo de configuración: creado por el agente bakery o manualmente |
Host Windows |
|
Archivo de configuración: creado por el agente bakery |
Host Windows |
|
Archivo de configuración: creado manualmente |
