Nagios 安装及微信短信提醒

引言

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的监控界面

Nagios大图
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 被监控服务器了。

安装 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 加入机器:

配置如下图:

Nagios 安装及微信短信提醒
Nagios 安装及微信短信提醒
Nagios 安装及微信短信提醒
Nagios 安装及微信短信提醒

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

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 官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容