![]() |
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 los datos de estado, registro y medición-, Checkmk incluye otra función completamente distinta y prácticamente gratuita: el inventario de hardware/software (o inventario de HW/SW, para abreviar), que puede identificar automáticamente elementos de tus hosts, como, por ejemplo:
¿Qué paquetes de software -y qué versiones de los mismos- 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.
Si hay puertos de un switch que no se utilizan desde hace tiempo (y que, por tanto, probablemente estén libres).
... y mucho más
Los datos obtenidos de este modo se muestran por host en un árbol estructurado, y en varias otras vistas, y también están disponibles a través de una API. He aquí un pequeño ejemplo con los datos de la CPU:

hardware.cpu
Con el Inventario de hardware/software puedes realizar diversas tareas, como:
Proporcionar datos sobre el software instalado para un sistema de gestión de licencias
Determinar designaciones de tipo para pedidos de piezas de repuesto (RAM, discos duros, ventiladores)
Proporcionar datos generales de hardware y software para su importación periódica a las CMDB, de modo que éstas se basen en datos actuales
Realizar un seguimiento de los cambios de hardware o software, por ejemplo, para determinar cuándo se realizó una actualización específica de la BIOS
Estar informado si algo ha cambiado en el hardware o el software
Identificar servidores a los que aún no se les ha instalado un paquete de servicio específico
La ventaja más importante sobre otros sistemas comparables es obvia: puedes utilizar simplemente la infraestructura existente de Checkmk y ahorrarte el esfuerzo de desplegar y administrar otro entorno de software. Sólo tienes que desplegar un único plugin de agente adicional. Esto ni siquiera es necesario con dispositivos SNMP, porque el escáner de inventario también admite SNMP y simplemente obtiene los datos por esta vía.
Y además, Checkmk no necesita esconderse detrás de otros escáneres de inventario. Al igual que con nuestros check plugins, trabajamos constantemente para ampliar el escaneo de datos. Cada versión de Checkmk aporta nuevos plugins para el escáner de inventario, y la información que se puede recopilar es cada vez más detallada y amplia.
2. Instalación
La instalación del Inventario de HW/SW se realiza en dos pasos. El requisito previo es que ya se haya instalado el agente Checkmk en los host (si éstos no están siendo monitorizados vía SNMP):
Activa el inventario para los host deseados
Despliega el plugin de agente de inventario en estos hosts
2.1. Activar el inventario para los host deseados
Crear la regla
Como siempre, si quieres configurar algo para hosts específicos, también es posible con la ayuda de una regla. Este conjunto de reglas se encuentra en Setup > Hosts > HW/SW inventory rules > Do hardware/software inventory.. Por supuesto, es aún más fácil utilizando la búsqueda de reglas con la palabra inventory
. No confundas esto con el conjunto de reglas Hardware/Software-Inventory (Linux, Windows, Solaris, AIX), que es para el plugin de agente, como veremos más adelante.
En el conjunto de reglas Do hardware/software inventory, algunas reglas que se refieren a las etiquetas de host ya están activas por defecto. Si los hosts que quieres tienen esa etiqueta, el servicio para el inventario de HW/SW ya está configurado. Si no, tienes que crear una regla nueva.
Utiliza Add rule para crear una nueva regla para los host para los que quieras activar el inventario. Allí encontrarás varias opciones de configuración:

Por ahora deja todo como está preestablecido. Las distintas opciones que verás aquí se comentan a continuación.
En la siguiente activación de cambios, la regla que acabas de crear generará, para cada host, un check activo que recogerá todos los datos de inventario de ese host, ya sea a partir de los datos que se reciben de un agente Checkmk normal, o a través de 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 parecido a éste:

Por favor, no te preocupes porque el check sólo haya encontrado unos pocos items - esto se debe a que aún no hemos desplegado el Plugin.
Definir el intervalo
Los datos de inventario son algo que raramente cambia, y reconocer un cambio no suele ser crítico para el tiempo de todos modos. Por ello, tiene sentido utilizar un intervalo ajustado durante el cual se realiza la comprobación de inventario, en lugar de utilizar simplemente el intervalo habitual de un minuto, principalmente porque el proceso de los datos de inventario en la comprobación activa requiere un tiempo de computación significativamente mayor que el de un servicio normal.
Los sites Checkmk tienen de serie una regla en el conjunto de reglas Setup > Service monitoring rules > Service Checks > Normal check interval for service checks que fija el intervalo en un día para todos los servicios con el nombre Check_MK HW/SW Inventory:

Por supuesto, si te parece insuficiente una vez al día, también puedes personalizar esta regla, por ejemplo, a cuatro u ocho horas. Naturalmente, también existe siempre la opción de configurarla de forma diferente utilizando varias reglas para distintos host.
2.2. Desplegar el plugin de agente de inventario en estos hosts
El paso más importante es instalar el plugin de agente para el inventario en los host correspondientes. Puedes hacerlo manualmente o con el Agent bakery (sólo ediciones comerciales).
Instalación manual
Para realizar una instalación manual, primero necesitas el Plugin. Lo encontrarás en las ediciones comerciales a través de la página Setup > Agents > Windows, Linux, Solaris, AIX > Related, y en Checkmk edición Raw 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 Plugin en la caja Plugins:
Sistema operativo | Plugin |
---|---|
Windows |
|
Linux |
|
AIX |
|
Solaris |
|
También puedes encontrar estos archivos en la línea de comandos del site de Checkmk, en el subdirectorioshare/check_mk/agents/plugins
(Linux/Unix), o en share/check_mk/agents/windows/plugins
(Windows).
Copia el Plugin en los host de destino en el directorio correcto para plugins. 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 es ejecutable (chmod +x
). Para más detalles, consulta los artículos sobre el agente de Linux.
Lo importante es que el agente sea llamado por Checkmk, normalmente una vez por minuto. El plugin de agente de inventario, sin embargo, requiere más tiempo de proceso que los plugins normales porque, por ejemplo, debe buscar el software instalado en muchos directorios. También genera cantidades de datos significativamente mayores. Por eso se ha diseñado para que sólo genere y entregue nuevos datos cada cuatro horas (14400 segundos).
Por tanto, si por alguna razón importante has especificado un intervalo inferior a cuatro horas para tu check de inventario, en realidad sólo obtendrás nuevos datos cada cuatro horas. Si realmente quieres recopilar más datos, en tal caso tendrás que modificar el intervalo de cálculo por defecto.
Para Windows, sustituye el número directamente en el archivo Plugin. Busca el número 14400
y sustitúyelo por otro número de segundos. La ubicación donde se encuentra tiene el siguiente aspecto (detalle):
Dim delay
Dim exePaths
Dim regPaths
'These three lines are set in the agent bakery
delay = 14400
exePaths = Array("")
regPaths =
Array("Software\Microsoft\Windows\CurrentVersion\Uninstall","Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")
En Linux y Unix esto funciona 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):
INVENTORY_INTERVAL=7200
Una nota más: el propio plugin de agente de inventario dicta que sólo se ejecute cada cuatro horas. Por tanto, no utilices el mecanismo del agente para ejecutar asíncronamente plugins a intervalos más largos. Instala el Plugin de la forma sencilla y habitual para su ejecución directa.
Configuración mediante el Agent bakery
Por supuesto, si utilizas la Agent bakery en las ediciones comerciales para configurar tus agentes, las cosas son mucho más sencillas. Sólo hay un conjunto de reglas llamado Hardware/Software-Inventory (Linux, Windows, Solaris, AIX), independiente del sistema operativo. Este conjunto de reglas controla el despliegue del Plugin necesario, así como su configuración. Se encuentra en Setup > Agents > Windows, Linux, Solaris, AIX > Agents > Agent rules:

Para Windows, además del intervalo también puedes especificar las rutas en las que buscar los archivos ejecutables .EXE
a la hora de encontrar el software instalado en el sistema. También puedes configurar las rutas en el registro de Windows, que debe tenerse en cuenta como indicador del software instalado.
2.3. Probando
Si has desplegado el Plugin correctamente, deberías encontrar bastantes más registros la próxima vez que ejecutes el check de inventario del host. El resultado tendrá entonces este aspecto:

3. Trabajar con los datos del inventario
Los datos del inventario están disponibles, por supuesto, para cada host individual, en parte como árbol y en parte como representación de 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 host. Puedes acceder a ellas a través de la entrada Inventory del menú Monitor:

3.1. Visualización estructurada en árbol
Los datos del inventario de hosts se muestran, por un lado, en una visualización estructurada en árbol por host y, por otro, en forma de tabla. Puedes abrir el diagrama de árbol, por ejemplo, en una vista de host mediante el elemento de menú Host > Inventory > Inventory of host.
Alternativamente, en las vistas de lista de hosts, puedes invocar el menú de un host y a su vez invocar el inventario desde él:

En ambos casos acabas con la vista de tabla de los datos de inventario del host. Partiendo de las tres categorías básicas Hardware, Networking y Software, puedes expandir y contraer las sub-ramas del árbol:

En la imagen anterior puedes ver detrás de las entradas individuales las rutas de inventario entre paréntesis, que puedes visualizar utilizando Display > Modify display options y la opción Show internal tree paths:

Entonces verás las designaciones internas del inventario, así por ejemplo la ruta interna de la sección Processor
se llama hardware.cpu
. Las designaciones del modelo y arquitectura de la CPU -model
y arch
- se encuentran más abajo en los datos de la CPU.
Puedes utilizar estas designaciones internas para habilitar sólo rutas individuales para los grupos de contacto. Los usuarios de un grupo de contacto al que sólo se le hayan asignado las entradas hardware.cpu
, modelo y arco mostradas anteriormente, verán entonces sólo un inventario recortado:

3.2. Visualizaciones tabulares
Muchos de los datos del inventario son valores individuales bajo rutas muy específicas en el á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 del inventario es que puedes llamar a los paquetes en una vista separada a través de Host > Inventory > Software packages. Allí encontrarás filtros específicos para buscar en los paquetes (muy recortados en la imagen):

También puedes buscar en paquetes de software en varios host. La vista correspondiente se encuentra en el menú Monitorización, en Monitor > Inventory > Search Software packages, o en el snap-in Views de la barra lateral, en Inventory.. Allí también aparecen otras vistas de tabla para el inventario, incluidas otras búsquedas, por ejemplo, de datos específicos de Oracle.
Ten en cuenta que muchos filtros generales para los host no están disponibles por defecto en las vistas, sino que se obtienen cuando editas la vista y añades filtros de host adicionales.
Otras cosas que puedes hacer con las vistas
Incluirlas en informes
Exportarlas como PDF o como CSV
Integrarlas con dashboards
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 de inventario conocida en el árbol de inventario, que puedes añadir a las vistas de hosts. Un ejemplo de ello es la vista de ejemplo 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 del número de CPU físicas del host:

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

Si lo deseas, puedes ser informado 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 hardware/software inventory ). Allí, para el valor de la regla encontrarás una serie de ajustes que afectan al historial. El siguiente ejemplo configura el servicio WARN si se producen cambios en el software o el hardware:

La próxima vez que el check de inventario detecte cambios, pasará a WARN. Entonces tendrá el siguiente aspecto:

En la siguiente ejecución del check, y si mientras tanto no ha cambiado nada, se restablece automáticamente a OK. Activando manualmente la ejecución también tienes una forma 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 puede actualizarse automáticamente con los últimos datos de estado adecuados. Esto es muy útil en algunos casos. Un ejemplo de ello son los tablespaces de Oracle.Los datos de inventario actuales sólo 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 datos de estado en tu árbol (y no hay nada malo en ello), sólo tienes que activar la opción correspondiente en la regla que creaste al principio en Do hardware/software inventory:

Por cierto, ¡un cambio en los datos de estado no precipitará cambios en el historial! Esto casi siempre provocaría cambios constantes y haría inútil esta función. Losdatos 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 propia web API
Puedes exportar los datos del inventario de HW/SW de un host a través de la web API propia del inventario.
Nota: La API web propia 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 el código fuente de Python. Si prefieres JSON, añade un &output_format=json
a la URL:
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=json
El resultado se parece a esto de forma abreviada:
result:
Attributes: {}
Nodes:
hardware:
Attributes: {}
Nodes:
memory:
Attributes:
Pairs:
total_ram_usable: 16495783936
total_swap: 1027600384
total_vmalloc: 35184372087808
Nodes: {}
Table: {}
Table: {}
... usw. ...
result_code: 0
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 inmediatamente un resultado, puesto que ya has iniciado sesión en Checkmk. Los datos del inventario de HW/SW se encuentran en el archivo de salida, en la sección posterior a la clave de resultado. Desde un script, es mejor autentificarse como usuario de automatización.
En caso de error, por ejemplo, si no se encuentra el host especificado, el código de resultado se establece en 1 y se imprime un mensaje de error apropiado:
{"result": "Found no inventory data for this host.", "result_code": 1}
Consulta de varios host
También puedes consultar los datos del inventario de HW/SW 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 al de la salida anterior. Sin embargo, en el nivel superior, se utilizan los nombres del host como claves. La información de los hosts sigue a continuación en los árboles de directorios:
result:
myhost:
Attributes: {}
Nodes:
hardware:
Attributes: {}
Nodes:
memory:
Attributes:
Pairs:
total_ram_usable: 16495783936
total_swap: 1027600384
total_vmalloc: 35184372087808
Nodes: {}
Table: {}
Table:
networking:
Attributes:
Pairs:
available_ethernet_ports: 1
hostname: "MyServer"
total_ethernet_ports: 3
total_interfaces: 4
... etc. ...
myhost2:
Attributes: {}
Nodes: {}
Table: {}
result_code: 0
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 concretos
Puede que no quieras consultar todos los datos del inventario, sino sólo buscar información específica. En ese caso, especifica las llamadas rutas de inventario para buscar la información que deseas. Entonces sólo recibirás información de los host que tengan esas rutas / información.
Por ejemplo, para ver sólo la información sobre el almacenamiento total y el 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 de vuelta la información solicitada:
result:
Attributes: {}
Nodes:
hardware:
Attributes: {}
Nodes:
memory:
Attributes:
Pairs:
total_ram_usable: 16495783936
total_swap: 1027600384
Nodes: {}
Table: {}
Table: {}
Table: {}
result_code: 0
6.2. Acceso a través de un archivo
Alternativamente, puedes leer simplemente los archivos que genera el propio Checkmk. Éstos están en formato Python en el directorio ~/var/check_mk/inventory
. Para cada host hay un archivo sin comprimir (por ejemplo, myhost
) y otro en una variante comprimida (por ejemplo, myhost.gz
).
7. Inventario en entornos distribuidos
En las ediciones comerciales, el Inventario de HW/SW también funciona en entornos distribuidos. Aquí los datos del inventario son determinados primero por los sitios locales y almacenados localmente en ~/var/check_mk/inventory
.
El daemon proxy Livestatus transferirá periódicamente todos los datos de inventario actualizados del site remoto al site central, y también los almacenará en ~/var/check_mk/inventory
. Esto es importante porque estos datos son demasiado grandes para recogerlos en vivo cuando se consultan en este momento.
En cuanto el site central realiza consultas sobre los datos de inventario, estos archivos se leen y luego se agrupan con los datos de estado actuales, que luego se recuperan de los sites remotos a través de Livestatus.
En resumen: no tienes que preocuparte de nada.
No hay proxy Livestatus en Checkmk Raw, por lo que el inventario de HW/SW está incompleto en la GUI del sitio central y sólo muestra los datos de estado. Puedes ayudarte transfiriendo regularmente los archivos del directorio ~/var/check_mk/inventory
al sitio central con un script o similar. Basta con copiar los archivos sin la extensión de archivo .gz
. Para una transmisión de datos eficaz es adecuado rsync
, por ejemplo.
8. Archivos y directorios
8.1. Directorios en el servidor Checkmk
Ruta | Descripción |
---|---|
|
Plugins de agente para Linux y Unix |
|
Plugin de agente para Windows |
|
Datos de inventario de hosts individuales como archivos Python (comprimidos y sin comprimir) |
8.2. Directorios en los host monitorizados
Ruta | Descripción |
---|---|
|
Ubicación de almacenamiento para el Plugin de inventario del agente de Windows |
|
Ubicación de almacenamiento del Plugin de inventario para el agente Linux/Unix |
|
Configuración del Plugin de inventario para el agente Linux/Unix |