ansible_nagios
ansible-nagios
Плейбук для настройки сервера мониторинга Nagios и клиентов (CentOS/Rocky/RHEL/Fedora/FreeBSD)
Что это делает?
- Автоматическая установка сервера Nagios на CentOS7, Rocky 8/9 или RHEL 7/8/9
- Автоматическая установка клиента Nagios на CentOS6/7/8, RHEL6/7/8/9, а также Rocky, Fedora и FreeBSD
- Генерирует проверки сервисов и контролируемых хостов из инвентаря Ansible
- Генерирует комплексные проверки для самого сервера Nagios
- Генерирует комплексные проверки для всех хостов/сервисов через NRPE
- Генерирует большинство других конфигураций на основе шаблонов jinja2
- Оборачивает Nagios в SSL через Apache
- Настраивает правильные правила брандмауэра (firewalld или iptables-services)
- Поддерживает отправку оповещений по электронной почте и исходящие вебхуки.
- Также доступно через Ansible Galaxy
Как это использовать?
- Добавьте ваш сервер nagios в раздел
[nagios]
файлаhosts
инвентаря - Добавьте соответствующие сервисы/хосты в их группу инвентаря. Хосты могут принадлежать только одной группе.
- Ознакомьтесь с файлом
install/group_vars/all.yml
, чтобы изменить такие данные, как адрес электронной почты, пользователь nagios, пользователь-гость и др. - Запустите плейбук. Читайте ниже для получения дополнительных деталей при необходимости.
Требования
- CentOS7 или RHEL7/8/9 или Rocky 8/9 только для сервера Nagios (на данный момент).
- RHEL6/7/8/9, CentOS6/7/8/9, Fedora или FreeBSD для клиента NRPE Nagios
- Если вам требуется мониторинг серверов SuperMicro через IPMI (необязательно), выполните следующее:
- Установите RPM-пакеты
perl-IPC-Run
иperl-IO-Tty
для RHEL7 для необязательного мониторинга датчиков IPMI на SuperMicro.- Я разместил их здесь, если вы не можете их найти, но они есть в CentOS7.
- Измените файл
install/group_vars/all.yml
, чтобы включитьsupermicro_enable_checks: true
.
- Установите RPM-пакеты
- Обратите внимание, что я, вероятно, уберу поддержку мониторинга датчиков IPMI, так как она очень неудобна и ненадежна, проверки SNMP с MiB лучше.
Примечания
- Устанавливает пароль для
nagiosadmin
какchangeme
, вам нужно будет изменить его. - Создает пользователя с правами только для чтения, установите
nagios_create_guest_user: false
, чтобы отключить это в файлеinstall/group_vars/all.yml
. - Вы можете отключить создание/управление правилами брандмауэра через
install/group_vars/all.yml
. - Добавление новых хостов в файл инвентаря просто перегенерирует конфигурации Nagios.
Поддерживаемые проверки сервисов
- Реализация очень проста, сгенерированы следующие проверки ресурсов/сервисов:
- Общие интерфейсы вне полосы (ping, ssh, http)
- Общие серверы Linux (ping, ssh, загрузка, пользователи, процессы, время работы, дисковое пространство, swap, зомби-процессы)
- Общие серверы Linux с MDADM RAID (так же, как выше)
- Сервера ELK (так же, как серверы плюс elasticsearch и Kibana)
- Elasticsearch (так же, как серверы плюс TCP/9200 для elasticsearch)
- Веб-серверы (так же, как серверы плюс 80/TCP для веб-сервера)
- Веб-серверы с проверкой SSL-сертификата (так же, как веб-серверы плюс проверки действительности/истечения срока SSL-сертификата)
- DNS-серверы (так же, как серверы плюс UDP/53 для DNS)
- DNS-серверы с MDADM RAID (так же, как выше)
- Только служба DNS (проверка DNS и ICMP)
- Jenkins CI (так же, как серверы плюс TCP/8080 для Jenkins и необязательный обратный прокси nginx с авторизацией)
- Устройства FreeNAS (ping, ssh, статус томов, оповещения, здоровье дисков)
- Сетевые коммутаторы (ping, ssh)
- Устройства IoT и только для ping (ping)
- Проверки серверов Dell iDRAC через @dangmocrang check_idrac
- Вы можете выбрать, какие проверки хотите в
install/group_vars/all.yml
- CPU, DISK, VDISK, PS, POWER, TEMP, MEM, FAN
- Вы можете выбрать, какие проверки хотите в
- Проверки серверов SuperMicro через интерфейс IPMI.
- CPU, DISK, PS, TEMP, MEM: или любая другая поддерживаемая информация через датчики
freeipmi
. - Обратите внимание: это не лучший способ мониторинга, проверки SNMP находятся в разработке, как только мы купим лицензии для них для наших систем.
- CPU, DISK, PS, TEMP, MEM: или любая другая поддерживаемая информация через датчики
- Настройки уведомлений
contacts.cfg
находятся вinstall/group_vars/all.yml
и сделаны для легкого изменения.
Инструкции по серверу Nagios
- Клонируйте репозиторий и настройте ваш файл Ansible инвентаря (hosts)
git clone https://github.com/sadsfae/ansible-nagios
cd ansible-nagios
sed -i 's/host-01/yournagioshost/' hosts
- Добавьте любые хосты для проверок в файл
hosts
инвентаря - Один и тот же хост может принадлежать только к одной категории инвентаря
- Обратите внимание, что вам нужно добавлять записи
ansible_host
только для IP-адресов для idrac, коммутаторов, интерфейсов вне полосы и любых устройств, которые обычно не поддерживают Python и обнаружение фактов Ansible. - Все устройства, не являющиеся
idrac
,switch
илиoobserver
должны использовать FQDN (или запись /etc/hosts) для имени хоста инвентаря, иначе вы можете увидеть эту ошибку: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]
- Запустите плейбук
ansible-playbook -i hosts install/nagios.yml
- Перейдите на сервер по адресу https://yourhost/nagios
- Стандартный логин:
nagiosadmin / changeme
, если вы не изменили его вinstall/group_vars/all.yml
Известные проблемы
- Если вы используете пользователя Ansible, не являющегося root, вам нужно будет изменить настройку в
install/group_vars/all.yml
, например, для AWS EC2:
ansible_system_user: ec2-user
- SELinux не всегда хорошо работает с Nagios, или политики могут быть устаревшими, как были поставлены с CentOS/RHEL.
avc: denied { create } for pid=8800 comm="nagios" name="nagios.qh
- Если вы видите это (или Nagios не запускается), вам нужно будет создать модуль политики SELinux.
# cat /var/log/audit/audit.log | audit2allow -M mynagios
# semodule -i mynagios.pp
Теперь перезапустите Nagios и Apache, и все должно заработать.
systemctl restart nagios
systemctl restart httpd
Если все остальное не сработает, установите SELinux в «разрешительный» режим, пока все не запустится, затем снова выполните вышеуказанную команду.
setenforce 1
- Если у вас возникают ошибки на RHEL7, вам могут понадобиться несколько пакетов Perl, если вы выбрали включить мониторинг SuperMicro через:
supermicro_enable_checks: true
Массовая генерация инвентаря Ansible
Если вы используете что-то вроде QUADS для управления автоматизацией вашей инфраструктуры, вы можете сделать следующее, чтобы сгенерировать все ваши интерфейсы вне полосы или 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
Теперь вы можете вставить /tmp/add_oobserver
в группу инвентаря Ansible [oobservers]
или [idrac]
соответственно.
Демонстрация
- Вы можете посмотреть видео развертывания Ansible здесь:
Детали состояния сервера iDRAC
- Проверки состояния iDRAC являются необязательными, вы можете выбрать, какие хотите контролировать.
- Проверка состояния iDRAC предоставит исчерпывающую информацию о состоянии и оповестит об этом.
Файлы
.
├── 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 директория, 43 файла
Установить
ansible-galaxy install sadsfae/ansible-nagios
Лицензия
apache-2.0
Загрузки
429
Владелец
hobo devop/sysadmin/SRE