资讯专栏INFORMATION COLUMN

Nagios 安装及微信短信提醒

MoAir / 1051人阅读

摘要:或参考集成安装文档通过微信报警提供脚本命令插件,通过新增用户通知的方式,调用命令将告警通知发送至云告警平台,根据通知策略,分派和通知到用户,提供微信短信电话和邮件方式。

引言

Nagios 作为业界非常强大的一款开源监视系统。

监控网络服务(SMTP、POP3、HTTP、NNTP、PING 等);

监控主机资源(处理器负荷、磁盘利用率等);

简单地插件设计使得用户可以方便地扩展自己服务的检测方法;这一点是 Nagios‘er 们非常喜欢的。

当服务或主机问题产生与解决时将告警发送给联系人(通过 EMail、短信、用户定义方式);需要配套的邮件服务器和短信网关对接。

另外还支持 Cacti 、 Ganglia、OpenTSDB 告警接入,强大的 Nagios 还有什么做不到的?作为一个告警平台,Nagios 已经是很强大了,然而在通知方面,特别是微信、短信、电话提醒通知方面还是短板,下面以目前最新版Nagios4.0.8+OneAlert 实现监控和微信提醒。

安装说明

如果你从来没有接触过 Nagios,请按照以下步骤安装 Nagios,如果你对 Nagios 非常熟悉或者机器中有 Nagios,请跳过安装步骤,直接进入 OneAlert 的报警设置。 也可以参考
Nagios 官网。

Nagios 服务器: 10.128.6.38 CentOS 6.5 64bit
被监控机器:    10.128.14.102 CentOS 6.7 64bit

安装 Nagios 和 Nagios 插件(安装过程中标红的操作为安装 Apache,方便我们后面的调试,可以选择性安装,建议安装 Apache,因为有页面的交互方面快捷。)

安装 Nagios 服务器

在服务器10.128.6.38上安装 Nagios Server 相关软件。

1.依赖包安装
请使用 root 用户或者 sudo 权限安装相关依赖包,建议先执行更新:

`yum update
yum install httpd php
yum install gcc glibc glibc-common
yum install gd gd-devel`

2.创建用户组

创建 Nagios 用户,并设置初始密码

`useradd -m nagios(/usr/sbin/useradd -m nagios)
passwd nagios(提示输入两次密码)`

创建用户组 nagcmd,允许外部命令通过 Web 接口提交动作,并将 Nagios 和 Apache 用户加入该用户组中.

`/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache`

3.下载 Nagios 和插件
在~目录创建子目录 downloads

`mkdir ~/downloads
cd ~/downloads`

下载 Nagios 和插件(visit https://www.nagios.org/download/ ),以 Nagios 4.0.8 和插件 Nagios Plugins 2.0.3为例:

下载 Nagios 4.0.8

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.8.tar.gz

下载 Nagios Plugins 2.0.3插件

wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

4.编译安装 Nagios

`cd ~/downloads
tar xzf nagios-4.0.8.tar.gz
cd nagios-4.0.8
./configure --with-command-group=nagcmd`

`make all
make install
make install-init
make install-config
make install-commandmode`

5.编译安装插件

`cd ~/downloads
tar xzf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --with-nagios-user=nagios --with-nagios- group=nagios
make
make install`

6.启动 Nagios

将 Nagios设置为开机启动

`chkconfig --add nagios
chkconfig nagios on`

检查配置文件是否正确

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果没有错误,启动 Nagios

service nagios start

7.修改 linux 的 SElinux 配置(两种方法)

设置linux为混杂模式,该方法重启后不生效

setenforce 0

或直接修改配置文件

vi /etc/selinux/config

设置为 SELINUX=permissive,修改完毕后重启服务器

8.允许 cgi 运行

`chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/`

至此 Nagios 和插件都已经安装完成了。
在这里我们要多讲一句,Nagios 安装的只是服务端,真正监控服务器信息的是 Nagios Plugins 2.0.3插件实现的监控。我们目前仅在本机上安装了插件,因此仅仅监控的是10.128.6.38这台机器,想要监控其他机器的环境,继续向下看。让我们看一下 Nagios的监控界面

但是我们知道,如果服务器出现大问题,我们需要第一时间收到报警的通知,此时 OneAlert 就要登场了。让我们看一下如何使用 OneAlert 对 Nagios 进行报警设置。
或参考 OneAlert 集成 Nagios 安装文档

通过OneAlert微信报警

OneAlert 提供 Agent Shell 脚本命令插件, Nagios 通过新增用户通知contacts的方式,调用 Shell命令将告警通知发送至 OneAlert云告警平台,OneAlert 根据通知策略,分派和通知到用户,提供微信、短信、电话和邮件方式。

1.注册并创建应用
猛戳
这里注册,OneAlert支持很多应用,我们现在创建 Nagios 应用,并获取appkey,3adac4c9-3a82-76af-7b33-0a0bdf16334d

见下图

如果有很多 Nagios,可以新建多个应用,分别接入。

建议告警关闭时间大于 Nagios 告警提醒间隔,如90分钟,即超过90分钟,没有新的告警,就自动关闭告警。

2.安装 OneAlert Agent
在 Nagios 服务器10.128.6.38上下载最新版本 OneAlert Agent。参考官网

下文以 Nagios 默认安装路径 /usr/local/nagios/ 为例,如果你的 Nagios 服务器不是安装在该目录,请自行替换。

`tar xvf alert-agent-4.0.1-RC1.tar.gz
cp -R alert-agent /usr/local/nagios/libexec/
cp alert-agent/plugin/nagios-plugin/nagios /usr/local/nagios/libexec/
chmod +x /usr/local/nagios/libexec/nagios
cp alert-agent/plugin/nagios-plugin/110monitor.cfg /usr/local/nagios/etc/objects/`

3.修改配置

修改默认用户 110monitor 的联系方式,在文件 /usr/local/nagios/etc/objects/110monitor.cfg 中,设置pager为上面应用的 appkey: 例如 3adac4c9-3a82-76af-7b33-0a0bdf16334d

vi /usr/local/nagios/etc/objects/110monitor.cfg

define contact{        
contact_name                    110monitor                 ; The name of this contact template        
alias                           110monitor                 ;        
service_notification_period     24x7                    ;service notifications can be sent anytime        
host_notification_period        24x7                    ; host notifications can be sent anytime          
service_notification_options    w,u,c,r,f,s             ; send notifications for all service states, flapping events, and scheduled downtime events        
host_notification_options       d,u,r,f,s               ; send notifications for all host states, flapping events, and scheduled downtime events        
service_notification_commands   notify-service-by-110monitor ; send service notifications via email          
host_notification_commands      notify-host-by-110monitor    ; send host notifications via email        
pager                           3adac4c9-3a82-76af-7b33-0a0bdf16334d ; your nagios app key       
}

修改/usr/local/nagios/etc/objects/contacts.cfg,新增110monitor到默认联系组.

vi /usr/local/nagios/etc/objects/contacts.cfg

define contactgroup{        
contactgroup_name       admins        
alias                   Nagios Administrators      
members                 nagiosadmin,110monitor        
}

修改 /usr/local/nagios/etc/nagios.cfg,将 110monitor.cfg 新增到 nagios.cfg 中

vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/110monitor.cfg
可选为了让告警信息显示更友好,建议修改 nagios.cfg 由原先 us 更改为 iso8601
date_format=iso8601

4.重启 Nagios

重启前检查下配置是不是正确
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果没有报错,就可以重启 Nagios 了

service nagios restart

5.完成

基本上按照上面配置就 OK 了,后面需要验证下是否正常发送。最简单的方式是将禁 Ping Nagios 服务器。

`echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 禁ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 恢复ping`

禁 Ping 后,Nagios 服务器会发生告警,默认尝试3次后发送告警通知。我们通过跟踪 OneAlert Agent 日志就可以看出来:

tail -f /usr/local/nagios/libexec/alert-agent/log/agent.log

10-05-2015 15:48:53,056 CST INFO  [main] [com.upyoo.agent.NagiosClient@45] start to call alert 
...
10-05-2015 15:48:53,775 CST INFO  [main] [com.upyoo.agent.CommandClient@68] result:{"result":"success","message":null,"data":"3516","totalCount":0,"code":"200"}`

恭喜你,已经完成 Nagios 的安装集成,登录到 OneAlert 控制台,用微信进行扫码即可用微信实现报警。

好了,后续可以接着安装 Nagios 被监控服务器了。

安装 Nagios 被监控服务器

之前是安装了 Nagios Server,接下来我们可以在其他应用服务器,被监控节点10.128.14.102上安装 Nagios Agent 了。

1、提前准备

使用 root 权限

`yum install gcc glibc glibc-common
yum install gd gd-devel
yum install openssl openssl-devel
yum install xinetd`

2、新增 Nagios 用户

`/usr/sbin/useradd -m nagios
passwd nagios`

`/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios`

3、安装插件

wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

`./configure --with-nagios-group=nagcmd
make
make install
chown -R nagios:nagcmd /usr/local/nagios/`

安装 nrpe 插件

wget http://downloads.sourceforge.net/project/nHYPERLINK "http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnagios%2Ffiles%2Fnrpe-2.x%2Fnrpe-2.15%2F&ts=1440644699&use_mirror=jaist"agios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

./configure —with-nagios-group=nagcmd

`make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd`

4、修改配置
修改 only_from= 127.0.0.1 10.128.6.38(10.128.6.38为 nagios 服务端ip地址)

vi /etc/xinetd.d/nrpe

在 Nagios 服务器上增加对被监控机器的监控,先看看被监控机器上的 nrpe 配置
more /usr/local/nagios/etc/nrpe.cfg

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

以上命令[check_hda1]就是检测被监控机器 10.128.14.102 的磁盘空间,20% 空闲时警告,10% 空闲时严重告警。那么 Nagios 服务器 10.128.6.38 就要通过 nrpe 调用监控对应命令。

现在进入 Nagios 服务器 10.128.6.38,编写对应的监测命令,加入一个 linux-server,和对应监控命令。
vi /usr/local/nagios/etc/objects/localhost.cfg 加入机器:

配置如下图:

红色为添加项(对图片的文字描述,一个意思。)

define host{
    use                     linux-server            
                                        
    host_name               localhost
    alias                   localhost
    address                 127.0.0.1
    }

define host{
    use                     linux-server            
                                                         
    host_name              ligehost
    alias                   ligehost
    address                 10.128.14.102
    }
define hostgroup{
    hostgroup_name  linux-servers 
    alias            Linux Server
    members         localhost,ligehost          
}
define service{
    use                             local-service        
    host_name                       localhost,ligehost
    service_description                PING
    check_command                  check_ping!100.0,20%!500.0,60%
    }

define service{
    use                             local-service        
    host_name                       localhost,ligehost
    service_description                Root Partition
    check_command                  check_local_disk!20%!10%!/
    }

修改完毕后,重新加载配置

service nagios reload

可看到监控如图所示:

好了 ,现在全部配置完毕,Nagios 监控正常,如果服务故障,会通过 OneAlert 平台统一告警。

OneAlert 是北京蓝海讯通科技有限公司旗下产品,中国首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有IT事件,提升IT可靠性。想了解更多信息,请访问 OneAlert 官网 。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7925.html

相关文章

  • Zabbix 集成 OneAlert 实现全方位告警

    摘要:前言告警将重要信息发送给运维或者其他相关人,及时发现并且处理问题。在所有开源监控软件里面,的告警方式无疑是最棒的。在发生告警之后立即发送邮件和微信消息给用户,分钟后还未确认,那么发送短信,分钟还未确认则打电话给用户。 1. 前言 告警将重要信息发送给运维「或者其他相关人」,及时发现并且处理问题。在所有开源监控软件里面,Zabbix 的告警方式无疑是最棒的。告警的方式各式各样,从 Ema...

    fai1017 评论0 收藏0
  • 有效运维的 on-call 机制

    摘要:如何有效处理紧急事件驱动的工作,成为特别是运维主管运维工作的关键。通知到位和及时响应。机器学习领域是未来的重要发展方向,目前我们还在摸索中。机器学习告警合并事件单的处理如果告警量很大,告警后续处理和跟踪往往会依赖于外部团队部门外或公司外。 编者按]本文作者为陈伯龙,云告警平台[OneAlert创始人,著《云计算与OpenStack》,在IT运营管理、云计算方面从业10多年。 正文 互联...

    binaryTree 评论0 收藏0
  • 有效运维的 on-call 机制

    摘要:如何有效处理紧急事件驱动的工作,成为特别是运维主管运维工作的关键。通知到位和及时响应。机器学习领域是未来的重要发展方向,目前我们还在摸索中。机器学习告警合并事件单的处理如果告警量很大,告警后续处理和跟踪往往会依赖于外部团队部门外或公司外。 编者按]本文作者为陈伯龙,云告警平台[OneAlert创始人,著《云计算与OpenStack》,在IT运营管理、云计算方面从业10多年。 正文 互联...

    DirtyMind 评论0 收藏0
  • 全球说:要给 OneAlert 点100个赞

    摘要:也有幸和全球说运维负责人李云伟先生进行一次深入沟通。面临挑战全球说的应用主要是在线系统和移动为主。是北京科技有限公司旗下产品,中国首个模式的,集成国内外主流监控支撑系统,实现一个平台上集中处理所有事件,提升可靠性。 客户背景 「全球说」 Talkmate,是北京酷语时代教育科技有限公司(酷语科技)旗下产品,酷语科技是一家诞生于中国的语言技术公司,致力于为全球用户提供一个全新的多语言学习...

    txgcwm 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<