Чего мы хотим добиться - это настроить шаблон сообщения, который используется функцией deadman. Сообщение, которое должно отображаться, должно зависеть от значения .Level.
Создаются две переменные (start_summary
и end_summary
и message
), и в зависимости от значения .Level либо значение start_summary
, либо переменная end_summary
должна выводиться deadman.
Обычно эти переменные объявляются как переменные и получают их значение из файла переменных JSON. Ниже приведен шаблон (соответствующая часть).
Переменные start_summary
и end_summary
добавляются в качестве тегов с использованием DefaultNode. Эти переменные включают тег. В зависимости от значения .Level отображается правильное сообщение, однако тег в переменные не заменяется. Например, отображается следующее сообщение:
[ПРОБЛЕМА] Измерения данных отсутствуют во время выполнения {{index .Tags \ "runtime-name \"}} [Тестирование]
Возможно ли каким-либо образом получить тег, на который ссылаются переменные start_summary и end_summary, оцененный и замененный фактическим именем среды выполнения?
Эта среда выполнения, кстати, существует как тег.
Шаблон:
var start_summary = '[PROBLEM] The data measurements are missing for runtime {{ index .Tags "runtime-name" }} [Testing]'
var end_summary = '[FIXED] The data measurements are missing for runtime {{ index .Tags "runtime-name" }} [Testing]'
var message = '{{ if eq .Level "CRITICAL" }} {{index .Tags "start_summary"}} {{ else if eq .Level "OK" }} {{index .Tags "end_summary"}} {{ end }}'
var dayRestriction lambda
var timeRestriction lambda
var qry = 'SELECT count(*) FROM "' + db + '"."' + rp + '"."' + measurement + '" WHERE ' + whereClause
var data = batch
|query(qry)
.period(period)
.cron(qryCronExpr)
.groupBy('environment', 'runtime-name')
|default().tag('start_summary', start_summary)
|default().tag('end_summary', end_summary)
var trigger = data
|deadman(threshold, interval, lambda: dayRestriction AND timeRestriction)
.message(message)
.stateChangesOnly()
.details('')
.post('http://...')