kso512.checkmk_agent
checkmk_agent
Un rol de Ansible para instalar el agente/cliente para la edición RAW de CheckMK.
Esta es una reconstrucción completa del rol install-check_mk-agent que creé y mantuve durante años, llevada a cabo debido a cambios en CI/CD y convenciones de nombrado en Ansible Galaxy y CheckMK.
Todas las tareas están etiquetadas con checkmk-agent
.
Las siguientes distribuciones han sido probadas automáticamente:
- Debian 10 "Buster"
- Debian 11 "Bullseye"
- Debian 12 "Bookworm"
- Fedora 38
- Fedora 39
- Fedora 40
- Microsoft Windows Server 2019 / Microsoft Windows 10
- Microsoft Windows Server 2022 / Microsoft Windows 11
- Ubuntu 20.04 LTS "Focal Fossa"
- Ubuntu 22.04 LTS "Jammy Jellyfish"
- Ubuntu 24.04 LTS "Noble Numbat"
Por razones de rendimiento, las siguientes "secciones" están desactivadas por defecto en el agente de Windows:
- servicios
- msexch
- dotnet_clrmemory
- wmi_webservices
- wmi_cpuload
- ps
- fileinfo
- logwatch
- openhardwaremonitor
Además, se han ajustado la ejecución de los plugins:
- Tiempo de espera aumentado de
30
a120
- Async habilitado
- Cache_age configurado a
3600
(1 hora)
Crea tu propio "check_mk.user.yml.j2" y reemplaza checkmk_agent_win_config_src
para personalizar más, o establece la variable checkmk_agent_win_config_optimize
a false
para deshabilitar esta optimización.
Modificaciones similares se han hecho al archivo docker.cfg
por defecto. Aquí, todas las secciones de docker se han habilitado y se pueden volver a la configuración predeterminada estableciendo la variable checkmk_agent_docker_complete
a false
.
Matriz de Versiones Reciente
Versión de CheckMK Raw Edition | Versión/Etiqueta del Rol |
---|---|
2.3.0p13 | 1.1.1 |
2.3.0p12 | 1.1.0 |
2.3.0p11 | 1.0.99 |
2.3.0p10 | 1.0.98 |
2.3.0p9 | 1.0.97 |
Requisitos
Este rol no requiere otros roles. Está diseñado para ser compatible con el servidor CheckMK en general y específicamente con kso512.checkmk_server.
Si te conectas a un host de Windows con Windows Remote Management (WinRM), es posible que necesites instalar el paquete pywinrm
en tu sistema Ansible:
pip install "pywinrm>=0.3.0"
Este rol utiliza SSH en sistemas tipo Unix en lugar del puerto por defecto 6556. Esto cifra las comunicaciones y evita abrir un nuevo puerto para la supervisión y configuración de un nuevo servicio.
Para crear claves de autenticación para SSH, usa el programa "ssh-keygen" como se muestra aquí.
Ejemplo para crear claves predeterminadas sin frase de paso en la carpeta local:
ssh-keygen -C "cmkagent@$HOSTNAME" -f ./id_rsa -N "" -v
Esto creará dos archivos: id_rsa
y id_rsa.pub
id_rsa
= Clave privada que debe mantenerse segura. Este archivo debe colocarse en la carpeta ~/.ssh
del usuario del agente CheckMK activo. Ejemplo usando el usuario y sitio predeterminado de "kso512.checkmk_server":
cp ./id_rsa /opt/omd/sites/test/.ssh
id_rsa.pub
= Clave pública que se puede compartir con otros hosts de confianza. Este archivo debe añadirse a tu propio archivo local "authorized_keys.j2". Suponiendo una estructura de rol predeterminada:
echo '# {{ ansible_managed }}' > /etc/ansible/local/authorized_keys.j2
cat ./id_rsa.pub >> /etc/ansible/local/authorized_keys.j2
Luego declara local/authorized_keys.j2
como checkmk_agent_authkey_src
en tus propias variables; a continuación se muestra un ejemplo.
Finalmente, configura CheckMK para utilizar estos archivos en lugar de intentar conectarse al puerto TCP 6556:
- Inicia sesión en CheckMK
- Configuración > Buscar > "individual" > Llamada al programa individual en lugar de acceso del agente
- Crea una regla en la carpeta: Directorio principal
- Descripción:
Usar SSH y cuenta cmkagent con claves SSH
- Línea de comando para ejecutar:
ssh -i ~/.ssh/id_rsa -l cmkagent <IP> sudo /home/cmkagent/check_mk_agent
- Hosts explícitos: (selecciona un host de prueba, luego, una vez que funcione, configura etiquetas o etiquetas de host)
- Guarda
- Descripción:
- 1 cambio > Activar en sitios seleccionados
Variables del Rol
Algunas de estas pueden parecer redundantes, pero están especificadas para que futuros usuarios puedan sobreescribirlas con variables locales según sea necesario.
Tabla de Variables (con Predeterminados)
Variable | Descripción | Predeterminado |
---|---|---|
checkmk_agent_authkey_dest | Ruta completa del archivo "authorized_keys" | "{{ checkmk_agent_ssh_path }}/authorized_keys" |
checkmk_agent_authkey_group | Nombre del grupo que debe poseer el archivo "authorized_keys" | "{{ checkmk_agent_ssh_group }}" |
checkmk_agent_authkey_mode | Configuración de modo de archivo del archivo "authorized_keys" | "0600" |
checkmk_agent_authkey_src | Nombre del archivo de la plantilla "authorized_keys" | authorized_keys.j2 |
checkmk_agent_authkey_user | Nombre del usuario que debe poseer el archivo "authorized_keys" | "{{ checkmk_agent_ssh_user }}" |
checkmk_agent_cache_group | Nombre del grupo que debe poseer la carpeta y archivos de "cache" | "{{ checkmk_agent_cache_user }}" |
checkmk_agent_cache_mode | Configuración de modo de archivo de la carpeta y archivos de "cache" | "{{ checkmk_agent_mode }}" |
checkmk_agent_cache_path | Ruta completa de la carpeta "cache" | "{{ checkmk_agent_home }}/cache" |
checkmk_agent_cache_user | Nombre del usuario que debe poseer la carpeta y archivos de "cache" | "{{ checkmk_agent_user }}" |
checkmk_agent_comment | Nombre completo del usuario del agente CheckMK | Agente CheckMK |
checkmk_agent_count_users_crit | Usuarios conectados, umbral crítico | 15 |
checkmk_agent_count_users_warn | Usuarios conectados, umbral de advertencia | 10 |
checkmk_agent_count_zombie_procs_crit | Procesos zombie, umbral crítico | 10 |
checkmk_agent_count_zombie_procs_warn | Procesos zombie, umbral de advertencia | 5 |
checkmk_agent_dest | Ruta completa del archivo ejecutable del agente CheckMK | "{{ checkmk_agent_home }}/check_mk_agent" |
checkmk_agent_docker_complete | Incluir todos los módulos de docker | true |
checkmk_agent_docker_dest | Ruta completa del archivo de configuración de Docker | "{{ checkmk_agent_home }}/docker.cfg" |
checkmk_agent_docker_group | Nombre del grupo que debe poseer el archivo de configuración de Docker | "{{ checkmk_agent_group }}" |
checkmk_agent_docker_mode | Configuración de modo de archivo del archivo de configuración de Docker | "0644" |
checkmk_agent_docker_src | Nombre del archivo de la plantilla del archivo de configuración de Docker | docker.cfg.j2 |
checkmk_agent_docker_user | Nombre del usuario que debe poseer el archivo de configuración de Docker | "{{ checkmk_agent_user }}" |
checkmk_agent_group | Nombre del grupo que debe poseer el archivo ejecutable del agente CheckMK | "{{ checkmk_agent_user }}" |
checkmk_agent_home | Ruta completa del directorio personal del usuario del agente CheckMK | /home/{{ checkmk_agent_user }} |
checkmk_agent_local_checks | Lista de comprobaciones para copiar a la carpeta "local" | count_users count_zombie_procs |
checkmk_agent_local_checks_async | Lista de comprobaciones para copiar a las carpetas "local" asíncronas | (Ver NOTA A abajo) |
checkmk_agent_local_group | Nombre del grupo que debe poseer la carpeta y archivos "local" | "{{ checkmk_agent_local_user }}" |
checkmk_agent_local_mode | Configuración de modo de archivo de la carpeta y archivos "local" | "{{ checkmk_agent_mode }}" |
checkmk_agent_local_path | Ruta completa de la carpeta "local" | "{{ checkmk_agent_home }}/local" |
checkmk_agent_local_purge | Eliminar la carpeta "local" antes de sincronizar | false |
checkmk_agent_local_user | Nombre del usuario que debe poseer la carpeta y archivos "local" | "{{ checkmk_agent_user }}" |
checkmk_agent_mode | Configuración de modo de archivo del archivo ejecutable del agente CheckMK | "0755" |
checkmk_agent_plugin_checks | Lista de comprobaciones para copiar a la carpeta "plugin" | hpsa lvm mk_inventory.linux mk_iptables mk_nfsiostat mk_sshd_config netstat.linux nfsexports smart |
checkmk_agent_plugin_checks_async | Lista de comprobaciones para copiar a las carpetas "plugin" asíncronas | (Ver NOTA A abajo) |
checkmk_agent_plugin_group | Nombre del grupo que debe poseer la carpeta y archivos "plugin" | "{{ checkmk_agent_plugin_user }}" |
checkmk_agent_plugin_mode | Configuración de modo de archivo de la carpeta y archivos "plugin" | "{{ checkmk_agent_mode }}" |
checkmk_agent_plugin_path | Ruta completa de la carpeta "plugin" | "{{ checkmk_agent_home }}/plugins" |
checkmk_agent_plugin_purge | Eliminar la carpeta "plugin" antes de sincronizar | false |
checkmk_agent_plugin_user | Nombre del usuario que debe poseer la carpeta y archivos "plugin" | "{{ checkmk_agent_user }}" |
checkmk_agent_prereqs | Lista de paquetes necesarios para una instalación exitosa | python3-docker sudo |
checkmk_agent_prereqs_yum | Lista de paquetes necesarios para una instalación exitosa con sistemas que usan YUM como su gestor de paquetes | sudo |
checkmk_agent_src | Nombre del archivo de la plantilla del archivo ejecutable del agente CheckMK | check_mk_agent.linux.j2 |
checkmk_agent_ssh_group | Nombre del grupo que debe poseer la carpeta y archivos ".ssh" | "{{ checkmk_agent_group }}" |
checkmk_agent_ssh_mode | Configuración de modo de archivo de la carpeta y archivos ".ssh" | "0700" |
checkmk_agent_ssh_path | Ruta completa de la carpeta ".ssh" | "{{ checkmk_agent_home }}/.ssh" |
checkmk_agent_ssh_user | Nombre del usuario que debe poseer la carpeta y archivos ".ssh" | "{{ checkmk_agent_user }}" |
checkmk_agent_spool_group | Nombre del grupo que debe poseer la carpeta y archivos "spool" | "{{ checkmk_agent_spool_user }}" |
checkmk_agent_spool_mode | Configuración de modo de archivo de la carpeta y archivos "spool" | "{{ checkmk_agent_mode }}" |
checkmk_agent_spool_path | Ruta completa de la carpeta "spool" | "{{ checkmk_agent_home }}/spool" |
checkmk_agent_spool_user | Nombre del usuario que debe poseer la carpeta y archivos "spool" | "{{ checkmk_agent_user }}" |
checkmk_agent_sudo_dest | Ruta completa del archivo "sudoers.d", utilizado para otorgar acceso sudo al usuario del agente CheckMK al archivo ejecutable del agente CheckMK | /etc/sudoers.d/99_cmkagent |
checkmk_agent_sudo_group | Nombre del grupo que debe poseer el archivo "sudoers.d" | "{{ checkmk_agent_sudo_owner }}" |
checkmk_agent_sudo_mode | Configuración de modo de archivo del archivo "sudoers.d" | "0440" |
checkmk_agent_sudo_owner | Nombre del usuario que debe poseer el archivo "sudoers.d" | root |
checkmk_agent_sudo_src | Nombre del archivo de la plantilla del archivo "sudoers.d" | 99_cmkagent.j2 |
checkmk_agent_sudo_validate | Comando utilizado para validar el archivo "sudoers.d"; %s será llenado con checkmk_agent_sudo_dest |
'visudo -cf %s' |
checkmk_agent_user | Nombre de inicio de sesión del usuario del agente CheckMK | cmkagent |
checkmk_agent_version | Versión del agente CheckMK a instalar | 2.3.0p13 |
checkmk_agent_win_config_dest | Ruta completa del archivo de configuración | "{{ checkmk_agent_win_data_folder }}check_mk.user.yml" |
checkmk_agent_win_config_optimize | Optimiza el agente de Windows desactivando algunas verificaciones más lentas | true |
checkmk_agent_win_config_src | Nombre del archivo de la plantilla del archivo de configuración | check_mk.user.yml.j2 |
checkmk_agent_win_data_folder | Ruta completa de la carpeta de datos del agente CheckMK | C:\\ProgramData\\checkmk\\agent\\ |
checkmk_agent_win_install_dest | Ruta completa del archivo de instalación del agente CheckMK | c:\\Users\\{{ ansible_user }}\\Downloads\\{{ checkmk_agent_win_install_src }} |
checkmk_agent_win_install_src | Nombre corto del archivo de instalación del agente CheckMK | check_mk_agent.msi |
checkmk_agent_win_plugins | Lista de plugins de Windows para copiar en la carpeta "plugin" | mk_inventory.vbs windows_updates.vbs |
checkmk_agent_win_productid | "ID de producto" específico de la versión a instalar | "{B6212139-D124-4782-8F81-05D08203092D}" |
NOTA A
checkmk_agent_local_checks_async
y checkmk_agent_plugin_checks_async
- Lista de comprobaciones para copiar a las carpetas asíncronas "plugin". Según la documentación:
La salida de las verificaciones locales, como la de los plugins, puede ser almacenada en caché. Esto puede ser necesario si un script tiene un tiempo de procesamiento más largo. Tal script se ejecuta de forma asíncrona y solo en un intervalo de tiempo definido y la última salida se almacena en caché. Si se consulta el agente nuevamente antes de que el tiempo expire, utiliza esta caché para la verificación local y la devuelve en la salida del agente.
El formato de estas listas es el siguiente, con checkmk_agent_plugin_checks_async
mostrado:
300:
- apache_status.py
600:
- ""
900:
- ""
1800:
- ""
86400:
- mk_apt
- mk_docker.py
Esto ejecuta el plugin apache_status.py
solo una vez cada cinco minutos, y los plugins mk_apt
y mk_docker.py
solo una vez al día, en lugar de cada verificación. Esto ahorra segundos en cada verificación restante del día que utiliza el valor en caché.
Dependencias
Aún no se han definido.
Ejemplo de Playbook y Ejecución
Ejemplo que utiliza un archivo authorized_keys
local:
- hosts: all
roles:
- { role: kso512.checkmk_agent, checkmk_agent_authkey_src="local/authorized_keys.j2" }
Ejemplo que purga la carpeta plugin
antes de recrearla:
$ ansible-playbook site.yml -t checkmk-agent -e "checkmk_agent_plugin_purge=true"
...
TAREA [kso512.checkmk_agent : Eliminar directorio - plugins | ARCHIVO] ***********
cambiado: [instancia]
TAREA [kso512.checkmk_agent : Crear directorio - plugins | ARCHIVO] ***********
cambiado: [instancia]
Licencia
Licencia Pública General GNU versión 2
Contribuciones
Si tienes sugerencias o ideas, no dudes en abrir un problema o bifurcar el repositorio y enviar una solicitud de fusión.
Información del Autor
A role to install CheckMK RAW edition agent.
ansible-galaxy install kso512.checkmk_agent