设为首页 收藏本站
查看: 738|回复: 0

Nagios安装、配置记录

[复制链接]

尚未签到

发表于 2019-1-16 12:24:12 | 显示全部楼层 |阅读模式
  本文描述了我在安装Nagios的过程中遇到的一些问题以、解决办法以及注意事项。
  Nagios是一套强大的监控报警系统,但是你不花一些时间,是绝对不可能很好地配置它的。除非你只需要监控主机的alive等简单的情况(例如ping),否则请放弃幻想,以极大的耐心去研究它吧。
  (1)默认安装情况下,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/ 目录下再修改,直接修改这些配置文件就好了。
  文章来源:http://www.codelast.com/
  (2)“Map”、“Trends”功能无法使用,错误提示为:
  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
  文章来源:http://www.codelast.com/
  (3)重新编译安装Nagios(configure、make all、make install)不用担心配置文件会丢失,因为make install只会把Nagios主程序、CGI、HTML给安装上。
  (4)如果你在define service的时候,使用了一个模板,例如:
  use    local-service         ; Name of service template to use
  那么你可以在这个service中覆盖模板里的配置。例如,模板里设置了:
  notifications_enabled           1
  你却可以在这个service中设置:
  notifications_enabled           0
  这样,对这个service来说,触发条件时也不会报警的。
  (5)报警邮件通过sendmail发不出去?请查看邮件日志文件(/var/log/maillog)的内容查找原因。当然,最好用mail试一下:
  mail -v yourmail@abc.com
  然后依次输入邮件的标题、正文以及抄送地址,回车发送!然后再去邮件日志文件里看日志,是成功了还是失败了,分析原因。
  (6)如果配置了短信发送报警信息,但是却收不到短信,我要提醒你的是:
  ①在define command的地方,command_line里写的发送报警短信的命令行中,用于发送报警短信的程序要写全路径,例如/usr/local/bin/sendsms,不要以为写一个“sendsms”就可以了,尽管你在Linux命令行下可以找到这个命令(因为它在/usr/local/bin/目录下),但是对Nagios来说,它却找不到,所以要写全路径。这个规律我是试验发现的,至于是不是普遍现象,或者是不是所有版本的Nagios都是这样,我不知道,我只是通过试验知道这样能解决问题。
  ②短信接口的70个字符限制,有时候超过了是发不出短信的!请确认你的短信接口允许的单条短信字符数限制。
  文章来源:http://www.codelast.com/
  (7)在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当然找不到这些命令了。
  修改完之后,需要重启服务:
  service xinetd restart
  (8)错误“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的过程就是这样,折腾来折腾去,不费点劲是解决不了问题的。
  (9)在Nagios中,你会看到类似于“RTA = 455.04 ms”的数据,RTA是什么呢?引用网上的话作答:Round Trip Average. The average time it took to receive a response to your ping packets.
  (10)在Nagios中,检测时间周期默认是以分钟为单位的,例如“normal_check_interval”的值为5时,代表正常检测周期为5分钟。假设你想以5秒钟检测一次,怎么办?这时候你需要修改配置文件nagios.cfg中的“interval_length”参数的值,默认值为60,代表基数是60秒,你改成1,代表基数是1秒,这时,“normal_check_interval”的值为5就表示正常检测周期为5秒了。请注意,把“interval_length”的值修改以后,所有其他和周期有关的地方你都要检查一遍,保证都被更改为了正确的数值,否则到时就全乱套了。
  (11)在Nagios中使用自定义变量很简单:无论是在host,service还是contact定义中,要添加一个自定义的变量,只需要以下划线开头就可以了,例如:_my_custom_var为一个在host定义中的自定义变量,则在其他地方,要使用这个变量的话,其宏名为_HOSTMY_CUSTOM_VAR,也就是说,Nagios在不仅将你的变量名转换成了大写,而且在前面加了一个“_HOST”。如果是service或contact中的自定义变量的话,则Nagios会分别添加“_SERVICE”或“_CONTACT”到宏名前。
  文章来源:http://www.codelast.com/
  (12)如果你在用 /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分钟报一次警啊!反正我是没想明白,或者是我对它们的含义理解有误,还需要进一步斟酌。
  (13)在被监控的服务器上安装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。
  另外再说一句,在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。
  文章来源:http://www.codelast.com/
  (14)如果你通过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
  然后根据错误记录来解决问题。
  (15)“performance data”有两个,一个是$HOSTPERFDATA$,另一个是$SERVICEPERFDATA$,当你在报警邮件中要带上performance data信息时,千万不要漏了,要不然可能看不到你想要的信息。
  (16)如果你在Nagios监控系统的web界面中点进去一个service,然后点击“Disable notifications for this service”,这就可以直接禁用该对服务的报警,不过,在web界面中禁用某服务的报警,并不会对配置文件造成影响,也就是说,你在配置文件中设置了某服务的“notifications_enabled”值为1,那么就算你在web界面中禁用了其报警,配置文件中仍然会是1。不仅如此,就算你重启了Nagios服务(service nagios restart),在web界面中禁用的报警仍然会是禁用状态,也就是说Nagios把你在web界面上的操作记录在某个地方了(不是配置文件中)。这一点要特别注意,有时候收不到报警信息,而配置文件中的报警全都打开了,这时你就要去web界面里查看各项设置了。
  (16)在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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-663996-1-1.html 上篇帖子: nagios的介绍 下篇帖子: Nagios: How to Enable check_nrpe Command Line Arguments
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表