2

我正在尝试使用 bosun 表达式添加 4 个系列。他们来自 1,2,3,4 周前。我将它们转移shift()到当前时间。但我不能添加它们,因为它们有shift=1wetc 标签。我怎样才能把这些系列加在一起?谢谢

编辑:这是 2 周的查询

$period = d("1w")
$duration = d("30m")

$week1end = tod(1 * $period )
$week1start = tod(1 * $period + $duration )

$week2end = tod(2 * $period )
$week2start = tod(2 * $period + $duration )

$q1 = q("avg:1m-avg:os.cpu{host=myhost}", $week1start, $week1end)
$q2 = q("avg:1m-avg:os.cpu{host=myhost}", $week2start, $week2end)

$shiftedq1 = shift($q1, "1w")
$shiftedq2 = shift($q2, "2w")

$shiftedq1+ $shiftedq2

编辑:这是Bosun所说的 在此处输入图像描述

问题类似于:如何添加over查询输出中存在的系列:

over("avg:1m-avg:os.cpu{host=myhost}", "30m", "1w", 2)
4

1 回答 1

3

有一个名为 addtags 的新函数正在等待文档(参见https://raw.githubusercontent.com/bosun-monitor/bosun/master/docs/expressions.md的草稿),它在与重命名结合使用时似乎有效。将最后一行更改为:

$shiftedq1+addtags(rename($shiftedq2,"shift=shiftq2"),"shift=1w")

应该生成单个结果组,例如{ host=hostname, shift=1w, shiftq2=2w }. 如果您为 q3 和 q4 添加其他查询,您可能需要将它们的 shift 标签重命名为唯一值,如 shiftq3 和 shiftq4。

如果您使用的是数字集而不是系列集,那么转置功能会让您“删除”不需要的标签。这在生成警报时很有用,因为 crit 和 warn 需要单个数值而不是系列集:

$average_per_q = avg(merge($shiftedq1,$shiftedq2))
$sum_over_all = sum(t($average_per_q,"host"))
Result: { host=hostname } 7.008055555555557

旁注,您可能希望对 os.cpu 使用计数器而不是仪表。示例:$q1 = q("avg:1m-avg:rate{counter,,1}:os.cpu{。如果没有该速率部分,您将使用原始计数器值而不是仪表值。

于 2016-11-04T20:19:10.707 回答