kso512.checkmk_agent
checkmk_agent
Un Ansible rôle pour installer l'agent/client pour l'édition RAW de CheckMK.
Ceci est une reconstruction complète du rôle install-check_mk-agent que j'ai créé et maintenu pendant des années, entrepris en raison des changements dans CI/CD et des conventions de nommage dans Ansible Galaxy et CheckMK.
Toutes les tâches sont étiquetées avec checkmk-agent
.
Les distributions suivantes ont été testées automatiquement :
- 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"
Pour des raisons de performance, les sections suivantes ont été désactivées par défaut dans l'agent Windows :
- services
- msexch
- dotnet_clrmemory
- wmi_webservices
- wmi_cpuload
- ps
- fileinfo
- logwatch
- openhardwaremonitor
De plus, l'exécution des plugins a été ajustée :
- Délai d'attente augmenté de
30
à120
- Asynchrone activé
- Cache_age défini sur
3600
(1 heure)
Créez votre propre fichier "check_mk.user.yml.j2" et remplacez checkmk_agent_win_config_src
pour personnaliser davantage, ou définissez la variable checkmk_agent_win_config_optimize
sur false
pour désactiver cette optimisation.
Des modifications similaires ont été apportées au fichier par défaut docker.cfg
. Ici, toutes les sections docker ont été activées et peuvent être ramenées à la valeur par défaut en définissant la variable checkmk_agent_docker_complete
sur false
.
Matrice des Versions Récentes
Version de l'édition RAW de CheckMK | Version/Tag du Rôle |
---|---|
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 |
Exigences
Ce rôle ne nécessite aucun autre rôle. Il est conçu pour être compatible avec le serveur CheckMK en général et kso512.checkmk_server spécifiquement.
Si vous vous connectez à un hôte Windows avec Windows Remote Management (WinRM), vous devrez peut-être installer le paquet pywinrm
sur votre système Ansible :
pip install "pywinrm>=0.3.0"
Ce rôle utilise SSH sur les systèmes de type Unix au lieu du port par défaut 6556. Cela chiffre les communications et évite d'ouvrir un nouveau port pour la surveillance et l'installation d'un nouveau service.
Pour créer des clés d'authentification pour SSH, utilisez le programme "ssh-keygen" comme montré ici.
Exemple pour créer des clés par défaut sans phrase de passe dans le dossier local :
ssh-keygen -C "cmkagent@$HOSTNAME" -f ./id_rsa -N "" -v
Cela va créer deux fichiers : id_rsa
& id_rsa.pub
id_rsa
= Clé privée qui doit être gardée en sécurité. Ce fichier doit être placé dans le dossier ~/.ssh
de l'utilisateur CheckMK Agent en cours. Exemple en utilisant l'utilisateur et le site par défaut "kso512.checkmk_server" :
cp ./id_rsa /opt/omd/sites/test/.ssh
id_rsa.pub
= Clé publique qui peut être partagée avec d'autres hôtes de confiance. Ce fichier doit être ajouté à votre propre fichier local "authorized_keys.j2". En supposant une structure de rôle par défaut :
echo '# {{ ansible_managed }}' > /etc/ansible/local/authorized_keys.j2
cat ./id_rsa.pub >> /etc/ansible/local/authorized_keys.j2
Puis déclarez local/authorized_keys.j2
comme checkmk_agent_authkey_src
dans vos propres variables ; un exemple est montré ci-dessous.
Enfin, configurez CheckMK lui-même pour utiliser ces fichiers au lieu d'essayer de se connecter au port TCP 6556 :
- Connectez-vous à CheckMK
- Configuration > Recherche > "individuel" > Appel de programme individuel au lieu d'accès à agent
- Créez une règle dans le dossier : Répertoire principal
- Description :
Utiliser SSH et le compte cmkagent avec des clés SSH
- Ligne de commande à exécuter :
ssh -i ~/.ssh/id_rsa -l cmkagent <IP> sudo /home/cmkagent/check_mk_agent
- Hôtes explicites : (sélectionnez un hôte de test, puis, une fois que cela fonctionne, configurez tags ou étiquettes hôte)
- Enregistrer
- Description :
- 1 changement > Activer sur les sites sélectionnés
Variables du Rôle
Certaines d'entre elles peuvent sembler redondantes mais sont spécifiées pour que les futurs utilisateurs puissent les remplacer par des variables locales si nécessaire.
Tableau des Variables (avec Valeurs par Défaut)
Variable | Description | Valeur par Défaut |
---|---|---|
checkmk_agent_authkey_dest | Chemin complet du fichier "authorized_keys" | "{{ checkmk_agent_ssh_path }}/authorized_keys" |
checkmk_agent_authkey_group | Nom du groupe qui doit posséder le fichier "authorized_keys" | "{{ checkmk_agent_ssh_group }}" |
checkmk_agent_authkey_mode | Paramètres de mode de fichier du fichier "authorized_keys" | "0600" |
checkmk_agent_authkey_src | Nom du fichier du modèle "authorized_keys" | authorized_keys.j2 |
checkmk_agent_authkey_user | Nom de l'utilisateur qui doit posséder le fichier "authorized_keys" | "{{ checkmk_agent_ssh_user }}" |
checkmk_agent_cache_group | Nom du groupe qui doit posséder le dossier et les fichiers "cache" | "{{ checkmk_agent_cache_user }}" |
checkmk_agent_cache_mode | Paramètres de mode de fichier du dossier et des fichiers "cache" | "{{ checkmk_agent_mode }}" |
checkmk_agent_cache_path | Chemin complet du dossier "cache" | "{{ checkmk_agent_home }}/cache" |
checkmk_agent_cache_user | Nom de l'utilisateur qui doit posséder le dossier et les fichiers "cache" | "{{ checkmk_agent_user }}" |
checkmk_agent_comment | Nom complet de l'utilisateur CheckMK Agent | CheckMK Agent |
checkmk_agent_count_users_crit | Utilisateurs connectés, seuil critique | 15 |
checkmk_agent_count_users_warn | Utilisateurs connectés, seuil d'avertissement | 10 |
checkmk_agent_count_zombie_procs_crit | Processus zombies, seuil critique | 10 |
checkmk_agent_count_zombie_procs_warn | Processus zombies, seuil d'avertissement | 5 |
checkmk_agent_dest | Chemin complet du fichier exécutable de l'Agent CheckMK | "{{ checkmk_agent_home }}/check_mk_agent" |
checkmk_agent_docker_complete | Inclure tous les modules docker | true |
checkmk_agent_docker_dest | Chemin complet du fichier de configuration Docker | "{{ checkmk_agent_home }}/docker.cfg" |
checkmk_agent_docker_group | Nom du groupe qui doit posséder le fichier de configuration Docker | "{{ checkmk_agent_group }}" |
checkmk_agent_docker_mode | Paramètres de mode de fichier du fichier de configuration Docker | "0644" |
checkmk_agent_docker_src | Nom du fichier du modèle de fichier de configuration Docker | docker.cfg.j2 |
checkmk_agent_docker_user | Nom de l'utilisateur qui doit posséder le fichier de configuration Docker | "{{ checkmk_agent_user }}" |
checkmk_agent_group | Nom du groupe qui doit posséder le fichier exécutable de l'Agent CheckMK | "{{ checkmk_agent_user }}" |
checkmk_agent_home | Chemin complet du dossier d'accueil de l'utilisateur de l'Agent CheckMK | /home/{{ checkmk_agent_user }} |
checkmk_agent_local_checks | Liste de vérifications à copier dans le dossier "local" | count_users count_zombie_procs |
checkmk_agent_local_checks_async | Liste de vérifications à copier dans les dossiers "local" async | (Voir NOTE A ci-dessous) |
checkmk_agent_local_group | Nom du groupe qui doit posséder le dossier et les fichiers "local" | "{{ checkmk_agent_local_user }}" |
checkmk_agent_local_mode | Paramètres de mode de fichier du dossier et des fichiers "local" | "{{ checkmk_agent_mode }}" |
checkmk_agent_local_path | Chemin complet du dossier "local" | "{{ checkmk_agent_home }}/local" |
checkmk_agent_local_purge | Supprimer le dossier "local" avant la synchronisation | false |
checkmk_agent_local_user | Nom de l'utilisateur qui doit posséder le dossier et les fichiers "local" | "{{ checkmk_agent_user }}" |
checkmk_agent_mode | Paramètres de mode de fichier du fichier exécutable de l'Agent CheckMK | "0755" |
checkmk_agent_plugin_checks | Liste de vérifications à copier dans le dossier "plugin" | hpsa lvm mk_inventory.linux mk_iptables mk_nfsiostat mk_sshd_config netstat.linux nfsexports smart |
checkmk_agent_plugin_checks_async | Liste de vérifications à copier dans les dossiers "plugin" async | (Voir NOTE A ci-dessous) |
checkmk_agent_plugin_group | Nom du groupe qui doit posséder le dossier et les fichiers "plugin" | "{{ checkmk_agent_plugin_user }}" |
checkmk_agent_plugin_mode | Paramètres de mode de fichier du dossier et des fichiers "plugin" | "{{ checkmk_agent_mode }}" |
checkmk_agent_plugin_path | Chemin complet du dossier "plugin" | "{{ checkmk_agent_home }}/plugins" |
checkmk_agent_plugin_purge | Supprimer le dossier "plugin" avant la synchronisation | false |
checkmk_agent_plugin_user | Nom de l'utilisateur qui doit posséder le dossier et les fichiers "plugin" | "{{ checkmk_agent_user }}" |
checkmk_agent_prereqs | Liste de paquets nécessaires pour une installation réussie | python3-docker sudo |
checkmk_agent_prereqs_yum | Liste de paquets nécessaires pour une installation réussie avec les systèmes utilisant YUM comme gestionnaire de paquets | sudo |
checkmk_agent_src | Nom du fichier du modèle de fichier exécutable de l'Agent CheckMK | check_mk_agent.linux.j2 |
checkmk_agent_ssh_group | Nom du groupe qui doit posséder le dossier ".ssh" et les fichiers | "{{ checkmk_agent_group }}" |
checkmk_agent_ssh_mode | Paramètres de mode de fichier du dossier ".ssh" et des fichiers | "0700" |
checkmk_agent_ssh_path | Chemin complet du dossier ".ssh" | "{{ checkmk_agent_home }}/.ssh" |
checkmk_agent_ssh_user | Nom de l'utilisateur qui doit posséder le dossier ".ssh" et les fichiers | "{{ checkmk_agent_user }}" |
checkmk_agent_spool_group | Nom du groupe qui doit posséder le dossier "spool" et les fichiers | "{{ checkmk_agent_spool_user }}" |
checkmk_agent_spool_mode | Paramètres de mode de fichier du dossier "spool" et des fichiers | "{{ checkmk_agent_mode }}" |
checkmk_agent_spool_path | Chemin complet du dossier "spool" | "{{ checkmk_agent_home }}/spool" |
checkmk_agent_spool_user | Nom de l'utilisateur qui doit posséder le dossier "spool" et les fichiers | "{{ checkmk_agent_user }}" |
checkmk_agent_sudo_dest | Chemin complet du fichier "sudoers.d", utilisé pour accorder des droits sudo à l'utilisateur CheckMK Agent pour le fichier exécutable de l'Agent CheckMK | /etc/sudoers.d/99_cmkagent |
checkmk_agent_sudo_group | Nom du groupe qui doit posséder le fichier "sudoers.d" | "{{ checkmk_agent_sudo_owner }}" |
checkmk_agent_sudo_mode | Paramètres de mode de fichier du fichier "sudoers.d" | "0440" |
checkmk_agent_sudo_owner | Nom de l'utilisateur qui doit posséder le fichier "sudoers.d" | root |
checkmk_agent_sudo_src | Nom du fichier du modèle de fichier "sudoers.d" | 99_cmkagent.j2 |
checkmk_agent_sudo_validate | Commande utilisée pour valider le fichier "sudoers.d" ; %s sera remplacé par checkmk_agent_sudo_dest |
'visudo -cf %s' |
checkmk_agent_user | Nom de connexion de l'utilisateur CheckMK Agent | cmkagent |
checkmk_agent_version | Version de l'Agent CheckMK à installer | 2.3.0p13 |
checkmk_agent_win_config_dest | Chemin complet du fichier de configuration | "{{ checkmk_agent_win_data_folder }}check_mk.user.yml" |
checkmk_agent_win_config_optimize | Optimiser l'agent Windows en supprimant certaines vérifications lentes | true |
checkmk_agent_win_config_src | Nom du fichier du modèle de fichier de configuration | check_mk.user.yml.j2 |
checkmk_agent_win_data_folder | Chemin complet du dossier de données de l'Agent CheckMK | C:\\ProgramData\\checkmk\\agent\\ |
checkmk_agent_win_install_dest | Chemin complet du fichier d'installation de l'Agent CheckMK | c:\\Users\\{{ ansible_user }}\\Downloads\\{{ checkmk_agent_win_install_src }} |
checkmk_agent_win_install_src | Nom court du fichier d'installation de l'Agent CheckMK | check_mk_agent.msi |
checkmk_agent_win_plugins | Liste des plugins Windows à copier dans le dossier "plugin" | mk_inventory.vbs windows_updates.vbs |
checkmk_agent_win_productid | "Product ID" spécifique à la version à installer | "{B6212139-D124-4782-8F81-05D08203092D}" |
NOTE A
checkmk_agent_local_checks_async
et checkmk_agent_plugin_checks_async
- Liste de vérifications à copier dans les dossiers "plugin" async. Selon la documentation :
La sortie des vérifications locales, comme celle des plugins d'agent, peut être mise en cache. Cela peut être nécessaire si un script a un temps de traitement plus long. Ce script est alors exécuté de manière asynchrone et seulement à intervalle de temps défini et la dernière sortie est mise en cache. Si l'agent est interrogé à nouveau avant l'expiration de cette période, il utilise ce cache pour la vérification locale et le retourne dans la sortie de l'agent.
Le format de ces listes est le suivant, avec checkmk_agent_plugin_checks_async
montré :
300:
- apache_status.py
600:
- ""
900:
- ""
1800:
- ""
86400:
- mk_apt
- mk_docker.py
Cela exécute le plugin apache_status.py
une fois toutes les cinq minutes, et les plugins mk_apt
et mk_docker.py
une fois par jour, au lieu de chaque vérification. Cela permet de gagner des secondes sur chaque vérification restante de la journée qui utilise la valeur mise en cache.
Dépendances
Aucune dépendance définie pour le moment.
Exemple de Playbook et Invocation
Exemple qui utilise un fichier authorized_keys
local :
- hosts: all
roles:
- { role: kso512.checkmk_agent, checkmk_agent_authkey_src="local/authorized_keys.j2" }
Exemple qui purge le dossier plugin
avant de le recréer :
$ ansible-playbook site.yml -t checkmk-agent -e "checkmk_agent_plugin_purge=true"
...
TÂCHE [kso512.checkmk_agent : Supprimer le répertoire - plugins | FICHIER] ***********
changé : [instance]
TÂCHE [kso512.checkmk_agent : Créer le répertoire - plugins | FICHIER] ***********
changé : [instance]
Licence
Licence publique générale GNU version 2
Contribution
Si vous avez des suggestions ou des idées, n'hésitez pas à ouvrir un problème ou à forker le dépôt et soumettre une demande de fusion.
Informations sur les auteurs
A role to install CheckMK RAW edition agent.
ansible-galaxy install kso512.checkmk_agent