2016-07-05 106 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項目上都有一個表達式,這個函數在工作中,所以這個語言在工作中還是有點不足。但我不認爲我們會改變上面提到的底層設計選擇(除了可能實際使用實際變量而不是文本替換)。