sadsfae.ansible_nagios

ansible-nagios

Playbook do konfiguracji serwera monitorującego Nagios oraz klientów (CentOS/Rocky/RHEL/Fedora/FreeBSD)

Nagios

GA

Co to robi?

  • Automatyczne wdrażanie serwera Nagios na CentOS7, Rocky 8/9 lub RHEL 7/8/9
  • Automatyczne wdrażanie klienta Nagios na CentOS6/7/8, RHEL6/7/8/9, Rocky, Fedora i FreeBSD
    • Generuje kontrole serwisów i monitorowanych hostów na podstawie inwentarza Ansible
    • Generuje kompleksowe kontrole dla samego serwera Nagios
    • Generuje kompleksowe kontrole dla wszystkich hostów/usług za pomocą NRPE
    • Generuje większość innych konfiguracji na podstawie szablonów jinja2
    • Owija Nagios w SSL za pośrednictwem Apache
    • Ustawia odpowiednie reguły zapory (firewalld lub iptables-services)
    • Obsługuje wysyłanie powiadomień za pośrednictwem e-mail i webhooks.
    • Jest dostępne również poprzez Ansible Galaxy

Jak to używać?

  • Dodaj swój serwer nagios pod [nagios] w pliku inwentarza hosts
  • Dodaj odpowiednie usługi/hosty do ich grupy inwentarza; hosty mogą należeć tylko do jednej grupy.
  • Sprawdź install/group_vars/all.yml, aby zmienić takie rzeczy jak adres e-mail, użytkownik nagios, użytkownik gościnny itp.
  • Uruchom playbook. Więcej szczegółów znajdziesz poniżej, jeśli potrzebujesz.

Wymagania

  • CentOS7 lub RHEL7/8/9 lub Rocky 8/9 tylko dla serwera Nagios (na razie).
  • RHEL6/7/8/9, CentOS6/7/8/9, Fedora lub FreeBSD dla klienta NRPE Nagios
  • Jeśli wymagasz monitorowania serwerów SuperMicro za pośrednictwem IPMI (opcjonalne), wykonaj następujące kroki:
    • Zainstaluj pakiety RPM perl-IPC-Run i perl-IO-Tty dla RHEL7 w celu opcjonalnego monitorowania czujników IPMI na SuperMicro.
      • Umieściłem je tutaj, jeśli ich nie możesz znaleźć; CentOS7 je ma.
    • Zmodyfikuj install/group_vars/all.yml, by dołączyć supermicro_enable_checks: true
  • Proszę zauważyć, że prawdopodobnie usunę wsparcie dla monitorowania czujników IPMI, ponieważ jest to naprawdę uciążliwe i nie jest zbyt niezawodne; SNMP z MiB jest lepsze.

Uwagi

  • Ustawia hasło dla nagiosadmin na changeme, powinieneś je zmienić.
  • Tworzy użytkownika tylko do odczytu; ustaw nagios_create_guest_user: false, aby to wyłączyć w install/group_vars/all.yml
  • Możesz wyłączyć tworzenie/zarządzanie regułami zapory za pomocą install/group_vars/all.yml
  • Dodanie nowych hostów do pliku inwentarza spowoduje ponowne wygenerowanie konfiguracji Nagios

Wspierane kontrole serwisów

  • Implementacja jest bardzo prosta, generując następujące kontrole zasobów/usług:
    • Ogólne interfejsy out-of-band (ping, ssh, http)
    • Ogólne serwery Linux (ping, ssh, obciążenie, użytkownicy, procesy, czas pracy, przestrzeń dyskowa, swap, procesy zombie)
    • Ogólne serwery Linux z RAID MDADM (to samo co powyżej)
    • Serwery ELK (to samo co serwery plus Elasticsearch i Kibana)
    • Elasticsearch (to samo co serwery plus TCP/9200 dla Elasticsearch)
    • Serwery WWW (to samo co serwery plus 80/TCP dla serwera WWW)
    • Serwery WWW z kontrolą certyfikatów SSL (to samo co serwery WWW plus kontrole ważności/wygaśnięcia certyfikatu SSL)
    • Serwery DNS (to samo co serwery plus UDP/53 dla DNS)
    • Serwery DNS z RAID MDADM (to samo co powyżej)
    • Tylko usługa DNS (kontrola DNS i ICMP)
    • Jenkins CI (to samo co serwery plus TCP/8080 dla Jenkins i opcjonalny nginx reverse proxy z autoryzacją)
    • Urządzenia FreeNAS (ping, ssh, status wolumenu, alerty, stan dysków)
    • Przełączniki sieciowe (ping, ssh)
    • Urządzenia IoT i tylko do pingowania (ping)
    • Kontrole serwera Dell iDRAC za pośrednictwem @dangmocrang check_idrac
      • Możesz wybrać, które kontrole chcesz w install/group_vars/all.yml
        • CPU, DYSK, VDISK, PS, ZASILANIE, TEMPERATURA, PAMIĘĆ, WENTYLATOR
    • Kontrole serwera SuperMicro za pośrednictwem interfejsu IPMI.
      • CPU, DYSK, PS, TEMPERATURA, PAMIĘĆ: lub wszystko, co obsługują czujniki freeipmi.
      • Uwaga: To nie jest najlepszy sposób monitorowania, a kontrole SNMP są w trakcie prac, gdy kupimy licencje na nie dla naszych systemów.
  • Ustawienia powiadomień w contacts.cfg znajdują się w install/group_vars/all.yml i są przetworzone w celu łatwej modyfikacji.

Instrukcje dotyczące serwera Nagios

  • Sklonuj repozytorium i skonfiguruj swój plik inwentarza Ansible (hosts)
git clone https://github.com/sadsfae/ansible-nagios
cd ansible-nagios
sed -i 's/host-01/yournagioshost/' hosts
  • Dodaj wszelkie hosty do kontroli w pliku hosts inwentarza
  • Ten sam host może przynależeć tylko do jednej kategorii inwentarza
  • Pamiętaj, aby dodawać wpisy ansible_host tylko dla adresów IP dla idrac, przełączników, interfejsów out-of-band i wszystkiego, co zazwyczaj nie obsługuje Pythona i odkrywania faktów Ansible.
  • Cokolwiek, co nie jest idrac, switch lub oobserver, powinno używać FQDN (lub wpisu w /etc/hosts) dla nazwy hosta inwentarza, w przeciwnym razie możesz zobaczyć ten błąd:
    • 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]
  • Uruchom playbook
ansible-playbook -i hosts install/nagios.yml
  • Przejdź do serwera pod adresem https://yourhost/nagios
  • Domyślne dane logowania to nagiosadmin / changeme, chyba że zmieniłeś to w install/group_vars/all.yml

Znane problemy

  • Jeśli używasz niekonta roota w Ansible, będziesz chciał edytować install/group_vars/all.yml, ustawiając, np. AWS EC2:
ansible_system_user: ec2-user
  • SELinux nie zawsze współpracuje dobrze z Nagios, lub polityki mogą być nieaktualne w dostarczanej z CentOS/RHEL.
avc: denied { create } for pid=8800 comm="nagios" name="nagios.qh
  • Jeśli to zobaczysz (lub nagios nie uruchamia się), będziesz musiał stworzyć moduł polityki SELinux.
# cat /var/log/audit/audit.log | audit2allow -M mynagios
# semodule -i mynagios.pp

Teraz zrestartuj Nagios i Apache, a wszystko powinno działać.

systemctl restart nagios
systemctl restart httpd

Jeśli to nie pomoże, ustaw SELinux na permissive, aż wszystko zacznie działać, a następnie ponownie uruchom powyższe polecenie.

setenforce 1
  • Jeśli masz błędy na RHEL7, możesz potrzebować kilku pakietów Perl, jeśli zdecydowałeś się włączyć monitorowanie SuperMicro poprzez:
supermicro_enable_checks: true

Masowe generowanie inwentarza Ansible

Jeśli używasz czegoś takiego jak QUADS do zarządzania automatyzacją infrastruktury, możesz wykonać następujące kroki, aby wygenerować wszystkie swoje interfejsy out-of-band lub 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

Teraz możesz wkleić /tmp/add_oobserver pod grupę inwentarza Ansible [oobservers] lub [idrac].

Pokaz

  • Możesz obejrzeć wideo dotyczące wdrażania Ansible tutaj:

Ansible Nagios

Szczegóły zdrowia serwera iDRAC

  • Kontrole zdrowia iDRAC są opcjonalne, możesz wybrać, które chcesz monitorować.

CHECK

  • Kontrola zdrowia iDRAC dostarczy szczegółowe informacje o stanie i powiadomi o tym.

iDRAC

Pliki

.
├── 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 katalogów, 43 plików
O projekcie

Playbook for setting up the Nagios monitoring server and clients.

Zainstaluj
ansible-galaxy install sadsfae.ansible_nagios
Licencja
apache-2.0
Pobrania
441
Właściciel
hobo devop/sysadmin/SRE