介绍
Nagios Core能够区分“正常”服务和“易失”服务。每个服务定义中的is_volatile选项允许您指定特定服务是否易失。对于大多数人而言,所有受监视服务中的大多数都是非易失性的(即“正常”)。但是,易失性服务在正确使用时可能非常有用。
它们有什么用?
易失性服务对于监控非常有用
- 每次检查时自动重置为“ OK”状态的事物
- 安全警报等事件,每次出现问题时都需要引起注意(而不仅仅是第一次)
易失性服务有何特别之处?
易失性服务在三个重要方面不同于“常规”服务。每次检查它们处于硬性非正常状态时,检查都会返回非正常状态(即未发生状态更改)
这些事件通常仅在服务处于非OK状态并且刚发生硬状态更改时才发生。换句话说,它们仅在服务首次进入非OK状态时发生。如果将来对服务的检查导致相同的非OK状态,则不会发生硬状态更改,并且提到的事件均不会再次发生。
提示:如果仅对日志记录感兴趣,请考虑使用跟踪选项。
易失性服务和被动服务检查的功能叠加
如果将易失性服务和被动服务检查的功能结合在一起,则可以做一些非常有用的事情。这样的示例包括处理SNMP陷阱,安全警报等。
举个例子。假设您正在运行PortSentry,以检测计算机上的端口扫描并自动对潜在的入侵者进行防火墙保护。如果要让Nagios知道端口扫描,可以执行以下操作:
Nagios配置:
- 创建一个称为“端口扫描”的服务定义,并将其与运行PortSentry的主机相关联。
- 将服务定义中的max_check_attempts指令设置为1。这将通知Nagios在报告非OK状态时立即将服务强制进入硬状态。
- 将服务定义中的active_checks_enabled伪指令设置为0。这可以防止Nagios主动检查服务。
- 将服务定义中的passive_checks_enabled伪指令设置为1。这将启用对服务的被动检查。
- 在服务定义中将此is_volatile伪指令设置为1。
PortSentry配置:
编辑您的PortSentry配置文件(portsentry.conf),并为KILL_RUN_CMD指令定义一个命令,如下所示:
KILL_RUN_CMD="/usr/local/Nagios/libexec/eventhandlers/submit_check_result host_name 'Port Scans' 2 'Port scan from host $TARGET$ on port $PORT$. Host has been firewalled.'"
确保将host_name替换为与服务关联的主机的简称。
端口扫描脚本:
在/ usr / local / nagios / libexec / eventhandlers目录中创建一个名为Submit_check_result的shell脚本。Shell脚本的内容应类似于以下内容。
#!/bin/sh
# Write a command to the Nagios command file to cause
# it to process a service check result
echocmd="/bin/echo"
CommandFile="/usr/local/nagios/var/rw/nagios.cmd"
# get the current date/time in seconds since UNIX epoch
datetime=`date +%s`
# create the command line to add to the command file
cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"
# append the command to the end of the command file
$echocmd $cmdline >> $CommandFile
PortSentry将来在计算机上检测到端口扫描时会发生什么?
- PortSentry将对主机进行防火墙(这是PortSentry软件的功能)
- PortSentry将执行submit_check_result Shell脚本并将被动检查结果发送给Nagios
- Nagios将读取外部命令文件,并查看PortSentry提交的被动服务检查
- Nagios将把“端口扫描”服务置于“严重”状态,并向联系人发送通知