如何在Ubuntu 16.04上使用Alerta监控Nagios警报

介绍

Alerta是一个Web应用程序,用于整合和取消复制来自多个监视系统的警报,并在单个屏幕上对其进行可视化。 Alerta可以集成Nagios,Zabbix,Sensu,InfluxData Kapacitor等众多知名监控工具。

在本教程中,您将设置Alerta并将其配置为显示流行的开源监视系统Nagios的通知。

先决条件

要学习本教程,您将需要:

第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指令的部分:

/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模块,您需要提供两个必需的参数:

将此行添加到文件以配置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 :仅在硬态转发结果。 您可以在Nagios文档中找到关于Nagios状态类型的更多信息。 将其设置为1以启用此模式。
  • 调试 : - 为模块启用调试模式。 将其设置为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 自定义对象变量来设置环境和服务名称。 为此,请在您的配置中使用_Environment_Service变量。 现在我们来配置这些。

打开默认的Nagios主机对象配置文件,您可以在/usr/local/nagios/etc/objects/目录中找到该配置文件:

sudo vi /usr/local/nagios/etc/objects/localhost.cfg

我们会将此主机的所有警报标记为生产警报,我们将调用默认服务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
        }
...

现在将与系统部分空间不足相关的所有事件标记为系统警报。 找到定义如何检查可用空间的这部分文件:

/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

检查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仪表板中看到这个新通知:

Alerta显示来自Nagios的可用空间警报

现在您知道警报正在运行,请删除您创建的临时文件,以便回收磁盘空间:

rm -f /tmp/temp.img

一分钟后,Nagios将发送恢复消息。 然后警报将从主要的Alerta仪表板中消失,但您可以通过选择关闭来查看所有关闭的事件。

Alerta的关闭警报

您可以点击活动行查看更多详细信息。

结论

在本教程中,您将Nagios配置为向其他运行Alerta的服务器发送通知。

Alerta为您提供了一个方便的地方来跟踪来自多个系统的警报。 例如,如果基础结构的某些部分使用Nagios,而其他部分使用Zabbix,则可以将来自两个系统的通知合并到一个面板中。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏