nagios服务器搭建实现对Linux和windows主机监控及短信报警

最近在搭建公司的nagios服务器以便对公司服务器进行监控。之前没有接触过nagios,折腾了这么久快把我搞的崩溃了。现在搭建好了,下面就是搭建方式:

搭建前的准备工作:

nagios服务器主控端: LAMP环境 其中对于(MySQL可以不安装因为nagios服务器对于Mysql不是必须的。)nagios主程序包,nagios-plugins 插件程序包,NRPE。

nagios被监控Linux端:nagios-plugins插件程序包,nrpe。

nagios被监控windows端:NSClient++

nagios主程序下载地址:

wget http://sourceforge.net/projects/nagios/files/nagios-4.x/nagios-4.0.4/nagios-4.0.4.tar.gz

nagios插件程序下载地址:

wget http://down1.chinaunix.net/distfiles/nagios-plugins-1.4.13.tar.gz

linux被控端nrpe下载地址:

wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.13/nrpe-2.13.tar.gz

windows被控端NSClient++下载地址

http://nsclient.org/nscp/downloads  (此安装包要具体看被监控的Windows主机是32位还是64位之后对应的进行下载)

下面我们开始具体的搭建:

一.准备LAMP环境:

1.首先部署LAMP环境并且安装nagios依赖的gcc,glibc,glibc-common,gd,gd-devel在此处我只安装Apache,PHP。(注:Mysql可以不安装)

对于Apache和PHP可以使用yum安装RPM包的,也可以使用源码包安装在此处我就使用yum进行安装了

(1. yum -y install httpd php glibc glibc-common gd gd-devel  (此命令就是用来安装apache,php以及gcc,glibc,glibc-common,gd,gd-devel)

(2.启动Apache服务:service  httpd  start

二.配置nagios主程序端(服务器端):

(3.创建一个名为nagios的帐号并给定登录口令:

useradd  nagios

passwd  nagios

创建一个用户组名为nagcmd用于从Web接口执行外部命令。将nagios用户和apache用户都加到这个组中:

/usr/sbin/groupadd nagcmd

/usr/sbin/usermod -G nagcmd nagios  //其中-G选项表示将nagios用户的附加组指定为nagcmd

/usr/sbin/usermod -G nagcmd apache

(4.安装nagios的主程序:

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz 下载到/root目录

tar zxvf nagios-3.4.3.tar.gz

cd nagios-3.4.3

./configure --with-command-group=nagcmd //运行Nagios配置脚本并使用先前开设的用户及用户组如下图:

wKioL1MoCmrw2Jo7AAIRuwUXX5s977.jpg

make all   //编译Nagios程序包源码  wKiom1MoCmzDxXhWAACjccqHESU192.jpg

(看到这个提示说明编译成功)

make install  //安装二进制运行程序

wKiom1MoCljSjfd6AAGFeBIEabE267.jpg

make install-init   //初始化脚本

wKiom1MoCryy-OyoAACy1SEZjvo981.jpg

make install-config //配置文件样本

wKiom1MoCy_TRzOSAAKzMc6iIfw380.jpg

make install-commandmode  //设置运行目录权限

wKiom1MoC0TSLBVKAADROPDB9GY196.jpg


+++++++++++++++现在还不能启动Nagios-还有一些要做的...+++++++++++++++

编辑/usr/local/nagios/etc/objects/contacts.cfg配置文件,更改email地址nagiosadmin的联系人定义信息中的EMail信息为你的EMail信息以接收报警内容。如下图:

wKiom1MoCAijCNwAAAE-8theEcE155.jpg

其中的[email protected]为最终接受报警信息的邮箱地址。

配置WEB接口安装Nagios的WEB配置文件到Apache的conf.d目录下:

make install-webconf


创建一个nagiosadmin的用户用于Nagios的WEB接口登录。记下你所设置的登录口令,一会儿你会用到它。

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin


重启Apache服务以使设置生效。

service httpd restart

(5.安装nagios的插件程序:

wget http://down1.chinaunix.net/distfiles/nagios-plugins-1.4.13.tar.gz

tar xzf nagios-plugins-1.4.13.tar.gz

cd nagios-plugins-1.4.13

编译并安装插件:

./configure --with-nagios-user=nagios --with-nagios-group=nagios

make && make install

把nagios添加为系统服务并将之加入到自动启动服务队列:

chkconfig --add nagios

chkconfig nagios on

检查其主配置文件的语法是否正确:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:

service nagios start

配置selinux
如果您的系统开启了selinux服务,则默认为拒绝nagios web cgi程序的运行。您可以通过下面的命令来检查您的系统是否开启了selinux:
#getenforce
如果上面命令的结果显示开启了selinux服务,您可以通过下面的命令暂时性的将其关闭:
#setenforce 0
如果您想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。
当然,您也可以通过以下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:

chcon -R -t httpd_sys_content_t/usr/local/nagios/sbin

chcon -R -t httpd_sys_content_t /usr/local/nagios/share

通过web界面查看nagios:

http://your_nagios_IP/nagios
登录时需要指定前面设定的web认证帐号和密码

(6.安装NRPE:(nagios服务器端的NRPE安装方式如下:)

wKiom1MrmD7yIMKVAADAjDgfQUo254.jpg

三,配置被监控端Linux(nagios客户端):

useradd nagios

安装nagios插件如下图:

wKioL1MrnzvTl4ddAAEdT0q68wc716.jpg

这一步完成后会在/usr/local/nagios/下生成两个目录libexec和share

安装NRPE步骤如下:

第一步:(注意如果不使用xinetd守护进程来调用控制NRPE的话配置的时候在执行完make install-plugin之后后边的make install-daemon ,make install-daemon-config ,make install-xinetd就不用配置了包括后面的wKioL1Mqc-vQy2mwAAAdleG3RPA490.jpg以及wKiom1MqdCiSVq-TAABvLqfNrIU767.jpg还有wKiom1MqdEywJMGfAAE3CgdU7uI844.jpg就可以不用配置,因为这些都是为了配合xinetd守护进程)下面因为我使用的是xinetd来调用的NRPE所以我的配置就如下:


wKioL1MqckqSUbUSAADccJGZbIA070.jpg

第二步:

wKiom1MqcsChBKbEAAE3CgdU7uI742.jpg

第三步:

wKioL1Mqcs6TasyUAABvLqfNrIU393.jpg

第四步:

wKioL1MqcvySPAVtAAC64ZysQqU154.jpg


(如果不在commands.cgf中定义check_nrpe命令那么此命令无法使用因为本身commands.cfg文件没有定义此命令的用法。所以如果在以后自己编写了一个插件那么也要将此插件的命令定义到此commands.cfg文件不然就会出错。)

四.在nagios服务器上具体的配置定义监控那个服务和主机:

{1.在/usr/local/nagios/etc目录创建两个目录hosts,services并修改nagios.cfg配置文件添加对hosts,services目录的识别分别如下图所示:

wKiom1Mrm2zxouSDAADCpd7nEAQ972.jpg

wKiom1MrnF2DNuLqAAFqjP_AUO0388.jpg

其中hosts和services目录分别表示:hosts目录下面放置的是具体定义被监控主机的文件,services目录主要用于当两台主机上面所监控定义的服务相同时可以方便调用例如下图所示:

wKiom1MrnL-iw_XYAADd1psmiwc006.jpg

可以看到上图中的关于host_name后面有定义3个ip地址这三个iP地址上关于定义监控服务Disk-vda1的

配置相同所以就可以将它们配置在一块用逗号隔开。(对于在host_name后面的也不是必须为ip地址的我这里只是为了区分因为我定义时将配置文件名定义成了ip地址。比如42.62.3.170的配置文件中定义的host_name为AA且42.62.3.170主机在定义Disk-vda1服务时与118.26.238.249的Disk-vda1中定义的相同那么可以在118.26.238.249中的define-service里面的host_name定义为如下:

wKiom1MrnuCjIF_rAACuALHU1aY154.jpg

{2在hosts目录定义要监控的Linux主机的文件比如我要定义的是42.62.66.41内容如下:

wKioL1MroImSCoA-AAG9udEAB6c408.jpg

其中define host里的use   linux-server表示引用的是templates.cfg里面的Linux-server模板define service里use generic-service引用的也是templates.cfg里面的generic-servies模板。

另外注意:对于check_command后面的check_nrpe要提前在command.cfg里面定义此命令前面我已经定义过了不然无法使用报错。在check_command中!后面的check_load,check_disk等等也要提前在被控端Linux中的/usr/local/nagios/etc/nrpe.cfg文件定义如下图:wKioL1Mroa2TZ4XJAACV9hJqak8760.jpg

注意上图中黄色部分的【check_load】以及【check_disk】要与nagios服务器端定义的check_command中的!后面的参数一致。做完以上的内容就可以分别在nagios服务器端重启nagios服务,nagios客户端重启nrpe的守护进程xinted服务。再次查看nagios的web监控图就可以看到监控的内容如下图:

wKiom1MrpLWwhhdwAADoKgh4IVA821.jpg

{3.写自定义脚本插件结合nagios服务监控Linux主机的DNS域名是否可以正常解析并实现报警:

在被控端Linux的/usr/local/nagios/libexec目录编写脚本check_dns_lookup脚本内容如下图所示:

wKioL1MrpTHSEUUPAACjcoZ_-Kc478.jpg

注意下图解释:

wKioL1MrpYOQbDvTAABRbN-qL-4670.jpg

在nagios服务器/usr/local/nagios/etc/hosts目录下的42.62.66.41.cfg文件添加关于DNS的定义如下图:

wKioL1MrssbwC50NAACmCpmn944807.jpg

其中check_command命令后面的check_long_nrpe要提前在nagios服务器的command.cfg中定义。check_command后面的check_dns_lookup也要和被控端linux下的/usr/local/nagios/etc/libexec目录下的自定义脚本名称一致。并在被控Linux端的/usr/local/nagios/etc/nrpe.cfg文件添加此命令如下图所示:wKioL1Mrs63zSkOTAABD-MXvkik760.jpg

注意:黄色部分的[check_dns_lookup]也要和上述中的check_command命令后面定义的!号码的参数一致。

做完以上的内容就可以分别在nagios服务器端重启nagios服务,nagios客户端重启nrpe的守护进程xinted服务。再次查看nagios的web监控图就可以看到监控的内容如下图:

wKiom1MrtHPjlo6gAAEqR3yPaWs546.jpg

五:监控window服务器:

{1.在window服务上下载NSClient++0.3.5.zip并安装步骤如下:

将下载好的软件复制到C盘根目录并解压如下图所示:wKiom1MsCAXhWlB5AAIIDZOoPmo987.jpg



在nagios服务器上:vi /usr/local/nagios/etc/nagios.cfg #cfg_file=/usr/local/nagios/etc/objects/windows.cfg 去掉这句话的注释如下图所示:wKiom1MsCL2wcDTZAAEMIUGFTjw497.jpg

{2.在window服务上安装NSClient++步骤如下:

到win服务器上,打开命令窗口,cd到刚才解压的目录在命令行界面执行 nsclient++ /install如图:

wKioL1MsCxHyEbw5AAFvrLIvz5I148.jpg

此时在“服务”里面已经有了nsclient的服务如下图所示:

wKiom1MsC1HjCPmIAAEHqr99D0M352.jpg

wKioL1MsC0DjKzY0AAEHqr99D0M079.jpg

编辑NES.ini文件(在NSClient++安装包的程序目录下)如下图所示:

wKioL1MsC7_iPWQcAAGMyYUX5yk666.jpg

[modules] 选项里去掉所有的注释符号; 除了 CheckWMI.dll和RemoteConfiguration.dll

修改成功后如下图所示:wKiom1MsDJWiPy16AAIViq2nMkg937.jpg


修改[Settings]选项里面的allowd_hosts选项修改完成如下图所示:注意要将allowed_hosts前面的分号去掉!wKioL1MsFPiA8f8fAAKsTXRjhUQ912.jpg

在[NSClient] 里面,去掉port=12489的注释! 他靠端口12489侦听,所以防火墙要打开这个端口!如图所示:wKiom1MsEVGjhfReAAC2ZmtFSbs570.jpg

之后启动nsclient++如下图所示:

wKiom1MsDZnSnbssAABJQogwIIo621.jpg

使用netstat -an 查看12489端口是否开启如下图所示:

wKiom1MsEOSTMKkVAAFqYM2Jqmo902.jpg

接下来我们开始配置nagios服务器里面的内容vi /usr/local/nagios/etc/objects/windows.cfg =================================

修改host_name和address选项修改完成如下图所示:

(   然后下面的很多定义,都可以不用改)

wKioL1MsDgfiiYpxAAEm_EMg4eQ860.jpg

之后在nagios服务器端重启nagios即可。查看WEb监控图如下图所示:


wKioL1MsFkfQ272nAAgUiEYqPwY988.jpg

可以看到报错:NSClient - ERROR: PDH Collection thread not running. 由于操作系统语言的问题,好像NSClient 默认支持的语言并不多。

查看NSClient的日志C:\NSClient++-0.2.7\nsclient.log,信息如下:

wKiom1MvohrgbfXSAABYBMR_HgY979.jpg

需要手动配置performance counters。

打开C:\NSClient++-0.2.7\counters.defs文件,复制文件里面"English US"那部分内容,粘贴到counters.defs 文件的最后,修改Description = "Chinese"。

wKiom1MvolXh5M8qAAFF7cZrEh0090.jpg

修改完之后,在mmc中重启NSClient 服务。

然后查看日志,内容如下:说明在正常执行了


wKioL1MvtJ-wtGTlAACtgNWpozY614.jpg

打开Nagios Web监控页查看如下图所示:

wKiom1MvtRGh9Bd9AAIvvBZwiu4373.jpg


实验完成





本文出自 “Anna--linux之家” 博客,谢绝转载!

你可能感兴趣的:(nagios监控)