nagios监控

本文详细介绍了如何在RHEL6系统环境下部署Nagios网络监控系统,包括安装配置Nagios主机、MySQL主机监控、NRPE监控远程主机系统状况以及整合飞信报警功能。通过实验步骤,实现对服务器、数据库和远程主机的实时监控与故障预警。

nagios网络监控
RHEL6 Nagios 部署
系统环境:RHEL6 x86_64 selinux and iptables disabled
nagios 主机:192.168.0.85
mysql 主机: 192.168.0.125
1.Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

实验一:(倘若192.168.0.85是服务器,先来配置服务器。)
步骤
(1)yum install httpd gcc make gd-devel perl-ExtUtils-Embed.x86_64 -y
(倘若你不提前安装这些包的话一会编译的时候会提示出错的哦。。。)
useradd nagios
usermod -G nagios apache(给apache这个用户添加一个组nagios,)
#编译所需软件包
#运行 nagios 服务的用户
#使 apache 用户对 nagios 目录具有写权限,不然 web 页面操作失败
(2) cd ~
lftp 192.168.0.254(去下载软件包去)
cd pub/docs/nagios/
get nagios-cn-3.2.3.tar.bz2 nagios-plugins-1.4.15.tar.gz (或者你也可以去官网下载http://www.nagios.org/)
tar jxf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.3
./configure --enable-embedded-perl(若你不安装初始的那几个包,这里有可能会报错,要求你安装perl-ExtUtils-Embed.x86_64,gd-devel等类似的包,安装完所需的包需要重新进行编译。有时会提示你mail命令没有,mail 你可以安装yum install mailx 来提供mailx)
然后执行:make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf
(3)
yum install mysql-devel openssl-devel -y #编译所需软件包
tar zxf nagios-plugins-1.4.15.tar.gz
(nagios 插件安装)
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap –enable-perl-modules
make
make install
(4)此时 /usr/loccal/nagios/bin/nagios -c /usr/local/nagios/etc/nagios.cfg
(此时应该是0个错误0个警告。)
cat /etc/httpd/conf.d/nagios.conf
AuthuserFile /usr/local/nagios/etc/htpasswd.users(存放密码的文件。)
htpasswd /usr/local/nagios/etc/htpasswd.users nagiosadmin
输入新的密码:redhat(自己随意设定)
/etc/init.d/nagios restart
/etc/init.d/httpd restart
阶段性测试:http://192.168.0.85/nagios
弹出一个页面要你输入验证的:User Name:nagiosadmin Password:redhat
(5)vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cd /usr/local/nagios/etc/objects
cp -p localhost hosts.cfg
cp -p localhost services.cfg(-p保留属性。)
vi hosts.cfg
define host{
use linux-server
host_name Manager
alias Manager
address 127.0.0.1
icon_image server.gif
statusmap_image server.gd2
2d_coords 500,200
3d_coords 500,200,100
}
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members * ; Comma separated list of hosts that belong to this group
}

vi services.cfg

define servicegroup{
servicegroup_name 系统负荷检查
alias 负荷检查
members Manager,进程总数,Manager,登录用户数,Manager,根分区,Manager,交换空间利 用率
}

define servicegroup{
servicegroup_name 全部联通性检查
alias 联通性检查
members Manager,PING
}
define service{
use local-service ; Name of service template to use
host_name *
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

define service{
use local-service ; Name of service template to use
host_name Manager
service_description 根分区
check_command check_local_disk!20%!10%!/
}###(check_local_disk!20%!10%!/的意思是低于20%警告,低于10%属于紧急。)
define service{
use local-service ; Name of service template to use
host_name Manager
service_description 登录用户数
check_command check_local_users!20!50
}
define service{
use local-service ; Name of service template to use
host_name Manager
service_description 进程总数
check_command check_local_procs!250!400!RSZDT
}
define service{
use local-service ; Name of service template to use
host_name Manager
service_description 系统负荷
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}

define service{
use local-service ; Name of service template to use
host_name Manager
service_description 交换空间利用率
check_command check_local_swap!20!10
}

define service{
use local-service ; Name of service template to use
host_name Manager
service_description SSH
check_command check_tcp!22!1.0!10.0
notifications_enabled 0
}

define service{
use local-service ; Name of service template to use
host_name Manager
service_description HTTP
check_command check_http
notifications_enabled 0
}
(6)编辑好之后: /usr/loccal/nagios/bin/nagios -c /usr/local/nagios/etc/nagios.cfg
(此时应该是0个错误0个警告。)#校验 nagios 配置文件的正确性
检查文件是否有错误,有错误的话修改,直至0个错误0个警告。
/etc/init.d/nagios restart
进入测试:http://192.168.0.85/nagios
进去点击:主机组,汇总会出现 所以主机组的服务概要:一个主机名为:Manager的主机。
点击表格,会出现只有一个Manager的主机。监控的是127.0.0.1本机。单击监控:会发现你所监控的项目:Manager,进程总数,Manager,登录用户数,Manager,根分区,Manager,交换空间利用率等。

(7)实验二:
(1)监控mysql主机:也就是说监控另一台机子上的mysql的服务状况。mysql 主机上运行有 mysql 服务,在其上创建监控检测帐户
假设你的服务器为:Ip:192.168.0.85.被监控的主机的IP:192.168.0.125
现在你需要在125主机上设置:
mysql> create database nagdb;
mysql> grant select on nagdb.* to nagdb@'192.168.0.85';
mysql> flush privileges;
mysql>quit
/etc/init.d/mysqld restart
(2)在IP:192.168.0.125这台主机上。
./check_mysql -d nagdb -H 192.168.0.125 -u nagios
(此句的目的是在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务)
会出现类似:Uptime: 149 Threads: 1 Questions: 8 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.53
当Ip:192.168.0.125主机上的/etc/init.d/mysqld stop
./check_mysql -d nagdb -H 192.168.0.125 -u nagios
会出现类似:Can't connect to MySQL server on '192.168.0.125' (111)
(3)为了避免你每次测试都会用:./check_mysql -d nagdb -H 192.168.0.125 -u nagios这么长的命令,你可以把命令写进文件,调用的时候能方便些。在IP:85.服务器上。
vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H 192.168.0.125 -d nagdb -u nagios
}
这样你就可以用check_mysql来调用命令了。。。?????
(4)vi /usr/local/nagios/etc/objects/hosts.cfg 添加以下行
define host{
use linux-server
host_name mysql
alias mysql
address 192.168.0.125(被监控的主机的IP。)
icon_image server.gif
statusmap_image server.gd2
2d_coords 500,200
3d_coords 300,200,100(与之上的不要一样的坐标,否则图标会重叠的。)
}
(5)vi /usr/local/nagios/etc/objects/services.cfg 添加如下行

define servicegroup{
servicegroup_name 数据库
alias mysql数据库
members mysql,mysql数据库
}
#mysql service

define service{
use local-service ; Name of service template to use
host_name mysql
service_description mysql数据库
check_command check_mysql
}

(6)测试:/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios reload
#检测无误后重载 nagios
访问:http://192.168.0.85/nagios
你点击监视:可以看到mysql和Manager两台主机。
点击拓扑图会有2个主机。

实验三:Nagios 通过 NRPE 监控远程主机系统状况
步骤(1)在Ip:192.168.0.125远程主机设定
useradd nagios
lftp 192.168.0.254
cd pub/docs/nagios
nrpe-2.12.tar.gz nagios-plugins-1.4.15.tar.gz
yum install mysql-devel openssl-devel -y #编译所需软件包
tar zxf nagios-plugins-1.4.15.tar.gz
(nagios 插件安装)
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap –enable-perl-modules
make
make install(刚才这些步骤都是在IP :85服务器上进行的,现在在被监控的主机上进行。在编译的过程中你可能需要安装几个包,这里有可能会报错,要求你安装perl-ExtUtils-MakeMaker,gd-devel等类似的包,安装完所需的包需要重新进行编译。有时会提示你mail命令没有,mail 你可以安装yum install mailx 来提供mailx)
(2)yum install xinetd -y
tar zxf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd
(3)vi /etc/xinetd.d/nrpe 修改如下行
only_from = 192.168.0.85(允许85主机连接过来)
#nagios 服务器的主机 ip 地址

(4) /etc/init.d/xinetd.d restart
netstat -anulp | grep nrpe 可以看到5666端口开启了。
(5)vi /usr/local/nagios/etc/nrpe.cfg 修改如下行
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
(#根分区监测)
(6)
service xinetd restart
netstat -antlp |grep 5666(看到如下输出说明 NRPE 正常启动,并确保防火墙允许此端口)
tcp 0 0 :::5666 :::* LISTEN 26359/xinetd
#看到如下输出说明 NRPE 正常启动,并确保防火墙允许此端口
(7)以上是在被监控的主机上设定,如下进行在监控主机上设定: 即在Ip:192.168.0.85
监控主机设定
tar zxf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make all
make install-plugin
/usr/local/nagios/libexec/check_nrpe -H 192.168.0.125
NRPE v2.12(如看到如下输出说明连接正常)

(8)
vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
(9)在服务器上用命令:/usr/local/etc/libexec/check_nrpe -H 192.168.0.125 -c check_disk
显示: DISK OK ‘ free space:/ 4294 MB {18% inode=89%};| /=1961MB;5206;5931;0;6590 类似的信息。说明你命令设置的正确。(与df -h显示的一样)
vi /usr/local/nagios/etc/objects/services.cfg 添加如下行
define servicegroup{
servicegroup_name 数据库
alias mysql数据库
members mysql,mysql数据库,mysql,磁盘使用率,mysql,CPU负载
}

define service{
use generic-service
host_name mysql
service_description 磁盘使用率
check_command check_nrpe!check_disk
}

define service{
use generic-service
host_name mysql
service_description CPU负载
check_command check_nrpe!check_load
}

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg(用于检查文件配置是否正确。)
service nagios reload (#检测无误后重载 nagios)
访问: http://192.168.0.85/nagios
点击监控会出现3个服务组。


实验四:Nagios 整合飞信
http://www.it-adv.net/ 下载 fetion 主程序与支持库

步骤
(1)IP:192.168.0.85:
cd ~
lftp 192.168.0.254
cd /pub/docs/nagios
get fetion cenos54X64_20101113.rar
cd /pub/docs
get rarlinux-3.8.0.tar.gz
cp fetion /usr/local/nagios/libexec
cd /usr/local/nagios/libexec
chmod +x fetion
chown nagios.nagios fetion
(2)执行 /usr/local/nagios/libexec/fetion
出现没有/lib/ld-linux.so
yum install /lib/ld-linux.so.2 -y
cd /usr/local/nagios/libexec/
./fetion
cd ~
tar zxf rarlinux-3.8.0.tar.gz -C /opt/
cd /opt/rar/unrar
/opt/rar/unrar x cenos54X64_20101113.rar(可能会出错,需要安装以下的包,然后重新执行此步。)yum install libstdc++.so.6
(3) cd ~
lftp 192.168.0.254
cd /pub/docs/nagios
get linuxso_20111113.tar.gz
tar zxf linuxso_20111113.tar.gz -C /usr/local/lib(将库文件放到/usr/local/ib中。ldconfig /usr/local/lib使其生效。)
cd /usr/local/lib
ls 会有4个so文件。
chmod +x *
需要的时候可能需要安装: yum install libgssapi_krb5.so.2 libz.so.1 zlib文件。
ldconfig /usr/local/lib
/usr/local/nagios/libexec/fetion 7执行成功。

(4)vi /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql
(5) vi fetion.conf
/usr/local/lib
ldconfig
(6) su - nagios
/usr/local/nagios/libexec/fetion --mobile=1509154xxxx --pwd=99999xx(飞信密码) --to=1509154xxxx --msg-utf8="hello"
然后你去/usr/local/nagios/libexec找到1509154xxxx.jpg,然后将其复制到桌面,查看其验证码,然后写上去,你就会在1509154xxxx收到一个由mobile=1509154xxxx发来的信息哦!)
你第一次用验证码,第二次就不用验证码。
实验五:
fetion 与 nagios 配置
步骤(1)cd /usr/local/nagios/libexec/
vi fetion.sh
/usr/local/nagios/libexec/fetion --mobile=13679270227 --pwd=Yakexi007 --to="$1" --msg-utf8="$2" > /dev/null
(2) chmod +x fetion.sh
chown ngios.nagios fetion.sh
su - nagios
cd /usr/local/nagios/libexec/
./fetion.sh 1509154xxxx "hello" (测试给1509154xxxx发送小心“hello“)
此时因为你重新调用的程序,需要重新找到验证码并输入.....
然后就可以收到信息喽......
(3) cd /usr/local/nagios/etc/objects/
vi templates.cfg

Generic contact definition template - This is NOT a real contact, just a template!

define contact{
name generic-contact ; The name of this contact template
.
.
.
service_notification_commands notify-service-by-email,notify-service-by-fetion ; send service notifications via email
host_notification_commands notify-host-by-email,notify-host-by-fetion ; send host notifications via email
..........................
}
(4) vi /usr/local/nagios/etc/objects/commands.cfg
增加以下内容:
# 'notify-host-by-fetion' command definition
define command{
command_name notify-host-by-fetion
command_line $USER1$/fetion.sh $CONTACTPAGER$ "$NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$"
}


# 'notify-service-by-fetion' command definition
define command{
command_name notify-service-by-fetion
command_line $USER1$/fetion.sh $CONTACTPAGER$ "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"
}
(5)vi /usr/local/nagios/etc/objects/contacts.cfg

define contact{
.
.
.
email 997365139@qq.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
pager 1509154xxxx(接收飞信信息的手机号码
)
}
(6)测试:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#校验后重新载入 nagios 配置
/etc/init.d/nagios reload
此时你若把被监控端的: service mysqld stop此时会产生报警。然后下次检测的时候你的手机和邮箱会同时收到邮件和信息哦。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值