Какой язык использует 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
}
Я предполагаю, что это перли DSL. Как называется этот язык?
1 ответ
Мы просто называем это "языком выражения Босуна" и задокументированы на сайте http://bosun.org/expressions.html. Как вы сказали, это пользовательский DSL. В настоящее время имеет следующие качества
- Это не обязательно. Самому языку на самом деле не хватает истинных переменных, $foo - это просто замена текста.
- Это функционально
- Он хорошо типизирован (функции принимают и возвращают определенные типы. Поскольку DSL предназначен для оповещения, мы считаем, что важно перехватить как можно больше ошибок во время разбора.)
Реализация внутри парсера и лексера основывается на том, что текст / шаблон. Функция map, которая принимает выражение для оператора для каждого элемента X в серии для всей серии Series, находится в разработке, поэтому язык все еще находится в разработке. Но я не думаю, что мы изменим основные варианты дизайна, упомянутые выше (за исключением, возможно, фактического использования реальных переменных вместо замены текста в какой-то момент).