![]() |
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
checkmk-agent 6556/tcp #Checkmk monitoring agent
Ahora añade la siguiente línea al archivo de configuración /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
:
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
:
# 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:

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:
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:

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/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:

6. Archivos y directorios
6.1. Rutas de archivos en el host que está siendo monitorizado
Ruta del archivo | Descripción |
---|---|
|
Ubicación de instalación del agente Checkmk en el host de destino. |
|
Directorio base para las extensiones del agente. |
|
Plugins que amplían el agente con datos de monitorización adicionales. Los Plugin pueden escribirse en cualquier lenguaje de programación disponible. |
|
Ubicación de almacenamiento para los checks locales personalizados . |
|
Contiene datos creados por cronjobs, por ejemplo, e incluye su propia sección. También se añaden a la salida del agente. |
|
Ubicación de almacenamiento para los archivos de configuración del agente. |
|
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.