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

Hay muchas buenas razones para utilizar FreeBSD en lugar de Linux u otros sistemas tipo Unix: por ejemplo, la función de contenedor "Jails", disponible desde el año 2000, su alto rendimiento incluso con grandes cargas de E/S, la robustez del sistema de archivos UFS2 o el excelente soporte del moderno sistema de archivos transaccional ZFS. Checkmk proporciona un agente para FreeBSD que se basa en el agente para Linux, pero que se ha adaptado a las entidades de FreeBSD, como el uso de diferentes formatos de salida de las herramientas de línea de comandos y diferentes convenciones de ruta. Sin embargo, la instalación y las pruebas funcionales deben ser en gran medida manuales, ya que no hay ninguna disposición para empaquetar o distribuir a través de Agent bakery.

Nota sobre otros sistemas BSD: Este artículo explica la instalación y configuración del agente para FreeBSD. También hay disponiblesagentes para OpenBSD y NetBSD, cuya instalación es similar a la descrita aquí. Si utilizas DragonFly BSD, agradeceríamos que hicieras pruebas y sugirieras parches para el agente de FreeBSD.

La estructura básica del agente de FreeBSD es la misma que la descrita para el agente de Linux: es un script shell puro, que puede ejecutarse a través de un superservidor de internet (inetd o xinetd) o de un túnel SSH, lo que lo hace ligero y seguro.

En general, en este artículo asumimos que tienes alguna experiencia con Linux o Solaris, así que aquí nos centraremos principalmente en las diferencias.

2. Instalación

2.1. Requisitos previos

Para que el agente Checkmk pueda leer toda la información útil para la monitorización, es necesario instalar herramientas adicionales:

  • sysutils/ipmitool

  • devel/libstatgrab

  • shells/bash

  • lang/python3

  • ftp/wget

Python es opcional en este punto, pero en cualquier caso es necesario para muchos plugins de agente. Una característica especial es bash, ya que el script del agente utiliza en realidad una sintaxis que no es compatible con el Bourne Shell de FreeBSD. El ipmitool es necesario para leer la información del hardware.

Todas estas herramientas se instalan con el siguiente comando:

root@bsd:/root # pkg install ipmitool libstatgrab bash python3 wget

2.2. Instalación sobre los Ports de FreeBSD

Los ports de FreeBSD contienen un port para el agente Checkmk mantenido por Mark Peek, que puede contener parches para hacer que el agente sea compatible con versiones más recientes de FreeBSD-STABLE. Si la versión (por ejemplo 2.0.0) de este agente Checkmk disponible en los ports de FreeBSD es igual o ligeramente superior a tu versión de Checkmk actualmente en uso, puedes instalar este agente.

root@bsd:/root # cd /usr/ports/net-mgmt/check_mk_agent
root@bsd:/usr/ports/net-mgmt/check_mk_agent # make install

2.3. Instalación manual

Si la versión disponible en los ports de FreeBSD es anterior a la de tu servidor Checkmk, instala el agente más reciente desde el repositorio de GitHub. Dado que las personalizaciones de las nuevas versiones de FreeBSD no siempre se retroportan a los agentes de versiones anteriores de Checkmk, suele ser una buena idea instalar desde la rama de desarrollo más reciente:

root@bsd:/root # wget -O /usr/local/bin/check_mk_agent https://checkmk.io/3EjKJlt
root@bsd:/root # chmod 0700 /usr/local/bin/check_mk_agent

Si buscas los agentes para otros sistemas BSD o quieres ajustar la rama de desarrollo a una versión específica de Checkmk, localiza la carpeta del agente en Github.

2.4. Prueba en la línea de comandos

Ahora llama al agente en la línea de comandos y echa un vistazo a la salida en el localizador:

root@bsd:/root # check_mk_agent | more
<<<check_mk>>>
Version: 2.1.0i1
AgentOS: freebsd
Hostname: fbsd13
AgentDirectory: /etc/check_mk
DataDirectory:
SpoolDirectory: /var/spool/check_mk_agent
PluginsDirectory: /usr/local/lib/check_mk_agent/plugins
LocalDirectory: /usr/local/lib/check_mk_agent/local

Si no se produce ninguna salida, comprueba de nuevo los requisitos previos, en particular que Bash está instalado en /usr/local/bin.

3. Configurar el acceso a través de la red

3.1. FreeBSD inetd

La forma más sencilla de acceder al agente es el inetd proporcionado con FreeBSD. También puedes utilizar el xinetd de Linux, disponible en la sección security de los Puertos de FreeBSD. Su configuración es exactamente la misma que la descrita en el artículo sobre el agente de Linux. El inetd vincula la salida del agente al puerto TCP 6556 y -si es necesario- restringe el acceso a determinados servidores Checkmk.

En primer lugar, comprueba si tu /etc/services ya contiene una entrada para el puerto 6556:

root@bsd:/root # grep 6556/ /etc/services

Si no es así, Checkmk debe identificarse como un servicio. Para ello, añade la siguiente línea

/etc/servicios
checkmk-agent 6556/tcp #Checkmk monitoring agent

Ahora añade la siguiente línea al archivo de configuración /etc/inetd.conf:

/etc/inetd.conf
checkmk-agent stream tcp nowait root /usr/local/bin/check_mk_agent check_mk_agent

El inetd debe estar siempre activado. Para ello, añade la siguiente línea al archivo /etc/rc.conf:

/etc/rc.conf
inetd_enable="YES"

Si es necesario restringir el acceso, edita el archivo /etc/hosts.allow. Primero comenta la línea que permite el acceso desde cualquier lugar y, a continuación, añade una línea que sólo permita el acceso al servidor Checkmk -en este caso con la dirección IP 10.2.3.4. El primer parámetro es el nombre del comando ejecutado por inetd:

/etc/hosts.allow
# The rules here work on a "first match wins" basis.
# ALL : ALL : allow
sshd : ALL : allow
check_mk_agent : 10.2.3.4 : allow

Una vez realizados los cambios de configuración, reinicia:

root@bsd:/root # reboot

Ahora debería funcionar el acceso al agente desde el servidor de monitorización.

La forma más sencilla de comprobarlo es con netcat o nc. Ejecuta el siguiente comando como usuario del site en el servidor Checkmk para probar la conexión de red al agente (en este ejemplo, al host con la dirección IP 10.2.3.5). La salida del comando se abrevia aquí para mostrar sólo las primeras líneas:

OMD[mysite]:~$ nc 10.2.3.5 6556
<<<check_mk>>>
Version: 2.1.0i1
AgentOS: freebsd

3.2. Seguridad

Como el agente de FreeBSD no soporta actualmente el cifrado, recomendamos usar un túnel SSH en situaciones en las que sea necesario asegurar los datos transferidos. Explicamos cómo configurarlo en el artículo sobre el agente de Linux.

4. Inclusión en la monitorización

La inclusión en la monitorización se realiza mediante un descubrimiento de servicios automático, como en todos los demás sistemas. Para un FreeBSD "desnudo" sin servicios de servidor configurados todavía, deberían descubrirse al menos 12 servicios, y diez adicionales para la información del sistema de archivos si está instalado en ZFS:

List of 12 automatically discovered services.
El descubrimiento de servicios en Checkmk encontrará al menos 12 servicios.

5. Plugin

Debido a la configuración completamente manual, a la falta de distribución automática y a las diferentes rutas de los archivos en comparación con Linux, se recomienda probar los mecanismos de Plugin más importantes, para lo cual se empieza utilizando MRPE.

5.1. MRPE

Crea un archivo de configuración /etc/check_mk/mrpe.cfg con el siguiente contenido:

/etc/check_mk/mrpe.cfg
Flux_Comp /bin/echo 'OK - Flux compensator up and running'

Ahora debería haber una sección MRPE en la salida del agente:

root@bsd:/root # check_mk_agent | grep -A1 '^...mrpe'
<<<mrpe>>>
(echo) Flux_Comp 0 OK - Flux compensator up and running

En el descubrimiento de servicios Flux_Comp aparece ahora como un nuevo servicio:

List with the newly detected service Flux_Comp.
El plugin MRPE se ha configurado correctamente

5.2. Plugins de agente

La instalación de los plugins del agente es la misma que la descrita en el artículo sobre el agente de Linux. Asegúrate de utilizar el Shebang correcto al instalar cualquier plugin. Perl y Python están instalados en /usr/local/bin en FreeBSD, y muchos script shell que funcionan con /bin/sh en Linux requieren en realidad el shell Bourne Again instalado en /usr/local/bin/bash en FreeBSD.

Para la monitorización, es adecuado un simple local check, con el que la evaluación de si el servicio monitorizado está OK, WARN o CRIT se hace directamente en el host monitorizado. Ya que estamos, utilicemos un two-liner para probar el intérprete de Python. De nuevo, observa las diferentes rutas por defecto en comparación con Linux:

/usr/local/lib/check_mk_agent/local/hello.py
#!/usr/local/bin/python3
print("0 \"Hello Beastie\" - Just check paths and Python interpreter!")

No olvides hacer ejecutable el script:

root@bsd:/root # chmod 0755 /usr/local/lib/check_mk_agent/local/hello.py

También en este caso el servicio se encuentra inmediatamente:

List with the newly detected service Hello Beastie.
Se ha encontrado el nuevo servicio "Hello Beastie

6. Archivos y directorios

6.1. Rutas de archivos en el host que está siendo monitorizado

Ruta del archivo Descripción

/usr/local/bin/check_mk_agent

Ubicación de instalación del agente Checkmk en el host de destino.

/usr/local/lib/check_mk_agent

Directorio base para las extensiones del agente.

/usr/local/lib/check_mk_agent/plugins

Plugins que amplían el agente con datos de monitorización adicionales. Los Plugin pueden escribirse en cualquier lenguaje de programación disponible.

/usr/local/lib/check_mk_agent/local

Ubicación de almacenamiento para los checks locales personalizados .

/var/spool/check_mk_agent

Contiene datos creados por cronjobs, por ejemplo, e incluye su propia sección. También se añaden a la salida del agente.

/etc/check_mk

Ubicación de almacenamiento para los archivos de configuración del agente.

/etc/check_mk/mrpe.cfg

Fichero de configuración para MRPE- para ejecutar Plugins de check clásicos compatibles con Nagios.

Atención: No hay rutas de archivo por defecto definidas para FreeBSD, como las hay para Linux por debajo de /var/lib/check_mk_agent. Elige una ubicación adecuada e introdúcela en el script del agente.

En esta página