我正在尝试使用bosun表达式添加4个系列。它们来自1,2,3,4周前。我使用shift()
移动它们以获得当前时间。但我无法添加它们,因为它们有shift=1w
等标签。如何将这些系列添加到一起?
谢谢
编辑:这是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
问题类似于:如何在over
查询的输出中添加系列:
over("avg:1m-avg:os.cpu{host=myhost}", "30m", "1w", 2)
答案 0 :(得分:2)
有一个名为addtags的新函数是待处理文档(请参阅https://raw.githubusercontent.com/bosun-monitor/bosun/master/docs/expressions.md for draft),它与重命名结合使用时似乎有效。将最后一行更改为:
$shiftedq1+addtags(rename($shiftedq2,"shift=shiftq2"),"shift=1w")
应该生成一个像{ host=hostname, shift=1w, shiftq2=2w }
这样的结果组。如果您为q3和q4添加其他查询,则可能需要将shift标记重命名为shiftq3和shiftq4等唯一值。
如果您使用的是数字而不是系列集,则转置功能会让您“删除”不需要的标记。这在生成警报时很有用,因为暴击和警告需要单个数值而不是系列集:
$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{
。如果没有该速率部分,则使用原始计数器值而不是规格值。