sadsfae.ansible_nagios
ansible-nagios
用于设置Nagios监控服务器和客户端(CentOS/Rocky/RHEL/Fedora/FreeBSD)的剧本
这是什么?
- 在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-Run
和perl-IO-Tty
RPM以支持SuperMicro上的可选IPMI传感器监控。- 如果找不到它们,可以从这里下载,CentOS7有这些包。
- 修改
install/group_vars/all.yml
以包含supermicro_enable_checks: true
- 为RHEL7安装
- 请注意,我可能会移除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检查正在进行中,一旦我们为其购买许可证,就会进行完整集成。
- CPU、磁盘、电源、温度、内存:或通过
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
条目。 - 任何不为
idrac
、switch
或observer
的设备应使用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部署的视频:
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
下载
441
拥有者
hobo devop/sysadmin/SRE