Checkmk
to checkmk.com
Tip

This article is currently under construction and is being expanded on a regular basis.

Important

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.

Tip

Este artículo está actualmente en construcción y se amplía regularmente.

1. Aspectos esenciales para la monitorización de archivos de registro

La historia de la monitorización de archivos de registro es una historia llena de malentendidos. Los malentendidos ya empiezan cuando nos fijamos en lo que son las entradas de registro y lo que, en cambio, muestran los servicios que funcionan con Checkmk. Las líneas o entradas de los archivos de registro se basan "por naturaleza" en eventos. Checkmk, en cambio, muestra estados. Lee más sobre la diferencia entre eventos y estados en el artículo Principios básicos de la monitorización con Checkmk.

En Checkmk sorteamos este problema definiendo cuándo un servicio que mapea uno o más archivos de registro asume un estado crítico. Como regla, definimos "pasa a ser crítico" cuando el archivo de registro contiene mensajes que son

  • nuevos

  • no reconocidos, y

  • críticos.

También debes usar logwatch con moderación. Logwatch es adecuado para un uso limitado y no para procesar gigabytes o terabytes de archivos de registro. Sin duda hay herramientas más adecuadas para ello. Recomendamos encarecidamente usar logwatch sólo de forma puntual y no rutinariamente. Como verás más adelante en este artículo, es fácil realizar una parte importante del prefiltrado en el host monitorizado.

2. Requisitos previos

Logwatch es un programa Python y, por tanto, requiere un entorno Python en el host. Python ya estará instalado en la mayoría de las distribuciones de Linux y Solaris también incluye Python 3.x desde hace algún tiempo. Si quieres monitorizar archivos de registro en un host Windows, hay varias formas de conseguirlo.

Los usuarios de nuestras ediciones comerciales pueden configurar Logwatch cómodamente a través de la GUI y, utilizando Agent bakery, hacer que el plugin se inserte en el paquete del agente. En cuanto Checkmk se dé cuenta de que estás configurando un plugin de agente basado en Python para un host Windows, el agente también recibirá un entorno virtual Python (venv).

Si utilizas una de nuestras ediciones comerciales pero no el Agent bakery, consulta la siguiente sección para tus host Windows.

2.1. Python para Windows en Checkmk Raw

Instalación de Checkmk Python (venv)

El paquete de instalación para el agente Windows de Checkmk Raw no contiene un entorno Python. Sin embargo, en tu servidor Checkmk ya existe un archivo de gabinete correspondiente. Puedes encontrar este archivo llamado python-3.cab en el directorio ~/share/check_mk/agents/windows o en Checkmk a través de Setup > Agents > Windows > Windows Agent. Copia este archivo en tu host Windows en el directorio C:\Program Files (x86)\checkmk\service\install. Ya existe un archivo con este nombre y un tamaño de 0 bytes. Debes sobrescribir este archivo con la versión del servidor Checkmk. A continuación, reinicia el servicio del agente Checkmk. En Windows PowerShell con derechos de administrador, puedes hacerlo con el siguiente comando:

net stop checkmkservice; net start checkmkservice

Una vez reiniciado el servicio de Windows, se habrá instalado automáticamente el entorno virtual de Python.

Instalar un Python completo

También puedes descargar e instalar un paquete actual de Python desde python.org. Asegúrate de activar las siguientes opciones durante la instalación:

  • Install Python 3.x for all users. Esto también activará automáticamente la opción Precompile standard library, lo cual es positivo.

  • Add Python to environment variables

Si quieres empezar a hacer pruebas inmediatamente después de instalar Python, es esencial reiniciar el checkmkservice mediante el Administrador de Tareas de Windows o con los comandos especificados anteriormente, de lo contrario el servicio no conocerá las nuevas variables del entorno.

3. Archivos de registro de monitorización

3.1. Instalación en el host

Empieza instalando el plugin de agente. Para ello, copia el archivo ~/share/check_mk/agents/plugins/mk_logwatch.py de tu servidor Checkmk al host en el directorio /usr/lib/check_mk_agent/plugins/ (Linux) o C:\ProgramData\checkmk\agent\plugins (Windows). Asegúrate de que el archivo es ejecutable en el host. Encontrarás más información sobre este paso en la sección "Instalación manual" de los artículos Monitorizar Linux y Monitorizar Windows.

Los usuarios de nuestras ediciones comerciales pueden seleccionar Text logfiles (Linux, Solaris, Windows) durante la Configuración de la regla Deploy the Logwatch plugin and its configuration para distribuir automáticamente el Plugin de agente con el agente.

3.2. Configurar logwatch

De acuerdo con las consideraciones iniciales, logwatch no monitorizará nada sin estar configurado. Por tanto, tras instalar el plugin de agente, es esencial crear un archivo de configuración para el host que se va a monitorizar.

Configuración a través del Agent bakery

En las ediciones comerciales, llama primero la regla para el plugin de agente Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Text logfiles (Linux, Solaris, Windows). La opción por defecto Deploy the Logwatch plugin and its configuration debe dejarse normalmente como está. Sin embargo, si quieres o necesitas transferir el archivo de configuración logwatch.cfg al host de otra forma, la opción Deploy the Logwatch plugin without configuration sigue disponible aquí.

Continúa con la opción Retention period. El valor por defecto aquí es un minuto, que también se corresponde con el intervalo de comprobación preestablecido en Checkmk. Este valor debería ser siempre al menos igual al intervalo de comprobación. Esta opción se encarga principalmente de garantizar que no se pierdan mensajes de registro debido a la detección de un servicio o a la ejecución manual de cmk -d myhost. Puedes encontrar más detalles en la ayuda en línea de la opción y en el Werk #14451 con el que se introdujo esta opción.

Ahora viene la sección de la regla en la que las cosas realmente se ponen en marcha:Configure a logfile section. Empezaremos directamente con el mayor escollo de los últimos años. En el campo Patterns for logfiles to monitor, tendrás que especificar los archivos de registro que quieres monitorizar. Puedes hacerlo de forma individual y explícita o con los llamados patrones glob (glob para abreviar). Aquí estamos utilizando el módulo de Python glob, para el que existe una documentación detallada en docs.python.org. Sin embargo, nos gustaría proporcionarte aquí mismo algunos ejemplos útiles.

Por ejemplo, si introduces aquí /var/log/my.log, logwatch sólo monitorizará este único archivo de registro. Si, en cambio, introduces aquí /var/log/*log, logwatch monitorizará todos los archivos que terminen con la cadena de caracteres log y que se encuentren directamente en el directorio /var/log. Si quieres monitorizar los archivos de registro de todos los subdirectorios directos de /var/, puedes hacerlo con el siguiente glob, por ejemplo: /var/*/*log. Aquí no ofrecemos explícitamente el glob ** para buscar recursivamente en una estructura de directorios, porque acabaríamos con una lista de resultados demasiado grande demasiado rápidamente y dejaríamos atrás el verdadero propósito de logwatch.

La tabla siguiente te ofrece algunos ejemplos más útiles de cómo puedes utilizar globs para monitorizar realmente los archivos que requieren monitorización sin tener que especificarlos todos individualmente:

Globo Patrón Explicación Ejemplo

/var/log/*

Todos los archivos de /var/log.

/var/log/mylog /var/log/my.log

/var/log/*/*

Todos los archivos de todos los subdirectorios directos de /var/log/.

/var/log/foo/mylog /var/log/bar/mylog

/var/log/mylog?.log

Todos los archivos de /var/log cuyo nombre empiece por mylog, seguido de un único carácter y termine en .log.

/var/log/mylog1.log /var/log/mylog9.log

/var/log/mylog[123].log

Todos los archivos de /var/log cuyo nombre empiece por mylog, seguido de 1, 2 o 3 y termine en .log.

/var/log/mylog1.log /var/log/mylog3.log

Por tanto, en lo que respecta a los archivos "coincidentes" en el primer paso, no utilizamos expresiones regulares y esto puede ser suficiente para que llegues a todos los archivos que desees.

Sin embargo, si ahora necesitas filtrar más, puedes utilizar la opción Regular expression for logfile filtering para aplicar expresiones regulares a los aciertos del paso 1 en un segundo paso.

Si has recopilado todos los archivos /var/log/ y sus subdirectorios directos en el primer paso con /var/log/ y /var/log/*/*, podrías utilizar la expresión regular error.log$|err$ para reducir la lista de resultados a todos los archivos que terminen con err.log o err. Atención: El "punto" (.) vuelve a ser ahora un carácter arbitrario. Esto podría, por ejemplo, dejar los archivos /var/log/apache2/error.log, /var/log/mail.err y /var/log/cups/error_log.

Como puedes ver, ya te hemos proporcionado dos buenas y potentes herramientas para seleccionar los archivos a monitorizar, de modo que Logwatch también puede comprobar los demás parámetros y contenidos muy rápidamente en el siguiente paso, utilizando una lista de archivos manejable. Puedes profundizar en el conocimiento de esta última en el artículo Expresiones regulares en Checkmk.

Con la opción Restrict the length of the lines puedes ordenar a logwatch que trunque las líneas excesivamente largas después del número de caracteres especificado.

La siguiente opción Watch the total size of the log file es útil para reconocer una rotación de registro defectuosa. Si estableces aquí 100 MiB, recibirás un aviso cada vez que un archivo de registro concreto vuelva a superar el tamaño especificado.

El número máximo de líneas que logwatch comprueba por ejecución y archivo puede restringirse con Restrict number of processed messages per cycle y con Restrict runtime of logfile parsing puedes asegurarte de que logwatch no pase demasiado tiempo en un único archivo que puede haberse inundado con miles y miles de entradas nuevas desde la última comprobación.

Si activas una de estas dos últimas opciones, también debes especificar qué debe ocurrir si se supera el límite especificado. Con nuestra configuración por defecto, el servicio asociado se vuelve crítico y recibes un mensaje de que se han saltado líneas o de que se ha superado el tiempo máximo de ejecución.

Handling of context messages es una opción con la que el volumen de datos transferidos puede llegar a ser muy grande muy rápidamente. Por tanto, piensa detenidamente si sólo es importante para ti el mensaje de registro que crees que debe generar un CRIT o un WARN, o si deben transferirse al servidor Checkmk todas las líneas que se hayan añadido desde la última ejecución de logwatch. Para archivos de registro pequeños que sólo crecen unas pocas líneas cada minuto, la opción Do transfer context no plantea problemas. Sin embargo, si se monitorizan 50 archivos de registro en un host, que de repente contienen 100.000 líneas nuevas con una longitud de 500 caracteres, ya estamos en el rango de los gigabytes. En tal caso, puede ser suficiente ver que se ha añadido un gran número de mensajes nuevos desde la última monitorización para iniciar un check directamente en el host en cuestión.

Si necesitas el contexto -es decir, las líneas anteriores y posteriores al mensaje de registro que es importante para ti- puedes limitarlo a un determinado número de líneas anteriores y posteriores con la opción Limit the amount of context data sent to the monitoring server.

Con Limit the amount of data sent to the monitoring server puedes limitar el tamaño de los datos transferidos en general.

Process new logfiles from the beginning está desactivado por defecto. Esto a veces causa asombro, porque logwatch no "reconoce" los problemas que hay en los archivos de registro y los transmite al servidor Checkmk. En nuestra opinión, nada es más viejo que el periódico de ayer, y tampoco lo son los mensajes de registro que ya estaban en un archivo de registro antes de la primera ejecución de logwatch. Durante esta primera ejecución, logwatch no hace más que anotar cuántas líneas contiene ya el registro respectivo. Sólo durante la segunda ejecución se comprueba el contenido de los archivos, es decir, las líneas recién añadidas.

Logwatch se basa en que realmente sea capaz de leer los archivos de registro. Bajo el capó, logwatch hace todo lo posible para reconocer la codificación de cada archivo de registro. Sin embargo, las codificaciones de caracteres demasiado exóticas pueden dar problemas. Si puedes especificar la codificación de caracteres de los archivos de registro monitorizados, UTF-8 es una muy buena opción. Si esto no es posible y logwatch no consigue averiguar la codificación, puedes hacer una especificación explícita con Codec that should be used to decode the matching files.

Con Duplicated messages management, si activas esta opción, puedes ahorrar de nuevo un poco de ancho de banda, y la salida posterior en Checkmk también será más legible. Si activas Filter out consecutive duplicated messages in the agent output, logwatch cuenta cuántas veces se ha repetido una línea y lo escribe en consecuencia en la salida, en lugar de repetir las líneas.

Por último, las líneas de los archivos de registro que te interesen se describen ahora mediante una expresión regular y se les asigna un estado. Si quieres que cada línea que contenga la palabra panic conduzca a un CRIT en Checkmk, basta con introducir panic en el campo Pattern(Regex) después de hacer clic en Add message pattern debajo de Regular expressions for message classification. Las funciones de las demás opciones ofrecidas ya se describen con gran detalle en la ayuda en línea en este punto y no se duplican aquí.

Un punto a tener en cuenta: el estado OK puede parecer confuso a primera vista. Se utiliza para transferir primero las líneas de un archivo de registro al servidor Checkmk para realizar después la clasificación final. Esto nos lleva a un punto importante que muestra lo flexible que puede ser Logwatch cuando se utiliza correctamente.

Todas las opciones explicadas en esta sección se convierten en entradas del archivo de configuración ya mencionado, que se almacena en el host respectivo. Si ahora quieres hacer cambios en la clasificación de determinados mensajes, puede que primero tengas que editar la regla, y luego bakear el agente e instalarlo.

Alternativamente, puedes transferir primero todos los mensajes interesantes al servidor Checkmk (por ejemplo, con el estado OK ), y luego en el servidor Checkmk (re)clasificarlos con la regla Logfile patterns. De este modo te ahorrarás el trabajo de hornear y desplegar el nuevo agente, y después de personalizar la regla mencionada en consecuencia, tendrás que -sólo una vez- activar rápidamente los cambios. Más adelante, en el capítulo Reclasificar con patrones de archivo de registro, encontrarás cómo hacerlo exactamente.

Configuración manual

En el Checkmk Raw configuras el plugin de agente como de costumbre a través de un archivo de texto. Por regla general, Logwatch busca un archivo llamado logwatch.cfg en los directorios /etc/check_mk (Linux) o c:\ProgramData\checkmk\agent\config\ (Windows). Una configuración (casi) mínima podría ser la siguiente

/etc/check_mk/logwatch.cfg
"/var/log/my.log" overflow=C nocontext=True
 C a critical message
 W something that should only trigger a warning

En primer lugar, introduce siempre aquí un patrón glob, seguido de todas las opciones que deban aplicarse. A continuación, sigue -con una sangría de un espacio- una letra que represente el estado o función deseados y, por último, una expresión regular que se compare con cada línea del archivo de registro. Con la configuración anterior, todas las líneas nuevas que se hayan añadido al archivo /var/log/my.log desde la última ejecución de Logwatch se comprobarían en busca de los dos patrones, a critical message y something that should only trigger a warning.

Puedes encontrar un ejemplo de configuración muy completo aplicable a un usuario del site en el archivo ~/share/check_mk/agents/cfg_examples/logwatch.cfg.

Como todas las opciones que puedes especificar en un archivo de configuración de este tipo ya se han explicado en la sección Configuración a través del Agent bakery, a continuación sólo se ofrece una lista y una breve descripción. Consulta la sección anterior para obtener una explicación detallada.

Opción en logwatch.cfg Contrapartida Ejemplo Observación

regex

Regular expression for logfile filtering

regex='error.log$|err$'

encoding

Codec that should be used to decode the matching files

encoding=utf-8

maxlines

Restrict number of processed messages per cycle

maxlines=500

maxtime

Restrict runtime of logfile parsing

maxtime=23

overflow

En caso de desbordamiento

overflow=W

maxlinesize

Restrict the length of the lines

maxlinesize=123

maxoutputsize

Limit the amount of data sent to the monitoring server

maxoutputsize=10485760

Tamaño en bytes

skipconsecutiveduplicated

Duplicated messages management

skipconsecutiveduplicated=True

nocontext

Handling of context messages

nocontext=True

maxcontextlines

Limit the amount of context data sent to the monitoring server

maxcontextlines=55,66

4. Agrupación de archivos de registro

El check perteneciente al plugin de agente logwatch crea normalmente un servicio independiente para cada archivo de registro. Definiendo agrupaciones mediante la regla Logfile Grouping, puedes pasar al check logwatch_groups.

Pronto se añadirá más información. Hasta entonces, consulta la ayuda en línea de la regla Logfile Grouping.

5. Reclasificar con patrones de archivos de registro

Esta sección se añadirá próximamente. Hasta entonces, consulta la ayuda en línea de la regla Logfile patterns.

6. Reenvío a la Consola de eventos

Además del proceso directo de los mensajes de registro en Checkmk y una posible reclasificación con la regla Logfile patterns, también existe la opción de reenviar las líneas de registro obtenidas por logwatch a la Consola de eventos. Esto se hace utilizando la regla Logwatch Event Console Forwarding, y se describe en el artículo La Consola de eventos.

7. Logwatch en monitorización

En monitorización, la visualización difiere según el check plugin utilizado.

Si utilizas logwatch o logwatch_groups, encontrarás -tras la detección de servicios necesaria- un servicio por archivo de registro o por agrupación de archivos de registro (ver Agrupación de archivos de registro) que comienza por Log. A continuación aparece la ruta completa del archivo o el nombre del grupo.

Si reenvías tus mensajes de registro a la Consola de eventos, verás un servicio por reenvío, dependiendo de la configuración de la regla logwatch Event Console Forwarding, que te informa del número de mensajes de registro reenviados. En el caso del reenvío agrupado mediante el plugin logwatch_ec, este servicio se llama Log Forwarding. Si utilizas la opción Separate check y, por tanto, el plugin logwatch_ec_single, el nombre del servicio también empieza por Log seguido de la ruta del archivo de registro. Este servicio también te informa del número de mensajes reenviados y de si no se puede leer un archivo de registro.

8. Archivos y directorios

Todas las rutas del servidor Checkmk se especifican en relación con el directorio de la instancia (por ejemplo, /omd/sites/mysite).

Ubicación Ruta Significado

Servidor Checkmk

~/share/check_mk/agents/cfg_examples/logwatch.cfg

archivo de configuración de ejemplo

Servidor Checkmk

~/share/check_mk/agents/plugins/mk_logwatch.py

Plugin del agente Python 3 con explicaciones

Servidor Checkmk

~/share/check_mk/agents/plugins/mk_logwatch_2.py

Plugin del agente Python 2 con explicaciones

Host Linux

/etc/check_mk/logwatch.cfg

Fichero de configuración - creado por el Agent bakery o manualmente

Host Linux

/var/lib/check_mk_agent/logwatch.state.*

Archivos de estado de mk_logwatch

Linux host

/var/lib/check_mk_agent/logwatch-batches/*

Ubicación de los lotes individuales que mk_logwatch crea por consulta

Host Windows

c:\ProgramData\checkmk\agent\config\logwatch.cfg

Fichero de configuración - creado por el Agent bakery o manualmente

Host Windows

c:\ProgramData\checkmk\agent\state

Ubicación de almacenamiento de los archivos de estado de mk_logwatch

Windows host

c:\ProgramData\checkmk\agent\state\logwatch-batches

Ubicación de almacenamiento de los lotes individuales que mk_logwatch crea por consulta

En esta página