2016-07-05 105 views
0

从他们quickstart guide我这下面的示例bosun使用哪种语言?

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 
} 

我猜想这是一个Perl化的DSL。这种语言的名称是什么?

回答

2

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

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

解析器和词法分析器的胆量实现基于文本/模板的胆量。一个map函数在整个seriesSet的一个系列中的每个X项目上都有一个表达式,这个函数在工作中,所以这个语言在工作中还是有点不足。但我不认为我们会改变上面提到的底层设计选择(除了可能实际使用实际变量而不是文本替换)。