Checkmk
to checkmk.com

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.

1. Introducción

Si utilizas sistemas operativos tipo Unix, probablemente ya estés familiarizado con los denominados 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 habitual para automatizar trabajos recurrentes de forma fiable en Linux, y de forma similar en AIX o Solaris.

Algunos de estos trabajos son esenciales para un funcionamiento seguro, por lo que deben incluirse en la monitorización del host. En Checkmk puedes conseguirlo con el script mk-job. Este pequeño script se coloca delante del trabajo real y realiza esta tarea. En el proceso, mk-job registra diversos datos de medición y los envía a Checkmk. Los datos de medición más importantes incluyen cuándo se ejecutó el trabajo por última vez y si se ejecutó correctamente.

El script mk-job es -como suele ocurrir en Checkmk- un simple script shell que puedes comprobar en cualquier momento, por lo que tienes la máxima transparencia y control en todo momento, incluso para los trabajos importantes de tu host.

2. Configurar el Plugin

2.1. Configurar el programa mk-job

En primer lugar, configura el pequeño script en el host monitorizado para poder utilizarlo. La forma más sencilla de hacerlo es obtener el programa directamente de tu servidor Checkmk con wget y hacerlo ejecutable - en el siguiente ejemplo para un servidor Linux:

root@linux# wget -O /usr/local/bin/mk-job https://myserver/mysite/check_mk/agents/mk-job
root@linux# chmod +x /usr/local/bin/mk-job

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 del primer trabajo, tomemos de nuevo cron como ejemplo común. Supongamos que tienes un cronjob como éste

/etc/cron.d/backup
5 0 * * * root /usr/local/bin/backup >/dev/null

Este job de copia de seguridad se ejecuta todos los días a las 12:05 de la mañana con el ID de usuario root. Para monitorizar este job, utiliza un editor de confianza para anteponer el comando de la línea con el script mk-job junto con un nombre. El nombre se utilizará posteriormente como nombre del servicio en Checkmk y, por tanto, debe ser único en este host:

/etc/cron.d/copia de seguridad
# 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/null

Al ejecutar el cronjob recién definido, mk-job intentará almacenar los resultados de la medición en el directorio /var/lib/check_mk_agent/job/root. Como el directorio job también pertenece al usuario root, no hay problema en que mk-job cree el directorio de usuario root si éste no existe ya.

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 como el siguiente, aunque en aras de la claridad sólo se muestra aquí 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 2086

3. Añadir el servicio a Checkmk

En Checkmk encontrarás automáticamente el servicio una vez que se haya ejecutado el trabajo y se hayan guardado los resultados correspondientes. Así que, como de costumbre, ve al descubrimiento de servicios y activa el servicio:

discover mkjob

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:

service mkjob

4. Monitorización de los trabajos de usuarios sin privilegios

Si también quieres monitorizar trabajos de otros usuarios que no sean root, en el directorio job /var/lib/check_mk_agent/job/ crea primero un directorio de usuario y asigna los derechos al usuario apropiado - en el siguiente ejemplo de comando al usuario myuser:

root@linux# cd /var/lib/check_mk_agent/job/ && mkdir myuser && chown myuser:myuser myuser

Esto es lo que hace posible, en primer lugar, que mk-job almacene 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 inicial de la cadena y comprueba primero si has incluido correctamente el script "mk-job", como se describe en los primeros pasos.

Las posibles fuentes de error son

  • mk-job cron no puede encontrarlo porque está almacenado en una ruta que no reconoce cron. En este caso, especifica la ruta completa a mk-job.

  • El nombre del servicio contiene espacios y no se ha encerrado entre comillas (").

  • La tarea se está ejecutando con un usuario que todavía 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 transmite correctamente.

Puedes visualizar la salida del agente con el siguiente comando y reenviar la salida al comando less:

OMD[mysite]:~$ cmk -d myhost | less

Normalmente, la sección correspondiente <<job>> se encuentra muy abajo en la salida.

Si los resultados no son visibles aquí, la razón puede ser que el agente no tiene los permisos necesarios para leer los archivos correspondientes. Esto puede ocurrir, por ejemplo, si no llamas al agente con el usuario "root", pero los resultados no pueden ser leídos por otros usuarios:

root@linux# ls -l /var/lib/check_mk_agent/job/myUser/
total 5
-rw-rw---- 1 myUser   myUser   186 Jul 21 11:58  nightly-backup

En estos casos, o bien añades un permiso para que todos los usuarios puedan leer los resultados:

root@linux# chmod 664 /var/lib/check_mk_agent/job/myUser/nightly-backup

O creas un grupo y asignas este grupo a todos los archivos de trabajo. Con el siguiente comando sólo cambias la autorización del grupo. El propietario no se modifica porque permanece intacto si no se introduce nada antes de los dos puntos:

root@linux# chown :myJobGroup /var/lib/check_mk_agent/job/myUser/nightly-backup

Asegúrate de haber creado previamente el grupo, y de haber añadido como miembro del mismo al usuario con el que se llama al agente.

6. Archivos y directorios

Ruta Significado

/usr/local/bin/

El script mk-job debe colocarse en este directorio para que se pueda llamar fácilmente.

/var/lib/check_mk_agent/job/

Es el directorio habitual en el que se almacenan los resultados, ordenados por usuario. Ten en cuenta que la ruta en AIX es diferente: /tmp/check_mk/job/.

En esta página