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

Checkmk tiene una estructura muy modular, y quienes tengan conocimientos de programación en Python pueden ampliar esta estructura en muchos aspectos. Entre otras cosas, es posible ampliar Checkmk con los siguientes elementos:

  • Comprobaciones propias y plugins de agente, incluyendo máscaras de entrada para el entorno de configuración.

  • Plugins propios para el inventario de HW/SW de Checkmk

  • Extensiones para la GUI (vistas de tabla, dashboards, columnas, iconos, etc.).

  • Definiciones de gráficos o Perf-O-Meters

  • Scripts de gestión de notificaciones y alert handler (también en shell u otros lenguajes de scripting).

Todas estas extensiones se pueden implementar colocando archivos adicionales en el directorio ~/local dentro del site de Checkmk. Para gestionar estas extensiones, implementarlas en entornos distribuidos y también compartirlas con otros usuarios, Checkmk ofrece su propio formato de paquete: el paquete de extensión Checkmk, o MKP.

Un MKP puede incluir cualquier conjunto de extensiones que desees —por ejemplo, un conjunto de check plugins que incluya páginas de manual asociadas, entornos de configuración de umbrales y definiciones de métricas asociadas. Además, puede contener ajustes para su distribución a través de Agent bakery. Un MKP tiene un nombre, un número de versión y se puede instalar o eliminar con una simple acción.

Tip

Utiliza un sitio de prueba para crear y personalizar MKP, y copia los MKP al sitio de producción para distribuirlos. Esto te ahorrará dos problemas potenciales principales que surgen cuando los archivos modificados no se empaquetan en MKP a tiempo:

  • Durante la actualización de Checkmk, los archivos modificados localmente se sobrescriben con el estado más reciente del MKP (esto es exactamente lo que le pasó al autor de esta frase).

  • En la monitorización distribuida con configuración centralizada, te preguntas por qué los Plugins de los sitios remotos se comportan de forma diferente a los del sitio central, ya que los sitios remotos siguen recibiendo el último estado empaquetado.

1.1. El Checkmk Exchange

En Checkmk Exchange, los programadores de Plugins pueden proporcionar paquetes para otros usuarios de Checkmk e intercambiarlos entre ellos. Desde Exchange puedes descargar y utilizar extensiones de forma gratuita. Ten en cuenta que los paquetes de Exchange son compartidos voluntariamente por otros usuarios y no tienen ninguna garantía.

Los Plugins mal programados pueden provocar un aumento de la carga de la CPU y del sistema, así como de los requisitos de memoria. Además, es posible que un MKP se haya desarrollado para versiones anteriores de Checkmk y, por lo tanto, no sea totalmente compatible (por ejemplo, con la actualización de la versión 1.6.0 a la versión 2.0.0, Checkmk cambió de Python 2 a Python 3). En casos extremos, puede existir riesgo de pérdida de datos. Por lo tanto, te recomendamos encarecidamente que, antes de utilizar MKP de terceros en un entorno de producción, los instales primero en un site de prueba.

1.2. Herramientas para MKP

Hay dos herramientas para gestionar los MKP:

  • El comando «mkp»

  • En el Menú de configuración, el item Extension Packages (solo ediciones comerciales)

Ahora vamos a presentar ambas herramientas de gestión con más detalle. Son compatibles entre sí, por lo que puedes usar tanto el comando como «Extension Packages» sin «estropear nada».

2. Gestión de paquetes de extensión a través del Menú de configuración

CEE La función para gestionar MKP a través de la GUI solo está disponible en las ediciones comerciales de Checkmk. En el menú «Setup», accede a la administración de MKP a través de «Setup > Maintenance > Extension packages». Aquí puedes instalar, modificar o crear MKP:

mkp manager sidebar
Important

Los MKP obsoletos solo se pueden instalar a través de la línea de comandos. Desde Extension packages, solo puedes instalar (habilitar y activar) los MKP que cumplan los requisitos de versión. Los demás MKP se habilitarán pero no se instalarán (aparecerá el mensaje de error correspondiente).

2.1. Añadir un MKP

Un MKP que hayas descargado de Exchange, por ejemplo, se puede cargar en Checkmk haciendo clic en el botón «Upload package» y, a continuación, estará disponible para su instalación. Para ello, el archivo debe estar presente en el equipo en el que también se ejecuta tu navegador web. El nombre del archivo del paquete debe incluir la extensión .mkp.

mkp manager upload

Tras la instalación, el paquete de extensión estará disponible inicialmente, pero no estará activo. Se encuentra en «All packages (enabled or disabled)»:

mkp manager present not active

2.2. Activación de un MKP

Solo al hacer clic en el icono del enchufe icon install se activará un paquete disponible. Durante la activación, los archivos se instalan en una jerarquía de carpetas bajo ~/local/. El archivo de descripción del paquete también se coloca en ~/var/check_mk/packages/. Tras la activación, el paquete también aparecerá en la lista de MKP habilitados y activosEnabled (active on this site):

mkp manager list active

Ahora realiza la activación de los cambios, tras lo cual todas las funciones del paquete quedarán integradas en el sistema y listas para su uso.

2.3. Desactivación y eliminación de paquetes

La eliminación completa de un paquete también se realiza en dos pasos. Con el botón «icon disabled» (Desactivar), primero desactivas un paquete en la lista de paquetes activos. En este paso se eliminan los archivos instalados, pero el MKP se mantiene; este paso solo revierte la activación.

Con el icono «icon delete» de la lista de todos los paquetes, puedes volver a eliminar los paquetes instalados y no utilizados. Al eliminarlos, el paquete se borra y, con él, la extensión se elimina por completo, es decir, lo contrario de añadir un paquete.

2.4. MKP en entornos distribuidos

En el caso de una monitorización distribuida con configuración centralizada, basta con que los paquetes estén disponibles en el sitio central. Para cada sitio remoto asociado al sitio central, puedes determinar por separado si las personalizaciones deben propagarse a ese sitio remoto. Todo lo que tienes que hacer es activar la opción «Replicate extensions». Después de eso, los MKP y todos los demás cambios dentro del directorio «~/local» también se transferirán durante una sincronización.

mkp distr wato

Si no deseas una transferencia concreta, simplemente desactiva la opción para este o todos los sites.

Importante: Las personalizaciones de la configuración central solo se transferirán si la opción «Enable replication» está configurada en «Push configuration to this site».

2.5. Un caso especial: paquetes habilitados pero inactivos

Una situación especial es el intento de activación de un paquete que no tiene coincidencia con la versión de Checkmk utilizada. Un paquete de este tipo, que está habilitado pero cuya activación falla debido a una versión de Checkmk incompatible, acabará en la lista Enabled (inactive on this site).

mkp manager all states

Pero, ¿por qué instalar paquetes que no tienen coincidencia con la versión de Checkmk que estás usando? Hay dos buenas razones posibles:

  1. Una actualización de la versión de Checkmk: Tienes la posibilidad de almacenar paquetes tanto para la versión antigua como para la nueva; cuando realices la próxima actualización, el paquete más reciente se activará automáticamente.

  2. Monitorización distribuida: Para facilitar las actualizaciones, la versión principal de Checkmk de los sitios remotos puede ser una superior a la del sitio central. Sin embargo, esto dificultaba anteriormente la distribución de MKP, ya que estos tenían que ser compatibles con ambas versiones principales. Con la posibilidad de desbloquear paquetes no coincidentes, puedes mantener en el sitio central paquetes que coincidan tanto con la versión de origen como con la de destino. La versión más reciente se activará entonces automáticamente durante una actualización.

A partir de los números de versión que se muestran en la captura de pantalla anterior, puedes ver que se trata de un site central de Checkmk 2.1.0 que proporciona paquetes para sitios remotos que ya se han actualizado a 2.2.0.

3. Gestión de paquetes de extensiones mediante la línea de comandos

También puedes realizar todas las acciones anteriores desde la línea de comandos. Para ello se utiliza el comando `mkp`. Si lo ejecutas sin ningún subcomando, te muestra sugerencias sobre cómo utilizarlo. Hemos abreviado la salida, que tiene unas 50 líneas, a menos de la mitad para que resulte más claro:

OMD[mysite]:~$ mkp
usage: mkp [-h] [--debug] [--verbose] {find,inspect,show,show-all,files,list,add,...}

Command line interface for the Checkmk Extension Packages

options:
  -h, --help            show this help message and exit
  --debug, -d
  --verbose, -v         Be more verbose

available commands:
  {find,inspect,show,show-all,files,list,add,...}
    find                Show information about local files.
    inspect             Show manifest of an MKP file.
    show                Show manifest of a stored package.
    show-all            Show all manifests.
    files               Show all files beloning to a package.
    list                Show a table of all known files, including the deployment state.
    add                 Add an MKP to the collection of managed MKPs.
[...]
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

En las siguientes secciones, te presentaremos los comandos más importantes para gestionar los MKP. Al final de este artículo encontrarás una tabla con una referencia útil de los comandos.

3.1. Añadir un MKP

La adición de un paquete se realiza con mkp add. Para ello, por supuesto, primero debes subir el archivo MKP al servidor Checkmk (por ejemplo, con scp). A continuación, ejecuta el siguiente comando:

OMD[mysite]:~$ mkp add /tmp/hello_world-0.2.5.mkp
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Solicitas una lista de los paquetes disponibles con mkp list. Tras una instalación, el paquete de extensión está inicialmente disponible, pero no activo; en la lista aparecerá con el estado «Disabled»:

OMD[mysite]:~$ mkp list
Name        Version Title        Author                 Req. Version Until Version Files State
----------- ------- ------------ ---------------------- ------------ ------------- ----- --------
hello_world 0.2.5   Hello world! Checkmk knowledge team 2.3.0b1      2.5.99        8     Disabled
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

3.2. Activación de un MKP

Solo con el subcomando «enable» se activará también un paquete disponible. Solo es necesario especificar el número de versión en caso de que el nombre por sí solo no sea único:

OMD[mysite]:~$ mkp enable hello_world 0.2.5
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

En principio, solo puedes activar MKP que tengan una coincidencia con la versión de tu instalación de Checkmk, incluso en la línea de comandos. Si quieres saltarte las restricciones de versión e instalar (habilitar y activar) el MKP en cualquier condición, usa --force-install. Esto es especialmente relevante para desarrolladores que necesitan adaptar gradualmente los paquetes a nuevas versiones de Checkmk en entornos distribuidos.

OMD[mysite]:~$ mkp enable --force-install hello_world 0.2.5
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Una vez activado —independientemente de si se utiliza force-install—, los archivos se instalan en una jerarquía de directorios dentro de ~/local/ y el archivo de descripción del paquete se coloca en ~/var/check_mk/packages/. Esto hace que el paquete adquiera el estado «Enabled (active on this site)»:

OMD[mysite]:~$ mkp list
Name        Version Title        Author                 Req. Version Until Version Files State
----------- ------- ------------ ---------------------- ------------ ------------- ----- -----------------------------
hello_world 0.2.5   Hello world! Checkmk knowledge team 2.3.0b1      2.5.99        8     Enabled (active on this site)
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Puedes obtener detalles sobre un paquete concreto con mkp show, sin importar su estado de activación actual:

OMD[mysite]:~$ mkp show hello_world 0.2.5
Name:                          hello_world
Version:                       0.2.5
Packaged on Checkmk Version:   2.4.0b1
Required Checkmk Version:      2.3.0b1
Valid until Checkmk version:   2.5.99
Title:                         Hello world!
Author:                        Checkmk knowledge team
Download-URL:                  https://docs.checkmk.com/latest/en/devel_check_plugins.html
Files:
  Agents
    plugins/hello_world
    windows/plugins/hello_world.cmd
  Additional Checkmk plug-ins by third parties
    hello_world/agent_based/hello_world.py
    hello_world/checkman/hello_world
    hello_world/graphing/helloworld_perfometer_graphing.py
    hello_world/rulesets/ruleset_hello_world.py
    hello_world/rulesets/ruleset_hello_world_bakery.py
  Libraries
    python3/cmk/base/cee/plugins/bakery/hello_world.py
Description:
  This is a very basic plugin with the sole purpose to be used as template for your own plugin development...
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

3.3. Desactivar y eliminar paquetes

La desinstalación de un paquete se realiza en dos pasos. Primero, el paquete se desactiva con mkp disable. Esto elimina los archivos instalados, pero mantiene el paquete, por ejemplo, para una posible reactivación posterior. De nuevo, especificar el número de versión solo es necesario en caso de que el nombre del paquete por sí solo no sea único:

OMD[mysite]:~$ mkp disable hello_world 0.2.5
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

En la lista de paquetes verás ahora el estado «Disabled» cuando vuelvas a ejecutar «mkp list»:

OMD[mysite]:~$ mkp list
Name        Version Title        Author                 Req. Version Until Version Files State
----------- ------- ------------ ---------------------- ------------ ------------- ----- --------
hello_world 0.2.5   Hello world! Checkmk knowledge team 2.3.0b1      2.5.99        8     Disabled
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Solo «mkp remove» eliminará el paquete de forma irreversible:

OMD[mysite]:~$ mkp remove hello_world 0.2.5
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

3.4. Un caso especial: paquetes habilitados pero inactivos

Una situación especial se da cuando se instala un paquete que no tiene coincidencia con la versión de Checkmk que se está utilizando:

OMD[mysite]:~$ mkp install hello_world-0.3.0.mkp
The package requires Checkmk version 2.5.0, but you have 2.3.0p23 installed.
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Puedes activar ese paquete, pero la activación fallará debido a la versión incompatible de Checkmk, y el paquete pasará al estado «Enabled (inactive on this site)».

OMD[mysite]:~$ mkp list
Name        Version Title        Author                 Req. Version Until Version Files State
----------- ------- ------------ ---------------------- ------------ ------------- ----- -------------------------------
hello_world 0.3.0   Hello world! Checkmk knowledge team 2.5.0b1      2.6.99        8     Enabled (inactive on this site)
hello_world 0.2.5   Hello world! Checkmk knowledge team 2.3.0b1      2.5.99        8     Enabled (active on this site)
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Ya hemos explicado anteriormente, en la sección de configuración correspondiente, las posibles circunstancias para optar por instalar paquetes incompatibles, es decir, con actualizaciones en entornos distribuidos. Al igual que en el procedimiento de configuración, usa mkp enable packagename version para habilitar un paquete, o mkp disable packagename version para desactivar una habilitación existente.

4. MKP para desarrolladores

La mayoría de los que sabemos o estamos aprendiendo a programar somos «como enanos que se suben a hombros de gigantes para poder ver más lejos que ellos»: Es en el mundo del Open Source donde realmente podemos beneficiarnos del trabajo previo de otros. En el caso de Checkmk, esto es especialmente cierto para las extensiones, que, en el contexto de la GPL, son obras derivadas del propio Checkmk, el cual, a su vez, está sujeto a la GPL (versión 2.0). En concreto, esto significa que puedes personalizar los paquetes descargados de Checkmk Exchange a tu antojo (o simplemente según tus necesidades actuales).

En las siguientes secciones te mostramos —desde el reempaquetado con cambios menores, pasando por la resolución de un paquete existente (ejemplo), hasta la compilación de archivos sin empaquetar— todos los pasos relevantes presentados en la secuencia típica en la que se realizan.

Si estás programando o modificando tus propios Plugins para Checkmk, consulta los artículos sobre las interfaces de programación existentes y la integración en Agent bakery.

4.1. Edición de paquetes

La corrección de pequeños errores a menudo hace necesario adaptar un paquete existente sin cambiar su estructura o nombre. En este caso, es recomendable no solo adaptar los archivos existentes almacenados en el sistema de archivos, sino también actualizar al menos el número de versión del paquete. Si los cambios en las API de Checkmk requieren modificaciones en un paquete, ajusta también los números de versión almacenados en el paquete para las versiones mínima y máxima compatibles. Además, al usar Agent bakery, la presencia de nuevos MKP activa la recompilación de los paquetes de agente.

En las ediciones comerciales, usa el icono «icon edit» para acceder al diálogo de modificaciones.

mkp edit description

Los usuarios de CRE Checkmk Community, en cambio, deben seguir estos dos pasos a través de «resolve» y «recreate».

4.2. Descomprimir paquetes

El menú de configuración

El descomprimido de un paquete en icon release mkp «libera», por así decirlo, los archivos empaquetados dentro de ~/local/ y elimina únicamente la descripción del paquete. Como resultado, los archivos quedarán descomprimidos y las extensiones seguirán activas. Esto es lo contrario a crear un paquete a partir de archivos previamente descomprimidos.

En la práctica, lo más probable es que necesites descomprimir cuando quieras personalizar una extensión y luego volver a empaquetarla para incluir cualquier modificación. Por ejemplo, puedes empezar con nuestro ejemplo «¡Hola, mundo!», que en realidad no hace nada útil, pero puede servir como plantilla para tu primer paquete personalizado.

La línea de comandos

En la línea de comandos, puedes desempaquetar un paquete con el comando `mkp release`. Para que esto funcione, el paquete que se va a desempaquetar debe tener el estado «Enabled (active on this site)». Los archivos de la extensión se conservan y solo se elimina la descripción del paquete:

OMD[mysite]:~$ mkp release hello_world
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

El paquete original permanece intacto y cambia su estado a «Enabled (inactive on this site)». Por lo tanto, también puede servir como copia de seguridad en caso de que algo salga mal durante la personalización. A continuación, simplemente elimina los archivos «redundantes», vuelve a habilitar el paquete y empieza de nuevo.

4.3. Buscar archivos sin empaquetar

El Menú de configuración

Una vez completado el trabajo de programación o personalización, será necesario volver a encontrar los archivos existentes y añadidos. Dado que estos archivos no pertenecen actualmente a ningún paquete, aparecen en la lista de archivos bajo «Unpackaged files»:

mkps unpackaged
Lista de «Unpackaged files» y el botón «Create package»

La línea de comandos

El equivalente en la línea de comandos es «mkp find»:

OMD[mysite]:~$ mkp find
File                                                    Package Version Part                                         Mode
------------------------------------------------------- ------- ------- -------------------------------------------- ----------
hello_world/rulesets/ruleset_hello_world_bakery.py                      Additional Checkmk plug-ins by third parties -rw-------
hello_world/agent_based/hello_world.py                                  Additional Checkmk plug-ins by third parties -rw-------
hello_world/checkman/hello_world                                        Additional Checkmk plug-ins by third parties -rw-------
hello_world/rulesets/ruleset_hello_world.py                             Additional Checkmk plug-ins by third parties -rw-------
hello_world/graphing/helloworld_perfometer_graphing.py                  Additional Checkmk plug-ins by third parties -rw-------
plugins/hello_world                                                     Agents                                       -rwx------
windows/plugins/hello_world.cmd                                         Agents                                       -rwx------
python3/cmk/base/cee/plugins/bakery/hello_world.py                      Libraries                                    -rw-------
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Elimina los archivos que no necesites o anota cuáles no deben incluirse en el nuevo paquete. En el siguiente paso, los archivos sin empaquetar se volverán a combinar en un paquete.

4.4. Creación de paquetes

El menú de configuración

El botón «icon new mkp» (Create package) en la vista general de archivos sin empaquetar te lleva al diálogo para crear un nuevo paquete:

mkps create

Además de los detalles obvios, es importante que selecciones al menos un archivo para empaquetar. Al crear un paquete, también se crea una descripción del paquete en ~/var/check_mk/packages/, que contiene información general, así como la lista de los archivos incluidos. Por supuesto, es difícil predecir la versión máxima de Checkmk compatible sin una bola de cristal.

Tip

Las extensiones que utilizan las nuevas API introducidas en Checkmk 2.3.0 están preparadas para el futuro y también funcionarán hasta Checkmk 2.5.0 sin necesidad de ajustes. En este caso, puedes introducir 2.5.99 en Valid until Checkmk version como la versión máxima de Checkmk compatible. En el momento de la revisión de este artículo, no se puede hacer ninguna afirmación sobre el futuro más allá de esa fecha.

Ahora puedes descargar este paquete recién creado como un archivo MKP a través de la lista de paquetes con el icono icon download —por ejemplo, para transferirlo a otro sistema o subirlo al Exchange.

La línea de comandos

El procedimiento para crear MKP en la línea de comandos es similar al del Menú de configuración. Primero, usa mkp template para crear una configuración de paquete que (por ahora) contenga todos estos archivos. Especifica el nombre deseado para el nuevo paquete como parámetro:

OMD[mysite]:~$ mkp template hello_world_ng
Created 'tmp/check_mk/hello_world_ng.manifest.temp'.
You may now edit it.
Create the package using `mkp package tmp/check_mk/hello_world_ng.manifest.temp`.
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Ahora realiza la edición de las propiedades del paquete con un editor de texto:

tmp/check_mk/hello_world_ng.manifest.temp
{'author': 'Add your name here',
 'description': 'Please add a description here',
 'download_url': 'https://example.com/hello_world_ng/',
 'files': {'agents': ['plugins/hello_world', 'windows/plugins/hello_world.cmd'],
           'cmk_addons_plugins': ['hello_world/agent_based/hello_world.py',
                                  'hello_world/checkman/hello_world',
                                  'hello_world/graphing/helloworld_perfometer_graphing.py',
                                  'hello_world/rulesets/ruleset_hello_world.py',
                                  'hello_world/rulesets/ruleset_hello_world_bakery.py'],
           'lib': ['python3/cmk/base/cee/plugins/bakery/hello_world.py']},
 'name': 'hello_world_ng',
 'title': 'Title of hello_world_ng',
 'version': '1.0.0',
 'version.min_required': '2.3.0p27',
 'version.packaged': 'cmk-mkp-tool 0.2.0',
 'version.usable_until': None}

Edita este archivo según tus necesidades. Presta atención a la sintaxis correcta de Python: las cadenas Unicode (textos que contienen caracteres no ASCII, como diéresis) deben ir precedidas de un pequeño u, por ejemplo.

Bajo la entrada «files», puedes eliminar los archivos que no deban incluirse en el paquete. En «version.min_required», introduce la versión mínima de Checkmk necesaria para poder utilizar el paquete.

Cuando hayas terminado, puedes crear un archivo MKP con mkp package:

OMD[mysite]:~$ mkp package tmp/check_mk/hello_world_ng.manifest.temp
Successfully created hello_world_ng 1.0.0
Successfully wrote package file
Removing packaged files before reinstalling...
[hello_world_ng 1.0.0]: Removed file local/share/check_mk/agents/plugins/hello_world
[hello_world_ng 1.0.0]: Removed file local/share/check_mk/agents/windows/plugins/hello_world.cmd
[hello_world_ng 1.0.0]: Removed file local/lib/python3/cmk_addons/plugins/hello_world/graphing/helloworld_perfometer_graphing.py
[hello_world_ng 1.0.0]: Removed file local/lib/python3/cmk_addons/plugins/hello_world/agent_based/hello_world.py
[hello_world_ng 1.0.0]: Removed file local/lib/python3/cmk_addons/plugins/hello_world/rulesets/ruleset_hello_world.py
[hello_world_ng 1.0.0]: Removed file local/lib/python3/cmk_addons/plugins/hello_world/rulesets/ruleset_hello_world_bakery.py
[hello_world_ng 1.0.0]: Removed file local/lib/python3/cmk_addons/plugins/hello_world/checkman/hello_world
[hello_world_ng 1.0.0]: Removed file local/lib/python3/cmk/base/cee/plugins/bakery/hello_world.py
[hello_world_ng 1.0.0]: Installing
Successfully installed hello_world_ng 1.0.0
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Los paquetes se guardan en ~/var/check_mk/packages_local:

OMD[mysite]:~$ ll ~/var/check_mk/packages_local/*.mkp
-rw-rw---- 2 mysite mysite 4197 Mar 15 13:37 hello_world_ng-1.0.0.mkp
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

5. El formato de paquete MKP

Es posible que quieras programar y empaquetar nuevos paquetes de extensión en una máquina de desarrollo y, a continuación, transferir el paquete terminado al servidor Checkmk para realizar pruebas. Esto es bastante fácil de hacer, ya que el formato MKP es simplemente un archivo `.tar.gz`, que a su vez contiene archivos `.tar` y archivos de manifiesto.

Al examinar el archivo `hello_world-0.2.5.mkp` descargado, se revela el primer nivel de su estructura:

user@host:~$ tar tvf hello_world-0.2.5.mkp
-rw-r--r-- 0/0            1715 2025-03-07 16:19 info
-rw-r--r-- 0/0            1311 2025-03-07 16:19 info.json
-rw-r--r-- 0/0           10240 2025-03-07 16:19 agents.tar
-rw-r--r-- 0/0           20480 2025-03-07 16:19 cmk_addons_plugins.tar
-rw-r--r-- 0/0           10240 2025-03-07 16:19 lib.tar
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Descomprime el paquete en un directorio temporal y allí podrás ver el contenido de los archivos tar incluidos. Las rutas de los archivos son relativas al directorio que contiene sus respectivos componentes:

user@host:~$ tar tvf cmk_addons_plugins.tar
-rw------- mysite/mysite 3711 2025-03-07 10:59 hello_world/agent_based/hello_world.py
-rw------- mysite/mysite 1079 2025-03-07 10:59 hello_world/checkman/hello_world
-rw------- mysite/mysite 1179 2025-03-07 10:59 hello_world/graphing/helloworld_perfometer_graphing.py
-rw------- mysite/mysite 3373 2025-03-07 10:59 hello_world/rulesets/ruleset_hello_world.py
-rw------- mysite/mysite 2634 2025-03-07 10:59 hello_world/rulesets/ruleset_hello_world_bakery.py
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

¿Y qué hay de los dos archivos de manifiesto info y info.json? Ya has visto el archivo info y sus campos en formato Python Dict más arriba. El equivalente en JSON info.json contiene exactamente los mismos campos y valores, pero ha sido serializado en formato JSON. Si quieres compilar el paquete como parte de un script, debes introducir el archivo Python dict info y generar el archivo JSON info.json a partir de este antes de empaquetar.

Cuando vuelvas a empaquetar los archivos, ten cuidado de no incluir rutas de archivos que no formen parte de la jerarquía de carpetas en ~/local. El nivel superior debe contener únicamente los manifiestos y los archivos tar.

6. Referencia de comandos

6.1. Gestión

Subcomando Parámetro Función

add

Nombre del archivo del paquete que se va a añadir

Hace que el paquete esté disponible, pero aún no lo activa.

enable

Nombre del paquete (y número de versión, si procede)

Activa un paquete para uso local o para distribuirlo a sitios remotos, dependiendo de la compatibilidad de versiones.

enable --force-install

Nombre del paquete (y número de versión, si procede)

Activa un paquete aunque no haya compatibilidad de versiones.

disable

Nombre del paquete y número de versión

Desactiva un paquete, que sigue estando disponible en el sistema de archivos.

remove

Nombre del paquete y número de versión

Elimina por completo un paquete que ya estaba desactivado.

install

Nombre del archivo del paquete que quieres añadir

¡Este subcomando está en desuso y se eliminará pronto!

list

ninguno

Lista todos los paquetes disponibles y su estado de activación.

inspect

Nombre del archivo del paquete que quieres inspeccionar

Muestra información sobre un MKP desinstalado.

show

Nombre del paquete (y número de versión, si procede)

Muestra información sobre un MKP disponible.

show-all

ninguno

Muestra información sobre todos los MKP disponibles.

files

Nombre del paquete (y número de versión, si procede)

Lista de todos los archivos que pertenecen a un paquete.

6.2. Desarrollo

Subcomando Parámetro Función

release

Nombre del paquete

Resuelve un paquete activo.

find

ninguno

Lista todos los archivos que no pertenecen a ningún paquete.

template

Nombre del nuevo paquete que se va a crear

Crea un archivo de manifiesto como base para un nuevo paquete.

package

Ruta al archivo de manifiesto

Crea un MKP basado en el contenido de un archivo de manifiesto.

6.3. Actualizaciones

Subcomando Parámetro Función

disable-outdated

ninguno

Desactiva los paquetes que ya no tienen coincidencia con la versión de Checkmk tras una actualización.

update-active

ninguno

Activa los paquetes que tienen una coincidencia con la versión de Checkmk tras una actualización.


Last modified: Thu, 05 Feb 2026 10:15:33 GMT via commit eaae81205
En esta página