TRIBLY
Документация Tribly → Скрипты алертов (Starlark)

Скрипты алертов (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)

Смежные страницы: «Алерты и инциденты», «Мониторинг: источники и дашборды».