Скрипты алертов (Starlark)
Кроме пороговых условий алерт может выполнять скрипт — для логики, которую парой условий не описать. Кнопка в интерфейсе называется «Python», выполняется Starlark: язык с Python-подобным синтаксисом, работающий в песочнице на сервере.
В песочнице доступны переменные, списки, словари, условия, циклы, арифметика и работа со строками. Внешние библиотеки (requests, numpy), файлы и сеть — за её пределами.
Прямо в редакторе скрипт можно проверить на ошибки и прогнать на данных, не создавая настоящий алерт. Это доступно носителям права «Управление уведомлениями» и права «Управление мониторингом».
Возможности скрипта
| Имя | Назначение |
|---|---|
data |
Результат последнего запроса к источнику |
prev_data |
Результат предыдущего запроса |
storage |
Память скрипта: сохраняется между запусками |
STATUS_WARNING, STATUS_ERROR, STATUS_RECOVERY |
Статусы, которые возвращает скрипт |
Чтобы поднять тревогу, скрипт присваивает status и message. Значения в storage сохраняются и доступны на следующем запуске — поэтому скрипт может сравнивать с прошлым значением и вести счётчики повторов.
Примеры
Резкий рост значения
current = data[0]["avg_price"]
prev = float(storage.get("last_price", current))
if current > prev * 1.2:
status = STATUS_ERROR
message = "Резкий рост: было %s, стало %s" % (prev, current)
storage["last_price"] = str(current)
Три ошибки подряд (защита от дребезга)
count = int(storage.get("errors", "0"))
if data[0]["status"] == "FAIL":
count = count + 1
else:
count = 0
if count >= 3:
status = STATUS_ERROR
message = "Сервис недоступен три цикла подряд"
storage["errors"] = str(count)
Смежные страницы: «Алерты и инциденты», «Мониторинг: источники и дашборды».
TRIBLY