Nagios常见问题记录(1)

无意间看到这边文章, 真TM太有用了,相见恨晚的感觉。。。不知哪位大神写的

原文地址:http://www.codelast.com/?p=1037

一、主配置文件nagios.cfg

默认安装情况下,Nagios的主配置文件为:/usr/local/nagios/etc/nagios.cfg

打开这个文件,可以清楚地看到它指定了其他的配置文件:

cfg_file=/usr/local/nagios/etc/objects/commands.cfg

cfg_file=/usr/local/nagios/etc/objects/contacts.cfg

cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg

cfg_file=/usr/local/nagios/etc/objects/templates.cfg

所以你要注意了,不要以为“objects”目录下的只是示例文件而已,它们默认被当作了 实际上使用的配置文件,你不需要麻烦地拷贝一份出来到 /usr/local/nagios/etc/ 目录下再修改,直接修改这些配置文件就好了。

如果想创建其他配置文件,则必须在nagios.cfg中引入了,才会生效。

二、Map, Threads 功能无法使用

The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.

The requested URL /nagios/cgi-bin/trends.cgi was not found on this server.

是因为编译Nagios的时候没有编译出相应的CGI文件(默认安装时,在 /usr/local/nagios/sbin/ 目录下)。编译依赖项:

libgd, libgd-devel, libpng, libpng-devel, libjpeg, libjpeg-devel, zlib, zlib-devel

查询安装情况:

rpm -qa | grep zlib

其中gd的两个包名分别类似于:

gd-2.0.33-9.4.el5_1.1.x86_64.rpm

gd-devel-2.0.33-9.4.el5_1.1.x86_64.rpm

安装相应的RPM包后,重新编译安装Nagios:

./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include

make all

make install

重新编译安装Nagios(configure、make all、make install)不用担心配置文件会丢失,因为make install只会把Nagios主程序、CGI、HTML给安装上。

三、继承的特性

如果你在define service的时候,使用了一个模板,例如:

use    local-service         ; Name of service template to use

那么你可以在这个service中覆盖模板里的配置。例如,模板里设置了:

notifications_enabled           1

你却可以在这个service中设置:

notifications_enabled           0

这样,对这个service来说,触发条件时也不会报警的。

也就是说:创建的自对象如果定义了与模板相同的指令,会进行覆盖,这就是继承的精髓

四、无法发送邮件报警

报警邮件通过sendmail发不出去?请查看邮件日志文件(/var/log/maillog)的内容查找原因。当然,最好用mail手动试一下:

mail -v [email protected]

然后依次输入邮件的标题、正文以及抄送地址,回车发送!然后再去邮件日志文件里看日志,是成功了还是失败了,分析原因。

还有一种原因就是,我们发送的邮件被被拦截了。比如说QQ邮箱,需要设置白名单,否则邮件会被拦截。

五、短信报警

如果已经正确配置了短信发送报警信息,但是却收不到短信,我要提醒你的是:

①在define command的地方,command_line里写的发送报警短信的命令行中,用于发送报警短信的程序要写全路径,例如/usr/local/bin/sendsms,不要以为写一个“sendsms”就可以了,尽管你在Linux命令行下可以找到这个命令(因为它在/usr/local/bin/目录下),但是对Nagios来说,它却找不到,所以要写全路径。这个规律我是试验发现的,至于是不是普遍现象,或者是不是所有版本的Nagios都是这样,我不知道,我只是通过试验知道这样能解决问题。

②短信接口的70个字符限制,有时候超过了是发不出短信的!请确认你的短信接口允许的单条短信字符数限制。

六、错误:NRPE: Command ‘check_disk‘ not defined

在montoring server上执行命令:

/usr/local/nagios/libexec/check_nrpe -H 192.168.17.2 -c check_disk

提示错误:NRPE: Command ‘check_disk‘ not defined

这是因为没有配置好两端的NRPE和Nagios,使得monitoring server不能远程执行check_disk命令。

在被监控端,需要修改nrpe.cfg文件:

dont_blame_nrpe=1

这将允许命令带参数执行。

另外,在nrpe.cfg文件的最后,原来有几行注释掉的内容:

#command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$

#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$

#command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$

#command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

把它们取消注释。处于注释状态的话,NRPE当然找不到这些命令了。

如果nrpe服务是通过xinetd管理的话,修改完之后,需要重启xinetd服务:

service xinetd restart

如果是以standard alone方式管理的,也需要重启

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

七、错误:CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.

这篇文章详细地讲解了解决办法:Nagios: How to Enable check_nrpe Command Line Arguments

看完之后你可能很后悔你没有早看到这篇文章吧?没错,和我一样,要重新编译安装NRPE,不过配置Nagios、NRPE的过程就是这样,折腾来折腾去,不费点劲是解决不了问题的。

八、Nagios 默认的时间单位

在Nagios中,检测时间周期默认是以分钟为单位的,例如“normal_check_interval”的值为5时,代表正常检测周期为5分钟。假设你想以5秒钟检测一次,怎么办?这时候你需要修改配置文件nagios.cfg中的“interval_length”参数的值,默认值为60,代表基数是60秒,你改成1,代表基数是1秒,这时,“normal_check_interval”的值为5就表示正常检测周期为5秒了。请注意,把“interval_length”的值修改以后,所有其他和周期有关的地方你都要检查一遍,保证都被更改为了正确的数值,否则到时就全乱套了。

九、被监控端的配置文件

在被监控的服务器上安装NRPE后,在配置文件 /etc/xinetd.d/nrpe 中,可以设置允许哪些IP地址访问NRPE daemon,例如:

only_from       = 127.0.0.1

表示只有本机可以访问。为了能让多台远程Nagios可以监控此台服务器的状况,可以在此处添加多个IP地址,中间以空格隔开,例如

only_from       = 192.168.1.188 58.30.200.199

表示允许192.168.1.188和58.30.200.199这两个IP访问本机上的NRPE daemon。

保存之后,要重启服务:

service xinetd restart

另外再说一句,在NRPE的配置文件 /usr/local/nagios/etc/nrpe.cfg 中,有一个“allowed_hosts=”的选项,可以设置允许哪些IP地址访问,但是要注意了,文件里面的注释写得清清楚楚:

“NOTE: This option is ignored if NRPE is running under either inetd or xinetd”

也就是说,如果NRPE是运行在在 inetd 或 xinetd 下运行的话,这个选项就被忽略了!所以,我个人觉得最好是在 /etc/xinetd.d/nrpe 中设置允许访问的IP。

如果通过“allowd_hosts=”选项来设置, 多个IP之间用逗号分隔,而且不能有空格存在。

十、nrpe测试错误

如果你通过NRPE检测一个远程服务,可以先在Nagios主机上通过以下命令执行一下:

/usr/local/nagios/libexec/check_nrpe -H 远程主机IP -c 远程检测命令 -a 命令行参数

如果返回的结果是这样的:

Received 0 bytes from daemon. Check the remote server logs for error messages.

那么你就要按这个提示,到被监控的主机上查看日志,看看是出了什么错:

tail -20 /var/log/messages

然后根据错误记录来解决问题。

十一、禁用报警

如果你在Nagios监控系统的web界面中点进去一个service,然后点击“Disable notifications for this service”,这就可以直接禁用该对服务的报警,不过,在web界面中禁用某服务的报警,并不会对配置文件造成影响,也就是说,你在配置文件中设置了某服务的“notifications_enabled”值为1,那么就算你在web界面中禁用了其报警,配置文件中仍然会是1。不仅如此,就算你重启了Nagios服务(service nagios restart),在web界面中禁用的报警仍然会是禁用状态,也就是说Nagios把你在web界面上的操作记录在某个地方了(不是配置文件中)。这一点要特别注意,有时候收不到报警信息,而配置文件中的报警全都打开了,这时你就要去web界面里查看各项设置了。

十二、超时

在commnads.cfg中定义的一个远程执行的命令(通过NRPE来执行),如果用 -t 参数指定了命令执行的超时时间(例如-t 500指定了超时时间为500秒),但是还是经常会收到错误报警:NRPE: Command timed out after 60 seconds。

这是怎么回事呢?在NRPE的文档中写得很清楚:

The check_nrpe plugin returns "NRPE: Command timed out after x seconds"

This error indicates that the command that was run by the NRPE daemon did not finish executing within the specified time.  You can increase the timeout for commands by editing the NRPE configuration file and changing the value of the command_timeout variable.  If you‘re running the NRPE daemon as a standalone daemon (and not under inetd or xinetd), you‘ll need to restart it in order for the new timeout to be recognized.

可见,要修改这个超时时间,在Nagios命令定义文件commands.cfg中通过 -t 参数指定是无效的,因为 -t 参数指定的是连接的超时时间,而不是NRPE的命令执行超时时间。必须要修改NRPE的配置文件nrpe.cfg中的“command_timeout”参数值(默认值为60秒)才有用,如果你要修改为5分钟,应该这样改:

command_timeout=300

十三、NSCLient++

如果要监控Widows的服务器,需要在Windows服务器上安装NSClient++这个软件,详细的设置可看【这个】链接。在这里我简要地描述一下:安装NSClient++的过程中,需要设置允许访问的IP地址,这个地址就是Nagios监控服务器的地址;然后还需要设置一个密码,这个密码就是Nagios监控服务器访问这台Windows上的NSClient时要提供的密码(如果没有密码就能取数据,那太不安全了)。安装好之后,启动NSClient的服务,并且在服务属性设置中勾上“Allow service to interact with desktop”的选项,然后Windows上的设置就算完成了,然后就到设置Nagios服务器了:

在commands.cfg文件中,定义检测Windows服务器的命令:

define command{

command_name    check_nt

command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s $ARG1$ -v $ARG2$ $ARG3$

}

注意,-s 参数表示指定访问NSClient的密码,就是上面所说的、在NSClient安装过程中设置的那个密码。

然后在定义service的时候,像这样写:

define service{

use                             local-service

host_name                       myWindowsServer

service_description             Windows Disk Space

check_command                   check_nt!myPasswd!USEDDISKSPACE!-l c -w 80 -c 90

}

其中,“myPasswd”是上面所说的那个密码,你需要写你设置的密码;USEDDISKSPACE表示检测的是磁盘空间;另外,看到上面的check_command中提供的最后一个参数了吗:-l c -w 80 -c 90

其中第一个c表示检测的是C盘,-w表示的是warning值,-c表示的是critical值。

十四、参数中的特殊字符

假设你自己编写了被监控服务器上的一个插件,然后你要在Nagios服务器上通过NRPE调用它,那么你可以向它传入参数,但是在默认情况下,如果你传的参数中含有以下“非法”字符(illegal metachars),则会出错:

| ` & > < ‘ " \ [ ] { }

禁止在参数中使用这些字符是为了防止恶意的客户利用它们来做“坏事”。这些字符的定义在NRPE的实现文件nrpe.c中,你可以找到:

#define NASTY_METACHARS         "|`&><‘\"\$$!]{}"

以及出错提示的代码:

/* make sure request doesn‘t contain nasties */

if(contains_nasty_metachars(pkt->buffer)==TRUE)

{

syslog(LOG_ERR,"Error: Request contained illegal metachars!");

return ERROR;

}

显然,通过修改NRPE的源代码,重新编译并安装它,可以绕开这个限制。但是这可能并不是一个好主意,我们还是尽量通过修改我们自己编写的监测插件,不要在输入参数中使用那些字符为好。

十五、修改Nagios的 历史记录/事件记录/日志 的保留时间:

在Nagios的web界面中,可以通过查看“Event Log”来得知历史事件的情况,但Nagios默认只保留当天的记录(历史记录都被存档保存到其他地方了),怎么修改这个值呢?例如我想改成保留当月的记录,那么就要修改Nagios安装目录下的 etc目录下的nagios.cfg文件,将 log_rotation_method 参数值改为m(默认为d),这表示Nagios在每个月最后一天的零点会进行日志文件的“转换”(rotate)工作,将旧的文件存档保存起来,新文件从空的开始重新记录。

十六、“CHECK_NRPE: Error - Could not complete SSL handshake” 错误:

出现这种问题,最好的方式 就是查看 被监控端的NRPE的日志文件 log。

以及系统的日志文件: /var/log/messages

然后 google。

此问题大概有两个原因:

A)/etc/xinetd.d/nrpe 文件中要添加允许访问的服务器的IP地址,你没有添加。在“only_from = ”这一行添加,多个IP地址用空格隔开,例如:

only_from       = 192.168.56.200 192.168.6.8

然后重启服务:

service xinetd restart

如果此时你在Nagios服务器端试验:

./check_nrpe -H 192.168.77.2

返回:

NRPE v2.12

则说明成功了。

B)是否已经安装openssl, openssl_devel包? 如果安装了还是有问题, 那么请检查客户端安装的OpenSSL库与Nagios服务器端不匹配,导致此错误。我遇到的不是此错误,所以也无法给出更详细的说明,但是在NRPE的文档中看到是会有这种情况的。

C)配置文件方面

(1)如果是standard alone方式启动: 那么检查 /usr/local/nagios/etc/nrpe.cfg 此配置文件是否配置正确,多个IP地址逗号隔开,且要注意空格:allowed_host=127.0.0.1,  192.168.0.1 这是不对的,必须是allowed_host=127.0.0.1,192.168.0.1   逗号之后不能有空格;

(2)如果是通过xinetd方式管理, 检查是否配置里限制了,在 /etc/xinetd.d/nrpe 文件中要添加允许访问的服务器的IP地址,在 “only_from = ” 这一行添加, 多个IP地址用空格隔开,例如:only_from       = 192.168.0.8 192.168.0.88

被控端:
vi /etc/xinetd.d/nrpe
only_from 增加主控IP
vi /usr/local/nagios/etc/nrpe.cfg
allowed_hosts 增加主控IP
service xinetd restart
主控端:
/usr/local/nagios/libexec/check_nrpe -H 被监控端IP地址       测试是否连接成功

然后重启服务:

service xinetd restart

如果此时你在Nagios服务器端试验:

./check_nrpe -H 192.168.77.2

返回:NRPE v2.12则说明成功了。

(21)错误:Warning: The check of host ‘XXX‘ looks like it was orphaned (results never came back). I‘m scheduling an immediate check of the host...

在Nagios的web界面的“Event Log”中看到无数条这种类型的记录,产生原因未知,但是看到进程中有相当多与Nagios相关的进程,于是编写以下的脚本,将它们全部杀掉:

#!/bin/bash

for PID in `ps -ef | grep -v grep | grep nagios | awk ‘{print $2}‘`

do

echo "PID : $PID"

kill -9 $PID

done

然后再重启Nagios服务:

service nagios restart

就不再看到产生那些错误提示了。

(15)“performance data”有两个,一个是$HOSTPERFDATA$,另一个是$SERVICEPERFDATA$,当你在报警邮件中要带上performance data信息时,千万不要漏了,要不然可能看不到你想要的信息。

在Nagios中使用自定义变量:

很简单:无论是在host,service还是contact定义中,要添加一个自定义的变量,只需要以下划线开头就可以了,例如:_my_custom_var为一个在host定义中的自定义变量,则在其他地方,要使用这个变量的话,其宏名为_HOSTMY_CUSTOM_VAR,也就是说,Nagios在不仅将你的变量名转换成了大写,而且在前面加了一个“_HOST”。如果是service或contact中的自定义变量的话,则Nagios会分别添加“_SERVICE”或“_CONTACT”到宏名前。

如果你在用 /usr/local/nagios/bin/nagios -v nagios.cfg 命令检测你所编写的Nagios配置文件的正确性的时候,得到了以下警告提示:

Warning: Service ‘XXX‘ on host ‘XXX‘  has a notification interval less than its check interval!  Notifications are only re-sent after checks are made, so the effective notification interval will be that of the check interval.

那么很明显,就是你设置的某项service中的 notification_interval 值比 normal_check_interval 值大导致的了。normal_check_interval 是正常的检测周期,例如10分钟检测一次,20分钟检测一次这样的周期,而 notification_interval 看网上的很多文章,说它是发生故障之后的报警周期,例如该值设置成30分钟就表示发生故障之后每30分钟会报一次警。但是 notification_interval 为什么不能比 normal_check_interval 值要小呢?我完全可以让某个service一小时才检测一次,但是发生故障之后每1分钟报一次警啊!反正我是没想明白,或者是我对它们的含义理解有误,还需要进一步斟酌。

在Nagios中,你会看到类似于“RTA = 455.04 ms”的数据,RTA是什么呢?引用网上的话作答:Round Trip Average. The average time it took to receive a response to your ping packets.

Nagios常见问题记录(1)

时间: 2024-08-06 11:32:14

Nagios常见问题记录(1)的相关文章

Nagios常见问题记录(2)

1.时间同步 安装Nagios后,有3个检查时间同步的插件,根据不同的检测目标,使用不同的插件: check_ntp:已过时,最好不要再使用: check_ntp_peer:用于检查ntp服务器的健康状况. check_ntp_time:用于检查指定的服务器与ntp服务器之间的时间差. 2.如何监控LVS的状态 如果要监测LVS(Linux Virtual Server)服务的状态是否正常,有这样一个插件可用:Nagios-Plugin-LVS.先说说下载这个插件:你需要先安装git软件,然后用

ecshop 常见问题记录

今天在研究ecshop的时候遇到几个问题,现记录在下: 问题一: 1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically in D:\X\www\ecshop\install\includes\lib_installer.php on line 31 解决方法:找到install/includes/lib_installer.php中的第31行   return c

CentOS 7 下nagios搭建记录

跟随 园子的文章搭建 http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html 1.遇 nagios插件地址迁移错误,记录解决. 2.php改安装为 5.6.26版本,记录 -------------------------------------------------------------------------------------------------------------------- 五.Nagios服务端安装

KETTLE常见问题记录第一篇【安装,资源库,数据库】

在群里经常会遇到很多人问问题,大部分人的问题都大同小异:在这里把自己和群里同学们遇到过,自己手痒去验证过的问题做一个集中记录,希望可帮助一些PDI入门的同学们.也可以见证一下前人踩过的无数坑~ 另外,特别推荐一本kettle入门值得看的书<解决方案:使用PDI构建开源ETL解决方案>,有条件的当当可买,没条件的电子书很容易获取,中文翻译版的易懂,有别的提高的也可以直接去看英文版.就这本: 安装相关 1.可视化界面spoon.bat打不开,JVM提示不能正常启动 1)检查一下环境变量的配置 2)

帝国CMS常见问题记录

1.第一次安装,为什么找不到"增加信息"的地方?因为你未增加栏目,请先增加栏目,然后再增加信息(终极栏目下方可增加信息). 2.为什么信息管理的"信息栏目"列表不变?缓存问题,解决方法如下两种:1."系统设置"->"后台数据更新"->"删除缓存文件"即可解决2.手工删除文件方法:删除"e/data/fc/"目录里所有文件即可解决 3.为什么提示"Fatal error: Unable to read *** bytes"?请按"二进制"上传文件即可.(f

mysql常见问题记录

下面是常见安装插件会出现的数据库错误信息提示: CODE:Duplicate column name 'allowrank' 升级数据偶尔这样吧,表示这个表已经存在.但是如果是安装的话不影响下面的步骤.插件编写过程出现这个问题,就换个表名吧. CODE:Error: Duplicate entry 'aa2HV2' for key 1 Errno.: 1062 一般是键值被重复输入了,导致的重复错误,可以重新建表来解决这个问题. CODE:Error: Unknown system variab

Win10常见问题记录

基本信息 记录我在使用win10过程中遇到的一些问题 我所使用的两个win10系统 Win10 企业版 1607(家里电脑) Win10 专业版 1806(公司电脑) win10 开启Sets 请问您在开始-设置-系统-多任务中是否看到Sets的相关设置. 如果没有请您尝试将时区和地区设置成美国后查看有没有相关设置. 依旧没有的话,可能是由于预览版的不稳定导致的,很抱歉给您带来的不便. 应用商店 windows应用商店的文件目录:C:\Windows\SoftwareDistribution 如

Python_pep8常见问题记录

1.不在同一句import中引用多个库 # 正确姿势: import os import sys # 错误姿势 import os,sys 2.代码长度约束 一行列数:PEP8 规定最大为79列,如果拼接url很容易超限 一个函数:不可以超过30行:直观来讲就是完整显示一个函数一个屏幕就够了,不需要上下拖动 一个类:不要超过200行代码,不要超过10个方法 一个模块:不要超过500行 3.常见格式问题 1)W292 no newline at end of file 处理:在代码末尾加一行回车就

Wamp常见问题记录

操作系统:64bit Windows 10.0.10586 基本环境:Wamp Version 2.5 1.wamp无法启动(桌面图标黄色) 打开 任务管理器--服务--查看wampapache64和wampmysqld64是否正在运行 如停止运行,打开服务选择启动 如无法启动,打开cmd查看端口占用 netstat -ano | findstr 8088 tasklist | findstr 2104 taskkill /pid 2104 2.修改apache进程启用端口 打开 wamp安装目