一:安装错误
1.关闭selinux
/usr/sbin/sestatus -v
getenforce
setenforce 0
2.Error: Could not read object configuration data!
nagios 未启动
/etc/rc.d/init.d/nagios start
或
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
3.It appears as though you do not have permission to view information for any of the hosts you requested
解决:
登陆 nagios web接口的用户,需要和 /usr/local/nagios/etc/cgi.cfg 里面配置的用户匹配,没有可以手动添加,用逗号隔开
添加或修改为一致的用户
4.HTTP/1.1 403 Forbidden
运行的nagios 用户无法访问默认的apache 目录,不具备权限
赋值即可
5.监控上看到的 PENDING 状态
实属未获取到数据,等待即可
6.NRPE 参数传递不成功
因为编译的时候未带上参数
./configure --enable-command-args
同时配置nrpe.cfg
dont_blame_nrpe=1
7.CHECK_NRPE: Error - Could not complete SSL handshake.
nrpe.cfg 中未添加允许监控机访问
allowed_hosts=192.168.146.172
8. sendmail
Program mode requires special privileges, e.g., root or TrustedUser.
属主不正确
chown root.smmsp /bin/mail
chown root.smmsp /usr/sbin/sendmail.sendmail
重启sendmail
/etc/init.d/sendmail stop
/etc/init.d/sendmail start
9.sendmail 错误
can not chdir(/var/spool/clientmqueue/): Permission denied
chown -R smmsp.nagios /var/spool/clientmqueue
调整为 nagios 允许用户访问
10.syntax illegal for recipient addresses
undisclosed-recipients:
默认配置中无相关配置
修改mail 配置文件
#sendmail.cf:#O NoRecipientAction=none
submit.cf:#O NoRecipientAction=none
改成:add-to
# action to take if there are no recipients in the message
#O NoRecipientAction=add-to-undisclosed
如果邮件在标题行中没有收件人的信息,NoRecipientAction选项指示sendmail采取的措施。
? add-appanently-to:添加一个“Appanently-To”标题。
? add-bcc:添加一个空“BCC”标题行以便遵循RFC 821规范。
? add-to:添加一个“To”标题,以及从邮件“信封”获得的收件人。
? add-to-undisclosed:添加一个空“To:undisclosed-recipients:;”标题。
? none:不修改邮件内容便发送。
11.It appears as though you do not have permission to view information you requested........
方法1:
改cgi.cfg文件里的一个参数 use_authentication=1 将1改为0,重启nagios即可
方法2:
vi /usr/local/nagios/etc/cgi.cfg
nagiosadmin是我们用来登录nagios的管理员,而cgi.cfg就是用来验证管理员身份的!
如果你生成的管理员用户不是nagiosadmin,验证的时候就会失败
将以下的几项中的nagiosadmin改为你实际的用户名即可,其实也可以在后面加上你的用户名,与前面用逗号隔开
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
12.CHECK_NRPE: Error - Could not complete SSL handshake.
监控机IP无权限访问,需要添加allows_hosts
13.NRPE: Unable to read output
自定义脚本无执行权限
chmod 777 file.sh
二:增加windows支持
增加windows 监控
1.NSClient - ERROR: Invalid password.
vi commands.cfg
找到 check_nt 修改密码
# 'check_nt' command definition
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ -s redhat
}
2.修改nsclient++配置文件增加密码项:
C:\Program Files\NSClient++\ nsclient.txt
; PASSWORD - Password used to authenticate againast server
password = redhat
重启服务
检测:
./check_nt -H 10.0.0.52 -p 12489 -s redhat -v UPTIME
q:
CRITICAL - Socket timeout after 10 seconds
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 30 # 加上一个 -t 30 指定时间为 30 秒
}
重启nagios服务
windows 客户端安装:
1.双击
NSCP-0.4.3.77-x64
2.下一步
选typical
3选参数
4.填监控端IP 及密码
4.安装
5.确定服务启动正常
services.msc
6.确认防火墙正常
7.检测是否通讯正常
./check_nt -H 10.0.0.56 -p 12489 -s redhat -v UPTIME
进程检测
./check_nt -H 10.0.0.52 -p 12489 -s redhat -v PROCSTATE -l Explorer.exe
三:其他场景技巧
#网络流量监控
./check_traffic.sh -V 2c -C public -H 10.0.0.100 -I 2 -w 1200,1500 -c 1700,1800 -B
#nagios警告级别分离
nagios警告级别分离,可以定义不同的联系人,对不同的联系人定义不同的警告级别即可实现,其做法如下:
a、在contacts.cfg配置文件定义不同联系人
1、定义名为leader的联系人
vi /usr/local/nagios/etc/objects/contacts.cfg 添加如下内容:
define contact{
contact_name leader #联系人的名称
alias leader relation #联系人的别名
service_notification_period 24x7 #联系人接收服务警告邮件时段
host_notification_period 24x7 #联系人接收主机警告邮件时段
service_notification_options c,r #联系人接收服务警告级别,c-(CRITICAL) r-(RECOVERY)
host_notification_options d,r #联系人接收主机警告级别,d-(DOWN) r-(RECOVERY)
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email fanjingjian@hk515.com , mawei@hk515.com #联系人邮箱
}
2、定义名为nagiosadmin的联系人
vi /usr/local/nagios/etc/objects/contacts.cfg 添加如下内容:
define contact{
contact_name nagiosadmin #联系人名
use generic-contact #调用模板中的通用联系人
alias Nagios Admin #别名
email readom@189.cn,401596186@qq.com #值班手机
}
3、定义名为:admins的联系人组
vi /usr/local/nagios/etc/objects/contacts.cfg 添加如下内容:
define contactgroup{
contactgroup_name admins #组名
alias Nagios Administrators #组别名
members nagiosadmin,tyyd #组成员
}
b、修改templates.cfg中主机和服务告警联系人组为admins (默认即是)
c、通过以上修改 tyyd只会收到服务警告类型为CRITICAL,RECOVERY以及主机警告类型为DOWN,RECOVERY的邮件,联系人nagiosadmin会收到全部的邮件
#Nagios邮件报警的配置
安装sendmail 组件
首先要确保sendmail 相关组件的完整安装,我们可以使用如下的命令来完成sendmail 的安装:
yum install -y sendmail*
然后重新启动sendmail服务:
service sendmail restart
然后发送测试邮件,验证sendmail的可用性:
echo "Hello World" | sendmail shiye.meng@cnlaunch.com
邮件报警的配置
在上面我们已经简单配置过了/usr/local/nagios/etc/objects/contacts.cfg 文件,Nagios 会将报警邮件发送到配置文件里的E-mail 地址。
配置发生告警频率
template.cfg 文件
services 节
notification_interval 60 ; Re-notify about service problems every hour
默认为60分钟,可调整该参数
#NRPE 添加自定义命令
监控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,那么需要手动重启;
在监控机(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。
借助插件进行的每一次有效的Nagios检查(Nagios check)都会生成一个数字表示的退出状态。可能的状态有:
0--各方面都正常,检查成功完成。
1--资源处于警告状态。某个地方不太妙。
2--资源处于临界状态。原因可能是主机宕机或服务未运行。
3--未知状态,这未必表明就有问题,而是表明检查没有给出一个清楚明确的状态。
自定义命令:
脚本:
如检查目录下的文件数量
sh check_file_num.sh -w 10 -c 62
WARING File num 61
vi check_file_num.sh
#!/bin/bash
c_path="/usr/local/nagios/libexec"
f_num="`ls $c_path|wc -l`"
w_arg="$2"
c_arg="$4"
msg=""
if [[ $# -lt 2 ]]
then
echo "Usage `basename $0 ` -w \$arg -c \$arg"
exit 1
fi
if [[ $f_num -ge $w_arg && $f_num -lt $c_arg ]]
then
msg="WARING"
fi
if [[ $f_num -ge $c_arg ]]
then
msg="Critical"
fi
#show msg
echo "$msg Current File $f_num"
exit
模式1:固定数字
注册到 nrpe.cfg 中
#command[check_file_num]=/usr/local/nagios/libexec/check_file_num.sh -w $ARG1$ -c $ARG2$
command[check_file_num1]=/usr/local/nagios/libexec/check_file_num.sh -w 20 -c 40
重启nrpe (KILL 进程)
(如果不需要更换命令名字,则不需要注册command.cfg 和services.cfg)
注册到command.cfg 文件中
#check_file
define command{
command_name check_file_num
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ $ARG2$
}
添加services.cfg 中,使之生效
define service{
use local-service
host_name nagios-admin,nagios-client
service_description Current File Num
check_command check_file_num!check_file_num
}
[不变更命令名]
添加services.cfg 中,使之生效
define service{
use local-service
host_name nagios-admin,nagios-client
service_description Current File Num
check_command check_nrpe!check_file_num
}
监控机上
重启nagios 服务
/etc/init.d/nagios reload
检测脚本是否执行超过
./check_nrpe -H 192.168.146.170 -c check_file_num1
./check_nrpe -H 10.0.0.64 -c check_mysql_slave
模式2 带参数
nrpe 安装中带 --enable-command-args 参数
nrpe.cfg 中添加
dont_blame_nrpe=1 才能接受用户传递参数
command[check_file_num]=/usr/local/nagios/libexec/check_file_num.sh $ARG1$
监控机上
command.cfg 【改名】
#check_file
define command{
command_name check_file_num
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}
#services.cfg 文件
define service{
use local-service
host_name nagios-client
service_description Current File Num
check_command check_file_num!check_file_num!"-w 40 -c 70"
}
./check_nrpe -H 192.168.146.170 -c check_file_num -a 40 80
KILL 进程并重启nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
重启监控机上的nagios服务
/etc/init.d/nagios reload
#############固定端口检测
1.agent 配置修改
nrpe.cfg
command[check_port_80]=/usr/local/nagios/libexec/check_port 80
2.重启nrpe 客户端
kill -9 nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
3.添加脚本
vi /usr/local/nagios/libexec/check_port
#!/bin/bash
port="$1"
tips="`netstat -anpl|grep -iE \":${1}\b\"|grep LISTEN|wc -l`"
if [ $tips -gt 0 ]
then
echo 1
else
echo 0
fi
4.监控机服务添加
define service{
use hk-service,service-pnp
host_name haproxy_136
service_description http_80
check_command check_nrpe!check_port_80
}
5.重载nagios服务
/etc/init.d/nagios reload
自定义Nagios NRPE脚本EXIT退出值和nagios状态都应关系:
状态 | EXIT退出值 | 输出 | 例子 |
OK | 0 | echo "OK - it's ok." | echo "OK - it's ok." exit 0 |
WARNING | 1 | echo "WARNING - it's warning." | echo "WARNING - it's warning." exit 1 |
CRITICAL | 2 | echo "CRITICAL - it's critical." | echo "CRITICAL - it's critical." exit 2 |
UNKNOWN | 3 | echo "UNKNOWN - it's unknown." | echo "UNKNOWN - it's unknown." exit 3 |
错误的例子:
shell脚本中echo和退出值:
echo "OK - it's ok."
exit 1
此时,Nagios会显示:
这条服务对应的状态是”WARNING“,但是输出的信息是”OK - it's ok."
本文暂时没有评论,来添加一个吧(●'◡'●)