标签:linux;nagios
Nagios是一款开源的网络及服务的监控工具,其功能强大,灵活性强。能有效监控Window,Linux和Unix的主机各种状态信息,交换机、路由器等网络设置,主机端口及URL服务等。根据不同业务故障界别发出告警信息给管理员,当故障恢复时也会发出恢复消息。
Nagios服务端可以在linux和类unix的系统上运行,目前无法再windows上运行。
官方网站地址:http://www.nagios.org/
官方快速安装说明:http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html
Nagios的特点:
01)监控网络服务(SMTP、POP3、HTTP、TCP、PING等);
02)监控主机资源(CPU、负载、IP状况,虚拟及正式内存及磁盘利用率等);
03)简单的插件设计模式使得用户可以方便定制符合自己的服务的检测方法;
04)并行服务检查机制;
05)几倍定义网络分层结构的能力,用“parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
06)当服务或主机问题产生于解决时将告警发送给联系人(mail/im/sms/sound);
07)具备定义时间句柄功能,它可以在主机或服务的时间发生时获取更多问题定位;
08)自动的日志回滚;
09)可以支持并实现对主机的冗余监控;
10)可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等。
Nagios监控一般由一个主程序(Nagios)、一个插件程序(Nagios-plugin)和一些可选的附加程序(NRPE、NSClient++、NSCA、和NDOUtils等)。
Nagios本身就是一个监控的平台而已,其具体的监控工作都是通过插件(也可以自己编写)来实现的,因此,Nagios主程序和Nagios-plugins插件都是Nagios服务端必须要安装的程序组件,Nagios-plugins一般也要安装于被监控端。几个附加程序的描述如下:
1、NRPE:
位置:此软件工作于被监控端,一般为linux/unix系统
用途:用于在被监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控。
2、NSClient++:
位置:此软件工作于windows系统的被监控端
作用:用于监控Window主机时安装在Windows主机上的组件,功能相当于linux下的NRPE。
3、NDOUtils:(不推荐用)
位置:此软件工作于服务器端
作用:用于将Nagios的配置信息和各event产生的数据存入数据库以实现对这些数据的检索和处理。
4、NSCA
位置:此软件需要同时安装在nagios服务器端和客户端
作用:用于被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(在分布式监控集群模式中会用到)
Nagios服务器端 | 一台 | 监控服务器 |
NFS客户端 | 两台 | 被监控的服务端 |
说明:总共需要2台服务器完成本次搭建 |
服务器说明 | IP地址 | 主机名称规则 |
Nagios服务器端 | 172.16.1.61/24 | m01 |
Nagios客户端 | 172.16.1.31/24 | nfs01 |
Nagios客户端 | 172.16.1.8/24 | web01 |
172.16.1.61 m01
172.16.1.31 nfs01
172.16.1.8 web01
[root@server ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@server ~]# uname -r 2.6.32-431.el6.x86_64 [root@server ~]# uname -m x86_64
后面编译的软件有perl程序,这里要提前设置下环境变量(不修改安装PNP时会报错)
echo ‘export LC_ALL=C‘ >> /etc/profile tail -1 /etc/profile source /etc/profile echo $LC_ALL cd ~
关闭防火墙
/etc/init.d/iptables stop chkconfig iptables off
关闭selinux
setenforce 0 sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘/etc/selinux/config
时间同步
/usr/sbin/ntpdate pool.ntp.org echo ‘*/10 * * * * /usr/sbin/ntpdate pool.ntp.org &>/dev/null‘>> /var/spool/cron/root crontab -l
yum -y install gcc glibc glibc-common yum -y install gd gd-devel yum -y install mysql* yum -y install httpd php php-gd yum -y install openssl-devel
/usr/sbin/useradd -s /sbin/nologin nagios groupadd nagcmd /usr/sbin/usermod -a -G nagcmd nagios /usr/sbin/usermod -a -G nagcmd apache #<==yum安装自动创建apache,否则手动创建 id -n -G nagios id -n -G apache
http://sourceforge.net/projects/nagios/files
tar -zxvf nagios-3.2.1.tar.gz cd nagios-3.2.1 ./configure --with-command-group=nagcmd make all make install make install-init make install-commandmode make install-config
安装nagios web配置文件
cd /usr/local/src/nagios-3.2.1 make install-webconf
创建nagios登录用户
[root@m01 nagios-3.2.1]# htpasswd -c/usr/local/nagios/etc/htpasswd.users oldboy New password: Re-type new password: Adding password for user oldboy [root@m01 nagios-3.2.1]# cat/usr/local/nagios/etc/htpasswd.users oldboy:mNNaAzgat77Sw
注:可使用htpasswd -bc /usr/local/nagios/etc/htpasswd.users oldboy 123456 不用交互式输入密码
vim /usr/local/nagios/etc/objects/contacts.cfg +35行,修改如下:
email **********@qq.com
快速修改:
sed -i ‘s#nagios@localhost#**********@qq.com#g‘/usr/local/nagios/etc/cgi.cfg
开启邮件服务:
yum -y install sendmail /etc/init.d/sendmail start #<==如果启动慢,修改hosts的127.0.0.1对应主机 lsof -i :25 chkconfig sendmail --level 3 on
/etc/init.d/httpd start netstat -lntup |grep 80 echo ‘/etc/init.d/httpd start‘ >>/etc/rc.local
cd /usr/local/src tar -zxvf nagios-plugins-2.2.1.tar.gz cd nagios-plugins-2.2.1 ./configure --with-nagios-user=nagios--with-nagios-group=nagios --enable-perl-moudles make #<==此编译遇到make:*** [all] Error 2, configure后加--with-mysql=/usr/local/mysql echo $? cd .. ls /usr/local/nagios/libexec/ | wc -l
chkconfig nagios --level 3 on echo ‘/etc/init.d/nagios start‘>> /etc/rc.local /etc/init.d/nagios checkconfig #<==可改/etc/init.d/nagios+177,去掉>/dev/null,打印输出 /usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg /etc/init.d/nagios start ps -ef |grep nagios
cd /usr/local/src tar -zxvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure make all make install-plugin make install-daemon make install-daemon-config cd .. ls -l /usr/local/nagios/libexec/check_nrpe
和nagios服务端相比,nagios客户端不需要安装如下内容:
1、nagios客户端无需安装lamp环境
2、客户端无需安装nagios包
/usr/sbin/adduser -s /sbin/nologin -M nagios id nagios
cd /usr/local/src tar -zxvf nagios-plugins-2.2.1.tar.gz cd nagios-plugins-2.2.1 ./configure --with-nagios-user=nagios --with-nagios-group=nagios--enable-perl-moudles make make install ls /usr/local/nagios/libexec/ | wc -l 55
cd /usr/local/src tar -zxvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure make all make install-plugin make install-daemon make install-daemon-config cd .. ls -l /usr/local/nagios/libexec/check_nrpe
cd /usr/local/nagios/etc/ cp nrpe.cfg{,.ori}
修改文件的第79行为nagios监控服务器,如果有多台,那么用逗号隔开。
sed -i‘s#allowed_hosts=127.0.0.1#allowed_hosts=172.16.1.61#g‘ nrpe.cfg allowed_hosts=127.0.0.1 #<79行 allowed_hosts=172.16.1.61
修改配置文件的199-203行:
原:
command[check_users]=/usr/local/nagios/libexec/check_users-w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load-w 15,10,5 -c 30,25,20 command[check_hda1]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/hda1 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs-w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs-w 150 -c 200
修改后:
command[check_load]=/usr/local/nagios/libexec/check_load-w 15,10,5 -c 30,25,20 command[check_mem]=/usr/local/nagios/libexec/check_memory.pl-f -w 10% -c 3% command[check_disk]=/usr/local/nagios/libexec/check_disk-w 15% -c 7% -p / command[check_swap]=/usr/local/nagios/libexec/check_swap-w 20% -c 10% command[check_users]=/usr/local/nagios/libexec/check_users-w 5 -c 10
注意:以上均为对负载,内存,硬盘,缓存,用户的监控,这些都是本地的服务(我们一般通过nrpe去客户端执行脚本插件获取信息),这样的模式称为被动模式,由nagios服务器端通过nrpe插件定时去client的nrpe服务定期获取信息。
/usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d echo ‘#naigos nrpe process cmd by liutao at2017-11-14‘ >> /etc/rc.local echo ‘/usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d‘ >> /etc/rc.local tail -2 /etc/rc.local
检查启动结果
ps -ef |grep nrpe lsof -i :5666
[root@m01 ~]# ll /usr/local/nagios/ total 28 drwxrwxr-x 2 nagios nagios 4096 Nov 12 23:53 bin drwxrwxr-x 3 nagios nagios 4096 Nov 12 23:53 etc drwxr-xr-x 2 root root 4096 Nov 12 23:23 include drwxrwxr-x 2 nagios nagios 4096 Nov 12 23:53 libexec drwxrwxr-x 2 nagios nagios 4096 Nov 12 22:46 sbin drwxrwxr-x 10 nagios nagios 4096 Nov 12 23:23share drwxrwxr-x 5 nagios nagios 4096 Nov 14 10:33 var
nagios主配置文件为nagios.cfg,默认在/usr/local/nagios/etc/目录下。/usr/local/nagios/etc目录下有个objects目录,里面放的是主配置文件nagios.cfg包含的其他的nagios配置文件。
[root@m01 etc]# tree . ├── cgi.cfg ├── htpasswd.users ├── nagios.cfg ├── nrpe.cfg ├── objects │ ├──commands.cfg │ ├──contacts.cfg │ ├── localhost.cfg │ ├──printer.cfg │ ├──services.cfg │ ├──switch.cfg │ ├──templates.cfg │ ├──timeperiods.cfg │ └──windows.cfg └── resource.cfg
在nagios.cfg中,既可以指定单独包含一个cfg文件,也可以指定包含一个目录,即该目录下所有的cfg文件都会包含进来。
为了目录结构看起来更清晰和批量部署服务的需要,我们把主配置文件包含的配置文件修改如下:
配置文件名称 | 说明 |
commands.cfg | 存放命令相关配置(也可以执行commands目录) |
services.cfg | 存放服务的相关配置(默认不存在) |
hosts.cfg | 存放主机相关配置(默认不存在) |
contacts.cfg | 存放报警联系人相关配置 |
timeperiods.cfg | 存放报警周期时间等相关配置 |
templates.cfg | 模板配置文件 |
cd /usr/local/nagios/ tar zcvf etc.tar.gz ./etc/
vim nagios.cfg +34 增加如下两行
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg cfg_file=/usr/local/nagios/etc/objects/services.cfg
注释如下一行:
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
hosts.cfg
cd /usr/local/nagios/etc/objects head -51 localhost.cfg > hosts.cfg chown -R nagios.nagios hosts.cfg
services.cfg
cd /usr/local/nagios/etc/objects touch services.cfg chown -R nagios.nagios services.cfg
按照监控的行为来看,可以吧Nagios的监控分为主动监控和被动监控。
主动监控:把对于像URL监控这样的一般由服务器端发出请求主动探测就可以得到数据的监控方式,定义为主动监控方式,也就是说不需要在客户端安装任何插件。当然,主动模式也可以配置成为被动模式。
被动监控:把对负载,内存,硬盘,虚拟内存,磁盘IP等的监控,这些都是本地的资源,非系统对外提供的服务,这种资源的监控是由nagios服务端通过nrpe插件定时去连接client的nrpe服务,然后定期获取信息发回到服务端。这样的监控模式称之为被动监控。
如何选择主动模式和被动模式?
1)对于本地资源性能等的监控,一般用被动模式,例如:对负载,内存,硬盘,虚拟内存,磁盘IO等的监控;
2)对于WEB服务这种能对外提供服务的监控,一般用主动模式,例如:http,ssh,mysql等的服务;
添加主机和主机组
define host{ use linux-server host_name web01 alias web01 address 172.16.1.8 } define host{ use linux-server host_name nfs01 alias nfs01 address 172.16.1.31 } define hostgroup{ hostgroup_name linux-servers alias Linux Servers members web01,nfs01 }
配置services.cfg
define service { use generic-service host_name web01,nfs01 service_description DiskPartition check_command check_nrpe!check_disk max_check_attempts 8 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 3 notification_period 24x7 notification_options w,u,c,r contact_groups admins process_perf_data 1 }
check_nrpe
是在配置文件/usr/local/nagios/etc/objects/commands.cfg里面定义的,默认不存在,需要自己定义。与其类似的还有check_tcp、check_http等。
check_disk
check_disk是在配置文件/usr/local/nagios/etc/nrpe.cfg里面定义的,定义如下:
command[check_disk]=/usr/local/nagios/libexec/ check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
注意:红色标记的check_disk其实是插件名
services.cfg配置完成之后,使用/etc/init.d/nagios chkconfig检查,会有报错,因为check_nrpe未定义,需要在commads文件里定义
在文件末尾填入如下内容
#‘check_nrpe‘ command definition define command{ command_name check_nrpe command_line $USER1$/check_nrpe-H $HOSTADDRESS$ -c $ARG1$ }
检查/etc/init.d/nagioschkconfig,未报错
平滑重启nagios服务端
/etc/init.d/nagios reload
配置访问nagios用户的权限,共有7处:
cd /usr/local/nagios/etc vim cgi.cfg +119 authorized_for_system_information=nagiosadmin #<==默认配置(7处) :g/nagiosadmin/s//oldboy authorized_for_system_information=oldboy
通过如下命令,可以检测插件和nrpe命令是否可用。
/usr/local/nagios/libexec/check_nrpe-H 172.16.1.8 -c check_disk DISK OK - free space: / 15033 MB (88.26%inode=94%);| /=1999MB;15252;16687;0;17944
使用插件
/usr/local/nagios/libexec/check_tcp /usr/local/nagios/libexec/check_tcp -H 172.16.1.8-p 5666
配置监控
cd /usr/local/nagios/etc/objects/services cat rsync.cfg define service { use generic-service host_name web01,nfs01 service_description RSYNC_873 check_command check_tcp!873 }
使用插件
/usr/local/nagios/libexec/check_ping
配置监控
define service { use generic-service host_name web01,nfs01 service_description PING check_command check_ping!100.0,20%!500.0,60% }
使用插件
/usr/local/nagios/libexec/check_http /usr/local/nagios/libexec/check_http -H172.16.1.8 define service { use generic-service host_name web01 service_description check_url check_command check_http!-H 172.16.1.8 }
pnp出图软件官方站点为:http://www.pnp4nagios.org
软件:libart_lgpl-2.3.17.tar.gz,rrdtool-1.2.14.tar.gz
yum安装基础pnp软件需要的包
yum -y install cairo pango zlib zlib-develfreetype freetype-devel gd gd-devel
编译安装rrdtool依赖包libart
wget http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/2.3/libart_lgpl-2.3.17.tar.gz cd /usr/local/src tar -zxvf libart_lgpl-2.3.17.tar.gz cd libart_lgpl-2.3.17 ./configure make make install
后面容易报错,还是直接yum安装吧!!
yum -y install libart_lgpl-devel yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker #<==后面perl编译有问题再安装
编译安装rrdtools
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.14.tar.gz cd /usr/local/src tar -zxvf rrdtool-1.2.14.tar.gz cd rrdtool-1.2.14 ./configure --prefix=/usr/local/rrdtool--disable-python --disable-tcl make make install ls /usr/local/rrdtool/bin/
软件:pnp-0.4.14.tar.gz
下载:
wget http://downloads.sourceforge.net/project/pnp4nagios/PNP/pnp-0.4.14/pnp-0.4.14.tar.gz--no-check-certificate cd /usr/local/src tar -zxvf pnp-0.4.14.tar.gz cd pnp-0.4.14 ./configure --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 ll /usr/local/nagios/libexec/ | grep process
配置nagios.cfg文件
vim /usr/local/nagios/etc/nagios.cfg +833 process_performance_data=1 #<==0改1 host_perfdata_command=process-host-perfdata #<==取消注释 service_perfdata_command=process-service-perfdata#<==取消注释
配置comnmand.cfg文件
vim /usr/local/nagios/etc/objects/commands.cfg+225,替换原来的配置如下
删除如下:
define command{ command_name process-host-perfdata command_line /usr/bin/printf"%b""$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n">> /usr/local/nagios/var/host-perfdata.out } # ‘process-service-perfdata‘ command definition define command{ command_name process-service-perfdata command_line /usr/bin/printf"%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n">> /usr/local/nagios/var/service-perfdata.out }
替换结果
# ‘process-host-perfdata‘ command definition define command{ command_name process-host-perfdata command_line /usr/local/nagios/libexec/process_perfdata.pl } # ‘process-service-perfdata‘ command definition define command{ command_name process-service-perfdata command_line /usr/local/nagios/libexec/process_perfdata.pl } /etc/init.d/nagios checkconfig /etc/init.d/nagios reload
****/nagios/pnp/index.php
是否出图的参数:
process_perf_data 1 #<==1表示出图,模板或服务里加
服务出图记录数据设置
vi services.cfg process_perf_data 1 #<==1表示出图,模板或服务里加
主机里面也需要配置
vim /usr/local/nagios/etc/objects/hosts.cfg #<==linux-server
在模板配置文件里面的linux-server里面加如下内容:
process_perf_data 1
vim /usr/local/nagios/etc/objects/hosts.cfg
在host主机配置里增加如下配置(或者模板)
action_url /nagios/pnp/index.php?host=$HOSTNAME$
在服务的配置模板里面增加如下内容:
action_url /nagios/pnp/index.php?host=$HOSTNAME$&serv=$SERVICEDESC$
标签:linux;nagios
原文地址:http://13178102.blog.51cto.com/13168102/1983365