Bosun如何添加不同标签的系列?

Bosun how to add series with different tags?

我正在尝试使用水手长表达式添加 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

编辑:这是 Bosun 所说的

问题类似于:How do I add the series present in the output of an over query:

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

有一个名为 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。

如果您使用的是数字集而不是系列集,那么转置函数会让您 "Drop" 不需要的标签。这在生成警报时很有用,因为暴击和警告需要单个数值而不是系列集:

$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{。如果没有该速率部分,您将使用原始计数器值而不是仪表值。