sadsfae.ansible_nagios

ansible-nagios

Playbook zur Einrichtung des Nagios-Überwachungsservers und der Clients (CentOS/Rocky/RHEL/Fedora/FreeBSD)

Nagios

GA

Was macht es?

  • Automatisierte Bereitstellung des Nagios-Servers auf CentOS7, Rocky 8/9 oder RHEL 7/8/9
  • Automatisierte Bereitstellung des Nagios-Clients auf CentOS6/7/8, RHEL6/7/8/9 oder Rocky, Fedora und FreeBSD
    • Generiert Dienstprüfungen und überwachte Hosts aus dem Ansible-Inventar
    • Generiert umfassende Prüfungen für den Nagios-Server selbst
    • Generiert umfassende Prüfungen für alle Hosts/Dienste über NRPE
    • Generiert die meisten anderen Konfigurationen basierend auf Jinja2-Vorlagen
    • Sichert Nagios über SSL mit Apache
    • Richtet die richtigen Firewall-Regeln ein (firewalld oder iptables-services)
    • Unterstützt das Senden von Warnungen per E-Mail und ausgehenden Webhooks.
    • Dies ist auch über Ansible Galaxy verfügbar.

Wie benutze ich es?

  • Fügen Sie Ihren Nagios-Server unter [nagios] in der hosts-Inventarliste hinzu
  • Fügen Sie die entsprechenden Dienste/Hosts ihrer Inventargruppe hinzu, Hosts dürfen nur einer Gruppe angehören.
  • Schauen Sie sich install/group_vars/all.yml an, um Änderungen an E-Mail-Adressen, Nagios-Benutzer, Gastbenutzer usw. vorzunehmen.
  • Führen Sie das Playbook aus. Lesen Sie weiter unten weitere Details, falls erforderlich.

Anforderungen

  • CentOS7 oder RHEL7/8/9 oder Rocky 8/9 nur für den Nagios-Server (vorerst).
  • RHEL6/7/8/9, CentOS6/7/8/9, Fedora oder FreeBSD für den NRPE-Nagios-Client
  • Wenn Sie die Überwachung von SuperMicro-Servern über IPMI benötigen (optional), machen Sie Folgendes
    • Installieren Sie die RPMs perl-IPC-Run und perl-IO-Tty für RHEL7 zur optionalen IPMI-Sensorüberwachung auf SuperMicro.
      • Ich habe sie hier platziert, falls Sie sie nicht finden können, CentOS7 hat sie jedoch.
    • Ändern Sie install/group_vars/all.yml, um supermicro_enable_checks: true einzuschließen
  • Bitte beachten Sie, dass ich wahrscheinlich die Unterstützung für die IPMI-Sensorüberwachung entfernen werde, da es sehr mühsam und nicht besonders zuverlässig ist; SNMP mit MiB ist besser.

Hinweise

  • Setzt das Passwort für nagiosadmin auf changeme, das sollten Sie ändern.
  • Erstellt einen schreibgeschützten Benutzer, setzen Sie nagios_create_guest_user: false in install/group_vars/all.yml, um dies zu deaktivieren.
  • Sie können die Erstellung/Verwaltung von Firewall-Regeln über install/group_vars/all.yml deaktivieren.
  • Das Hinzufügen neuer Hosts zur Inventarliste regeneriert nur die Nagios-Konfigurationen.

Unterstützte Dienstprüfungen

  • Die Implementierung ist sehr einfach, mit folgenden Ressource-/Dienstprüfungen:
    • Allgemeine Out-of-Band-Schnittstellen (Ping, SSH, HTTP)
    • Allgemeine Linux-Server (Ping, SSH, Last, Benutzer, Prozesse, Laufzeit, Speicherplatz, Swap, Zombie-Prozesse)
    • Allgemeine Linux-Server mit MDADM RAID (gleich wie oben)
    • ELK-Server (gleich wie Server plus Elasticsearch und Kibana)
    • Elasticsearch (gleich wie Server plus TCP/9200 für Elasticsearch)
    • Webserver (gleich wie Server plus 80/TCP für Webserver)
    • Webserver mit SSL-Zertifikatsprüfung (gleich wie Webserver plus Prüfung der SSL-Zertifikatsgültigkeit/-ablauf)
    • DNS-Server (gleich wie Server plus UDP/53 für DNS)
    • DNS-Server mit MDADM RAID (gleich wie oben)
    • Nur DNS-Dienste (DNS- und ICMP-Prüfung)
    • Jenkins CI (gleich wie Server plus TCP/8080 für Jenkins und optional nginx-Proxy mit Authentifizierung)
    • FreeNAS Appliances (Ping, SSH, Volume-Status, Warnungen, Festplattengesundheit)
    • Netzwerk-Switches (Ping, SSH)
    • IoT- und nur Ping-Geräte (Ping)
    • Dell iDRAC-Serverprüfungen über @dangmocrang check_idrac
      • Sie können auswählen, welche Prüfungen Sie in install/group_vars/all.yml wollen
        • CPU, DISK, VDISK, PS, POWER, TEMP, MEM, FAN
    • SuperMicro-Serverprüfungen über die IPMI-Schnittstelle.
      • CPU, DISK, PS, TEMP, MEM: oder alles, was über freeipmi-Sensoren unterstützt wird.
      • Hinweis: Dies ist nicht der beste Weg, um Dinge zu überwachen, SNMP-Prüfungen sind in Arbeit, sobald wir Lizenzen dafür für unsere Systeme erwerben.
  • Die Benachrichtigungseinstellungen in contacts.cfg befinden sich in install/group_vars/all.yml und sind für einfache Änderungen vorformatiert.

Anweisungen zum Nagios-Server

  • Klonen Sie das Repository und richten Sie Ihre Ansible-Inventarliste (Hosts) ein
git clone https://github.com/sadsfae/ansible-nagios
cd ansible-nagios
sed -i 's/host-01/yournagioshost/' hosts
  • Fügen Sie alle Hosts für Prüfungen in die hosts-Inventarliste hinzu
  • Der gleiche Host kann nur einer einzigen Inventarkategorie angehören
  • Beachten Sie, dass Sie ansible_host-Einträge nur für IP-Adressen für iDRAC, Switches, Out-of-Band-Schnittstellen und alles, was typischerweise Python und Ansible-Faktenentdeckung nicht unterstützt, hinzufügen müssen.
  • Alles, was nicht ein idrac, switch oder oobserver ist, sollte den FQDN (oder einen Eintrag in /etc/hosts) für den Inventar-Hostnamen verwenden, oder Sie könnten diesen Fehler sehen:
    • 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]
  • Führen Sie das Playbook aus
ansible-playbook -i hosts install/nagios.yml
  • Besuchen Sie den Server unter https://yourhost/nagios
  • Standardanmeldung ist nagiosadmin / changeme, es sei denn, Sie haben es in install/group_vars/all.yml geändert.

Bekannte Probleme

  • Wenn Sie einen nicht-root Ansible-Benutzer verwenden, sollten Sie install/group_vars/all.yml bearbeiten, z.B. AWS EC2:
ansible_system_user: ec2-user
  • SELinux funktioniert nicht immer gut mit Nagios, oder die Richtlinien sind möglicherweise veraltet, wie sie mit CentOS/RHEL ausgeliefert werden.
avc: denied { create } for pid=8800 comm="nagios" name="nagios.qh
  • Wenn Sie dies sehen (oder Nagios nicht startet), müssen Sie ein SELinux-Richtlinienmodul erstellen.
# cat /var/log/audit/audit.log | audit2allow -M mynagios
# semodule -i mynagios.pp

Jetzt starten Sie Nagios und Apache neu, und alles sollte funktionieren.

systemctl restart nagios
systemctl restart httpd

Wenn alles andere fehlschlägt, setzen Sie SELinux auf permissiv, bis es läuft, und führen Sie dann den obigen Befehl erneut aus.

setenforce 1
  • Wenn Sie Fehler auf RHEL7 haben, benötigen Sie möglicherweise einige Perl-Pakete, falls Sie die Überwachung von SuperMicro mit einbeziehen wollten:
supermicro_enable_checks: true

Massenerstellung von Ansible Inventar

Wenn Sie etwas wie QUADS zur Verwaltung Ihrer Infrastruktur-Automatisierungsplanung verwenden, können Sie Folgendes tun, um all Ihre Out-of-Band- oder iDRAC-Schnittstellen zu generieren.

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

Jetzt können Sie /tmp/add_oobserver unter der [oobservers]- oder [idrac]-Ansible-Inventargruppe einfügen.

Demonstration

  • Sie können sich ein Video der Ansible-Bereitstellung hier ansehen:

Ansible Nagios

iDRAC-Server-Gesundheitsdetails

  • Die iDRAC-Gesundheitsprüfungen sind alle optional, Sie können auswählen, welche Sie überwachen möchten.

CHECK

  • Die iDRAC-Gesundheitsprüfung bietet umfassende Gesundheitsinformationen und warnt darüber.

iDRAC

Dateien

.
├── 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 Verzeichnisse, 43 Dateien
Über das Projekt

Playbook for setting up the Nagios monitoring server and clients.

Installieren
ansible-galaxy install sadsfae.ansible_nagios
Lizenz
apache-2.0
Downloads
441
Besitzer
hobo devop/sysadmin/SRE