В данной статье мы по шагам проработаем настройку системы и создание скрипта для следующей задачи:
У нас есть Prometheus, который собирает какие-то метрики. Мы хотим отслеживать метрику
go_memstats_heap_objects
. Если значение превысит заданный нами порог, создадим алерт.
В первую очередь требуется создать файл конфигуации:
scripts:
updateInterval: 5s
sources:
folder:
- name: scripts
path: /opt/scripts
mask: '*.lua'
datasources:
prometheus:
- name: prom1
url: 127.0.0.1:9090
channels:
telegram:
- name: tg1
token: TELEGRAM-BOT-TOKEN
chatId: 100500
В кофиге мы указали
/opt/scripts
(файлы отбирать по маске *.lua)prom1
имеет тип Prometheus
и будет получать данные с адреса 127.0.0.1:9090
tg1
имеет тип Telegram
- туда будут отправляться сообщенияподробнее о том, как подключить Telegram - можно почитать тут
Создадим файл /opt/scripts/script.lua
со следующим содержимым
-- @interval 2m
local prom = require('datasource.prometheus.prom1')
local h = require('h')
res = prom.query('sum(go_memstats_heap_objects)')
h.print(res)
С помощью мета-тега @interval
мы указали, что скрипт должен исполняться каждые 2 минуты
И на последней строке мы воспользуемся предустановленным модулем h
(helper) и функцией print
чтобы вывести в консоль результат запроса
Мы увидим примерно следующее:
{
1 = {
metrics = {
}
value = {
timestamp = 1583147803
value = 1006483950
}
}
}
Доработаем скрипт до финального вида. Подключим модуль alert
и допишем логику управления алертом
-- @interval 120s
local prom = require('datasource.prometheus.prom1')
local alert = require('alert')
res = prom.query('sum(go_memstats_heap_objects)')
if res[1].value.value > 1000000000 then
alert.error('alert1', 'go_memstats_heap_objects greater than 1e9 :(')
else
alert.success('alert1', 'go_memstats_heap_objects less than 1e9 :)')
end
Готово.
Другие примеры вы можете посмотреть в соотвествующем разделе