Bosun:Lookup在预期字符串时给出整数

时间:2016-08-16 18:31:07

标签: bosun

我正在调整我的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不是很熟悉,这可能是一个简单的解决方法,但我的智慧结束了。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

您无法执行此操作,因为查找不支持字符串返回类型。

这种特殊情况无论如何都会有问题,因为你要做的是根据查询的结果查询不同的次数,所以你有鸡和蛋的问题。

您可以执行的操作是查询要查询的最长时间,然后使用crop功能缩短集合中的某些结果。然而,裁剪功能还没有发布,所以你必须得到它的主人。您现在可以在this commit中查看文档中的示例,例如:

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)
}