苏童 发表于 2019-1-14 11:00:31

Nagios+pnp

一、Nagios服务器安装过程
  1)配置服务器端IP地址
  # vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices 79c970
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:fe:39:A1
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.6.199
GATEWAY=192.168.6.1
TYPE=Ethernet


  A,安装前准备
  安装LAMP架构
  # mount /dev/cdrom /media/
  

  # vi /etc/yum.repos.d/rhel-debuginfo.repo

name=Red Hat Enterprise Linux $releasever - $basearch – Debug
baseurl=file:///media/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


  #yum install gcc glibc glibc-common gd gd-devel php-gd
  # yum -y install php* mysql* http*
  # service httpd start
  # service mysqld start
  # chkconfig httpd on
  # chkconfig mysqld on
  

  # vim /var/www/html/index.php
  
  访问http://192.168.6.199/
http://blog.运维网.com/attachment/201311/181254536.png
  2)安装Nagios
  1)创建nagios程序用户、组
# useradd -s /sbin/nologinnagios
# mkdir/usr/local/nagios
# chown -R nagios:nagios /usr/local/nagios/
# chmod -R 755 /usr/local/nagios/
  

  2)保证系统中sendmail服务器要开启
# yum install sendmail
# service sendmail status
sendmail (pid 3090) 正在运行...
  

  B、编译安装Nagios
# cd /aaa/
# tar zxf nagios-3.2.0.tar.gz
# cd nagios-3.2.0
# ./configure--prefix=/usr/local/nagios/
# make all ; make install ; make install-init ;make install-commandmode ; make install-config ;make install-webconf
# chkconfig --add nagios
# chkconfig nagios on
# chkconfig --list nagios
nagios       0:关闭   1:关闭   2:启用   3:启用   4:启用   5:启用   6:关闭
  

  C、安装Nagios插件
  你可以从http://www.nagios.org官方网站上下载最新的nagios插件
  # tar zxf nagios-plugins-1.4.14.tar.gz
  # cd nagios-plugins-1.4.14
  # ./configure --prefix=/usr/local/nagios/ ; make ;make install
  

  D、安装Nagios的汉化包
  # tar jxf nagios-cn-3.2.0.tar.bz2
  # cd nagios-cn-3.2.0
  #./configure ; make all ; makeinstall
  

  E、修改apache配置文件
  # vi /etc/httpd/conf/httpd.conf
231 User
232 Group apache
391 DirectoryIndex index.phpindex.html index.html.var
992 #setting for nagios
993 ScriptAlias/nagios/cgi-bin "/usr/local/nagios/sbin"
994
995 AuthType Basic
996 Options ExecCGI
997 AllowOverride None
998 Order allow,deny
999 Allow from all
1000 AuthName "nagiosaccess"
1001 AuthUserFile/usr/local/nagios/etc/htpasswd
1002 Require valid-user
1003
1004 Alias /nagios"/usr/local/nagios/share"
1005
1006 AuthType Basic
1007 Options ExecCGI
1008 AllowOverride None
1009 Order allow,deny
1010 Allow from all
1011 AuthName "nagiosaccess"
1012 AuthUserFile/usr/local/nagios/etc/htpasswd
1013 Require valid-user
1014
  

  创建apache目录的验证文件“/usr/local/nagios/etc/htpasswd”
  # htpasswd -c /usr/local/nagios/etc/htpasswd benet
New password:
Re-type new password:
Adding password for user benet
  

  重启apache服务器并进行验证nagios登陆情况
  # service httpd restart
停止 httpd:                        [确定]
启动 httpd:                     [确定]
http://blog.运维网.com/attachment/201311/181533435.png
http://blog.运维网.com/attachment/201311/181545307.png
  至此nagios服务器安装结束
  

  二、Nagios服务器配置过程
  Nagios的配置过程:主机,主机组,服务,服务组,联系人,联系人组,监控时间,监控命令等,配置文件及配置项之间相互关联,彼此引用。
  (Nagios配置的核心思想)
  最重要的4点:
  第一:要定义监控哪些主机、主机组(hosts.cfg),服务,服务组(services.cfg)
  第二:要定义这个监控项需要通过什么命令实现(commands.cfg)
  第三:要定义监控的时间段(timeperiods.cfg)
  最后:要定义主机或服务出现问题时要通知的联系人或联系人组(contacts.cfg)
  所有的模板都在objects目录下,包括主机、服务、命令、时间、联系人、模板模块
  1)定义hosts.cfg文件(监控哪些主机、主机组(hosts.cfg))
  # cd /usr/local/nagios/etc/objects/
  # ls ../
cgi.cfg    hosts.cfg   nagios.cfgservices.cfg
commands.cfg htpasswd    objects    templates.cfg
contacts.cfg localhost.cfg resource.cfg timeperiods.cfg
  # vi hosts.cfg此文件默认没有,自动创建
define host{
use   linux-server
host_name    web
aliasbenet-web
address 192.168.6.199
}
define host{
use   linux-server
host_name    mysql
aliasbenet-mysql
address 192.168.6.200
}
define hostgroup{
hostgroup_name sa-servers
aliassa servers
members web,mysql
}
  

  2)定义services.cfg(监控哪些服务,服务组(services.cfg))
  # vi services.cfg此文件默认没有,自动创建
################- benet web -##########################
define service{
uselocal-service
host_name    web
service_description PING
check_command   check_ping!100.0,20%!500.0,60%
}
define service{
uselocal-service
host_name    web
service_description SSH
check_command   check_ssh
}
define service{
uselocal-service
host_name    web
service_description SSHD
check_command   check_tcp!22
}
define service{
uselocal-service
host_name    web
service_description http
check_command   check_http
}
#####################- MYSQL -##########################
define service{
uselocal-service
host_name    mysql
service_description PING
check_command   check_ping!100.0,20%!500.0,60%
}
define service{
uselocal-service
host_name    mysql
service_description SSH
check_command   check_ssh
}
define service{
uselocal-service
host_name    mysql
service_description ftp
check_command   check_ftp
}
define service{
uselocal-service
host_name    mysql
service_description mysqlport
check_command   check_tcp!3306
}
  注意:hosts.cfg和services.cfg两个文件默认在/usr/local/nagios/etc并不存在,需要手动创建。
Check_ping!100.0,20%!500.0,60%
命令!告警延时,丢包率!严重告警延时,丢包率。
Check_ssh!22!10
命令!端口!连接超时时间
  

  3)定义contacts.cfg(定义主机或服务出现问题时要通知的联系人或联系人组)
  # vi contacts.cfg
35   email            root@localhost ;
  

  4)定义cgi.cfg
  # cd /usr/local/nagios/etc/
  # vi cgi.cfg
107 default_user_name=benet
119 authorized_for_system_information=nagiosadmin,benet
131 authorized_for_configuration_information=nagiosadmin,benet
144 authorized_for_system_commands=benet
157 authorized_for_all_services=nagiosadmin,benet
158 authorized_for_all_hosts=nagiosadmin,benet
171 authorized_for_all_service_commands=nagiosadmin,benet
172 authorized_for_all_host_commands=nagiosadmin,benet
  

  5)定义nagios.cfg
  # vim /usr/local/nagios/etc/nagios.cfg
  19log_file=/usr/local/nagios/var/nagios.log
30 cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
31cfg_file=/usr/local/nagios/etc/objects/services.cfg
32cfg_file=/usr/local/nagios/etc/objects/commands.cfg
33cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
34 cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
35cfg_file=/usr/local/nagios/etc/objects/templates.cfg


三、Nagios的运行和维护
1)验证nagios主配置文件的语法正确性
  # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors:0


Things look okay - No serious problems were detected during thepre-flight check


2)启动与停止nagios
  # service nagios start
Starting nagios:This account is currently not available.
done.
  # service nagios status
nagios (pid 5106) is running...
  # service nagios stop
Stopping nagios: .done.
  # service nagios restart
Running configuration check...done.
Stopping nagios: No lock file found in/usr/local/nagios//var/nagios.lock
Starting nagios:This account is currently not available.
done.
http://blog.运维网.com/attachment/201311/181703485.png
  

  四、Nagios性能分析图表的实现
  1)安装PNP支持包rrdtool工具

  # tar zxf rrdtool-1.4.5.tar.gz
  # cd rrdtool-1.4.5
  #./configure--prefix=/usr/local/rrdtool ; make ; make install
安装rrdtool时候的报错:configure:error:Pleasefix thelibrary issues listed above and try again
解决办法:
yum -y install cairo-devel libxml2-devel pangopango-devel
如果上面执行后无果,请执行下面操作:
yum install cgiliblibart_lgpl-develpango-devel* cairo-devel* libxml2-devel
如果上面执行后无果,请执行下面操作:
yum -y install zlib libpng freetypelibart_lgpllibart_lgpl-devel libxml* pango*
通常编辑安装文件时,出现make无法安装,这其实是configure编译时出现了问题。
问题分析思路:先不要make,步骤分开进行,先configure编译,这样容易发现是哪一步出现的错误,并解决
  

  2)安装PNP
# cd /aaa/
# tar zxf pnp-0.4.13.tar.gz
# cd pnp-0.4.13
# ./configure --with-nagios-user=nagios--with-nagios-group=nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata; make all ; make install ; make install-config ; make install-init


3)配置PNP
  A,创建默认配置文件
# cd /usr/local/nagios/etc/pnp/
# cp process_perfdata.cfg-sampleprocess_perfdata.cfg
# cp npcd.cfg-sample npcd.cfg
# cp rra.cfg-sample rra.cfg
# chown -R nagios:nagios/usr/local/nagios/etc/pnp/
# chmod -R 755 /usr/local/nagios/etc/pnp/
必须设置这个权限,不然web界面执行控制命令会出错
chown -R nagios.nagios/usr/local/nagios/var/rw
chmod -R 777/usr/local/nagios/var/rw
  

  B,修改process_perfdata.cfg
  # vi /usr/local/nagios/etc/pnp/process_perfdata.cfg
44 LOG_LEVEL = 2


4)修改Nagios主配置文件
  A,增加小太阳图标
  # cd /usr/local/nagios/etc/objetcs
  # vi templates.cfg
define host{
namehosts-pnp
register    0
action_url   /nagios/pnp/index.php?host=$HOSTNAME$
process_perf_data    1
}
define service{
nameservices-pnp
register    0
action_url   /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data    1
}
  

  B、修改nagios.cfg
  找到如下几行去掉注释
  # cd ..
  # vi nagios.cfg
833 process_performance_data=1
845 host_perfdata_command=process-host-perfdata
846 service_perfdata_command=process-service-perfdata
  

  C、修改commands.cfg
  # vim /usr/local/nagios/etc/objects/commands.cfg
  227 # 'process-host-perfdata' commanddefinition
228 define command{
229   command_nameprocess-host-perfdata
230   command_line/usr/local/nagios/libexec/process_perfdata.pl
231   }
232
233
234 #'process-service-perfdata' command definition
235 define command{
236   command_nameprocess-service-perfdata
237   command_line/usr/local/nagios/libexec/process_perfdata.pl
238   }
  

  D、修改hosts.cfg文件和services.cfg文件
  # vi /usr/local/nagios/etc/objects/hosts.cfg
define host{
use   linux-server,hosts-pnp
host_name    web
aliasbenet-web
address 192.168.6.199
}
define host{
use   linux-server,hosts-pnp
host_name    mysql
aliasbenet-mysql
address 192.168.6.200
}
define hostgroup{
hostgroup_name sa-servers
aliassa servers
members web,mysql
}
  # vi /usr/local/nagios/etc/objects/services.cfg
################- benet web -##########################
define service{
uselocal-service,services-pnp
host_name    web
service_description   PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
uselocal-service,services-pnp
host_name    web
service_description   SSH
check_commandcheck_ssh
}
  注意项:别心急看小太阳数据,等会儿就有了。
http://blog.运维网.com/attachment/201311/181800622.png
  访问http://localhost/nagios/pnp
http://blog.运维网.com/attachment/201311/181814127.png
  点击小太阳,出现对主机或服务的监控页面
http://blog.运维网.com/attachment/201311/181830409.png
  五,利用插件扩展Nagios的监控功能
  下面我们通过在nagios服务端和客户端安装NRPE插件来搭建一个更加完善的Nagios监控系统。
  

  1)配置nagios客户端(即远端被监控主机192.168.6.200)
  A)安装Nagios插件
  登陆192.168.6.200客户端
  # cd /aaa/
  # useradd -s /sbin/nologin nagios
  # tar zxf nagios-plugins-1.4.14.tar.gz
  # cd nagios-plugins-1.4.14
  # ./configure ; make ;make install
  # chown nagios:nagios /usr/local/nagios/
  # chown -R nagios.nagios /usr/local/nagios/libexec/
  

  B)安装NRPE插件
  # cd /aaa/
  # tar zxf nrpe-2.12.tar.gz
  # cd nrpe-2.12
  # ./configure ; make all ; make install-plugin ; make install-daemon; make install-daemon-config
  

  C)修改NRPE配置文件
  # vi /usr/local/nagios/etc/nrpe.cfg
79 allowed_hosts=192.168.1.1 #nagios服务器地址
44 server_address=192.168.233.204 #客户机本机地址
  192.168.6.199:指定nagios服务器地址
  

  D)启动NRPE
  # /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
  # netstat -antl |grep 5666
tcp    0   0 0.0.0.0:5666      0.0.0.0:*          LISTEN
  E)测试NRPE
  # /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.12
  如果出现NRPE v2.12表明NRPE已经正常工作
  

  定义让nagios服务器监控我本机上的内容(当前用户数,CPU,内存,硬盘等信息)
  # vi /usr/local/nagios/etc/nrpe.cfg
199 command=/usr/local/nagios/libexec/check_users -w5 -c 10
200command=/usr/local/nagios/libexec/check_load -w 15,10,5 -    c 30,25,20
201command=/usr/local/nagios/libexec/check_disk -w 20% -c 10    % -p /dev/sda1
202command=/usr/local/nagios/libexec/check_procs -w   5 -c 10 -s Z
203command=/usr/local/nagios/libexec/check_procs -w 1    50 -c 200
  重启NRPE
  # ps -elf |grep nrpe
5 S nagios22379   1 0 750 - 1243 -   17:59 ?    00:00:00 /usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d
0 R root   22586 4247 0 780 - 1039 -   18:09 pts/000:00:00 grep nrpe
  # kill -9 22379
  # /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
  

  2,配置nagios服务器端
  登陆nagios服务器端:192.168.6.199
  1)安装NRPE插件
  # cd /aaa/
  # tar zxf nrpe-2.12.tar.gz
  # cd nrpe-2.12
  # ./configure ; make ; make install-plugin
  

  2)测试插件能否取得与客户端192.168.6.200的联系
  #/usr/local/nagios/libexec/check_nrpe -H 192.168.6.200
NRPE v2.12
  出现NRPE v2.12就证明成功联系上客户端
  

  3)定义一个check_nrpe监控命令
  # vi /usr/local/nagios/etc/objects/commands.cfg
define command{
    command_namecheck_nrpe
    command_line$USER1$/check_nrpe -H $HOSTADDRESS$ -c$ARG1$
}


4)添加远程主机监控项
  # vi /usr/local/nagios/etc/objects/services.cfg
define service{
use   local-service
host_name    mysql
service_description   users
check_command check_nrpe!check_users_1
}
define service{
use   local-service
host_name    mysql
service_description   load
check_command check_nrpe!check_load_1
}
define service{
use   local-service
host_name    mysql
service_description   disk
check_command check_nrpe!check_sda1_1
}
define servicegroup{
    servicegroup_name    servergroup
    alias      server-group
    members    web,PING,web,SSH,web,SSHD,web,http,mysql,users,mysql,load,mysql,disk
}
  6)测试并重新启动nagios服务
  # service nagios restart
http://blog.运维网.com/attachment/201311/181941890.png
http://blog.运维网.com/attachment/201311/181957283.png
  测试中出现的错误
安装好nagios打开网页出现下面问题
The requested URL /nagios/cgi-bin/statusmap.cgiwas not found on this server
解决方案,确定安装下面的包。
1.安装
gd-devel
回到nagios安装时解压开的目录
#make devclean
# ./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include
接下来
#./configure --with-command-group=nagios
#make all; make install; make install-init; make install-config;make install-commandmode; make install-webconf
重新回到你的nagios的sbin目录查看几个cgi脚本有没有生成。
因为没有配置yum源,所以自以为上面的lib库应该都安装了。然后直接重新编译安装。后来发现还是不行。没办法,配置yum源,发现第一个gd库就没装了。一个个查,一个个装。从头到位从新配置。最后搞定....看来还是要耐心点。错误
  

  

  




页: [1]
查看完整版本: Nagios+pnp