sadsfae.ansible_nagios
ansible-nagios
Playbook pour configurer le serveur de surveillance Nagios et les clients (CentOS/Rocky/RHEL/Fedora/FreeBSD)
Que fait-il ?
- Déploiement automatisé du serveur Nagios sur CentOS7, Rocky 8/9 ou RHEL 7/8/9
- Déploiement automatisé du client Nagios sur CentOS6/7/8, RHEL6/7/8/9, ou Rocky, Fedora et FreeBSD
- Génère des vérifications de services et des hôtes surveillés à partir de l'inventaire Ansible
- Génère des vérifications complètes pour le serveur Nagios lui-même
- Génère des vérifications complètes pour tous les hôtes/services via NRPE
- Génère la plupart des autres configurations à partir de modèles jinja2
- Entoure Nagios en SSL via Apache
- Établit des règles de pare-feu appropriées (firewalld ou iptables-services)
- Supporte l'envoi d'alertes par email et des webhooks sortants.
- Cela est également disponible via Ansible Galaxy
Comment l'utiliser ?
- Ajoutez votre serveur Nagios sous
[nagios]
dans l'inventairehosts
- Ajoutez les services/hôtes respectifs sous leur groupe d'inventaire, les hôtes ne peuvent appartenir qu'à un seul groupe.
- Consultez
install/group_vars/all.yml
pour changer des informations comme votre adresse email, utilisateur Nagios, utilisateur invité, etc. - Exécutez le playbook. Consultez ci-dessous pour plus de détails si nécessaire.
Prérequis
- CentOS7 ou RHEL7/8/9 ou Rocky 8/9 pour le serveur Nagios uniquement (pour l'instant).
- RHEL6/7/8/9, CentOS6/7/8/9, Fedora ou FreeBSD pour le client Nagios NRPE
- Si vous avez besoin de surveillance de serveur SuperMicro via IPMI (optionnel), faites ce qui suit :
- Installez les RPMs
perl-IPC-Run
etperl-IO-Tty
pour RHEL7 pour la surveillance optionnelle des capteurs IPMI sur SuperMicro.- Je les ai placés ici si vous ne les trouvez pas, CentOS7 les a cependant.
- Modifiez
install/group_vars/all.yml
pour incluresupermicro_enable_checks: true
- Installez les RPMs
- Veuillez noter que je vais probablement supprimer le support de la surveillance des capteurs IPMI car c’est un vrai casse-tête et peu fiable, SNMP avec MiB est mieux.
Remarques
- Définit le mot de passe
nagiosadmin
surchangeme
, vous voudrez changer cela. - Crée un utilisateur en lecture seule, définissez
nagios_create_guest_user: false
pour désactiver cela dansinstall/group_vars/all.yml
- Vous pouvez désactiver la création/gestion des règles de pare-feu via
install/group_vars/all.yml
- Ajouter de nouveaux hôtes au fichier d'inventaire va simplement régénérer les configurations de Nagios.
Vérifications de services prises en charge
- L'implémentation est très simple, avec les vérifications de ressources/services suivantes générées :
- Interfaces hors bande génériques (ping, ssh, http)
- Serveurs Linux génériques (ping, ssh, charge, utilisateurs, procs, temps de fonctionnement, espace disque, swap, procs zombies)
- Serveurs Linux génériques avec RAID MDADM (même que ci-dessus)
- Serveurs ELK (même que serveurs plus elasticsearch et Kibana)
- Elasticsearch (même que serveurs plus TCP/9200 pour elasticsearch)
- Serveurs web (même que serveurs plus 80/TCP pour serveur web)
- Serveurs web avec vérification de certificat SSL (même que serveurs web plus vérification de la validité/expiration du certificat SSL)
- Serveurs DNS (même que serveurs plus UDP/53 pour DNS)
- Serveurs DNS avec RAID MDADM (même que ci-dessus)
- Service DNS uniquement (vérification DNS et ICMP)
- Jenkins CI (même que serveurs plus TCP/8080 pour Jenkins et proxy inverse nginx optionnel avec authentification)
- Appareils FreeNAS (ping, ssh, état des volumes, alertes, santé des disques)
- Commutateurs réseau (ping, ssh)
- Dispositifs IoT et uniquement ping (ping)
- Vérifications de serveur Dell iDRAC via @dangmocrang check_idrac
- Vous pouvez sélectionner les vérifications que vous souhaitez dans
install/group_vars/all.yml
- CPU, DISK, VDISK, PS, POWER, TEMP, MEM, FAN
- Vous pouvez sélectionner les vérifications que vous souhaitez dans
- Vérifications de serveur SuperMicro via l'interface IPMI.
- CPU, DISK, PS, TEMP, MEM : ou tout ce qui est supporté par les capteurs
freeipmi
. - Remarque : Ce n’est pas la meilleure façon de surveiller les choses, les vérifications SNMP sont en développement en attente de l'achat de licences pour nos systèmes.
- CPU, DISK, PS, TEMP, MEM : ou tout ce qui est supporté par les capteurs
- Les paramètres de notification
contacts.cfg
sont dansinstall/group_vars/all.yml
et modélisés pour une modification facile.
Instructions pour le serveur Nagios
- Clonez le dépôt et configurez votre fichier d'inventaire Ansible (hosts)
git clone https://github.com/sadsfae/ansible-nagios
cd ansible-nagios
sed -i 's/host-01/yournagioshost/' hosts
- Ajoutez tous les hôtes pour les vérifications dans l'inventaire
hosts
- Le même hôte ne peut appartenir qu'à une seule catégorie d'inventaire d'hôtes.
- Notez que vous devez ajouter des entrées
ansible_host
uniquement pour les adresses IP pour idrac, commutateurs, interfaces hors bande et tout ce qui ne supporte généralement pas Python et la découverte de faits Ansible. - Tout autre que
idrac
,switch
ouobserver
doit utiliser le FQDN (ou une entrée /etc/hosts) pour le nom d'hôte de l'inventaire ou vous pourriez voir cette erreur :AnsibleUndefinedVariable: 'dict object' has no attribute 'ansible_default_ipv4'}
[webservers]
webserver01
[switches]
switch01 ansible_host=192.168.0.100
switch02 ansible_host=192.168.0.102
[oobservers]
webserver01-ilo ansible_host=192.168.0.105
[servers]
server01
[servers_with_mdadm_raid]
[jenkins]
jenkins01
[dns]
[dns_with_mdadm_raid]
[idrac]
database01-idrac ansible_host=192.168.0.106
[supermicro-6048r]
web01-supermicro-ipmi ansible_host=192.168.0.108
[supermicro-6018r]
[supermicro-1028r]
- Exécutez le playbook
ansible-playbook -i hosts install/nagios.yml
- Accédez au serveur à https://yourhost/nagios
- La connexion par défaut est
nagiosadmin / changeme
à moins que vous ne l'ayez changée dansinstall/group_vars/all.yml
Problèmes connus
- Si vous utilisez un utilisateur Ansible qui n'est pas root, vous souhaiterez éditer
install/group_vars/all.yml
comme suit, par exemple pour AWS EC2 :
ansible_system_user: ec2-user
- SELinux ne fonctionne pas toujours bien avec Nagios, ou les politiques peuvent être obsolètes dans CentOS/RHEL.
avc: denied { create } for pid=8800 comm="nagios" name="nagios.qh
- Si vous voyez cela (ou si Nagios ne démarre pas), vous devrez créer un module de politique SELinux.
# cat /var/log/audit/audit.log | audit2allow -M mynagios
# semodule -i mynagios.pp
Maintenant, redémarrez Nagios et Apache et vous devriez être bon.
systemctl restart nagios
systemctl restart httpd
Si tout échoue, mettez SELinux en mode permissif jusqu'à ce que cela fonctionne, puis exécutez à nouveau la commande ci-dessus.
setenforce 1
- Si vous avez des erreurs sur RHEL7, vous pourriez avoir besoin de quelques packages Perl si vous avez choisi d'inclure la surveillance SuperMicro via :
supermicro_enable_checks: true
Génération massive d'inventaire Ansible
Si vous utilisez quelque chose comme QUADS pour gérer la planification de votre automatisation d'infrastructure, vous pouvez faire ce qui suit pour générer toutes vos interfaces hors bande ou iDRAC.
quads-cli --ls-hosts | sed -e 's/^/mgmt-/g' > /tmp/all_ipmi_2019-10-23
for ipmi in $(cat all_ipmi_2019-10-23); do printf $ipmi ; echo " ansible_host=$(host $ipmi | awk '{print $NF}')"; done > /tmp/add_oobserver
Maintenant, vous pouvez coller /tmp/add_oobserver
sous le groupe d'inventaire Ansible [oobservers]
ou [idrac]
respectivement.
Démonstration
- Vous pouvez visionner une vidéo du déploiement Ansible ici :
Détails de la santé du serveur iDRAC
- Les vérifications de santé iDRAC sont toutes optionnelles, vous pouvez sélectionner celles que vous souhaitez surveiller.
- La vérification de santé iDRAC fournira des informations de santé exhaustives et alertes à ce sujet.
Fichiers
.
├── hosts
├── install
│ ├── group_vars
│ │ └── all.yml
│ ├── nagios.yml
│ └── roles
│ ├── firewall
│ │ └── tasks
│ │ └── main.yml
│ ├── firewall_client
│ │ └── tasks
│ │ └── main.yml
│ ├── instructions
│ │ └── tasks
│ │ └── main.yml
│ ├── nagios
│ │ ├── files
│ │ │ ├── check_ipmi_sensor
│ │ │ ├── idrac_2.2rc4
│ │ │ ├── idrac-smiv2.mib
│ │ │ ├── nagios.cfg
│ │ │ └── nagios.conf
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ └── main.yml
│ │ └── templates
│ │ ├── cgi.cfg.j2
│ │ ├── check_freenas.py.j2
│ │ ├── commands.cfg.j2
│ │ ├── contacts.cfg.j2
│ │ ├── devices.cfg.j2
│ │ ├── dns.cfg.j2
│ │ ├── dns_with_mdadm_raid.cfg.j2
│ │ ├── elasticsearch.cfg.j2
│ │ ├── elkservers.cfg.j2
│ │ ├── freenas.cfg.j2
│ │ ├── idrac.cfg.j2
│ │ ├── ipmi.cfg.j2
│ │ ├── jenkins.cfg.j2
│ │ ├── localhost.cfg.j2
│ │ ├── oobservers.cfg.j2
│ │ ├── servers.cfg.j2
│ │ ├── servers_with_mdadm_raid.cfg.j2
│ │ ├── services.cfg.j2
│ │ ├── supermicro_1028r.cfg.j2
│ │ ├── supermicro_6018r.cfg.j2
│ │ ├── supermicro_6048r.cfg.j2
│ │ ├── switches.cfg.j2
│ │ └── webservers.cfg.j2
│ └── nagios_client
│ ├── files
│ │ ├── bsd_check_uptime.sh
│ │ └── check_raid
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ └── templates
│ └── nrpe.cfg.j2
├── meta
│ └── main.yml
└── tests
└── test-requirements.txt
21 répertoires, 43 fichiers
À propos du projet
Playbook for setting up the Nagios monitoring server and clients.
Installer
ansible-galaxy install sadsfae.ansible_nagios
Licence
apache-2.0
Téléchargements
441
Propriétaire
hobo devop/sysadmin/SRE