ansible_nagios

ansible-nagios

Плейбук для настройки сервера мониторинга Nagios и клиентов (CentOS/Rocky/RHEL/Fedora/FreeBSD)

Nagios

GA

Что это делает?

  • Автоматическая установка сервера 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.
  • Обратите внимание, что я, вероятно, уберу поддержку мониторинга датчиков 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 находятся в разработке, как только мы купим лицензии для них для наших систем.
  • Настройки уведомлений 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 здесь:

Ansible Nagios

Детали состояния сервера iDRAC

  • Проверки состояния iDRAC являются необязательными, вы можете выбрать, какие хотите контролировать.

CHECK

  • Проверка состояния 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 файла
О проекте

Playbook for setting up the Nagios monitoring server and clients.

Установить
ansible-galaxy install sadsfae/ansible-nagios
Лицензия
apache-2.0
Загрузки
429
Владелец
hobo devop/sysadmin/SRE