- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章基于Linux下Nagios的安装与配置说明介绍[图]由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、nagios简介 。
nagios是一款开源的电脑系统和网络监视工具,能有效监控windows、linux和unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知.
nagios原名为netsaint,由ethan galstad开发并维护至今。nagios是一个缩写形式: "nagios ain't gonna insist on sainthood" sainthood 翻译为圣徒,而"agios"是"saint"的希腊表示方法。nagios被开发在linux下使用,但在unix下也工作得非常好.
主要功能 。
网络服务监控(smtp、pop3、http、nntp、icmp、snmp、ftp、ssh)主机资源监控(cpu load、disk usage、system logs),也包括windows主机(使用nsclient++ plugin)可以指定自己编写的plugin通过网络收集数据来监控任何情况(温度、警告……)可以通过配置nagios远程执行插件远程执行脚本远程监控支持ssh或ssl加通道方式进行监控简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、c++、perl、ruby、python、php、c#等)包含很多图形化数据plugins(nagiosgraph、nagiosgrapher、pnp4nagios等)可并行服务检查能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知能够自定义事件处理机制重新激活出问题的服务或主机自动日志循环支持冗余监控包括web界面可以查看当前网络状态,通知,问题历史,日志文件等 。
2、nagios工作原理 。
nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的.
启动nagios后,它会周期性的自动调用插件去检测服务器状态,同时nagios会维持一个队列,所有插件返回来的状态信息都进入队列,nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来.
nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查cpu负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能.
nagios可以识别4种状态返回信息,即 0(ok)表示状态正常/绿色、1(warning)表示出现警告/黄色、2(critical)表示出现非常严重的错误/红色、3(unknown)表示未知错误/深黄色。nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障.
四种监控状态 。
再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。但是,同样的,nagios 自身也没有报警部分的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成的.
nagios 安装,是指基本平台,也就是nagios软件包的安装。它是监控体系的框架,也是所有监控的基础.
打开nagios官方的文档,会发现nagios基本上没有什么依赖包,只要求系统是linux或者其他nagios支持的系统。不过如果你没有安装apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。关于apache的安装,网上有很多,照着安装就是了。安装之后要检查一下是否可以正常工作.
知道nagios 是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服务器对象的。nagios 系统提供了一个插件nrpe。nagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示:
nagios 通过nrpe 来远端管理服务 。
1. nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务.
2. 通过ssl,check_nrpe 连接远端机子上的nrpe daemon 。
3. nrpe 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc) 。
4. 最后,nrpe 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到nagios状态队列中.
5. nagios 依次读取队列中的信息,再把结果显示出来.
3、实验环境 。
host nameosipsoftwarenagios-servercentos release 6.3 (final)192.168.1.108apache、php、nagios、nagios-pluginsnagios-linuxcentos release 5.8 (final)192.168.1.111nagios-plugins、nrpenagios-windowswindows xp192.168.1.113 nsclient++ 。
server 安装了nagios软件,对监控的数据做处理,并且提供web界面查看和管理。当然也可以对本机自身的信息进行监控.
client 安装了nrpe等客户端,根据监控机的请求执行监控,然后将结果回传给监控机.
防火墙已关闭/iptables: firewall is not running. 。
selinux=disabled 。
4、实验目标 。
5、nagios服务端安装 。
5.1 基础支持套件:gcc glibc glibc-common gd gd-devel xinetd openssl-devel 。
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel 。
如果系统中没有这些套件,使用yum 安装 。
# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel 。
5.2 创建nagios用户和用户组 。
# useradd -s /sbin/nologin nagios# mkdir /usr/local/nagios# chown -r nagios.nagios /usr/local/nagios
查看nagios 目录的权限 。
# ll -d /usr/local/nagios/ 。
5.3 编译安装nagios 。
# wget 。
# tar zxvf nagios-3.4.3.tar.gz 。
# cd nagios 。
# ./configure --prefix=/usr/local/nagios 。
# make all 。
# make install 。
# make install-init 。
# make install-commandmode 。
# make install-config 。
# chkconfig --add nagios 。
# chkconfig --level 35 nagios on 。
# chkconfig --list nagios 。
5.4 验证程序是否被正确安装 。
切换目录到安装路径(这里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 这五个目录,如果存在则可以表明程序被正确的安装到系统了。nagios 各个目录用途说明如下:
binnagios 可执行程序所在目录etcnagios 配置文件所在目录sbinnagios cgi 文件所在目录,也就是执行外部命令所需文件所在的目录sharenagios网页文件所在的目录libexecnagios 外部插件所在目录varnagios 日志文件、lock 等文件所在的目录var/archivesnagios 日志自动归档目录var/rw用来存放外部命令文件的目录 。
5.5 安装nagios 插件 。
# wget 。
# tar zxvf nagios-plugins-1.4.16.tar.gz 。
# cd nagios-plugins-1.4.16 。
# ./configure --prefix=/usr/local/nagios 。
# make && make install 。
5.6 安装与配置apache和php 。
apache 和php 不是安装nagios 所必须的,但是nagios提供了web监控界面,通过web监控界面可以清晰的看到被监控主机、资源的运行状态,因此,安装一个web服务是很必要的。 需要注意的是,nagios在nagios3.1.x版本以后,配置web监控界面时需要php的支持。这里我们下载的nagios版本为nagios-3.4.3,因此在编译安装完成apache后,还需要编译php模块,这里选取的php版本为php5.4.10.
a. 安装apache 。
# wget 。
# tar zxvf httpd-2.2.23.tar.gz 。
# cd httpd-2.2.23 。
# ./configure --prefix=/usr/local/apache2 。
# make && make install 。
若出现错误:
则在编译时入加 --with-included-apr 即可解决.
b. 安装php 。
# wget 。
# tar zxvf php-5.4.10.tar.gz 。
# cd php-5.4.10 。
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs 。
# make && make install 。
c. 配置apache 找到apache 的配置文件/usr/local/apache2/conf/httpd.conf 找到:
user daemon group daemon
修改为 。
user nagios group nagios
然后找到 。
<ifmodule dir_module> directoryindex index.html </ifmodule>
修改为 。
<ifmodule dir_module> directoryindex index.html index.php </ifmodule>
接着增加如下内容: 。
addtype application/x-httpd-php .php
为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf 文件最后添加如下信息: 。
d. 创建apache目录验证文件 。
。
在上面的配置中,指定了目录验证文件htpasswd,下面要创建这个文件:
# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd david 。
这样就在/usr/local/nagios/etc 目录下创建了一个htpasswd 验证文件,当通过 访问时就需要输入用户名和密码了.
e. 查看认证文件的内容 。
# cat /usr/local/nagios/etc/htpasswd 。
f. 启动apache 服务 。
# /usr/local/apache2/bin/apachectl start 。
到这里nagios 的安装也就基本完成了,你可以通过web来访问了.
6、配置nagios 。
nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源及对外的服务等。默认的nagios 配置没有任何监控内容,仅是一些模板文件。若要让nagios 提供服务,就必须修改配置文件,增加要监控的主机和服务,下面将详细介绍.
6.1 默认配置文件介绍 。
nagios 安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下.
每个文件或目录含义如下表所示:
文件名或目录名用途 cgi.cfg控制cgi访问的配置文件 nagios.cfgnagios 主配置文件 resource.cfg变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$user1$ objectsobjects 是一个目录,在此目录下有很多配置文件模板,用于定义nagios 对象 objects/commands.cfg命令定义配置文件,其中定义的命令可以被其他配置文件引用 objects/contacts.cfg定义联系人和联系人组的配置文件 objects/localhost.cfg定义监控本地主机的配置文件 objects/printer.cfg定义监控打印机的一个配置文件模板,默认没有启用此文件 objects/switch.cfg定义监控路由器的一个配置文件模板,默认没有启用此文件 objects/templates.cfg定义主机和服务的一个模板配置文件,可以在其他配置文件中引用 objects/timeperiods.cfg定义nagios 监控时间段的配置文件 objects/windows.cfg监控windows 主机的一个配置文件模板,默认没有启用此文件 。
6.2 配置文件之间的关系 。
在nagios的配置过程中涉及到的几个定义有:主机、主机组,服务、服务组,联系人、联系人组,监控时间,监控命令等,从这些定义可以看出,nagios各个配置文件之间是互为关联,彼此引用的.
成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点:
第一:定义监控哪些主机、主机组、服务和服务组; 第二:定义这个监控要用什么命令实现; 第三:定义监控的时间段; 第四:定义主机或服务出现问题时要通知的联系人和联系人组.
6.3 配置nagios 。
为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义对象创建独立的配置文件:
创建hosts.cfg文件来定义主机和主机组 创建services.cfg文件来定义服务 用默认的contacts.cfg文件来定义联系人和联系人组 用默认的commands.cfg文件来定义命令 用默认的timeperiods.cfg来定义监控时间段 用默认的templates.cfg文件作为资源引用文件 。
a. templates.cfg文件 。
nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。这就是templates.cfg的作用.
下面详细介绍下templates.cfg文件中每个参数的含义:
。
b. resource.cfg文件
resource.cfg是nagios的变量定义文件,文件内容只有一行:
$user1$=/usr/local/nagios/libexec
其中,变量$user1$指定了安装nagios插件的路径,如果把插件安装在了其它路径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用.
c. commands.cfg文件 。
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可.
d. hosts.cfg文件 。
。
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,根据实验目标配置如下:
。
localhost.cfg 。
。
windows.cfg 。
e. services.cfg文件 。
此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务和主机资源,例如监控http服务、ftp服务、主机磁盘空间、主机系统负载等等。nagios-server 和nagios-windows 相关服务已在相应的配置文件中定义,所以这里只需要定义nagios-linux 相关服务即可,这里只定义一个检测是否存活的服务来验证配置文件的正确性,其他服务的定义将在后面讲到.
f. contacts.cfg文件 。
。
contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障,nagios会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者.
。
define contact{ contact_name david #联系人的名称,这个地方不要有空格 use generic-contact #引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义 alias nagios admin email david.tang@bsmart.cn } 。
。
define contactgroup{ contactgroup_name ts #联系人组的名称,同样不能空格 alias technical support #联系人组描述 members david #联系人组成员,其中“david”就是上面定义的联系人,如果有多个联系人则以逗号相隔 } 。
。
g. timeperiods.cfg文件
此文件只要用于定义监控的时间段,下面是一个配置好的实例:
h. cgi.cfg文件 。
。
此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件了。 由于nagios的web监控界面验证用户为david,所以只需在cgi.cfg文件中添加此用户的执行权限就可以了,需要修改的配置信息如下:
i. nagios.cfg文件 。
。
nagios.cfg默认的路径为/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置文件,所有的对象配置文件都必须在这个文件中进行定义才能发挥其作用,这里只需将对象配置文件在nagios.cfg文件中进行引用即可.
6.4 验证nagios 配置文件的正确性 。
。
nagios 在验证配置文件方面做的非常到位,只需通过一个命令即可完成:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
看到上面这些信息就说明没问题了,然后启动nagios 服务.
7.1 启动nagios 。
a. 通过初始化脚本启动nagios 。
# /etc/init.d/nagios startor# service nagios start
b. 手工方式启动nagios 。
# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
7.2 重启nagios 。
当修改了配置文件让其生效时,需要重启/重载nagios服务.
a. 通过初始化脚本来重启nagios 。
# /etc/init.d/nagios reloador# /etc/init.d/nagios restartor# service nagios restart
b. 通过web监控页重启nagios 。
可以通过web监控页的 "process info" -> "restart the nagios process"来重启nagios 。
c. 手工方式平滑重启 。
# kill -hup <nagios_pid>
7.3 停止nagios 。
a. 通过初始化脚本关闭nagios服务 。
# /etc/init.d/nagios stopor# service nagios stop
b. 通过web监控页停止nagios 。
可以通过web监控页的 "process info" -> "shutdown the nagios process"来停止nagios 。
c. 手工方式停止nagios 。
# kill <nagios_pid>
8、查看初步配置情况 。
8.1 启动完成之后,登录nagios web监控页 查看相关信息.
8.2 点击左面的current status -> hosts 可以看到所定义的三台主机已经全部up了.
8.3 点击current status -> services 查看服务监控情况.
看到nagios-linux和nagios-server的服务状态已经ok了,但是nagios-windows的服务状态为critical,status information 提示connection refused。因为nagios-windows上还未安装插件,内部服务还无法查看,所以出现这种情况。将在下面具体讲解.
9、利用nrpe监控远程linux上的“本地信息” 。
上面已经对远程linux 主机是否存活做了监控,而判断远程机器是否存活,我们可以使用ping 工具对其监测。还有一些远程主机服务,例如ftp、ssh、http,都是对外开放的服务,即使不用nagios,我们也可以试的出来,随便找一台机器看能不能访问这些服务就行了。但是对于像磁盘容量,cpu负载这样的“本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力。毕竟没得到被控主机的适当权限是不可能得到这些信息的。为了解决这个问题,nagios有这样一个附加组件--“nrpe”,用它就可以完成对linux 类型主机"本地信息”的监控.
9.1 nrpe 工作原理 。
。
check_nrpe 插件,位于监控主机上nrpe daemon,运行在远程的linux主机上(通常就是被监控机) 。
按照上图,整个的监控过程如下:
当nagios 需要监控某个远程linux 主机的服务或者资源情况时:
nagios 会运行check_nrpe 这个插件,告诉它要检查什么;check_nrpe 插件会连接到远程的nrpe daemon,所用的方式是ssl;nrpe daemon 会运行相应的nagios 插件来执行检查;nrpe daemon 将检查的结果返回给check_nrpe 插件,插件将其递交给nagios做处理.
注意:nrpe daemon 需要nagios 插件安装在远程的linux主机上,否则,daemon不能做任何的监控.
9.2 在被监控机(nagios-linux)上 。
a. 增加用户&设定密码 。
# useradd nagios 。
# passwd nagios 。
b. 安装nagios 插件 。
# tar zxvf nagios-plugins-1.4.16.tar.gz# cd nagios-plugins-1.4.16# ./configure --prefix=/usr/local/nagios# make && make install
这一步完成后会在/usr/local/nagios/下生成三个目录include、libexec和share.
修改目录权限 。
# chown nagios.nagios /usr/local/nagios# chown -r nagios.nagios /usr/local/nagios/libexec
c. 安装nrpe 。
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz# tar zxvf nrpe-2.13.tar.gz# cd nrpe-2.13# ./configure
# make all
接下来安装npre插件,daemon和示例配置文件.
c.1 安装check_nrpe 这个插件 。
# make install-plugin 。
监控机需要安装check_nrpe 这个插件,被监控机并不需要,我们在这里安装它只是为了测试目的.
c.2 安装deamon 。
# make install-daemon 。
c.3 安装配置文件 。
# make install-daemon-config 。
现在再查看nagios 目录就会发现有5个目录了 。
按照安装文档的说明,是将nrpe deamon作为xinetd下的一个服务运行的。在这样的情况下xinetd就必须要先安装好,不过一般系统已经默认安装了.
d. 安装xinted 脚本 。
# make install-xinetd 。
可以看到创建了这个文件/etc/xinetd.d/nrpe.
编辑这个脚本:
在only_from 后增加监控主机的ip地址.
编辑/etc/services 文件,增加nrpe服务 。
重启xinted 服务 。
# service xinetd restart 。
查看nrpe 是否已经启动 。
可以看到5666端口已经在监听了.
e. 测试nrpe是否则正常工作 。
使用上面在被监控机上安装的check_nrpe 这个插件测试nrpe 是否工作正常.
# /usr/local/nagios/libexec/check_nrpe -h localhost 。
会返回当前nrpe的版本 。
也就是在本地用check_nrpe连接nrpe daemon是正常的.
注:为了后面工作的顺利进行,注意本地防火墙要打开5666能让外部的监控机访问.
f. check_nrpe 命令用法 。
查看check_nrpe 命令用法 。
# /usr/local/nagios/libexec/check_nrpe –h 。
可以看到用法是:
check_nrpe –h 被监控的主机 -c 要执行的监控命令 。
注意:-c 后面接的监控命令必须是nrpe.cfg 文件中定义的。也就是nrpe daemon只运行nrpe.cfg中所定义的命令.
g. 查看nrpe的监控命令 。
红色部分是命令名,也就是check_nrpe 的-c 参数可以接的内容,等号 “=” 后面是实际执行的插件程序(这与commands.cfg 中定义命令的形式十分相似,只不过是写在了一行)。也就是说check_users 就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10 的简称.
。
我们可以很容易知道上面这5行定义的命令分别是检测登陆用户数,cpu负载,sda1的容量,僵尸进程,总进程数。各条命令具体的含义见插件用法(执行“插件程序名 –h”).
由于-c 后面只能接nrpe.cfg 中定义的命令,也就是说现在我们只能用上面定义的这五条命令。我们可以在本机实验一下.
9.3 在监控主机(nagios-server)上 。
之前已经将nagios运行起来了,现在要做的事情是:
安装check_nrpe 插件;在commands.cfg 中创建check_nrpe 的命令定义,因为只有在commands.cfg 中定义过的命令才能在services.cfg 中使用;创建对被监控主机的监控项目; 。
9.3.1 安装check_nrpe 插件 。
# tar zxvf nrpe-2.13.tar.gz # cd nrpe-2.13# ./configure# make all# make install-plugin
只运行这一步就行了,因为只需要check_nrpe插件.
在nagios-linux 上我们已经装好了nrpe,现在我们测试一下监控机使用check_nrpe 与被监控机运行的nrpe daemon之间的通信.
看到已经正确返回了nrpe的版本信息,说明一切正常.
9.3.2 在commands.cfg中增加对check_nrpe的定义 。
# vi /usr/local/nagios/etc/objects/commands.cfg 。
在最后面增加如下内容:
意义如下:
# 'check_nrpe' command definitiondefine command{ command_name check_nrpe # 定义命令名称为check_nrpe,在services.cfg中要使用这个名称. command_line $user1$/check_nrpe -h $hostaddress$ -c $arg1$ #这是定义实际运行的插件程序. # 这个命令行的书写要完全按照check_nrpe这个命令的用法,不知道用法的就用check_nrpe –h查看. }
-c 后面带的$arg1$ 参数是传给nrpe daemon 执行的检测命令,之前说过了它必须是nrpe.cfg 中所定义的那5条命令中的其中一条。在services.cfg 中使用check_nrpe 的时候要用 “!” 带上这个参数.
9.3.3 定义对nagios-linux 主机的监控 。
下面就可以在services.cfg 中定义对nagios-linux 主机的监控了.
define service{ use local-service host_name nagios-linux service_description current load check_command check_nrpe!check_load } 。
。
define service{ use local-service host_name nagios-linux service_description check disk sda1 check_command check_nrpe!check_load } 。
define service{ use local-service host_name nagios-linux service_description total processes check_command check_nrpe!check_total_procs } 。
define service{ use local-service host_name nagios-linux service_description current users check_command check_nrpe!check_users } 。
define service{ use local-service host_name nagios-linux service_description check zombie procs check_command check_nrpe!check_zombie_procs } 。
还有一个任务是要监控nagios-linux 的swap 使用情况。但是在nrpe.cfg 中默认没有定义这个监控功能的命令。怎么办?手动在nrpe.cfg 中添加,也就是自定义nrpe命令.
。
现在我们要监控swap 分区,如果空闲空间小于20%则为警告状态 -> warning;如果小于10%则为严重状态 -> critical。我们可以查得需要使用check_swap插件,完整的命令行应该是下面这样.
# /usr/local/nagios/libexec/check_swap -w 20% -c 10% 在被监控机(nagios-linux)上增加check_swap 命令的定义 。
# vi /usr/local/nagios/etc/nrpe.cfg 。
增加下面这一行 。
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10% 。
我们知道check_swap 现在就可以作为check_nrpe 的-c 的参数使用了 。
修改了配置文件,当然要重启.
如果你是以独立的daemon运行的nrpe,那么需要手动重启;如果你是在xinetd 下面运行的,则不需要.
由于本实验中nrpe 是xinetd 下运行的,所以不需要重启服务。 在监控机(nagios-server)上增加这个check_swap 监控项目 。
define service{ use local-service host_name nagios-linux service_description check swap check_command check_nrpe!check_swap }
同理,nagios-linux 上我还开启了http 服务,需要监控一下,按照上面的做法,在被监控机(nagios-linux)上增加check_http 命令的定义 。
# vi /usr/local/nagios/etc/nrpe.cfg 。
增加下面这一行 。
command[check_http]=/usr/local/nagios/libexec/check_http -i 127.0.0.1 。
在监控机(nagios-server)上增加check_http 监控项目 。
define service{ use local-service host_name nagios-linux service_description http check_command check_nrpe!check_http }
所有的配置文件已经修改好了,现在重启nagios.
# service nagios restart 。
9.3.4 查看配置情况 。
登录nagios web监控页 查看相关信息.
可以看到,对于nagios-server 和nagios-linux 上的相关服务的监控已经成功了,还有nagios-windows 上的服务还没有定义,下面讲到.
10、利用nsclient++监控远程windows上的“本地信息” 。
在nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的。其功能类似于check_nrpe。不过还需要搭配另外一个软件nsclient++,它则类似于nrpe.
nsclient++的原理如下图 。
可以看到nsclient与nrpe最大的区别就是:
被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的。当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控。nsclient++则不同,被监控机上只安装nsclient,没有任何的插件。当监控主机将监控请求发给nsclient++后,nsclient直接完成监控,所有的监控是由nsclient完成的.
这也说明了nsclient++的一个很大的问题:不灵活、没有可扩展性。它只能完成自己本身包含的监控操作,不能由一些插件来扩展。好在nsclient++已经做的不错了,基本上可以完全满足我们的监控需求.
10.1 安装nsclient++ 。
从http://www.nsclient.org/nscp/downloads 下载nsclient++-0.2.7.zip 。
解压到c盘根目录.
打开cmd 切换到c: sclient++-0.2.7 。
执行nsclient++ /install 进行安装 。
执行nsclient++ systray (注意大小写),这一步是安装系统托盘,时间稍微有点长.
看到下图就说明nsclient服务已经安装上了 。
双击打开,点“登录”标签,在“允许服务与桌面交互”前打勾.
编辑c: sclient++-0.2.7下的nsc.ini文件.
将 [modules]部分的所有模块前面的注释都去掉,除了checkwmi.dll 和 remoteconfiguration.dll 这两个.
在[settings]部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码。这一步是可选的,我这里设置为'123456'.
将[settings]部分'allowed_hosts'选项的注释去掉,并且加上运行nagios的监控主机的ip。各ip之间以逗号相隔。这个地方是支持子网的,如果写成192.168.1.0/24则表示该子网内的所有机器都可以访问。如果这个地方是空白则表示所有的主机都可以连接上来.
注意是[settings]部分的,因为[nsclient]部分也有这个选项.
必须保证[nsclient]的'port'选项并没有被注释,并且它的值是'12489',这是nsclient的默认监听端口.
在cmd 中执行nsclient++ /start启动服务,注意所在目录是c: sclient++-0.2.7 。
这时在桌面右下角的系统托盘处会出现一个黄色的m字样的图标 。
查看服务 。
已经正常启动了.
注意服务默认设的是“自动”,也就是说是开机自动启动的.
在cmd 里面执行netstat –an 可以看到已经开始监听tcp的12489端口了.
这样外部就可以访问了吗?
错! 。
防火墙也要打开tcp的12489端口,否则nagios 检查此服务的时候会报错.
这样被监控机的配置就搞定了,它就等待nagios 发出某个监控请求,然后它执行请求将监控的结果发回到nagios监控主机上.
之前已经在监控主机(nagios-server)上对windows 主机的监控做了配置,但是commands.cfg 中默认没有设置密码项,所以要修改一下,增加"-s 123456",如下:
# 'check_nt' command definitiondefine command{ command_name check_nt command_line $user1$/check_nt -h $hostaddress$ -p 12489 -s 123456 -v $arg1$ $arg2$ }
现在打开nagios web监控页便可查看到相关信息了.
可以看到有错误:nsclient - error: pdh collection thread not running. 。
google 一下,是由于操作系统语言的问题,好像nsclient 默认支持的语言并不多,具体可以百度一下.
查看nsclient的日志c: sclient++-0.2.7nsclient.log,信息如下:
2013-02-02 22:05:30: error:.pdhcollector.cpp:98: you need to manually configure performance counters!
需要手动配置performance counters.
打开c: sclient++-0.2.7counters.defs文件,复制文件里面"english us"那部分内容,粘贴到counters.defs 文件的最后,修改description = "chinese".
修改完之后,在mmc中重启nsclient 服务.
然后查看日志,内容如下:
在正常执行了.
打开nagios web监控页查看.
执行成功,但是w3svc服务为unknown 状态。查资料,需要开户windows 的iis服务.
打开“控制面板”进行安装.
安装完毕后,再到nagios web监控页查看,全部监控正常.
11、nagios邮件报警的配置 。
11.1 安装sendmail 组件 。
首先要确保sendmail 相关组件的完整安装,我们可以使用如下的命令来完成sendmail 的安装:
# yum install -y sendmail* 。
然后重新启动sendmail服务:
# service sendmail restart 。
然后发送测试邮件,验证sendmail的可用性:
# echo "hello world" | mail david.tang@bsmart.cn 。
11.2 邮件报警的配置 。
在上面我们已经简单配置过了/usr/local/nagios/etc/objects/contacts.cfg 文件,nagios 会将报警邮件发送到配置文件里的e-mail 地址.
11.3 nagios 通知 。
problem 。
recovery 。
linux下nagios安装配置完毕。 。
最后此篇关于基于Linux下Nagios的安装与配置说明介绍[图]的文章就讲到这里了,如果你想了解更多关于基于Linux下Nagios的安装与配置说明介绍[图]的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我只是不喜欢 Logback 的 XML 或 Groovy 配置,而更喜欢用 Java 进行配置(这也是因为我将在初始化后的不同时间在运行时更改配置)。 似乎对 Logback 进行 Java 配置的
我的 sphinx 配置是: ================================ config/sphinx.yml development: bin_path: "/usr/loc
我们计划在生产服务器中部署我们的系统。我有兴趣了解更多有关优化网站性能的信息。 Sitecore 有哪些优化建议? (缓存,网络配置中的其他设置) 我们可以在 IIS 中做哪些优化? 找不到关于这些主
我有一个 Django 应用程序,可以处理网站的两个(或更多)部分,例如网站的“admin”和“api”部分。我还为网站的其余部分提供了普通的 html 页面,其中不需要 Django。 例如,我希望
我刚刚开始研究Docker。我有一个 Node 应用程序,可以调整大小和图像,然后在完成后向 aws 发送 SQS 消息。我已成功创建应用程序的 docker 镜像,并从本地计算机复制它,但遇到了无法
如何配置 checkstyle(在 Ant nt Maven 中)任务?我尝试了一点,但没有正确收到报告。这是我的 Ant 脚本。
我正在使用 Quartz 和 Spring 框架重写一个遗留项目。原始配置是 XML 格式,现在我将其转换为 Java Config。 xml 配置使用 jobDetail 设置触发器 bean 的作
tl;rd: 使用主键对数据库进行分区 索引大小问题。 数据库大小每天增长约 1-3 GB 突袭设置。 您有使用 Hypertable 的经验吗? 长版: 我刚刚建立/购买了一个家庭服务器: 至强 E
在安装 gcp 应用程序后,我们尝试使用 GCP 的图形 api 配置 Azure Active Directory saml 配置。我们正在遵循相同的 AWS graph api saml 设置 U
我刚刚了解了 spring security 并想使用 java hibernate 配置连接到数据库,但我发现的示例或教程很少。我通过使用 xml 配置找到了更多。我在这里使用 Spring 4.0
我们最近切换到 Java 8 以使用 java.time API(LocalDate、LocalDateTime,...)。因此,我们将 Hibernate 依赖项更新到版本 4.3.10。我们编写了
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第六篇,咱
我是 NGINX 的新手,我正在尝试对我们的 ERP 网络服务器进行负载平衡。我有 3 个网络服务器在由 websphere 提供支持的端口 80 上运行,这对我来说是一个黑盒子: * web01.e
我们想使用 gerrit 进行代码审查,但我们在 webview 中缺少一些设置。 是否可以禁止提交者审查/验证他们自己的 提交? 是否有可能两个审稿人给 +1 一个累积它 到+2,以便可以提交? 谢
配置根据运行模式应用于 AEM 实例。在多个运行模式和多个配置的情况下,AEM 如何确定要选择的配置文件?假设以下配置在 AEM 项目中可用, /apps /myproject - con
我正在使用 Neo4j 服务器。我遇到了负载相对较低的问题。但是,响应时间相当长。我认为为请求提供服务的线程数太少了。有没有办法调整为 HTTP 请求提供服务的线程池的大小。那可能吗? 最佳答案 线程
我在/etc/default/celeryd 中有以下配置 CELERYD_NODES = "worker1 worker2 worker3" CELERYD_CHDIR = "path to pro
Plone 在其页面中显示来 self 的母语(巴西葡萄牙语)的特殊字符。但是,当我使用我创建的 spt 页面时,它会显示转义序列,例如: Educa\xc3\xa7\xc3\xa3o 代替 Educ
我正在尝试开始使用 Emacs/Clojure。安装 emacs 扩展的正确方法是什么。我正在尝试安装以下插件: https://bitbucket.org/kotarak/vimclojure 我已
我有一个简单的 C 项目结构: proj/ src/ docs/ build/ tests/ lib/ 尝试编写合适的 CMake 文件。 到目前为止我的尝试:http://pas
我是一名优秀的程序员,十分优秀!