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
Además de la monitorización convencional —es decir, la monitorización de datos de estado, registros y mediciones—, Checkmk incluye otra función completamente diferente prácticamente sin coste alguno: el inventario de hardware/software (o inventario HW/SW, para abreviar). Esto permite identificar automáticamente elementos en tus hosts, como, por ejemplo:
¿Qué paquetes de software —y qué versiones de estos— están instalados en un servidor?
¿Qué tipo de componentes de RAM tiene un servidor?
¿Qué versión de BIOS está instalada en la placa base?
Los números de serie de los discos duros instalados.
¿Hay algún puerto en un conmutador que no se haya utilizado durante un tiempo (y que, por lo tanto, probablemente esté libre)?
… y mucho más
Los datos obtenidos de esta manera se muestran por host en un árbol estructurado y en otras vistas, y también están disponibles a través de una API. Aquí tienes un pequeño ejemplo con datos de la CPU:

hardware.cpu
Con el inventario de hardware y software puedes realizar diversas tareas, como:
Proporcionar datos sobre el software instalado para un sistema de gestión de licencias
Determinar las referencias de los repuestos para pedidos (RAM, discos duros, ventiladores)
Proporcionar datos generales de hardware y software para importarlos regularmente a las CMDB, de modo que se basen en datos actuales
Realizar un seguimiento de los cambios en el hardware o el software, por ejemplo, para determinar cuándo se realizó una actualización específica del BIOS
Recibir notificaciones si ha habido algún cambio en el hardware o el software
Identificar los servidores en los que aún no se ha instalado un service pack específico
La ventaja más importante frente a otros sistemas similares es obvia: simplemente puedes aprovechar la infraestructura existente de Checkmk y ahorrarte el esfuerzo de configurar y administrar otro entorno de software. Solo tienes que implementar un único complemento de agente adicional. Esto ni siquiera es necesario con dispositivos SNMP, ya que el escáner de inventario también es compatible con SNMP y simplemente obtiene los datos por esta vía.
Además, Checkmk no necesita esconderse detrás de otros escáneres de inventario. Al igual que con nuestros complementos de comprobación, trabajamos constantemente para ampliar el escaneo de datos. Cada versión de Checkmk trae nuevos complementos para el escáner de inventario, y la información que se puede recopilar es cada vez más detallada y extensa.
Más allá de los complementos disponibles, también puedes desarrollar tus propios complementos de inventario utilizando una API de inventario dedicada. Encontrarás información sobre el desarrollo de complementos de inventario en un artículo aparte.
2. Instalación
La instalación del inventario de hardware y software se realiza en dos pasos. El requisito previo es que el agente de Checkmk ya esté instalado en los hosts (si estos no se supervisan a través de SNMP):
Activa el inventario para los hosts que quieras
Instala el complemento del agente de inventario en estos hosts
2.1. Activar el inventario para los hosts deseados
Crear la regla
Como siempre, si quieres configurar algo para hosts específicos, también puedes hacerlo con ayuda de una regla.
Este conjunto de reglas se encuentra en Setup > Hosts > HW/SW Inventory rules > Do HW/SW Inventory.
Por supuesto, es aún más fácil usar la búsqueda de reglas con la palabra «inventory».
No lo confundas con el conjunto de reglas «HW/SW Inventory (Linux, Windows, Solaris, AIX)», que es para el complemento del agente, como veremos más adelante.
En el conjunto de reglas Do HW/SW Inventory, algunas reglas que hacen referencia a etiquetas de host ya están activas por defecto. Si los hosts que te interesan tienen una etiqueta de este tipo, el servicio de inventario de hardware y software ya está configurado. Si no es así, tendrás que crear una nueva regla.
Usa
Add rule para crear una nueva regla para los hosts en los que quieras activar el inventario.
Allí encontrarás varias opciones:

Por ahora, deja todo tal y como está preconfigurado. Las distintas opciones que verás aquí se explican a continuación.
La próxima vez que se activen los cambios, la regla que acabas de crear generará, para cada host, una comprobación activa que recopilará todos los datos de inventario de ese host, ya sea a partir de los datos recibidos de un agente normal de Checkmk o mediante consultas SNMP adicionales. El nuevo servicio Check_MK HW/SW Inventory se puede encontrar en los hosts de la lista de servicios, y tendrá un aspecto similar a este:

No te preocupes si la comprobación solo ha encontrado unos pocos elementos: esto se debe a que aún no hemos implementado el complemento.
Definición del intervalo
Los datos de inventario rara vez cambian y, de todos modos, detectar un cambio no suele ser urgente. Por eso, tiene sentido usar un intervalo ajustado durante el cual se realiza la comprobación de inventario, en lugar de limitarse a usar el intervalo habitual de un minuto —principalmente porque el procesamiento de los datos de inventario en la comprobación activa requiere mucho más tiempo de cálculo que el de un servicio normal.
Los sitios de Checkmk tienen, por defecto, una regla en el conjunto de reglas «Setup > Service monitoring rules > Service Checks > Normal check interval for service checks» que establece el intervalo en un día para todos los servicios con el nombre «Check_MK HW/SW Inventory»:

Por supuesto, si consideras que una vez al día es insuficiente, también puedes personalizar esta regla, por ejemplo, a cuatro u ocho horas. Naturalmente, siempre existe la opción de configurarlo de forma diferente utilizando varias reglas para distintos hosts.
2.2. Implementación del complemento del agente de inventario en estos hosts
El paso más importante es instalar el complemento del agente para el inventario en los hosts correspondientes. Puedes hacerlo manualmente o con Agent Bakery (solo ediciones comerciales).
Instalación manual
Para una instalación manual, primero necesitas el complemento. Lo encontrarás en las ediciones comerciales a través de la página Setup > Agents > Windows, Linux, Solaris, AIX > Related, y en Checkmk Community directamente en Setup > Agents. En todas las ediciones, encontrarás entradas de menú para los distintos sistemas operativos.
Dependiendo del sistema operativo, utiliza el siguiente complemento en el cuadro «Plug-ins»:
| Sistema operativo | Complemento |
|---|---|
Windows |
|
Linux |
|
AIX |
|
Solaris |
|
También puedes encontrar estos archivos en la línea de comandos del sitio de Checkmk, en el subdirectorio
~/share/check_mk/agents/plugins(Linux/Unix) o en ~/share/check_mk/agents/windows/plugins (Windows).
Copia el complemento en los hosts de destino, en el directorio correcto para complementos.
Para el agente de Windows es C:\ProgramData\checkmk\agent\plugins.
Para más detalles, consulta el artículo sobre el agente de Windows.
Para Linux y Unix, el directorio es /usr/lib/check_mk_agent/plugins.
Asegúrate de que el archivo sea ejecutable (chmod +x).
Para más detalles, consulta los artículos sobre el agente de Linux.
Lo importante es que Checkmk llame al agente, normalmente una vez por minuto. Sin embargo, el complemento del agente de inventario requiere más tiempo de procesamiento que los complementos normales porque, por ejemplo, debe buscar el software instalado en muchos directorios. Además, genera cantidades de datos significativamente mayores. Por eso se ha diseñado para generar y entregar nuevos datos solo cada cuatro horas (14 400 segundos).
Así que, si por alguna razón importante has especificado un intervalo inferior a cuatro horas para tu comprobación de inventario, en realidad solo obtendrás datos nuevos cada cuatro horas. Si realmente quieres recopilar más datos, en ese caso tendrás que modificar el intervalo de cálculo predeterminado.
En Windows, cambia el número directamente en el archivo del complemento.
Busca el número «14400» y cámbialo por un número diferente de segundos.
La ubicación donde se encuentra es la siguiente (detalle):
En Linux y Unix esto funciona de forma un poco diferente.
Para ello, crea un archivo de configuración /etc/check_mk/mk_inventory.cfg con la siguiente línea (aquí, en el ejemplo, con 7200 segundos):
Una nota más: El propio complemento del agente de inventario establece que solo se ejecute cada cuatro horas. Por lo tanto, no utilices el mecanismo del agente para ejecutar complementos de forma asíncrona a intervalos más largos. Instala el complemento de la forma sencilla y habitual para su ejecución directa.
Configuración mediante Agent Bakery
Por supuesto, si utilizas Agent Bakery en las ediciones comerciales para configurar tus agentes, todo es mucho más sencillo.
Solo hay un conjunto de reglas llamado «HW/SW Inventory (Linux, Windows, Solaris, AIX)», independiente del sistema operativo.
Este conjunto de reglas controla la implementación del complemento necesario, así como su configuración.
Se encuentra en Setup > Agents > Windows, Linux, Solaris, AIX > Agents > Agent rules:

En Windows, además del intervalo, también puedes especificar rutas en las que buscar archivos ejecutables .EXE a la hora de localizar el software instalado en el sistema.
También puedes configurar las rutas en el registro de Windows, que se deben tener en cuenta como indicador del software instalado.
2.3. Pruebas
Si has implementado el complemento correctamente, deberías encontrar muchos más registros la próxima vez que ejecutes la comprobación de inventario del host. El resultado tendrá entonces este aspecto:

3. Trabajar con los datos de inventario
Por supuesto, los datos de inventario están disponibles para cada host individual, en parte como árbol y en parte como tabla. A continuación se muestra cómo funcionan exactamente y cómo puedes acceder a ellos. Sin embargo, también hay vistas, especialmente búsquedas, que afectan a todo tu entorno de hosts. Puedes acceder a ellas a través de la entrada «HW/SW Inventory» en el menú «Monitor»:

3.1. Visualización en forma de árbol
Los datos de inventario de los hosts se muestran, por un lado, en una vista con estructura de árbol por host y, por otro, en forma de tabla. Puedes abrir el diagrama de árbol, por ejemplo, en una vista de host a través de la opción de menú «Host > HW/SW Inventory > Inventory of host».
Como alternativa, en las vistas que muestran una lista de hosts, puedes abrir el menú «
» de un host y, desde allí, abrir el inventario «
»:

En ambos casos, obtendrás la vista en árbol de los datos de inventario del host.
Partiendo de las tres categorías básicas Hardware
, Networking
y Software
, puedes expandir y contraer las subramas del árbol:

En la imagen de arriba puedes ver, detrás de cada entrada, las rutas del inventario entre paréntesis, que puedes mostrar usando Display > Modify display options y la opción Show internal tree paths:

A continuación, verás las designaciones internas en el inventario; así, por ejemplo, la ruta interna de la sección «Processor» se llama «hardware.cpu».
Las designaciones del modelo y la arquitectura de la CPU —model y arch— se encuentran más abajo, en los datos de la CPU.
Puedes usar estas designaciones internas para habilitar solo rutas individuales para grupos de contactos.
Los usuarios de un grupo de contactos al que solo se le hayan asignado las entradas hardware.cpu, model y arch que se muestran arriba verán entonces solo un inventario reducido:

3.2. Visualizaciones tabulares
Muchos de los datos del inventario son valores individuales en rutas muy específicas del árbol, por ejemplo, la entrada Hardware > System > Manufacturer > Apple Inc.. Pero también hay lugares en el árbol con tablas de objetos similares. Una muy importante es, por ejemplo, la tabla Software > Packages:

Lo especial de esta parte de los datos de inventario es que puedes acceder a los paquetes en una vista separada a través de Host > HW/SW Inventory > Software packages.
Allí encontrarás filtros de
específicos para buscar en los paquetes (muy recortados en la imagen):

También puedes buscar en paquetes de software en varios hosts. La vista correspondiente se encuentra en el menú Monitor, en «Monitor > HW/SW Inventory > Search software packages». Todas las demás vistas de tabla del inventario también aparecen en el menú «Monitor», incluidas búsquedas adicionales, por ejemplo, de datos específicos de Oracle.
Ten en cuenta que muchos filtros generales para los hosts no están disponibles de forma predeterminada en las vistas. Estos se obtienen al editar la vista y añadir filtros de host adicionales.
Otras cosas que puedes hacer con las vistas:
Incluirlas en informes
Exportarlas como PDF o CSV
Integrarlas en paneles de control
Por cierto, también puedes incluir esos datos de inventario en vistas que no sean de tipo tabla. Hay un tipo de columna para cada ruta conocida en el árbol de inventario, que puedes añadir a las vistas de hosts. Un ejemplo de esto es la vista predefinida «CPU inventory of all hosts». Se trata de una tabla de hosts que muestra datos adicionales del inventario por host. Aquí tienes un ejemplo de una de las definiciones de columna que añade una columna a la tabla con el número de CPU físicas del host:

4. Historial de datos de inventario
Una vez que hayas configurado el inventario de hardware y software de un host, Checkmk registrará cada cambio en los datos de inventario y también guardará su historial. Puedes encontrarlos en las vistas con datos de inventario a través de Host > HW/SW Inventory > Inventory history of host.
Aquí tienes un extracto del historial. En la tabla puedes ver algunos datos de IP que han cambiado desde la última comprobación:

Si lo deseas, puedes recibir una notificación cada vez que se produzca un cambio en el software o el hardware. Esto se hace a través del estado del servicio Check_MK HW/SW Inventory. Para ello, edita la regla que creaste al principio de este artículo (en el conjunto de reglas «Do HW/SW Inventory»). Allí, en el valor de la regla, encontrarás una serie de ajustes que afectan al historial. El siguiente ejemplo configura el servicio WARN para que se active si se producen cambios en el software o el hardware:

La próxima vez que la comprobación de inventario detecte cambios, se dirigirá a WARN. Entonces tendrá este aspecto:

En la siguiente ejecución de la comprobación, y si entretanto no ha cambiado nada, esto se restablece automáticamente a OK. Al activar manualmente la ejecución, también tienes la posibilidad de restablecer manualmente el servicio a OK si no quieres esperar a la siguiente ejecución periódica normal.
5. Datos de estado
El árbol de datos de inventario se puede actualizar automáticamente con los datos de estado más recientes y adecuados. Esto resulta muy útil en algunos casos. Un ejemplo de ello son los espacios de tabla de Oracle. Los datos de inventario reales solo contienen información relativamente estática, como el SID, el nombre y el tipo. Los datos de estado actuales pueden complementar esto con información sobre el tamaño actual, el espacio libre, etc.
Si quieres ver los datos de estado en tu árbol (y no hay nada de malo en ello), solo tienes que activar la opción correspondiente en la regla que creaste al principio en «Do HW/SW Inventory»:

Por cierto, ¡un cambio en los datos de estado no provocará cambios en el historial! Esto casi siempre llevaría a cambios constantes y haría que esta función fuera inútil. Los datos de estado no se almacenan en archivos, sino que, al igual que los resultados de las comprobaciones, se guardan directamente en la memoria principal del núcleo de monitorización.
6. Acceso externo a los datos
6.1. Acceso a través de la API web propia
Puedes exportar los datos de inventario de hardware y software de un host a través de la propia API web del inventario.
Nota: La API web del inventario que se menciona aquí no es la API web que se eliminó de Checkmk en la versión 2.2.0.
Su URL es:
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost
El formato de salida en este caso es código fuente de Python.
Si prefieres JSON, añade &output_format=json a la URL:
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=json
El resultado se ve más o menos así en forma abreviada:
Del mismo modo, también puedes solicitar la salida en XML:
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=xml.
Si introduces la URL correspondiente en la barra de direcciones de tu navegador, verás el resultado inmediatamente, ya que ya has iniciado sesión en Checkmk. Los datos del inventario de hardware y software se encuentran en el archivo de salida, en la sección que sigue a la clave «result». Desde un script, lo mejor es autenticarse como usuario de automatización.
En caso de error, por ejemplo, si no se ha encontrado el host especificado, el valor de «result_code» se establece en 1 y se muestra el mensaje de error correspondiente:
{"result": "Found no inventory data for this host.", "result_code": 1}
Consulta de varios hosts
También puedes consultar los datos de inventario de hardware y software de varios hosts en una sola salida. Para ello, amplía la consulta a todos los hosts necesarios:
http://myserver/mysite/check_mk/host_inv_api.py?request={"hosts":["myhost","myhost2"]}&output_format=json
El resultado de esta consulta será casi idéntico a la salida anterior. Sin embargo, en el nivel superior, se utilizan los nombres de los hosts como claves. A continuación, la información de los hosts aparece en los árboles de directorios:
Si no se encuentran datos de inventario para un host, ese host tendrá una entrada de inventario vacía en lugar del mensaje de error.
Restringir la consulta a datos específicos
Es posible que no quieras consultar todos los datos de inventario, sino buscar solo información específica. Si ese es el caso, especifica las llamadas rutas de inventario para centrarte en la información que deseas. De este modo, solo recibirás información de aquellos hosts que tengan esas rutas o esa información.
Por ejemplo, para ver solo la información total de almacenamiento y espacio de intercambio del host myhost, utiliza esta URL:
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&request={"paths":[".hardware.memory.total_ram_usable",".hardware.memory.total_swap"]}&output_format=json
Recibirás la información solicitada:
6.2. Acceso a través de un archivo
Como alternativa, puedes simplemente leer los archivos que genera el propio Checkmk.
Estos se encuentran en formato Python en el directorio ~/var/check_mk/inventory.
Para cada host hay un archivo sin comprimir (por ejemplo, myhost) y otro comprimido (por ejemplo, myhost.gz).
7. Inventario en la supervisión distribuida
En las ediciones comerciales, el inventario de hardware y software también funciona en la supervisión distribuida.
Aquí, los datos de inventario los determinan primero los sitios locales y se guardan localmente en
~/var/check_mk/inventory/.
El demonio proxy de Livestatus transferirá periódicamente todos los datos de inventario actualizados desde el sitio remoto al sitio central, y también los almacenará en ~/var/check_mk/inventory/.
Esto es importante porque estos datos son demasiado grandes para recuperarlos en tiempo real cuando se solicitan en ese momento.
En cuanto el sitio central realiza consultas sobre los datos de inventario, estos archivos se leen y luego se fusionan con los datos de estado actuales, que a su vez se recuperan de los sitios remotos a través de Livestatus.
En resumen: no tienes que preocuparte por nada.
No hay ningún proxy de Livestatus en Checkmk Community, por lo que el inventario de hardware/software está incompleto en la interfaz gráfica de usuario del sitio central y solo muestra los datos de estado.
Puedes echarte una mano transfiriendo regularmente los archivos del directorio
~/var/check_mk/inventory/ al sitio central con un script o algo similar.
Basta con copiar los archivos sin la extensión .gz.
Para una transmisión de datos eficiente, es adecuado, por ejemplo, rsync.
8. Archivos y directorios
8.1. Directorios en el servidor Checkmk
| Ruta | Descripción |
|---|---|
|
Ubicación de almacenamiento de los complementos de agente para Linux y Unix |
|
Ubicación de almacenamiento de los complementos de agente para Windows |
|
Datos de inventario de hosts individuales como archivos Python (comprimidos y sin comprimir) |
8.2. Directorios en los hosts supervisados
| Ruta | Descripción |
|---|---|
|
Ubicación de almacenamiento del complemento de inventario del agente de Windows |
|
Ubicación de almacenamiento del complemento de inventario para el agente de Linux/Unix |
|
Configuración del complemento de inventario para el agente de Linux/Unix |
