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. Introducción
Si utilizas sistemas operativos tipo Unix, probablemente ya estés familiarizado con las llamadas «cronjobs».
Sin embargo, cron es en realidad un daemon que gestiona procesos recurrentes en segundo plano y se asegura de que se ejecuten a intervalos predefinidos.
Por supuesto, esto no tiene por qué hacerlo el programa cron; simplemente es el método más común para automatizar tareas recurrentes de forma fiable en Linux, y de manera similar en AIX o Solaris.
Algunas de estas tareas son esenciales para un funcionamiento seguro, por lo que deben incluirse en la monitorización del host.
En Checkmk puedes lograrlo con el script mk-job.
Este pequeño script se coloca delante de la tarea real y luego lleva a cabo esta tarea.
En el proceso, mk-job registra una variedad de datos de medición y los envía a Checkmk.
Los datos de medición más importantes incluyen cuándo se ejecutó la tarea por última vez y si se ejecutó con éxito.
El script mk-job es —como suele ser habitual en Checkmk— un sencillo script shell que puedes checkear en cualquier momento.
De este modo, dispones de la máxima transparencia y control en todo momento, incluso para los trabajos importantes de tu host.
2. Configuración del Plugin
2.1. Configuración del programa mk-job
Primero, configura el pequeño script en el host supervisado para poder utilizarlo.
La forma más fácil de hacerlo es descargar el programa directamente desde tu servidor Checkmk con wget y hacerlo ejecutable —en el siguiente ejemplo para un servidor Linux:
Si quieres instalar el script en AIX o Solaris, carga en su lugar mk-job.aix o mk-job.solaris.
Si el programa wget no está disponible, por supuesto puedes descargar el archivo de otra forma, por ejemplo copiándolo con scp.
2.2. Monitorización del primer trabajo
Para la monitorización de la primera tarea, volvamos a tomar cron como ejemplo común.
Supongamos que tienes un cronjob como este:
5 0 * * * root /usr/local/bin/backup >/dev/nullEste job de copia de seguridad se ejecuta a diario a las 12:05 a. m. con el ID de usuario root.
Para la monitorización de este trabajo, usa un editor de confianza para modificar la línea añadiendo al principio del comando /usr/local/bin/backup >/dev/null el nombre del script mk-job junto con un nombre para el servicio (en el ejemplo, nightly-backup).
Este último nombre se utilizará más adelante como nombre del servicio en Checkmk y, por lo tanto, debe ser único en este host:
# Syntax:
# <minute> <hour> <day> <month> <day of week> <user> mk-job <service name> <command>
5 0 * * * root mk-job nightly-backup /usr/local/bin/backup >/dev/nullAl ejecutar el cronjob recién definido, mk-job intentará guardar los resultados de la medición en el directorio /var/lib/check_mk_agent/job/root.
Dado que el directorio job también pertenece al usuario root, no hay ningún problema para que mk-job cree el directorio de usuario root si aún no existe.
Con cada llamada, el agente buscará en los directorios bajo /var/lib/check_mk_agent/job/ y los añadirá a la salida.
El resultado podría ser algo así, aunque para mayor claridad aquí solo se muestra la parte relevante de la salida del agente:
<<<job>>>
==> nightly-backup <==
start_time 1613509201
exit_code 0
real_time 2:06.03
user_time 0.62
system_time 0.58
reads 200040
writes 35536
max_res_kbytes 28340
avg_mem_kbytes 0
invol_context_switches 1624
vol_context_switches 20863. Añadir el servicio a Checkmk
En Checkmk encontrarás automáticamente el servicio una vez que se haya ejecutado la tarea y se hayan guardado los resultados. Así que, como siempre, ve al descubrimiento de servicios y activa el servicio:

Por un lado, encontrarás todos los puntos de medición mostrados anteriormente como métricas y en gráficos de la serie temporal predefinidos. Por otro lado, también encontrarás los puntos de medición en el resumen y en los detalles del servicio:

4. Monitorización de los trabajos de usuarios sin privilegios
Si también quieres realizar la monitorización de los trabajos de usuarios distintos de root,
en el directorio job /var/lib/check_mk_agent/job/ crea primero un directorio de usuario
y asigna los derechos al usuario correspondiente —en el siguiente ejemplo de comando, al usuario myuser:
Esto es lo que permite, en primer lugar, que mk-job guarde los resultados en este directorio en nombre del usuario.
5. Opciones de diagnóstico
Si la configuración no funciona, tienes varias opciones para localizar el problema o problemas. Básicamente, empieza siempre por el punto de partida de la cadena y check primero si has incluido correctamente el script «mk-job», tal y como se describe en los primeros pasos.
Las posibles causas del error son:
mk-jobcronno lo encuentra porque está almacenado en una ruta quecronno reconoce. En este caso, especifica la ruta completa amk-job.El nombre del servicio contiene espacios y no se ha puesto entre comillas (").
El trabajo se está ejecutando con un usuario que aún no tiene su propio directorio para almacenar los resultados.
Si los resultados de la medición se han registrado y guardado correctamente, comprueba en el servidor Checkmk si el agente también los ha transmitido correctamente.
Puedes mostrar la salida del agente con el siguiente comando y reenviarla al comando less:
Normalmente, la sección relevante «<<job>>» se encuentra muy abajo en la salida.
Como alternativa, puedes abrir la lista de servicios del host en la monitorización, navegar hasta el servicio «Check_MK» y su columna «Icons». Allí puedes seleccionar la opción de menú «Download agent output» para recuperar un archivo de texto que contenga la salida completa del agente.
Si los resultados no son visibles aquí, el motivo puede ser que el agente no tenga los permisos necesarios para leer los archivos correspondientes. Esto puede ocurrir, por ejemplo, si no ejecutas el agente con el usuario «root», pero es posible que otros usuarios no puedan leer los resultados:
En tales casos, añade un permiso para que todos los usuarios puedan leer los resultados:
O bien, crea un grupo y asigna este grupo a todos los archivos de trabajo. Con el siguiente comando solo cambias la autorización del grupo. El propietario no cambia porque permanece sin modificar si no se introduce nada antes de los dos puntos:
Asegúrate de haber creado el grupo previamente y de haber añadido como miembro al usuario con el que se ejecuta el agente.
6. Archivos y directorios
| Ruta | Significado |
|---|---|
|
El script |
|
El directorio habitual en el que se almacenan los resultados, ordenados por usuario. Ten en cuenta que la ruta en AIX es diferente: |
