sadsfae.ansible_nagios
ansible-nagios
Playbook do konfiguracji serwera monitorującego Nagios oraz klientów (CentOS/Rocky/RHEL/Fedora/FreeBSD)
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 inwentarzahosts
- 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
iperl-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
- Zainstaluj pakiety RPM
- 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
nachangeme
, powinieneś je zmienić. - Tworzy użytkownika tylko do odczytu; ustaw
nagios_create_guest_user: false
, aby to wyłączyć winstall/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
- Możesz wybrać, które kontrole chcesz w
- 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.
- CPU, DYSK, PS, TEMPERATURA, PAMIĘĆ: lub wszystko, co obsługują czujniki
- Ustawienia powiadomień w
contacts.cfg
znajdują się winstall/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
luboobserver
, 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 winstall/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:
Szczegóły zdrowia serwera iDRAC
- Kontrole zdrowia iDRAC są opcjonalne, możesz wybrać, które chcesz monitorować.
- Kontrola zdrowia iDRAC dostarczy szczegółowe informacje o stanie i powiadomi o tym.
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