kso512.checkmk_agent

checkmk_agent

Qualité du rôle Ansible Téléchargements du rôle Ansible Taille du dépôt GitHub

Release Problèmes GitHub

fait-avec-bash fait-avec-Markdown GitHub

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 :

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

À propos du projet

A role to install CheckMK RAW edition agent.

Installer
ansible-galaxy install kso512.checkmk_agent
Licence
gpl-2.0
Téléchargements
357
Propriétaire