sadsfae.ansible_nagios

ansible-nagios

用于设置Nagios监控服务器和客户端(CentOS/Rocky/RHEL/Fedora/FreeBSD)的剧本

Nagios

GA

这是什么?

  • 在CentOS7、Rocky 8/9或RHEL 7/8/9上自动部署Nagios服务器
  • 在CentOS6/7/8、RHEL6/7/8/9、Rocky、Fedora和FreeBSD上自动部署Nagios客户端
    • 从Ansible清单生成服务检查和监控主机
    • 为Nagios服务器本身生成全面检查
    • 通过NRPE为所有主机/服务生成全面检查
    • 基于jinja2模板生成大部分其他配置
    • 通过Apache为Nagios启用SSL
    • 设置正确的防火墙规则(firewalld或iptables-services)
    • 支持通过电子邮件和外部网络钩子发送警报
    • 也可以通过Ansible Galaxy获取

我该如何使用它?

  • hosts清单中的[nagios]下添加您的Nagios服务器
  • 在它们的清单组下添加相应的服务/主机,每个主机只能属于一个组。
  • 查看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客户端
  • 如果您需要通过IPMI监控SuperMicro服务器(可选),请执行以下操作
    • 为RHEL7安装perl-IPC-Runperl-IO-Tty RPM以支持SuperMicro上的可选IPMI传感器监控。
      • 如果找不到它们,可以从这里下载,CentOS7有这些包。
    • 修改install/group_vars/all.yml以包含supermicro_enable_checks: true
  • 请注意,我可能会移除IPMI传感器监控支持,因为这非常麻烦且不够可靠,使用SNMP和MIB更好。

注意事项

  • nagiosadmin密码设置为changeme,要记得更改它。
  • 创建一个只读用户,在install/group_vars/all.yml中设置nagios_create_guest_user: false以禁用此功能。
  • 您可以通过install/group_vars/all.yml关闭防火墙规则的创建/管理。
  • 向清单文件中添加新主机只会重新生成Nagios配置。

支持的服务检查

  • 实现非常简单,生成以下资源/服务检查:
    • 一般的带外接口(ping、ssh、http)
    • 一般的Linux服务器(ping、ssh、负载、用户、进程、运行时间、磁盘空间、交换、僵尸进程)
    • 带MDADM RAID的一般Linux服务器(与上述相同)
    • ELK服务器(与服务器相同,外加elasticsearch和Kibana)
    • Elasticsearch(与服务器相同,外加TCP/9200用于elasticsearch)
    • Web服务器(与服务器相同,外加80/TCP用于Web服务器)
    • 带SSL证书检查的Web服务器(与Web服务器相同,外加检查SSL证书的有效性/过期)
    • DNS服务器(与服务器相同,外加UDP/53用于DNS)
    • 带MDADM RAID的DNS服务器(与上述相同)
    • 仅DNS服务(DNS和ICMP检查)
    • Jenkins CI(与服务器相同,外加TCP/8080用于Jenkins和可选的带身份验证的nginx反向代理)
    • FreeNAS设备(ping、ssh、卷状态、警报、磁盘健康)
    • 网络交换机(ping、ssh)
    • IoT和仅ping设备(ping)
    • 通过@dangmocrang提供的Dell iDRAC服务器检查check_idrac
      • 您可以在install/group_vars/all.yml中选择您希望检查的内容
        • CPU、磁盘、电源、温度、内存、风扇
    • 通过IPMI接口进行SuperMicro服务器检查。
      • CPU、磁盘、电源、温度、内存:或通过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清单中添加任何要检查的主机
  • 同一主机只能属于一个主机清单类别
  • 注意,您需要为idrac、交换机、带外接口和任何通常不支持Python和Ansible事实发现的设备添加ansible_host条目。
  • 任何不为idracswitchobserver的设备应使用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中更改了它。

已知问题

  • 如果您使用的是非root的Ansible用户,请编辑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上遇到错误,且选择包含SuperMicro监控,您可能需要几个Perl包
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粘贴到[oobservers][idrac] Ansible清单组下。

演示

  • 您可以在这里观看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
下载
441
拥有者
hobo devop/sysadmin/SRE