介绍
Alerta是一个Web应用程序,用于整合和取消复制来自多个监视系统的警报,并在单个屏幕上对其进行可视化。 Alerta可以集成Nagios,Zabbix,Sensu,InfluxData Kapacitor等众多知名监控工具。
在本教程中,您将设置Alerta并将其配置为显示流行的开源监视系统Nagios的通知。
先决条件
要学习本教程,您将需要:
- 根据Ubuntu 16.04初始服务器设置指南设置了两台Ubuntu 16.04服务器,其中包括sudo非root用户和防火墙。
- 在第一台运行Nagios的Ubuntu服务器上,安装以下组件:
- Apache,MySQL和PHP,请参阅教程如何在Ubuntu 16.04上安装Linux,Apache,MySQL,PHP(LAMP) 。
- Nagios 4,按照教程如何在Ubuntu上安装Nagios 4和监视您的服务器及其先决条件来配置它。
- 在第二个Ubuntu服务器上,我们将在本教程中安装Alerta,安装以下组件:
- Nginx,按照教程如何在Ubuntu 16.04上安装Nginx安装 。
- MongoDB,按照教程如何在Ubuntu 16.04上安装MongoDB安装 。
- Alerta,按照教程中的第1步到第6步安装, 以在Ubuntu 16.04上使用Alerta监控Zabbix警报 。
第1步 - 安装Nagios至Alerta网关
您可以使用Nagios Event Broker(NEB)模块来扩展Nagios的功能。 NEB是Nagios的事件集成机制,NEB模块是共享库,可让您将其他服务与Nagios集成。 在这一步中,我们将Nagios安装到Alerta网关 ,即将向Alerta发送通知的NEB模块。
以非root用户身份登录到Nagios服务器:
ssh sammy@your_nagios_server_ip
Nagios到Alerta Gateway没有预配置的系统软件包,所以你必须从源代码构建它。 要做到这一点,你需要安装一些开发工具和文件。 您还需要安装Git,以便您可以从GitHub获取源代码。
sudo apt-get install -y git curl gcc make libcurl4-openssl-dev
在安装先决条件的情况下,使用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 '/home/sammy/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 '/home/sammy/nagios-alerta/src'
如果您看到不同的东西,请确保已安装了所有必备软件。
现在运行安装任务:
sudo make install
你会看到这个输出,表明这个模块被安装在/usr/lib/nagios
:
Outputcd ./src && make install
make[1]: Entering directory '/home/sammy/nagios-alerta/src'
[ -d /usr/lib/nagios ] || mkdir /usr/lib/nagios
install -m 0644 alerta-neb.o /usr/lib/nagios
make[1]: Leaving directory '/home/sammy/nagios-alerta/src'
安装模块后,我们可以配置Nagios来使用这个新模块。
第2步 - 配置Nagios到Alerta网关
让我们配置Nagios发送通知消息给Alerta。
首先,启用Nagios主配置文件中新安装的Alerta代理模块。 在您的编辑器中打开Nagios配置文件:
sudo vi /usr/local/nagios/etc/nagios.cfg
找到包含broker_module
指令的部分:
...
# 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通信的地址。 在教程中, 如何在Ubuntu 16.04上使用Alerta监控Zabbix Alerts的第3步中对此进行了配置。
- 键 :您在本教程的第4步中创建的API密钥如何在Ubuntu 16.04上使用Alerta监控Zabbix警报 。 您需要使用Alerta进行身份验证并发布活动。
将此行添加到文件以配置Alerta集成:
...
broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY
...
还有一些额外的可选参数可以指定:
- env :这指定了环境名称。 默认环境名称是
Production
。 - hard_only :仅在硬态转发结果。 您可以在Nagios文档中找到关于Nagios状态类型的更多信息。 将其设置为
1
以启用此模式。 - 调试 : - 为模块启用调试模式。 将其设置为
1
以启用此模式。
要指定所有这些选项,请使用以下代码行:
...
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 自定义对象变量来设置环境和服务名称。 为此,请在您的配置中使用_Environment
和_Service
变量。 现在我们来配置这些。
打开默认的Nagios主机对象配置文件,您可以在/usr/local/nagios/etc/objects/
目录中找到该配置文件:
sudo vi /usr/local/nagios/etc/objects/localhost.cfg
我们会将此主机的所有警报标记为生产警报,我们将调用默认服务Nagios 。 找到以下主机定义:
...
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
值添加到配置中:
...
host_name localhost
alias localhost
address 127.0.0.1
_Environment Production
_Service Nagios
}
...
现在将与系统部分空间不足相关的所有事件标记为系统警报。 找到定义如何检查可用空间的这部分文件:
...
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
服务关联:
...
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
检查Nagios日志文件以确保服务正常运行:
tail /usr/local/nagios/var/nagios.log
您将看到以下输出:
Output...
[1505804481] [alerta] Initialising Nagios-Alerta Gateway module, v3.5.0
[1505804481] [alerta] debug is on
[1505804481] [alerta] states=Hard (only)
[1505804481] [alerta] Forward service checks, host checks and downtime to http://your_alerta_server_ip/api
[1505804481] Event broker module '/usr/lib/nagios/alerta-neb.o' initialized successfully.
[1505804481] Successfully launched command file worker with pid 25416
现在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%的可用磁盘空间,这足以触发警报:
fallocate -l 14G /tmp/temp.img
在几分钟之内,Nagios将触发有关可用磁盘空间量的警报,并将通知消息发送给Alerta。 您将在Alerta仪表板中看到这个新通知:
现在您知道警报正在运行,请删除您创建的临时文件,以便回收磁盘空间:
rm -f /tmp/temp.img
一分钟后,Nagios将发送恢复消息。 然后警报将从主要的Alerta仪表板中消失,但您可以通过选择关闭来查看所有关闭的事件。
您可以点击活动行查看更多详细信息。
结论
在本教程中,您将Nagios配置为向其他运行Alerta的服务器发送通知。
Alerta为您提供了一个方便的地方来跟踪来自多个系统的警报。 例如,如果基础结构的某些部分使用Nagios,而其他部分使用Zabbix,则可以将来自两个系统的通知合并到一个面板中。