一步步实现Nagios监控linux主机及飞信报警

上篇文章介绍了在linux主机上架设nagios监控服务,并对windows主机进行服务状态变化的监控,这次我们继续上次内容。
     首先实现nagios服务对其他linux主机的监控,其次实现当被监控的mysql服务掉线时提供飞信报警机制

一、下面就进入对其它linux主机实现nagios监控的配置

在被监控端的linux主机上

1、先添加nagios用户来执行此服务
   useradd nagios

2、为了安装nrpe,先安装nagios-plugins-1.4.15.tar.gz 插件

    tar zxf nagios-plugins-1.4..tar.gz
cd nagios-plugins-1.4.
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

3、编译安装nrpe-2.12.tar.gz

    tar -zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
(注:在执行下步之前必须保证这个主机上已经安装了openssl、openssl-devel 否则在编译
的时候将提示有不能找到ssl头文件的错误,导致编译无法进行)
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config

4、对nrpe的配置文件/usr/local/nagios/etc/nrpe.cfg进行配置

 vim /usr/local/nagios/etc/nrpe.cfg

allowed_hosts=192.168.0.1 (nagios服务器的IP,即允许这个IP来读取有关数据) 

5、检测配置文件的语法并启动服务
   /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
   如果没有任何提示则表示语法正确并已经启动了该服务

到此我们在被监控的linux主机上的配置已经完成

Nagios服务端配置:

1、安装NRPE

    tar xvf nrpe-2.12.tar.gz
cd nrpe-2.12
(注:同样,在执行下步之前必须保证这个主机上已经安装了openssl-devel、openssl,否
则编译将出错)
./configure
make all
make install-plugin

2、配置nagios的服务命令文件/var/www/nagios/etc/objects/commands.cfg定义外部构件nrpe

 vim /var/www/nagios/etc/objects/commands.cfg

添加如下内容:
#check nrpe
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

3、由于此服务的配置文件中被没有关于监控linux主机的配置文件,所以我们要自己定义并创建
   在/etc/nagios.cfg中定义被监控的linux主机的配置文件的名字及位置
   vim /etc/nagios.cfg
   添加如下内容
   cfg_file=/var/www/nagios/etc/objects/mylinux.cfg  指定我们定义的被监控linux主机的配置文件名字和位置

然后我们就要到定义的位置创建这个文件了
   vim /var/www/nagios/etc/objects/mylinux.cfg
   添加如下内容

    define host{
use linux-server
host_name mylinux
alias mylinux
address 192.168.0.200(被监控的linux主机的IP,这个是我的)
}
define service{
use generic-service
host_name mylinux
service_description check-swap
check_command check_nrpe!check_swap
}
define service{
use generic-service
host_name mylinux
service_description check-load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name mylinux
service_description check-disk
check_command check_nrpe!check_had1
}
define service{
use generic-service
host_name mylinux
service_description check-users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name mylinux
service_description otal_procs
check_command check_nrpe!check_total_procs
}

保存退出
    修改这个文件的属主、属组
    chown nagios:nagios mylinux.cfg
    检查我们创建的文件是否有语法错误:
    nagios -v /var/www/nagios/etc/objects/mylinux.cfg

4、重启nagios服
    service ngios restart
   好了,关于监控linux主机的配置到此为止

5、我们查看nagios是否监控到了mylinux,显示如图:

好了,我们监控其他linux主机已经实现了,关于nagios对其它linux主机的监控配置到此为止

Nagios监控MySQL服务及飞信报警

上面我们进行了相关主机监控的配置,但是我们只能通过查看nagios才能知道我们所监控主机的服务是否在线可用,这和我们在实际应用中的作用还有一定的差距,下面我们就来实现nagios的报警机制,即使我们不查看nagios,只要我们所监控的服务掉线了,nagios就给我们发飞信开提示我们。

我们通过监控本机的mysql服务的在线情况来实现这个实验:

nagios监控mysql服务器:

1、 建立专用数据库:

我们通过让nagios监控mysql服务中的一个特定的数据库的在线状态来实现对mysql服务在线状态的监控,

创建这个数据库,并对其进行相应的配置

    mysql -uroot -p123456
mysql> create database nagios;
mysql> grant select on nagios.* to nagios@'%' identified by 'nagios';
mysql> flush privileges;
2、查看/var/www/nagios/libexec/check_mysql 这个二进制文件是否存在,如果存在就
继续下面的操作,如果不存在就重新编译安装nagios-plugins,具体方法在上一篇有关nagios的文章中,编译时一定要指明--with-mysql.
   
   对check-mysql这个二进制文件进行测试,看是否能够读取数据库状态信息
   /var/www/nagios/libexec/check_mysql -H 192.168.1.200 -u nagios -d nagios -p 123qweasd
 
  Uptime: 970348  Threads: 1  Questions: 684584  Slow queries: 3 
Opens: 672       Flush tables: 1  Open tables: 369  Queries per second
avg: 0.705

如果输出上面的信息,则表示能够读取nagios这个数据库的状态

3、在定义监控命令的文件/var/www/nagios/etc/objects/command.cfg里增加插件命令:
   vim  /var/www/nagios/etc/objects/command.cfg
   添加如下内容:

    #check mysql
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagios -d nagios -p nagios
}

4、定义服务:

在/var/www/nagios/etc/objects/localhost.cfg 中添加如下内容

    define service {
use local-service
host_name localhost
service_description msyql
check_command check_mysql 监控这个服务的命令
notifications_enabled 对这个服务开启监控
}

OK,我们可以到nagios的“servers”中查看是否监控到了这个服务,显示如下:

既然当服务掉线的时候要使用飞信报警,接下来就对飞信进行配置,来实现飞信报警机制

准备飞信的客户端和库文件:
     fetion  libACE-5.7.2.so  libACE_SSL-5.7.2.so  libcrypto.so.4  libssl.so.4

1、将飞信的客户端加入到/usr/bin/中,并添加执行权限
   mv fetion /usr/bin
   chmod +x /usr/bin/fetion

2、将飞信的库文件加入到系统的库文件中
   mv lib* /usr/lib/

3、测试飞信能否成功发送信息
   fetion --mobile 15003880800 --pwd 123qweQWE(飞信密码) --to 15003880800(电话号码) --msg-tpye=0  --msg-utf8 $HOSTNAME
   如果出现一大片的乱码信息,表示飞信连接成功,这一大片的乱码是飞信的验证码图片,这个验证码图片在图形界面下才能显示出来,只有第一次使用的时候才会用到验证码,这个图片的位置在/usr/bin下,我们输入相应的验证码即可。

测试成功之后,就继续进行

4、修改nagios的报警配置文件/var/www/nagios/etc/objects/ templates.cfg,修改报警机制,将email改成fetion
   vim /var/www/nagios/etc/objects/templates.cfg 修改结果如下

    define contact{
name generic-contact (监控及联系方式模版名称,在其他文件中可以引用)
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-fetion 服务通知报警的方式
host_notification_commands notify-service-by-fetion 主机通知报警的方式
register
}

5、修改命令文件/var/www/nagios/etc/objects/commands.cfg
   vim /var/www/nagios/etc/objects/commands.cfg 添加如下内容

    define command{
command_name notify-service-by-fetion
command_line /usr/bin/fetion --mobile --pwd 123qweQWE --to --msg-tpye= --msg-utf8="$HOSTNAME"
}(在飞信报警的命令中可以使用变量,这只是最简单的飞信报警命令设定)

6、重启nagios服务
   service nagios restart

到此为止我们我们对mysql服务的飞信报警,已经配置完成了,现在我们可以关闭mysql服务,看你是否收到了我们的nagios发送的飞信。

Nagios是一个强大的状态变化监控报警软件,其功能远远大于此,需要各位自己去探索他其他的功能了!

一步步实现Nagios监控linux主机及飞信报警的更多相关文章

  1. nagios监控linux主机监控内存脚本

    说明 工作包括两部分监控端(一二三)和被监控端(四) 一.nrpe.cfg中添加脚本 nrpe.cfg中添加命令索引 command[check_used_mem]=/usr/local/nagios ...

  2. nagios安装及监控Linux主机

    服务端的操作:##################################安装lamp环境及依赖包##########################   24  rpm -ivh gd-de ...

  3. Zabbix监控Linux主机设置

          说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对Linux主机进行监控. 具体操作: 以下操作在被监控的Linux主机进行,这里以CentOS 6.x系统为例. 一.配 ...

  4. zabbix通过snmp监控linux主机

    1.安装net-snmp [root@db01 ~]# yum install -y net-snmp 2.修改配置文件 [root@db01 ~]# vim /etc/snmp/snmpd.conf ...

  5. zabbix通过agent监控linux主机

    前言: 前几篇博客分别介绍了通过snmp来进行监控linux主机与windows主机,本篇介绍通过agent客户端来进行系统监控. 环境: server:192.168.249.142 client: ...

  6. 使用cacti监控linux主机

    介绍:使用cacti监控linux主机,需要在linux主机上面安装snmp服务,并修改snmpd.conf文件,指定cacti服务器的地址,然后在cacti的前台界面添加此主机即可,此处以监控cen ...

  7. nagios监控linux设置

    本章主要用来设置nagios的相关配置文件,从而能实现对linux系统的监控. 在进行监控相关服务的时候,nagios会周期性的调用插件去监测服务器的状态,nagios自带的所有插件都放在如下目录: ...

  8. Cacti监控Linux主机

    1 要监视一台Linux主机,需要在被监控的主机上安装net-snmp相关软件包,CentOS安装可使用“yum -y install net-snmp”命令:# yum -y install net ...

  9. nagios监控mysql主机,nginx,磁盘IO,网卡流量

    http://blog.chinaunix.net/uid-28685162-id-3506260.html nagios安装完成,打开/usr/local/nagios/etc/nagios.cfg ...

随机推荐

  1. Moqui学习Day2

    用户 本地化  消息和日志门面 用户门面用于管理当前用户和访问,登陆,授权及登出的信息.用户信息包括区域设置,时区以及币种/ec.user.nowTimestamp设置日期. 消息门面用于追踪用户的消 ...

  2. java web中jsp,action,service,dao,po分别是什么意思和什么作用

    JSP:全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动 ...

  3. .net架构设计读书笔记--第三章 第8节 域模型简介(Introducing Domain Model)

    一.数据--行为转变     很长的时间,典型的分析方法或多或少是以下两种,第一,收集需求并做一些分析,找出有关实体 (例如,客户. 订单. 产品) 和进程来实现. 第二,手持这种理解你尝试推断一个物 ...

  4. Eclipse属性文件编辑器---Properties Editor

    今天在用 Eclipse 来编辑 .properties 文件时,写的中文会自动转为 Unicode 编码,完全不知道自己的中文写的是什么!! 于是查了一下,网上推荐,在Eclipse 中 安装一个 ...

  5. Java设计模式-装饰模式(Decorator)

    顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个 ...

  6. spring获取ApplicationContext对象的方法——ApplicationContextAware

    一. 引言 工作之余,在看一下当年学的spring时,感觉我们以前都是通过get~ set~方法去取spring的Ioc取bean,今天就想能不能换种模型呢?因为我们在整合s2sh时,也许有那么一天就 ...

  7. 【转】set容器的基本操作

    set的基本操作:begin()         返回指向第一个元素的迭代器clear()         清除所有元素count()         返回某个值元素的个数empty()        ...

  8. PS图层混合模式实例详解

          PS中的很多概念都和Core Graphics中的概念相通,比如蒙版.路径.裁剪.混合模式等等.如果你对Core Graphics中的混合模式不太理解,阅读本篇文章能让你对Core Gra ...

  9. Thinkphp中验证码的使用以及验证的实现

    <input class="TxtValidateCodeCssClass" id="captcha" name="captcha" ...

  10. stl-基本知识

    摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分 ...