kso512.checkmk_agent

checkmk_agent

Calidad del rol de Ansible Descargas del rol de Ansible Tamaño del repositorio en GitHub

Lanzamiento Problemas en GitHub

Hecho con Bash Hecho con Markdown GitHub

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:

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 a 120
  • 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
  • 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

Acerca del proyecto

A role to install CheckMK RAW edition agent.

Instalar
ansible-galaxy install kso512.checkmk_agent
Licencia
gpl-2.0
Descargas
357
Propietario