介绍
Nagios Core旨在允许插件返回除正常状态数据之外的可选性能数据,并允许您将该性能数据传递给外部应用程序进行处理。下文描述了不同类型的性能数据,以及有关如何处理该数据的信息…
性能数据类型
可以从Nagios Core获得性能数据的两个基本类别:
- 检查性能数据
- 插件性能数据
检查性能数据是与主机或服务检查的实际执行相关的内部数据。这可能包括诸如服务检查延迟(即服务检查从其计划的执行时间到“延迟”的时间)以及主机或服务检查执行的秒数。这种类型的性能数据可用于所有执行的检查。在$ HOSTEXECUTIONTIME $和$ SERVICEEXECUTIONTIME $ 宏可以用来确定一个主机或服务检查正在运行的秒数和$ HOSTLATENCY $和$ SERVICELATENCY $宏可以用于确定如何“迟到”定期调度主机或服务检查了。
插件性能数据是特定于用于执行主机或服务检查的插件的外部数据。特定于插件的数据可以包括诸如数据包丢失百分比,可用磁盘空间,处理器负载,当前用户数量等之类的信息-基本上是插件执行时所测量的任何类型的度量。特定于插件的性能数据是可选的,并非所有插件都支持。特定于插件的性能数据(如果有)可以通过使用$ HOSTPERFDATA $和$ SERVICEPERFDATA $ 宏获取。继续阅读以获取有关插件如何将性能数据返回到Nagios Core以便包含在$ HOSTPERFDATA $和$ SERVICEPERFDATA $宏中的更多信息。
插件性能数据
Nagios Core插件至少必须返回一行人类可读的文本,以指示某种类型的可测量数据的状态。例如,check_ping插件可能会返回一行文本,如下所示:
PING ok - Packet loss = 0%, RTA = 0.80 ms
通过这种简单的输出类型,整个文本行都可以在$ HOSTOUTPUT $或$ SERVICEOUTPUT $宏中使用(取决于此插件是用作主机检查还是服务检查)。
插件可以通过以下方式返回其输出中的可选性能数据:发送通常会被人们正常阅读的普通文本字符串,然后发送竖线字符(|),然后是包含一个或多个性能数据指标的字符串。让我们以check_ping插件为例,并假设它已得到增强,可以返回丢包百分比和平均往返时间作为性能数据指标。插件的示例输出可能如下所示:
PING ok - Packet loss = 0%, RTA = 0.80 ms | percent_packet_loss=0, rta=0.80
当Nagios Core看到此插件输出格式时,它将把输出分为两部分:
- 竖线字符之前的所有内容均被视为“常规”插件输出,并将存储在$ HOSTOUTPUT $或$ SERVICEOUTPUT $宏中
- 竖线字符之后的所有内容均被视为特定于插件的性能数据,并将存储在$ HOSTPERFDATA $或$ SERVICEPERFDATA $宏中
在上面的示例中,$ HOSTOUTPUT $或$ SERVICEOUTPUT $宏将包含“ Ping ok-数据包丢失= 0%,RTA = 0.80 ms ”(不带引号),而$ HOSTPERFDATA $或$ SERVICEPERFDATA $宏将包含“ percent_packet_loss = 0,rta = 0.80 “(不带引号)。
可以从插件获取多行性能数据(以及常规文本输出),如插件API文档中所述。
注意:Nagios Core守护程序不会直接处理插件性能数据,因此它实际上并不关心性能数据的外观。效果数据的格式或内容实际上并没有任何固有的限制。但是,如果您使用外部插件来处理性能数据(即PerfParse),则该插件可能期望插件以特定格式返回性能数据。有关更多信息,请参阅插件附带的文档。
处理性能数据
如果要处理Nagios Core和插件提供的性能数据,则需要执行以下操作:
- 启用process_performance_data选项。
- 配置Nagios Core,以便将性能数据写入文件和/或通过执行命令进行处理。
继续阅读有关如何通过写入文件或执行命令来处理性能数据的信息。
使用命令处理性能数据
处理性能数据的最灵活方法是让Nagios Core执行(指定的)命令来处理或重定向数据,以供外部应用程序稍后处理。Nagios Core执行以处理主机和服务性能数据的命令分别由host_perfdata_command和service_perfdata_command选项确定。
下面显示了一个示例命令定义,该命令定义将服务检查性能数据重定向到文本文件,以供另一个应用程序稍后处理:
define command {
command_name store-service-perfdata
command_line /bin/echo -e "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$" >> /usr/local/nagios/var/service-perfdata.dat
}
提示:此方法虽然灵活,但具有相对较高的CPU开销。如果您要处理大量主机和服务的性能数据,则可能需要Nagios Core将性能数据写入文件。下一节将介绍此方法。
将性能数据写入文件
您可以让Nagios Core使用host_perfdata_file和service_perfdata_file选项将所有主机和服务性能数据直接写入文本文件。主机和服务性能数据写入这些文件的格式由host_perfdata_file_template和service_perfdata_file_template选项确定。
服务性能数据的文件格式模板示例可能如下所示:
service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
默认情况下,文本文件将以“附加”模式打开。如果需要将模式更改为“写入”或“非阻塞读取/写入”(在写入管道时很有用),则可以使用host_perfdata_file_mode和service_perfdata_file_mode选项。
另外,您可以让Nagios Core定期执行命令,以使用host_perfdata_file_processing_command和service_perfdata_file_processing_command选项来对性能数据文件进行外围处理(例如,颠倒它们)。这些命令的执行间隔分别由host_perfdata_file_processing_interval和service_perfdata_file_processing_interval选项控制。