bosun使用什么语言?
What language is used by bosun?
从他们的 quickstart guide 我得到了以下示例
alert cpu.is.too.high {
template = test
$metric = q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", "")
$avgcpu = avg($metric)
crit = $avgcpu > 80
warn = $avgcpu > 60
}
我猜这是一个 perlish DSL。这种语言的名称是什么?
我们称它为 "Bosun's expression language" 并记录在 http://bosun.org/expressions.html。正如您所说,它是一个自定义 DSL。它目前具有以下品质
- 这不是必须的。该语言本身实际上缺少真正的变量,“$foo”只是文本替换
- 功能正常
- 它的类型很好(函数接受和 return 特定类型。由于 DSL 用于警报,我们认为在解析时捕获尽可能多的错误很重要。)
解析器和词法分析器的核心实现是基于 text/template 的核心。一个 map 函数在整个 seriesSet 的系列中的每个 X 项上采用表达式来运算符正在开发中,因此该语言仍在开发中。但我不认为我们会改变上面提到的基础设计选择(除非在某些时候实际使用真实变量而不是文本替换。)
从他们的 quickstart guide 我得到了以下示例
alert cpu.is.too.high {
template = test
$metric = q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", "")
$avgcpu = avg($metric)
crit = $avgcpu > 80
warn = $avgcpu > 60
}
我猜这是一个 perlish DSL。这种语言的名称是什么?
我们称它为 "Bosun's expression language" 并记录在 http://bosun.org/expressions.html。正如您所说,它是一个自定义 DSL。它目前具有以下品质
- 这不是必须的。该语言本身实际上缺少真正的变量,“$foo”只是文本替换
- 功能正常
- 它的类型很好(函数接受和 return 特定类型。由于 DSL 用于警报,我们认为在解析时捕获尽可能多的错误很重要。)
解析器和词法分析器的核心实现是基于 text/template 的核心。一个 map 函数在整个 seriesSet 的系列中的每个 X 项上采用表达式来运算符正在开发中,因此该语言仍在开发中。但我不认为我们会改变上面提到的基础设计选择(除非在某些时候实际使用真实变量而不是文本替换。)