三种监控平台配置及其整合(cacti nagios ganglia) 二
nagios:cacti默认是以邮件发送警告信息的,虽然可以安装插件以实现其他方式进行告警,但不是他的强项,nagios有着强大的报警机制,下面是部署方法:
[*]# yum install httpd gcc make gd-devel perl-ExtUtils-Embed #安装编译所需要的软件包
[*]# useradd nagios #运行nagios服务的用户
[*]# usermod -G nagios apache #将apache用户加入到nagios组中,因为nagios程序通过apache发布与修改,而httpd程序的执行用户是apache,所以需要让apache有权限修改查看nagios文件
[*]# tar jxf nagios-cn-3.2.3.tar.bz2
[*]# cd nagios-cn-3.2.3
[*]# ./configure --enable-embedded-perl
[*]# make all
[*]# make install
[*]# make install-init
[*]# make install-commandmode
[*]# make install-config
[*]# make install-webconf
安装nagios插件:
[*]# yum install mysql-devel openssl-devel -y #安装编译所需的安装包
[*]# tar zxf nagios-plugins-1.4.15.tar.gz
[*]# 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
配置nagios
[*]# vi /usr/local/nagios/etc/nagios.cfg #nagios 配置
[*]cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
[*]#新建 hosts.cfg 文件,存放主机与主机组定义
[*]cfg_file=/usr/local/nagios/etc/objects/services.cfg #新建 services.cfg 文件,存放服务与服务组定义
[*]#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg#注释 localhost.cfg 文件
注意,这里软件装好的时候默认时读取licalhost.cfg这个文件中的被监控的主机与服务的设置,我们把它注释掉,新加入两个文件,分别管理被监控的主机、主机组与被监控的服务与服务组
编辑被监控主机与主机组的文件:
[*]# cd /usr/local/nagios/etc/objects
[*]# vim /usr/local/nagios/etc/objects/hosts.cfg
[*]
[*]define host{
[*] use linux-server
[*] host_name 监控主机
[*] alias nagios 服务器
[*] address 127.0.0.1
[*] icon_image web.gif
[*] statusmap_image web.gd2
[*] 2d_coords 100,300
[*] 3d_coords 100,300,100
[*] }
[*]
[*]define hostgroup{ ;主机组不是必须的
[*] hostgroup_namelinux-servers
[*] alias Linux Servers
[*] members *
[*] }
编辑被监控服务的时候因为内容很多,所以可以拷贝原来的localhost.cfg文件进行一些修改来使用:
[*]# cp localhost.cfg services.cfg
对services.cfg进行修改,在vi编辑器中的命令模式下用d1G去掉servicegroup以上的hosts部分,并用:%s/田朝阳家用机/监控主机/g命令将文件中用于被监控的主机全部改为刚刚在hosts文件中设置的主机,并在servicegroup部分做如下修改,其他不变:
[*]define servicegroup{
[*] servicegroup_name 系统负荷检查
[*] alias 负荷检查
[*] members 监控主机,进程总数,监控主机,登录用户数,监控主机,根分区,监控主机,>交换空间利用率
[*] }
[*]
[*]define servicegroup{
[*] servicegroup_name 全部联通性检查
[*] alias 联通性检查
[*] members 监控主机,PING
[*] }
使用命令
[*]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
修改nagios管理员的登录密码,注意必须是nagiosadmin,否则可以登录但是无法查看状态
使用命令
[*]/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
校验配置文件语法的正确性,没有错误的话
[*]service nagios start
[*]service httpd start
用nagios监控 mysql 主机
在mysql服务器端创建一个监控检测账户,只给select权限,不需要密码:
[*]mysql> create database nagdb;
[*]mysql> grant select on nagdb.* to nagdb@'192.168.0.86' ;
[*]mysql> flush privileges;
在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务
[*]/usr/local/nagios/libexec/check_mysql -H 192.168.0.36 -u nagdb -d nagdb
[*]Uptime: 73 Threads: 1 Questions: 7 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8
[*]Queries per second avg: 0.95
在 nagios 主机上添加对 mysql 服务监控的定义
vi /usr/local/nagios/etc/objects/hosts.cfg 添加如下行
[*]define host{
[*] use linux-server
[*] host_name mysql主机
[*] alias mysql 服务器
[*] address 192.168.0.32
[*] icon_image server.gif
[*] statusmap_image server.gd2
[*] 2d_coords 500,200
[*] 3d_coords 500,200,200
[*] }
vi /usr/local/nagios/etc/objects/services.cfg 添加如下行
[*]define service{
[*] use local-service ; Name of service template to use
[*] host_name mysql主机
[*] service_description mysql服务
[*] check_command check_mysql
[*] service_groups mysql服务组
[*] notifications_enabled 0
[*] }
[*]
[*]define servicegroup{
[*] servicegroup_name mysql服务组
[*] alias mysql服务器
[*] }
vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行
[*]# 'check_mysql' command definition
[*]define command{
[*] command_name check_mysql
[*] command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagdb -p nagdb
[*] }
[*]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
[*]# /etc/init.d/nagios reload
Nagios 通过 NRPE 监控远程主机系统状况
刚刚时监控了一个远程主机提供的服务的状态,如果要监控远程主机的状态,如内存,磁盘占用等情况的话就需要用NRPE了,简单来说NRPE的工作原理是在远程主机端不安装nagios,只安装NRPE插件,插件中包含了check_mysql,check_disk等命令,在远程主机端执行这些命令以收集远程主机信息包从在远程主机的NRPE中,而nagios主机只需要执行check_nrpe命令连接远程主机的NRPE,并通过SSL加密通道传输主机数据,下面时实现方法:
远程主机设定
[*]yum install openssl openssl-devel gcc
[*]useradd nagios
[*]tar xzf nagios-plugins-1.4.15.tar.gz
[*]cd nagios-plugins-1.4.15
[*]./configure --with-nagios-user=nagios --with-nagios-group=nagios
[*]make
[*]make install
[*]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
[*]vi /etc/xinetd.d/nrpe 修改如下行
[*]only_from = 192.168.0.71 #nagios 主机 ip 地址
[*]vi /etc/services 添加如下行
[*]nrpe 5666/tcp #nrpe 服务监听端口
[*]vi /usr/local/nagios/etc/nrpe.cfg 修改如下行
[*]command=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p / #根分区监测
[*]service xinetd restart
[*]netstat -antlp |grep 5666 #看到如下输出说明 NRPE 正常启动,并确保防火墙允许此端口
[*]tcp 0 0 :::5666:::* LISTEN 26359/xinetd
监控主机设定
[*]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.36
[*]NRPE v2.12 #看到这个说明可以使用了
vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行
[*]# 'check_nrpe' command definition
[*]define command{
[*] command_name check_nrpe
[*] command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
[*] }
$ARG1$表示第一个参数
vi /usr/local/nagios/etc/objects/services.cfg 添加如下行
[*]define service{
[*] use generic-service
[*] host_name mysql主机
[*] service_description CPU Load
[*] check_command check_nrpe!check_load
[*] }
[*]define service{
[*] use generic-service
[*] host_name mysql主机
[*] service_description Current Users
[*] check_command check_nrpe!check_users
[*] }
[*]define service{
[*] use generic-service
[*] host_name mysql主机
[*] service_description / Free Space
[*] check_command check_nrpe!check_disk
[*] }
[*]define service{
[*] use generic-service
[*] host_name mysql主机
[*] service_description Total Processes
[*] check_command check_nrpe!check_total_procs
[*] }
[*]define service{
[*] use generic-service
[*] host_name mysql主机
[*] service_description Zombie Processes
[*] check_command check_nrpe!check_zombie_procs
[*] }
[*]/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
[*]service nagios reload
Nagios 整合飞信
nagios可以通过短信发出告警,在企业中有专门的短信平台,此处我们拿飞信做实验,但是在生产环境中不推荐。
http://www.it-adv.net/ 下载 fetion 主程序与支持库
>> 使用说明 > 举例/dev/null
chown nagios.nagios /usr/local/nagios/libexec/fetion
chmod +x /usr/local/nagios/libexec/fetion
执行 fetion.sh 脚本看是否可以发送信息
注: 第一次调用飞信脚本时会要求你输入验证码,在飞信程序所在的 /usr/local/fetion 目录下会生成以你手机号命名的 png 图片文件,上面存放着验证码。
2) 增加 fetion 报警选项: templates.cfg
修改 /usr/local/nagios/etc/objects/templates.cfg
在 define contact{...} 部分,将以下两行:
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
改为:
service_notification_commands notify-service-by-email,service-notify-by-fetion
host_notification_commands notify-host-by-email,host-notify-by-fetion
3) 增加调用脚本: commands.cfg
修改 /usr/local/nagios/etc/objects/commands.cfg 在该文件的最后增加以下部分:
##### host-notify-by-fetion command definition
define command{
command_name host-notify-by-fetion
command_line $USER1$/fetion.sh $CONTACTPAGER$ "$NOTIFICATIONTYPE$ alert -Host
$HOSTNAME$ is $HOSTSTATE$"
}
##### service-notify-by-fetion command definition
define command{
command_name service-notify-by-fetion
command_line $USER1$/fetion.sh $CONTACTPAGER$ "$NOTIFICATIONTYPE$:
$HOSTalias$/$SERVICEDESC$ is $SERVICESTATE$"
4) 修改联系人选项: contact.cfg
修改 /usr/local/nagios/etc/objects/contact.cfg
在 define contact{...} 部分增加如下一行
pager 136xxxxxxxx ;
#接收飞信信息的手机号码
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#校验后重新载入 nagios 配置
/etc/init.d/nagios reload
页:
[1]