sadsfae.ansible_nagios

ansible-nagios

Playbook pour configurer le serveur de surveillance Nagios et les clients (CentOS/Rocky/RHEL/Fedora/FreeBSD)

Nagios

GA

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'inventaire hosts
  • 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 et perl-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 inclure supermicro_enable_checks: true
  • 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 sur changeme, vous voudrez changer cela.
  • Crée un utilisateur en lecture seule, définissez nagios_create_guest_user: false pour désactiver cela dans install/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
    • 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.
  • Les paramètres de notification contacts.cfg sont dans install/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 ou observer 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 dans install/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 :

Ansible Nagios

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.

CHECK

  • La vérification de santé iDRAC fournira des informations de santé exhaustives et alertes à ce sujet.

iDRAC

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