我注意到,使用 CACTI 只能显示不间断的时间段。我想知道是否可以制作自定义图表,仅显示某个时间段(一周、一个月等)内的营业时间。
例如,我希望能够显示上个月每周 5 个工作日(周一至周五)上午 8 点至下午 6 点之间的平均入站流量图表。
我尝试为 RRDtool 配置一个脚本,但我不知道正确的语法。经过几次测试,我发现可以将不同的图表叠加在一起。我想计算所有这些图表的平均值,但我不知道该怎么做。
我想配置如下内容:
--startday 20120604+8h
--endday 20120604+18h
monday: --start startday --end endday
tuesday: --start startday+24h --end endday+24h
wednesday: --start startday+48h --end endday+48h
thursday: --start startday+72h --end endday+72h
friday: --start startday+96h --end endday+96h
DEF:monday=router.rrd:gi0/1:traffic_mon:AVERAGE
DEF:tuesday=router.rrd:gi0/1:traffic_tue:AVERAGE
DEF:wednesday=router.rrd:gi0/1:traffic_wed:AVERAGE
DEF:thursday=router.rrd:gi0/1:traffic_thu:AVERAGE
DEF:friday=router.rrd:gi0/1:traffic_fri:AVERAGE
DEF:traffic_mon:traffic_tue:traffic_wed:traffic_thu:traffic_fri:AVERAGE
我将非常感激任何帮助。
谢谢。
答案1
最有可能的是,Cacti 本身无法为您生成这种图表。您需要使用 手动生成 RRD 图表rrdgraph
。完整的解决方案相当复杂,但基本要点是您创建一个CDEF
带有 RPN 方程的 ,该方程会在非工作时间将数据清零。
删除 2012-01-31 18:00:00 UTC 至 2012-02-01 08:00:00 UTC 之间的时间段的一个非常基本的示例如下:
DEF:ds0=/path/to/data.rrd:ds0:AVERAGE
CDEF:officehours=TIME,1328032800,GT,0,1,IF,TIME,1328083200,LT,0,1,IF,MAX,1,UNKN,IF
CDEF:dslimit=ds0,officehours,*
AREA:dslimit#00cc00:"Value "
forCDEF
基本上officehours
检查样本的时间是否在下午 6 点到早上 8 点之间。如果是,则值为UNKN
。如果不是,则值为 1。将其乘以该值,您将得到办公时间内的实际值和非办公时间内的未知值。图表将显示非办公时间内的漏洞,并且通过 或 输出的平均值、最大值和最小值GPRINT
不会PRINT
考虑非办公时间值。
您必须CDEF
为每个要过滤掉的非办公时间时段设置一个。时间以纪元以来的秒数表示,因此如果您要绘制 1 月 1 日至 2 月 1 日的图表,则需要过滤掉大约 20 个不同的时段。RRD 具有非常好的语言钩子,因此您可以编写一个简单的 Perl 或 Python 脚本来为您动态生成这些图表。
阅读rrdgraph
,rrdgraph_rpn
, 和rrdgraph_examples
手册页以获取更多详细信息和示例。
答案2
CACTI 轮询器用尽 cron。
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1
如果您只想在工作时间内进行轮询,可以在 cron 中进行配置,但 rrdtool 会在图表上显示未进行轮询的间隙。
答案3
不,rrdtool 不是那样工作的。