Rootop 服务器运维与web架构

2014-05-11
发表者 Venus
暂无评论

HTTP WARNING: HTTP/1.1 403 Forbidden – 5237 bytes in 0.001 second response time

HTTP WARNING: HTTP/1.1 403 Forbidden – 5237 bytes in 0.001 second response time

nagios监控了一台服务器的web服务,老提示403错误,后来用火狐的firebug插件才看出来默认apache的欢迎页返回的状态码为403,一直以为欢迎页也属于200状态码。


解决方法:
在/var/www/html下创建个index.html文件即可。
然后过会儿HTTP监控就正常了,或者可以直接重定制该服务的计划检测时间,快速恢复。

2014-05-10
发表者 Venus
暂无评论

opendaemonsocket: daemon MTA: cannot bind: Address already in use

启动nagios、启动sendmail测试nagios发信,通过监控maillog日志发现始终没有发信信息,并且得到错误提示:
sendmail[28180]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use
sendmail[28180]: daemon MTA: problem creating SMTP socket
查资料说是和postfix冲突,查看postfix服务状态,果然postfix启动了,果断停掉。重新启动一下sendmail。重新测试nagios检测服务停止发信功能。正常···

2014-05-09
发表者 Venus
暂无评论

Error: Could not open command file ‘/usr/local/nagios/var/rw/nagios.cmd’ for update!

Error: Could not open command file ‘/usr/local/nagios/var/rw/nagios.cmd’ for update!

出现这个问题,一般是apache服务运行的账户对nagios.cmd没有权限。所以导致报错。
常见的解决办法是直接修改nagios.cmd的文件权限,直接改为777,问题即可解决。
但是在下次重新启动nagios服务时,此文件权限会又会变为原先的权限。
prw-rw—-. 1 nagios nagios 0 May 9 23:13 nagios.cmd

解决办法1:
修改apache的运行账户为nagios账户。这个nagios账户就是运行nagios服务的账户,一般我们会用”nagios”用户来运行。
但是这样可能会对apache有某种程度影响。如果是本机单纯跑nagios监控那就无所谓了。
解决办法2:
将naigos的运行账户改为apache的运行账户。
上面两种方法总结一句话就是apache和nagios的运行账户必须是同一个

由于实际环境限制,它俩又不能用同一个账户,我采用下面方法。
解决方法3:
在nagios启动脚本上下手。
[root@localhost ~]# vi /etc/rc.d/init.d/nagios #截取其中一部分

case "$1" in

 start)
 echo -n "Starting nagios:"
 $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
 if [ $? -eq 0 ]; then
 su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
 rm -f $NagiosCommandFile
 touch $NagiosRunFile
 chown $NagiosUser:$NagiosGroup $NagiosRunFile
 $NagiosBin -d $NagiosCfgFile
 if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi
 echo " done."
 chmod 777 /usr/local/nagios/var/rw/nagios.cmd
 exit 0
 else
 echo "CONFIG ERROR! Start aborted. Check your Nagios configuration."
 exit 1
 fi
 ;;

在 echo ” done.”(13行)下面添加一句chmod 777 /usr/local/nagios/var/rw/nagios.cmd
目的就是为了启动nagios的时候顺便执行一下修改权限。
另外还需要修改restart)部分 (重启nagios),这里第三种方式我认为最方便。
这样一来支持执行 service nagios start/restart 时就可以自动修改文件权限。

2014-05-09
发表者 Venus
暂无评论

ssh端口修改后nagios监控ssh服务

ssh端口修改后nagios监控ssh服务

nagios默认监控ssh的端口是22,这个是无疑的,为了安全我们可能会修改ssh的默认端口,这样一样nagios就无法正常监控了。
现在就需要修改监控主机的配置文件。
我们可能不了解nagios插件的参数,不过可以通过如下方式查看:
[root@localhost ~]# cd /usr/local/nagios/libexec/ #进入nagios插件目录

[root@localhost libexec]# ./check_ssh #直接执行二进制文件,有的是shell脚本
check_ssh: Could not parse arguments
Usage:
check_ssh [-4|-6] [-t <timeout>] [-r <remote version>] [-p <port>] <host>
[root@localhost libexec]# ./check_http
check_http: Could not parse arguments
Usage:
 check_http -H <vhost> | -I <IP-address> [-u <uri>] [-p <port>]
 [-J <client certificate file>] [-K <private key>]
 [-w <warn time>] [-c <critical time>] [-t <timeout>] [-L] [-E] [-a auth]
 [-b proxy_auth] [-f <ok|warning|critcal|follow|sticky|stickyport>]
 [-e <expect>] [-d string] [-s string] [-l] [-r <regex> | -R <case-insensitive regex>]
 [-P string] [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>]
 [-A string] [-k string] [-S <version>] [--sni] [-C <warn_age>[,<crit_age>]]
 [-T <content-type>] [-j method]

根据提示可以看到插件支持的参数,那么这里ssh的就需要-p指定端口号。
比如我现在监控本机,直接修改localhost.cfg

define service{
 use local-service ; Name of service template to use
 host_name localhost
 service_description SSH
 check_command check_ssh! -p 1122
 notifications_enabled 0
 }

nagios下,命令与参数之间通过叹号!来分开。

define service{
 use local-service ; Name of service template to use
 host_name localhost
 service_description HTTP
 check_command check_http! -p 8080 #也可以用check_tcp!8080这种方法
 notifications_enabled 0
 }

2014-05-09
发表者 Venus
暂无评论

Error: Could not stat() command file ‘/usr/local/nagios/var/rw/nagios.cmd’!

外部命令文件无法stat()。
外部文件不存在,或Nagios未运行、Nagios不支持外部命令。
提交命令时出错

在服务中启用服务通知 Enable notifications for this service 提交的时候报错。
Error: Could not stat() command file ‘/usr/local/nagios/var/rw/nagios.cmd’!
The external command file may be missing, Nagios may not be running, and/or Nagios may not be checking external commands.
An error occurred while attempting to commit your command for processing.

根据错误提示到/usr/local/nagios/var/rw下发现没有nagios.cmd文件。不知道为啥···

解决办法:
[root@localhost ~]# cd /usr/local/nagios/var/rw
[root@localhost rw]# mkfifo nagios.cmd
[root@localhost rw]# chmod o+w nagios.cmd
[root@localhost rw]# chmod g+w nagios.cmd
[root@localhost rw]# ll nagios.cmd
prw-rw—- 1 nagios nagios 0 May 9 09:08 nagios.cmd
[root@localhost ~]# service nagios restart

FIFO是一种特殊的文件类型,它允许独立的进程通讯.
一个进程打开FIFO文件进行写操作,而另一个进程对之进行读操作, 然后数据便可以如同在shell或者其它地方常见的的匿名管道一样流线执行。