thinkhk 发表于 2019-1-11 10:30:31

三种监控平台配置及其整合(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]
查看完整版本: 三种监控平台配置及其整合(cacti nagios ganglia) 二