2

我正在调整我的 bosun.conf 以允许我的os.cpu.high警报在根据主机确定要使用的持续时间时使用查找:

lookup high_cpu {

    entry host=* {
        time = 5m
    }
    entry host=*graylog* {
        time = 1h
    }
}

alert os.cpu.high {
    template = generic.graph
    macro = host.based.contacts
    $notes = Find CPU usage that is continually high
    $duration = lookup("high_cpu", "time")
    $host = *
    $metric = "sum:rate{counter,,1}:os.cpu{host=$host}"
    $q_cpu = q($metric, "$duration", "")
    $q = avg($q_cpu)

    warn = $q > 95
    crit = $q > 99

    ignoreUnknown = true
    $q_format = %f
    $unit_string = %
    $generic_graph = $q_cpu
    $graph_unit = %
}

这是我在测试时遇到的错误:

conf: Test Config:424:4: at <warn = $q > 95>: expr: unexpected "high" in func

我对 bosun 不是很熟悉,这可能很容易解决,但我无能为力。任何帮助,将不胜感激

4

1 回答 1

2

您不能这样做,因为查找不支持字符串返回类型。

无论如何,这种特殊情况都会有问题,因为您尝试做的是根据查询结果查询不同的次数,因此您遇到了先有鸡还是先有蛋的问题。

您可以做的是查询您想要查询的最长时间,然后使用该crop函数缩短集合中的一些结果。但是,裁剪功能尚未发布,因此您必须在 master 中获取它。您可以查看文档,其中包含您现在尝试在此提交中执行的操作的示例,即:

lookup test {
    entry host=ny-bosun01 {
        start = 30
    }
    entry host=* {
        start = 60
    }
}

alert test {
    template = test
    $q = q("avg:rate:os.cpu{host=ny-bosun*}", "5m", "")
    $c = crop($q, lookup("test", "start") , 0)
    crit = avg($c)
}
于 2016-08-16T19:15:04.017 回答