sadsfae.ansible_nagios

ansible-nagios

============== Playbook para configurar el servidor de monitoreo Nagios y clientes (CentOS/Rocky/RHEL/Fedora/FreeBSD)

Nagios

GA

¿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 inventario hosts
  • 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 y perl-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 incluir supermicro_enable_checks: true
  • 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 a changeme, querrás cambiar esto.
  • Crea un usuario de solo lectura, establece nagios_create_guest_user: false para deshabilitar esto en install/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
    • 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
  • Las configuraciones de notificaciones de contacts.cfg están en install/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 o oobserver 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 en install/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í:

Ansible Nagios

Detalles de salud del servidor iDRAC

  • Los chequeos de salud de iDRAC son todos opcionales, puedes elegir cuáles deseas monitorear.

CHECK

  • El chequeo de salud de iDRAC proporcionará información exhaustiva sobre la salud y alertará sobre ello.

iDRAC

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