1

从他们的快速入门指南中,我得到了以下示例

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。这种语言叫什么名字?

4

1 回答 1

2

我们称之为“Bosun 的表达式语言”,并记录在http://bosun.org/expressions.html中。正如你所说,它是一个自定义 DSL。它目前具有以下品质

  • 这不是必须的。语言本身实际上缺少真正的变量,“$foo”只是文本替换
  • 它是功能性的
  • 它的类型很好(函数接受并返回特定类型。由于 DSL 用于警报,我们认为在解析时尽可能多地捕获错误很重要。)

解析器和词法分析器的胆量实现基于文本/模板的胆量。一个 map 函数在整个 seriesSet 的一个系列中的每个 X 项目上使用一个表达式来操作符正在开发中,因此该语言仍在开发中。但我不认为我们会改变上面提到的底层设计选择(除非在某些时候实际上使用实变量而不是文本替换。)

于 2016-07-05T12:21:29.633 回答