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