我设置了一个包含三个节点的 Proxmox VE 集群。每个节点上都运行着多个虚拟机。我使用的是PVE 监控插件设置主机和服务,工作正常。
我的问题是 Nagios 的电子邮件发送行为有些奇怪。理想情况下,我希望每分钟检查一次,检查节点以及每个节点上运行的所有服务。
我的配置文件如下所示:
# Define the cluster itself as a host
# the command check_pve_cluster_nodes give us info
# on the member's cluster state
define host {
host_name pve-cluster
max_check_attempts 10
check_command check_pve_cluster_nodes
contact_groups admins
check_interval 1
contact_groups admins
notifications_enabled 1
}
# define openvz, qemu and storages as services of the cluster
define service{
use generic-service
host_name pve-cluster
service_description OpenVZ VMs
check_command check_pve_cluster_openvz
check_interval 1
contact_groups admins
notifications_enabled 1
}
define service{
use generic-service
host_name pve-cluster
service_description Qemu VMs
check_command check_pve_cluster_qemu
check_interval 1
contact_groups admins
notifications_enabled 1
}
define service{
use generic-service
host_name pve-cluster
service_description Storages
check_command check_pve_cluster_storage
check_interval 1
contact_groups admins
notifications_enabled 1
}
我没有更改时间单位设置,因此这些应该是每分钟一次的检查。Nagios Web UI 显示主机处于离线状态,但电子邮件通知仅在几分钟后发送。此外,电子邮件内容缺少最重要的信息 - 哪个节点/服务处于关键状态:
节点关闭
***** Nagios *****
Notification Type: PROBLEM
Host: pve-cluster
State: DOWN
Address: pve-cluster
Info: NODES CRITICAL 2 / 3 working nodes
Date/Time: Fri Mar 6 10:48:25 CET 2015
虚拟机关闭
***** Nagios *****
Notification Type: PROBLEM
Service: Qemu VMs
Host: pve-cluster
Address: pve-cluster
State: CRITICAL
Date/Time: Fri Mar 6 10:40:44 CET 2015
Additional Info:
QEMU CRITICAL 2 / 3 working VMs
我该如何设置配置,以便每隔一分钟检查一次主机和服务(即虚拟机)?理想情况下,此后应每隔 15 分钟发送一次该状态的重新检查。
这真的是最好的工作流程吗?或者还有其他更好的方法来安排通知并确认通知?
答案1
Nagios 仅在主机或服务进入“硬”状态时才发送电子邮件。从基本层面来回答您的问题 - 一旦主机或服务被检查了指定的次数,就会达到硬状态最大检查尝试次数。默认情况下,此值为 4。
有关软/硬状态的信息:http://nagios.sourceforge.net/docs/3_0/statetypes.html 有关max_check_attempts的信息:http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html
看起来该插件确实打算提供返回详细信息,但不知何故却没有。不幸的是,我没有环境来测试它,所以我可能不得不让你继续回答这个问题的这一部分。
perl的相关章节:
print "NODES $rstatus{$statusScore} $workingNodes / " .
scalar(@monitoredNodes) . " working nodes" . $br . $reportSummary;
print "STORAGE $rstatus{$statusScore} $workingStorages / " .
scalar(@monitoredStorages) . " working storages" . $br . $reportSummary;
print "OPENVZ $rstatus{$statusScore} $workingVms / " .
scalar(@monitoredOpenvz) . " working VMs" . $br . $reportSummary;
print "QEMU $rstatus{$statusScore} $workingVms / " .
scalar(@monitoredQemus) . " working VMs" . $br .
$reportSummary;
$reportSummary 填充了代码中较高问题部分的详细信息,但似乎没有返回给您。