Nagios 未向我的服务发送通知。我在 nagios localhost 中有两个服务,分别称为 PING 和 STATUS。
PING 服务使用 ping 命令检查主机可用性,STATUS 服务从远程机器获取 SNMP 陷阱。
有时我会收到 PING 服务的电子邮件,但 STATUS 服务却收不到任何邮件。PING 服务也不总是发送邮件。以下是我的所有配置文件。
本地主机配置文件
define host{
use linux-server
host_name TESTHOST
alias snmp_agent
address 10.10.62.5
}
define service{
use local-service
host_name TESTHOST
service_description PING
check_command mailtest
notifications_enabled 1
}
define service{
host_name TESTHOST
service_description STATUS
is_volatile 1
check_freshness 1
check_command cagent!5
max_check_attempts 4
normal_check_interval 1
retry_check_interval 1
active_checks_enabled 0
passive_checks_enabled 1
check_period 24x7
notification_interval 20
notification_period 24x7
notification_options w,u,c
notifications_enabled 1
flap_detection_enabled 0
}
联系人配置文件
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email [email protected]
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}
我使用 ssmtp 邮件服务器发送邮件。配置文件如下
ssmtp配置文件
[email protected]
mailhub=smtp.gmail.com:587
rewriteDomain=gmail.com
hostname=sujin
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN
[email protected]
AuthPass=mailpassword
FromLineOverride=YES
答案1
您收到 PING 电子邮件是因为您似乎已将电子邮件通知命令 ( mailtest
) 用作check_command
:
define service{
use local-service
host_name TESTHOST
service_description PING
check_command mailtest ; <<<
notifications_enabled 1
}
for通常是一个命令check_command
对象。发送通知的命令是对象的一个属性。PING
check_ping
contact
您没有为 启用主动检查STATUS
,因此 Nagios 永远不会为该服务安排检查(它将依赖于 NRPE 或 NRDP 或某些其他外部进程)。这可能不是您想要的。
您似乎没有将任何内容contact_groups
与您的服务或主机对象关联起来。但是,您添加的配置实际上只是部分在整个配置中,您没有显示默认的对象模板,所以我无法说出继承了什么。
您似乎很难理解 Nagios 对象模型,它更接近于编程而不是配置。图表在这里应该可以帮助您理解这个问题(它有点旧,并且适用于 Nagios 2,但它是一个很好的起点)。
Nagios 文档准确但非常简洁(或简洁),不适合从头开始学习,请尝试本教程:http://users.telenet.be/mydotcom/howto/nagios/index.html
一旦您更好地理解了对象概念,您就可以查看文件objects.cache
并查看所有对象的完整定义(这相当于 Web UI 中的配置视图,但如果您直接编辑配置文件则更容易理解)。