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 usar FreeBSD en lugar de Linux u otros sistemas tipo Unix: Por ejemplo, la función de contenedores «Jails», disponible desde el año 2000, su alto rendimiento incluso bajo cargas pesadas de E/S, la solidez del sistema de archivos UFS2 o la excelente compatibilidad con el moderno sistema de archivos transaccional ZFS. Checkmk ofrece un agente para FreeBSD basado en el agente para Linux, pero adaptado a las particularidades de FreeBSD, como el uso de diferentes formatos de salida de las herramientas de línea de comandos y distintas convenciones de rutas. Sin embargo, la instalación y las pruebas de funcionamiento deben realizarse en gran parte de forma manual, ya que no hay ninguna opción para empaquetar o implementar 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 agentes disponibles para OpenBSD y NetBSD . La instalación de estos es similar a la que se describe aquí. Si utilizas DragonFly BSD, agradeceríamos que realizaras pruebas y nos enviaras cualquier sugerencia de 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:
Se trata de un script de shell puro, que se puede ejecutar a través de un superservidor de Internet (inetd o xinetd) o un túnel SSH, lo que lo hace ligero y seguro.
En general, en este artículo damos por hecho que tienes cierta 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 de Checkmk pueda leer toda la información útil para la monitorización, es necesario instalar algunas herramientas adicionales:
sysutils/ipmitooldevel/libstatgrabshells/bashlang/python3ftp/wget
Python es opcional en este momento, pero en cualquier caso es necesario para muchos complementos del agente.
Una dependencia especial es bash, ya que el script del agente utiliza una sintaxis que no es compatible ni con el shell de Almquist ni con tcsh.
Se necesita ipmitool para obtener información del hardware.
Instala todas estas dependencias con el siguiente comando:
2.2. Instalación desde los puertos de FreeBSD
Los puertos de FreeBSD contienen un puerto para el agente de Checkmk mantenido por Ian Valentine, que puede incluir parches para que el agente sea compatible con las versiones más recientes de FreeBSD-STABLE. Si la versión (por ejemplo, 2.3.0) de este agente de Checkmk disponible en los puertos de FreeBSD es igual o una versión mayor inferior a la versión de Checkmk que utilizas actualmente, puedes instalar este agente.
También hay un paquete precompilado disponible para el puerto check_mk_agent, que puedes instalar usando pkg:
En la mayoría de los casos, la versión que compiles tú mismo a partir de los puertos estará más actualizada:
2.3. Instalación manual
Si la versión disponible en los puertos de FreeBSD es más antigua que 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:
Si buscas los agentes para otros sistemas BSD o quieres configurar la rama de desarrollo para una versión específica de Checkmk, busca la carpeta del agente en GitHub.
2.4. Prueba en la línea de comandos
Ahora ejecuta el agente en la línea de comandos y echa un vistazo rápido a la salida en el paginador:
Si no se muestra ningún resultado, comprueba de nuevo los requisitos previos, en particular que Bash esté instalado en /usr/local/bin.
3. Configuración del acceso a través de la red
3.1. inetd de FreeBSD
La forma más fácil de acceder al agente es mediante el inetd que viene con FreeBSD.
Como alternativa, el xinetd para Linux está disponible en la sección security de los puertos de FreeBSD.
Su configuración es exactamente la misma que se describe en el artículo sobre el agente para Linux.
El inetd vincula la salida del agente al puerto TCP 6556 y, si es necesario, restringe el acceso a determinados servidores de Checkmk.
Primero, comprueba si tu archivo «/etc/services» ya contiene una entrada para el puerto 6556:
Si no es así, hay que identificar Checkmk como un servicio. Para ello, añade la siguiente línea:
checkmk-agent 6556/tcp #Checkmk monitoring agentAhora añade la siguiente línea al archivo de configuración de /etc/inetd.conf:
checkmk-agent stream tcp nowait root /usr/local/bin/check_mk_agent check_mk_agentEl servicio «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 permita el acceso solo al servidor Checkmk —aquí con la dirección IP 198.51.100.123.
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 : 198.51.100.123 : allowUna vez realizados los cambios de configuración, reinicia:
Ahora el acceso al agente desde el servidor de monitorización debería funcionar.
La forma más fácil de probarlo es con netcat o nc.
Ejecuta el siguiente comando como usuario del sitio en el servidor Checkmk para probar la conexión de red con el agente (en este ejemplo, con el host con la dirección IP 198.51.100.231).
La salida del comando se ha abreviado aquí para mostrar solo las primeras líneas:
3.2. Seguridad
Dado que el agente de FreeBSD no admite actualmente el cifrado, te recomendamos utilizar un túnel SSH en situaciones en las que sea necesario proteger los datos transferidos. Explicamos cómo configurarlo en el artículo sobre el agente de Linux.
4. Inclusión en la supervisión
La inclusión en la supervisión se realiza mediante un descubrimiento automático de servicios, como en todos los demás sistemas. En un FreeBSD «básico» sin servicios de servidor configurados todavía, se deberían detectar al menos 11 servicios, y otros diez adicionales para la información del sistema de archivos si está instalado en ZFS:

5. Complementos
Debido a que la configuración es totalmente manual, a que no hay distribución automática y a que las rutas de los archivos son diferentes a las de Linux, te recomendamos que pruebes los mecanismos de complementos más importantes. Esto se inicia usando 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 aparecer una sección MRPE en la salida del agente:
En el descubrimiento de servicios, Flux_Comp aparece ahora como un nuevo servicio:

5.2. Complementos del agente
La instalación de los complementos del agente es igual a la descrita en el artículo sobre el agente de Linux.
Asegúrate de usar el Shebang correcto al instalar cualquier complemento.
Perl y Python están instalados en /usr/local/bin en FreeBSD, y muchos scripts de shell que funcionan con /bin/sh en Linux en realidad requieren el shell Bourne Again instalado en /usr/local/bin/bash en FreeBSD.
Para realizar pruebas, basta con una simple comprobación local, con la que la evaluación de si el servicio supervisado es OK, WARN o CRIT se realiza directamente en el host supervisado. Ya que estamos, usemos dos líneas de código para probar el intérprete de Python. Una vez más, fíjate en las diferentes rutas predeterminadas en comparación con Linux:
No te olvides de hacer el script ejecutable:
En este caso también se encuentra el servicio inmediatamente:

6. Archivos y directorios
6.1. Rutas de los archivos en el host que se está supervisando
| Ruta de archivo | Descripción |
|---|---|
|
Ubicación de instalación del agente Checkmk en el host de destino. |
|
Directorio base para las extensiones del agente. |
|
Complementos que amplían el agente con datos de supervisión adicionales. Los complementos se pueden escribir en cualquier lenguaje de programación disponible. |
|
Ubicación de almacenamiento para comprobaciones locales personalizadas. |
|
Contiene datos creados, por ejemplo, por tareas cron, e incluye su propia sección. Estos también se añaden a la salida del agente. |
|
Ubicación de almacenamiento de los archivos de configuración del agente. |
|
Archivo de configuración para MRPE: para ejecutar complementos de comprobación clásicos compatibles con Nagios. |
No hay rutas de archivo predeterminadas definidas para FreeBSD, como las hay para Linux más abajo en |
