设为首页 收藏本站
查看: 1310|回复: 0

监控服务器Nagios之四 报警及扩展

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-27 08:41:04 | 显示全部楼层 |阅读模式
一、邮件报警
    Nagios有一个很强大的功能就是邮件、短信报警,当监控的服务有故障(根据设定)的时候,就会通知你,这可以极大地提升工作效率。
1、  安装sendmail组件
1
#yum –y install sendmail* mailx



重启sendmail服务,并开机启动
1
#service sendmail  restart;chkconfig  sendmail on



发送测试邮件,测试sendmail的可用性
1
2
#echo “ok” |mail  -s  “title”  
654001593@qq.com



2、  邮件报警设置
编辑/usr/local/nagios/etc/objects下的contact.cfg文件
1
2
3
4
5
6
define contact{
       contact_name                 nagiosadmin                  
use                                    generic-contact               
alias                         Nagios Admin                  
email                        654001593@qq.com,yang9596@126.com     
       }



只需要把email项改为自己定义的邮箱即可,可以定义多个。
3、  邮件分组
    如果说公司有上百台监控的设备,而你只负责其中的一部分,其他设备有问题了,也不停的给你发短信,是不是很烦躁?那么我们可以使用邮件分组,好处就在于我们可以只接受规定的服务器报警邮件。
我们可以定义多个contact(联系人),然后再用contact  group(联系组)对各contact进行分组。
例如管理网络的有两人,管理服务器的有两个人,我们就可以定义两个contactgroup,然后定义四个管理员的contact,如下例是当前我正在使用的contact.cfg,服务器管理员有两名,网络管理员有两名:
contact.cfg的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#######################################################################################
#######################################################################################
##############   NETWORK ADMINISTRATOR MEMBERS
#######################################################################################
#######################################################################################
define contact{
        contact_name                               net_jacken
        use                                        generic-contact
        alias                                      net_jacken
        service_notification_period                24x7
        host_notification_period                   24x7
        service_notification_options               w,u,c,r,f,s
        host_notification_options                  d,u,r,f,s
        service_notification_commands              notify-service-by-email                           
        host_notification_commands                 notify-host-by-email
       email                                       net_jacken@test.com
        }
  
define contact{
        contact_name                               net_tom
        use                                        generic-contact
        alias                                      net_tom
        service_notification_period                24x7
        host_notification_period                   24x7
        service_notification_options               w,u,c,r,f,s
        host_notification_options                  d,u,r,f,s
        service_notification_commands              notify-service-by-email
        host_notification_commands                 notify-host-by-email
        email                                      net_tom@test.com
        }
  
#######################################################################################
#######################################################################################
##############   SYSTEM ADMINISTRATOR MEMBERS
#######################################################################################
#######################################################################################
  
define contact{
        contact_name                              sa_mark
        use                                       generic-contact
        alias                                     sa_mark
        service_notification_period               24x7
        host_notification_period                  24x7
        service_notification_options              w,u,c,r,f,s
        host_notification_options                 d,u,r,f,s
        service_notification_commands             notify-service-by-email
        host_notification_commands                notify-host-by-email
        email                                     sa_mark@test.com
        }
  
define contact{
        contact_name                               sa_bob
        use                                        generic-contact
        alias                                      sa_bob
        service_notification_period                24x7
        host_notification_period                   24x7
        service_notification_options               w,u,c,r,f,s
        host_notification_options                  d,u,r,f,s
        service_notification_commands              notify-service-by-email
        host_notification_commands                 notify-host-by-email
        email                                      sa_bob@test.com
        }
#######################################################################################
#######################################################################################
##############   NETWORK ADMINISTRATOR GROUP
#######################################################################################
#######################################################################################
define contactgroup{
        contactgroup_name                         network
        alias                                     network
        members                                   net_jacken,net_tom
        }
#######################################################################################
#######################################################################################
##############   SYSTEM ADMINISTRATOR GROUP
#######################################################################################
#######################################################################################
define contactgroup{
        contactgroup_name                         system
        alias                                     system
        members                                   sa_mark,sa_bob
        }



4、  主机及监控内容的配置以主机192.168.1.4为例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vim  /usr/local/nagios/etc/objects/192.168.1.4.cfg
define host{
        use                                    linux-server
        host_name                              client-02
        alias                                  192.168.1.4
        address                                192.168.1.4
        }
define service{
        use                                    generic-service         
        host_name                              client-02
        service_description                    PING
        check_command                          check_ping!100.0,20%!500.0,60%
        contact_groups                         network
        }
define service{
        use                                    generic-service
        host_name                              client-02
        service_description                    Uptime
        check_command                          check_nt!UPTIME
        contact_groups                         system
         }



    如上面配置所示,当监控主机的ping出现问题的时候,nagios就会查看contact.cfg中定义的联系人组network中的联系人的信息,然后读取各联系人的邮件地址,这样的话,网络中出现故障时就可以直接给net_jacken和net_tom二人发邮件了;同理,当服务器出现问题的时候就会给system组的相关人员发送邮件了
短信通知
    其实短信通知就和nagios服务器没太大关系,就是相当于别人给你发一个邮件,你可以用手机查看而已,这里不再详细描述。
注册后登录mail.139.com---右上角设置—手机通知---接收方式……….
不过有时候可能会识别垃圾邮件,设置---邮箱安全----白名单……….
二、监控Web关键字
    试问如果有一天网站突然挂了,或者主页被被人攻击了,那么怎么有效地收到通知并及时处理呢?这时可以通过Nagios监控Web关键字来解决。
可以使用默认监控命令check_http命令+相关的参数来实现,如下:
在command.cfg添加如下关键词监控命令:check_http_word,参数解析:-I指定IP或者主机名,-u指定URL,-p指定端口,-s指定关键词。
这里要监控的是192.168.1.2主机上的由Discuz搭建的论坛。
1、  修改commands.cfg
1
2
3
4
5
6
7
[iyunv@nagios ~]# vim/usr/local/nagios/etc/objects/commands.cfg
找到”check_http”修改如下:
# 'check_http' command definition
define command{
       command_name    check_http_word
       command_line    $USER1$/check_http-I $HOSTADDRESS$   -s $ARG1$
       }



2、  创建监控主机配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#cd  /usr/local/nagios/etc/objects
#cp localhost.cfg  192.168.1.3.cfg
#echo > 192.168.1.3.cfg
#vim 192.168.1.3.cfg
#添加以下内容
define host{
       use                    linux-server
       host_name              192.168.1.3
       alias                  192.168.1.3
       address                192.168.1.3
       }
define hostgroup{
       hostgroup_name  192.168.1.3
       alias           Linux Servers
       members         192.168.1.3
       }
define service{
       use                            local-service
       host_name                      192.168.1.3
       service_description            web_words_monitor
       check_command                  check_http_word!192.168.1.3!X3.2
       notifications_enabled           1                   #关键字X3.2(论坛版本)
       }



3、  修改nagios.cfg文件
1
2
3
4
# vim /usr/local/nagios/etc/nagios.cfg
#加入下边一行
cfg_file=/usr/local/nagios/etc/objects/192.168.1.3.cfg
#service nagios restart



4、  验证
已经ok
wKiom1U9G_KDJTlbAADdHQyCGxw955.jpg
客户端192.168.1.3停止httpd
1
2
3
[iyunv@lamp ~]# /etc/init.d/httpd stop
停止 httpd:                                              [确定]
[iyunv@lamp ~]#



再看监控端
wKioL1U9HVbyDiS4AACx2fIY3ac674.jpg
客户端192.168.1.3启动httpd
1
2
3
[iyunv@lamp ~]# /etc/init.d/httpd start
正在启动 httpd:                                           [确定]
[iyunv@lamp ~]#



再看监控端
wKiom1U9G_KT9UE6AADTt968IUc316.jpg
注释:我们这里是关闭httpd服务,模拟关键字消失,即使服务正常,如果所监控的关键字消失,依旧会报警。

三、监控Mysql主从
环境为 Nagios服务端IP为192.168.1.2
Mysql主服务器IP为192.168.1.3
Mysql从服务器IP为192.168.1.4
现在Mysql为同步状态。
1、  Nagios服务器上定义command.cfg
1
2
3
4
5
6
# vim /usr/local/nagios/etc/objects/ commands.cfg
添加以下内容
define command{
       command_name   check_mysql_slave
       command_line  $USER1$/check_mysql-H $HOSTADDRESS$ -S -uroot -phi -H $ARG1$
}



2、  定义监控项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# cd  /usr/local/nagios/etc/objects/
# touch mysql.cfg
# chown nagios:nagios mysql.cfg
#vim mysql.cfg
添加以下内容
define host{
       use                    linux-server
       host_name               mysql
       alias                   mysql_master
       address                192.168.1.3
       }
define hostgroup{
       hostgroup_name          mysql
       alias                   Mysql Servers
       members                 mysql
       }
  
  
define service{
       use                            local-service
       host_name                      mysql
       service_description            Monitor_Mysql_Slave
       check_command                  check_mysql_slave!192.168.1.4
       notifications_enabled           1
       }



如果没有check_mysql,Nagios安装mysql-devel然后重新编译Nagios-plugins
3、  更新nagios.cfg配置文件
1
2
3
# vim /usr/local/nagios/etc/nagios.cfg
添加一行
cfg_file=/usr/local/nagios/etc/objects/mysql.cfg



4、  Mysql服务器授权
1
2
3
4
5
6
7
mysql> grant all on *.* to  root@'192.168.1.2' identified by 'hi';
Query OK, 0 rows affected (0.00 sec)
  
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  
mysql>



5、  验证
wKioL1U9HVeC_d5NAAO9-cg3xE4296.jpg
192.168.1.4从服务上关闭mysql服务
#service mysqld stop
wKiom1U9G_WDCBtbAABxrZaby7Q106.jpg
wKioL1U9HVmgjl2aAAHVau2Cod4575.jpg
当Mysql主服务挂掉的时候依旧会报警
Done


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60960-1-1.html 上篇帖子: 监控服务器Nagios之三 监控案例 下篇帖子: nagios通过python获取ESXi硬盘SMART信息 服务器 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表