sadsfae.ansible_nagios
ansible-nagios
============== Playbook para configurar el servidor de monitoreo Nagios y clientes (CentOS/Rocky/RHEL/Fedora/FreeBSD)
¿Qué hace?
- Despliegue automático del servidor Nagios en CentOS7, Rocky 8/9 o RHEL 7/8/9
- Despliegue automático del cliente Nagios en CentOS6/7/8, RHEL6/7/8/9 o Rocky, Fedora y FreeBSD
- Genera chequeos de servicios y hosts monitoreados desde el inventario de Ansible
- Genera chequeos exhaustivos para el servidor Nagios mismo
- Genera chequeos exhaustivos para todos los hosts/servicios a través de NRPE
- Genera la mayoría de las otras configuraciones basadas en plantillas jinja2
- Envuelve Nagios en SSL a través de Apache
- Configura reglas de firewall adecuadas (firewalld o iptables-services)
- Soporte para enviar alertas por correo electrónico y webhooks salientes.
- Esto también está disponible a través de Ansible Galaxy
¿Cómo lo uso?
- Agrega tu servidor Nagios bajo
[nagios]
en el inventariohosts
- Agrega los respectivos servicios/hosts bajo su grupo de inventario, los hosts solo pueden pertenecer a un grupo.
- Revisa
install/group_vars/all.yml
para cambiar cualquier cosa como dirección de correo, usuario de nagios, usuario invitado, etc. - Ejecuta el playbook. Lee más abajo para más detalles si es necesario.
Requisitos
- CentOS7 o RHEL7/8/9 o Rocky 8/9 solo para el servidor Nagios (por ahora).
- RHEL6/7/8/9, CentOS6/7/8/9, Fedora o FreeBSD para el cliente NRPE de Nagios
- Si necesitas monitoreo de servidores SuperMicro a través de IPMI (opcional), haz lo siguiente
- Instala los RPMs
perl-IPC-Run
yperl-IO-Tty
para RHEL7 para monitoreo opcional de sensores IPMI en SuperMicro.- Los he colocado aquí si no puedes encontrarlos, sin embargo, CentOS7 los tiene.
- Modifica
install/group_vars/all.yml
para incluirsupermicro_enable_checks: true
- Instala los RPMs
- Ten en cuenta que probablemente quitaré el soporte para monitoreo de sensores IPMI porque es complicado y no tan confiable, SNMP con MiB es mejor.
Notas
- Establece la contraseña de
nagiosadmin
achangeme
, querrás cambiar esto. - Crea un usuario de solo lectura, establece
nagios_create_guest_user: false
para deshabilitar esto eninstall/group_vars/all.yml
- Puedes desactivar la creación/gestión de reglas de firewall a través de
install/group_vars/all.yml
- Agregar nuevos hosts al archivo de inventario simplemente regenerará las configuraciones de Nagios
Chequeos de servicio soportados
- La implementación es muy simple, con los siguientes chequeos de recursos/servicios generados:
- Interfaces genéricas fuera de banda (ping, ssh, http)
- Servidores Linux genéricos (ping, ssh, carga, usuarios, procesos, tiempo de actividad, espacio en disco, swap, procesos zombie)
- Servidores Linux genéricos con RAID MDADM (igual que arriba)
- Servidores ELK (igual que servidores más elasticsearch y Kibana)
- Elasticsearch (igual que servidores más TCP/9200 para elasticsearch)
- Servidores web (igual que servidores más 80/TCP para servidor web)
- Servidores web con verificación de certificado SSL (igual que servidores web más chequeos de validez/expiración del certificado SSL)
- Servidores DNS (igual que servidores más UDP/53 para DNS)
- Servidores DNS con RAID MDADM (igual que arriba)
- Solo servicio DNS (chequeo de DNS e ICMP)
- Jenkins CI (igual que servidores más TCP/8080 para Jenkins y opcionalmente proxy inverso nginx con autenticación)
- Appliances FreeNAS (ping, ssh, estado del volumen, alertas, salud del disco)
- Conmutadores de red (ping, ssh)
- Dispositivos IoT y solo ping (ping)
- Chequeos de servidor Dell iDRAC a través de @dangmocrang check_idrac
- Puedes seleccionar qué chequeos deseas en
install/group_vars/all.yml
- CPU, DISCO, VDISCO, PS, POTENCIA, TEMP, MEM, VENTILADOR
- Puedes seleccionar qué chequeos deseas en
- Chequeos de servidor SuperMicro a través de la interfaz IPMI.
- CPU, DISCO, PS, TEMP, MEM: o cualquier cosa soportada a través de sensores
freeipmi
. - Nota: Esta no es la mejor manera de monitorear, los chequeos SNMP están en desarrollo mientras compramos licencias para ellos para nuestros sistemas
- CPU, DISCO, PS, TEMP, MEM: o cualquier cosa soportada a través de sensores
- Las configuraciones de notificaciones de
contacts.cfg
están eninstall/group_vars/all.yml
y están plantilladas para fácil modificación.
Instrucciones para el servidor Nagios
- Clona el repositorio y configura tu archivo de inventario Ansible (hosts)
git clone https://github.com/sadsfae/ansible-nagios
cd ansible-nagios
sed -i 's/host-01/yournagioshost/' hosts
- Agrega cualquier host para chequeos en el inventario
hosts
- El mismo host solo puede pertenecer a una categoría de inventario de hosts
- Ten en cuenta que necesitas agregar entradas
ansible_host
solo para direcciones IP para idrac, conmutadores, interfaces fuera de banda y cualquier cosa que normalmente no soporte Python y descubrimiento de hechos de Ansible. - Cualquier cosa que no sea un
idrac
,switch
ooobserver
debe usar el FQDN (o una entrada en /etc/hosts) para el nombre del host de inventario o podrías ver este error: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]
- Ejecuta el playbook
ansible-playbook -i hosts install/nagios.yml
- Navega al servidor en https://yourhost/nagios
- El inicio de sesión predeterminado es
nagiosadmin / changeme
a menos que lo hayas cambiado eninstall/group_vars/all.yml
Problemas conocidos
- Si usas un usuario Ansible que no es root, querrás editar la configuración de
install/group_vars/all.yml
, por ejemplo, AWS EC2:
ansible_system_user: ec2-user
- SELinux no siempre funciona bien con Nagios, o las políticas pueden estar desactualizadas según lo que se envía con CentOS/RHEL.
avc: denied { create } for pid=8800 comm="nagios" name="nagios.qh
- Si ves esto (o Nagios no arranca) necesitarás crear un módulo de política de SELinux.
# cat /var/log/audit/audit.log | audit2allow -M mynagios
# semodule -i mynagios.pp
Ahora reinicia Nagios y Apache y deberías estar bien.
systemctl restart nagios
systemctl restart httpd
Si todo falla, establece SELinux en permisivo hasta que funcione y luego ejecuta el comando anterior nuevamente.
setenforce 1
- Si tienes errores en RHEL7, es posible que necesites algunos paquetes Perl si optaste por incluir el monitoreo de SuperMicro a través de:
supermicro_enable_checks: true
Generación masiva de inventario de Ansible
Si estás usando algo como QUADS para gestionar la automatización de tu infraestructura, puedes hacer lo siguiente para generar todas tus interfaces fuera de banda o 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
Ahora puedes pegar /tmp/add_oobserver
bajo el grupo de inventario Ansible [oobservers]
o [idrac]
respectivamente.
Demostración
- Puedes ver un video del despliegue de Ansible aquí:
Detalles de salud del servidor iDRAC
- Los chequeos de salud de iDRAC son todos opcionales, puedes elegir cuáles deseas monitorear.
- El chequeo de salud de iDRAC proporcionará información exhaustiva sobre la salud y alertará sobre ello.
Archivos
.
├── 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 directorios, 43 archivos
Acerca del proyecto
Playbook for setting up the Nagios monitoring server and clients.
Instalar
ansible-galaxy install sadsfae.ansible_nagios
Licencia
apache-2.0
Descargas
441
Propietario
hobo devop/sysadmin/SRE