介绍
Alerta 是一个 Web 应用程序,用于整合和删除来自多个监控系统的警报并在单个屏幕上可视化它们。 Alerta 可以与许多知名的监控工具集成,如 Nagios、Zabbix、Sensu、InfluxData Kapacitor 等。
在本教程中,您将设置 Alerta 并将其配置为显示来自流行的开源监控系统 Nagios 的通知。
先决条件
要遵循本教程,您将需要:
- 按照CentOS 7初始服务器设置指南设置两台CentOS 7服务器,包括一个sudo非root用户和一个防火墙。
- 在您将运行 Nagios 的第一台 CentOS 服务器上,安装以下组件: Apache、MySQL 和 PHP,按照教程如何在 CentOS 7 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈。 Nagios 4,按照教程 How To Install Nagios 4 and Monitor Your Servers on CentOS 7 及其配置它的先决条件进行安装。
- 在第二个 CentOS 服务器上,我们将在本教程中安装 Alerta,安装以下组件: Nginx,按照教程 How To Install Nginx on CentOS 7 安装。 MongoDB,按照教程如何在 CentOS 7 上安装 MongoDB 进行安装。 Alerta,按照教程 How To Monitor Zabbix Alerts with Alerta on CentOS 7 中的步骤 1 到 6 安装。
第 1 步 — 安装 Nagios-to-Alerta 事件代理模块
您可以使用 Nagios 事件代理 (NEB) 模块扩展 Nagios 的功能。 NEB 是 Nagios 的事件集成机制,NEB 模块是共享库,可让您将其他服务与 Nagios 集成。 在这一步中,我们将 Nagios 安装到 Alerta Gateway,NEB 模块将向 Alerta 发送通知。
以非 root 用户身份登录到您的 Nagios 服务器:
ssh sammy@your_nagios_server_ip
Nagios 到 Alerta 网关没有预配置的系统包,因此您必须从源代码构建它。 为此,您需要安装一些开发工具和文件。 您还需要安装 Git,以便从 GitHub 获取源代码。
sudo yum install -y git curl gcc make libcurl-devel
安装了先决条件后,使用 Git 从项目的 GitHub 存储库中克隆源代码:
git clone https://github.com/alerta/nagios-alerta.git
然后切换到新的nagios-alerta
目录:
cd nagios-alerta
然后使用 make
编译 nagios-alerta
模块:
make nagios4
您将看到以下输出:
Outputcd ./src && make nagios4 make[1]: Entering directory `/root/nagios-alerta/src' gcc -fPIC -g -O2 -DHAVE_CONFIG_H -I../include -I../include/nagios4 -lcurl -o alerta-neb.o alerta-neb.c -shared -lcurl make[1]: Leaving directory `/root/nagios-alerta/src'
如果您看到不同的东西,请确保您已安装所有先决条件。
现在运行安装任务:
sudo make install
您将看到此输出,表明模块已安装在 /usr/lib/nagios
中:
Outputcd ./src && make install make[1]: Entering directory `/root/nagios-alerta/src' [ -d /usr/lib/nagios ] || mkdir /usr/lib/nagios install -m 0644 alerta-neb.o /usr/lib/nagios make[1]: Leaving directory `/root/nagios-alerta/src'
安装模块后,我们可以配置 Nagios 以使用这个新模块。
第 2 步 — 配置 Nagios-to-Alerta 模块
让我们配置 Nagios 以向 Alerta 发送通知消息。
首先,在 Nagios 主配置文件中启用新安装的 Alerta 代理模块。 在编辑器中打开 Nagios 配置文件:
sudo vi /usr/local/nagios/etc/nagios.cfg
找到包含 broker_module
指令的部分:
/usr/local/nagios/etc/nagios.cfg
... # EVENT BROKER MODULE(S) # This directive is used to specify an event broker module that should # by loaded by Nagios at startup. Use multiple directives if you want # to load more than one module. Arguments that should be passed to # the module at startup are separated from the module path by a space. # [...] #broker_module=/somewhere/module1.o #broker_module=/somewhere/module2.o arg1 arg2=3 debug=0 ...
要配置 Alerta 模块,您需要提供两个强制参数:
- URL:用于与 Alerta API 通信的地址。 您在教程 How To Monitor Zabbix Alerts with Alerta on CentOS 7 的第 3 步中配置了这个。
- key:您在教程 How To Monitor Zabbix Alerts with Alerta on CentOS 7 的第 4 步中创建的 API 密钥。 您需要它来通过 Alerta 进行身份验证并发布事件。
将此行添加到文件中以配置 Alerta 集成:
/usr/local/nagios/etc/nagios.cfg
... broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY ...
您还可以指定一些额外的可选参数:
- env:指定环境名称。 默认环境名称为
Production
。 - hard_only:仅转发 Hard 状态的结果。 您可以在 Nagios 文档 中找到有关 Nagios 状态类型 的更多信息。 将此设置为
1
以启用此模式。 - debug: - 启用模块的调试模式。 将此设置为
1
以启用此模式。
要指定所有这些选项,请改用此行:
/usr/local/nagios/etc/nagios.cfg
... broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY env=Production hard_only=1 debug=1 ...
保存文件并退出编辑器。
为了通过环境和服务名称识别警报,您需要使用 Nagios Custom Object Variables 设置环境和服务名称。 为此,请在配置中使用 _Environment
和 _Service
变量。 让我们现在配置它们。
打开默认的 Nagios 主机对象配置文件,您可以在 /usr/local/nagios/etc/objects/
目录中找到该文件:
sudo vi /usr/local/nagios/etc/objects/localhost.cfg
我们将此主机的所有警报标记为 Production 警报,我们将调用默认服务 Nagios。 找到以下主机定义:
/usr/local/nagios/etc/objects/localhost.cfg
... define host{ use linux-server ; Name of host template to use ; This host definition will inherit all variables that are defined ; in (or inherited by) the linux-server host template definition. host_name localhost alias localhost address 127.0.0.1 } ...
将 _Environment
和 _Service
值添加到配置中:
/usr/local/nagios/etc/objects/localhost.cfg
... host_name localhost alias localhost address 127.0.0.1 _Environment Production _Service Nagios } ...
现在将与系统分区上空间不足相关的所有事件标记为 System 警报。 找到定义如何检查可用空间的文件的这一部分:
/usr/local/nagios/etc/objects/localhost.cfg
... define service{ use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ } ...
修改它以将其与 System
服务相关联:
/usr/local/nagios/etc/objects/localhost.cfg
... define service{ use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ _Service System } ...
保存文件并退出编辑器。 重新启动 Nagios 以应用这些新设置:
sudo systemctl restart nagios.service
通过检查其状态确保服务正在运行:
systemctl status nagios.service
您将看到以下输出:
Output... Jul 01 08:44:31 nagios nagios[8914]: [alerta] Initialising Nagios-Alerta Gateway module, v3.4.1 Jul 01 08:44:31 nagios nagios[8914]: [alerta] debug is off Jul 01 08:44:31 nagios nagios[8914]: [alerta] states=Hard/Soft Jul 01 08:44:31 nagios nagios[8914]: [alerta] Forward service checks, host checks and downtime to http://your_alerta_server_ip/api Jul 01 08:44:31 nagios nagios[8914]: Event broker module '/usr/lib/nagios/alerta-neb.o' initialized successfully. Jul 01 08:44:31 nagios nagios[8914]: Successfully launched command file worker with pid 8920
现在 Nagios 将在任何系统或服务关闭时立即发送通知。 让我们生成一个测试事件。
第 3 步 — 生成测试警报以验证 Nagios-Alerta 集成
让我们生成一个测试警报以确保一切都已连接。 默认情况下,Nagios 会跟踪服务器上的可用磁盘空间量。 我们将创建一个足够大的临时文件以触发 Nagios 的文件系统使用警报。
首先,确定 Nagios 服务器上有多少可用空间。 您可以使用 df
命令找出:
df -h
您将看到如下输出:
Output Filesystem Size Used Avail Use% Mounted on /dev/vda1 20G 3.1G 16G 17% /
查看可用空间量。 在这种情况下,可用空间为 16GB
。 您的可用空间可能会有所不同。
使用 fallocate
命令创建一个占用超过 80% of 可用磁盘空间的文件,这应该足以触发警报:
fallocate -l 14G /tmp/temp.img
在几分钟内,Nagios 将触发有关可用磁盘空间量的警报,并将通知消息发送到 Alerta。 您将在 Alerta 仪表板中看到此新通知:
既然您知道警报正在工作,请删除您创建的临时文件,以便您可以回收磁盘空间:
rm -f /tmp/temp.img
一分钟后,Nagios 将发送恢复消息。 然后警报将从 Alerta 主仪表板中消失,但您可以通过选择 Closed 查看所有已关闭的事件。
您可以单击事件行以查看更多详细信息。
结论
在本教程中,您将 Nagios 配置为将通知发送到另一个运行 Alerta 的服务器。
Alerta 为您提供了一个方便的位置来跟踪来自许多系统的警报。 例如,如果您的基础架构的某些部分使用 Nagios 而其他部分使用 Zabbix,您可以将来自两个系统的通知合并到一个面板中。