ЛСгкая Ρ€Π°Π±ΠΎΡ‚Π° со слоТными Π°Π»Π΅Ρ€Ρ‚Π°ΠΌΠΈ. Или история создания Balerter

ЛСгкая Ρ€Π°Π±ΠΎΡ‚Π° со слоТными Π°Π»Π΅Ρ€Ρ‚Π°ΠΌΠΈ. Или история создания Balerter

ВсС Π»ΡŽΠ±ΡΡ‚ Π°Π»Π΅Ρ€Ρ‚Ρ‹.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ (ΠΈΠ»ΠΈ ΠΏΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΎΡΡŒ), Ρ‡Π΅ΠΌ ΡΠΈΠ΄Π΅Ρ‚ΡŒ, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ.

И инструмСнтов для для этого создано Π½Π΅ΠΌΠ°Π»ΠΎ. Alertmanager ΠΈΠ· экосистСмы Prometheus ΠΈ vmalert ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² VictoriaMetrics. УвСдомлСния zabbix ΠΈ Π°Π»Π΅Ρ€Ρ‚Ρ‹ Π² Grafana. БамописныС скрипты Π½Π° bash ΠΈ Telegram Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСриодичСски Π΄Π΅Ρ€Π³Π°ΡŽΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ URL ΠΈ говорят, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Много всСго.

ΠœΡ‹, Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚ΠΎΠΆΠ΅ использовали Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠΏΠ΅Ρ€Π»ΠΈΡΡŒ Π² ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΈΠ»ΠΈ, скорСС, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания слоТных, составных Π°Π»Π΅Ρ€Ρ‚ΠΎΠ². Π§Π΅Π³ΠΎ Π½Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΈ Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ сдСлали — ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ. TLDR: Π’Π°ΠΊ появился open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Balerter

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΌΡ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΆΠΈΠ»ΠΈ с Π°Π»Π΅Ρ€Ρ‚Π°ΠΌΠΈ, настроСнными Π² Grafana. Π”Π°, это Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ. ВсСгда рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ спСциализированныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚ΠΈΠΏΠ° Alertmanager. И ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· смотрСли Π² сторону ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π°. А Π·Π°Ρ‚Π΅ΠΌ, ΠΏΠΎΡ‚ΠΈΡ…ΠΎΠ½ΡŒΠΊΡƒ, Π½Π°ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ большСго.

Π‘ΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΈΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ ΡƒΠΏΠ°Π»/вырос Π½Π° XX% ΠΈ находится Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ N ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ Π² M часов? Π­Ρ‚ΠΎ, каТСтся, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Grafana ΠΈΠ»ΠΈ Alertmanager, Π½ΠΎ довольно Π½Π΅ просто. (А ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ нСльзя, я сСйчас ΠΈ Π½Π΅ скаТу)

ВсС становится Π΅Ρ‰Π΅ слоТнСС, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ± Π°Π»Π΅Ρ€Ρ‚Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников. Π–ΠΈΠ²ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… Π±Π°Π· Clickhouse, Π΄Π°Π»Π΅Π΅ сравниваСм с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Postgres, ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ± Π°Π»Π΅Ρ€Ρ‚Π΅. Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ…ΠΎΡ‚Π΅Π»ΠΎΠΊ Ρƒ нас накопилось достаточно ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ Π·Π°Π΄ΡƒΠΌΠ°Π»ΠΈΡΡŒ ΠΎ своСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ. И Ρ‚ΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ список Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ/возмоТностСй этого, Π½Π΅ созданного ΠΏΠΎΠΊΠ°, сСрвиса

  • ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ источникам Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Prometheus, Clickhouse, Postgres

  • ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π°Π»Π΅Ρ€Ρ‚Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ — telegram, slack ΠΈ Ρ‚.Π΄.

  • Π² процСссС обдумывания стало понятно, Ρ‡Ρ‚ΠΎ хочСтся Π½Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ описания, Π° возмоТности ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты

  • запуск скриптов ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ

  • Π»Π΅Π³ΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ скриптов Π±Π΅Π· пСрСзапуска сСрвиса

  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π±Π΅Π· пСрСсборки сСрвиса ΠΈΠ· исходных ΠΊΠΎΠ΄ΠΎΠ²

Π­Ρ‚ΠΎ список ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈ, скорСС всСго, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ. КакиС-Ρ‚ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ видоизмСнялись, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΡƒΠΌΠΈΡ€Π°Π»ΠΈ. ВсС ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ.

БобствСнно, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ история Balerter.

ЛСгкая Ρ€Π°Π±ΠΎΡ‚Π° со слоТными Π°Π»Π΅Ρ€Ρ‚Π°ΠΌΠΈ. Или история создания Balerter

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΈ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. (Π”Π°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ Ρ„ΠΈΠ½Π°Π». Много ΠΏΠ»Π°Π½ΠΎΠ² для развития ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π― просто ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Π½Π° сСгодняшнСм Π΄Π½Π΅)

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Π’Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ скрипт Π½Π° Lua, Π³Π΄Π΅ явно отправляСтС запросы (Π² Prometheus, Clickhouse ΠΈ Ρ‚.Π΄). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΈ сравниваСтС. ПослС Ρ‡Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π°Π»Π΅Ρ€Ρ‚. Balerter сам ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π½Π°Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ настроили (Email, telegram, slack ΠΈ Ρ‚.Π΄.). Π‘ΠΊΡ€ΠΈΠΏΡ‚ выполняСтся с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. Π˜β€¦ Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ это всС)

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

-- @interval 10s
-- @name script1

local minRequestsRPS = 100

local log = require("log")
local ch1 = require("datasource.clickhouse.ch1")

local res, err = ch1.query("SELECT sum(requests) AS rps FROM some_table WHERE date = now()")
if err ~= nil then
    log.error("clickhouse 'ch1' query error: " .. err)
    return
end

local resultRPS = res[1].rps

if resultRPS < minResultRPS then
    alert.error("rps-min-limit", "Requests RPS are very small: " .. tostring(resultRPS))
else
    alert.success("rps-min-limit", "Requests RPS ok")
end 

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ происходит:

  • ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 сСкунд

  • ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя скрипта (для API, для отобраТСния Π² Π»ΠΎΠ³Π°Ρ…, для использования Π² тСстах)

  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° Π»ΠΎΠ³ΠΎΠ²

  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для доступа ΠΊ кликхаусу с ΠΈΠΌΠ΅Π½Π΅ΠΌ ch1 (само ΠΏΠΎΠ΄ΠΊΡ‡Π»ΡŽΡ‡Π΅Π½ΠΈΠ΅ настраиваСтся Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅)

  • отправляСм запрос Π² кликхаус

  • Π² случаС ошибки — Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС Π² Π»ΠΎΠ³ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ

  • сравниваСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса с константой (Π² ΠΆΠΈΠ²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Π±Π°Π·Ρ‹ Postgres)

  • Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π°Π»Π΅Ρ€Ρ‚ с ID rps-min-limit

  • Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, Ссли статус Π°Π»Π΅Ρ€Ρ‚Π° измСнился

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ довольно простой ΠΈ понятный. Однако, разумССтся, Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ скрипты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ довольно развСсистыми ΠΈ слоТными. Π’ Π½ΠΈΡ… Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π°Π΄Π΅Π»Π°Ρ‚ΡŒ ошибок.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ созрСло Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ — ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΡ‚Π°Ρ‚ΡŒ тСсты для своих скриптов. И Π² вСрсии v0.4.0 это появилось.

ВСстированиС скриптов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ тСста для нашСго скрипта ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅:

-- @test script1
-- @name script1-test

test = require('test')

local resp = {
    {
        rps = 10
    }
} 

test.datasource('clickhouse.ch1').on('query', 'SELECT sum(requests) AS rps FROM some_table WHERE date = now()').response(resp)

test.alert().assertCalled('error', 'rps-min-limit', 'Requests RPS are very small: 10')
test.alert().assertNotCalled('success', 'rps-min-limit', 'Requests RPS ok')

По шагам:

  • ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя скрипта, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ написан тСст

  • имя тСста (для Π»ΠΎΠ³ΠΎΠ²)

  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ тСстирования

  • Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π°Π΄ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ запросС ΠΊ кликхаусу ch1

  • провСряСм, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ Π°Π»Π΅Ρ€Ρ‚ (error) rps-min-limit с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ сообщСниСм

  • провСряСм, Ρ‡Ρ‚ΠΎ Π°Π»Π΅Ρ€Ρ‚ rps-min-limit Π½Π΅ Π±Ρ‹Π» ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ (success)

Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Balerter?

Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ самых Π²Π°ΠΆΠ½Ρ‹Ρ…, ΠΏΠΎ ΠΏΠΎΠ΅ΠΌΡƒ мнСнию, умСниях Balerter. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ всС ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС https://balerter.com

  • ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ·

    • clickhouse

    • postgres

    • mysql

    • prometheus

    • loki

  • ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ увСдомлСния ΠΊ ΠΊΠ°Π½Π°Π»Ρ‹

    • slack

    • telegram

    • syslog

    • notiify (UI увСдомлСния Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅)

    • email

    • discord

  • ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΏΠΎ вашим Π΄Π°Π½Π½Ρ‹ΠΌ, Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² S3 совмСстимоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΊ увСдомлСниям (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°ΠΌΠΈ)

  • позволяСт ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ скриптами — глобальноС Key/Value Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

  • ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Π±ΠΈΠ±Π»ΠΈΡ‚Π΅ΠΊΠΈ Π½Π° Lua ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² скриптах (ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ lua-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с json, csv)

  • ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ HTTP запросы ΠΈΠ· Π²Π°ΡˆΠΈΡ… скриптов (Π½Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹, разумССтся)

  • прСдоставляСт API (ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹)

  • экспортируСт ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Prometheus

А Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ Π΅Ρ‰Π΅?

Π£ΠΆΠ΅ понятно, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запуском скриптов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксиса cron. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сдСлано Π΄ΠΎ вСрсии v1.0.0

Π₯очСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС источников Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² доставки ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. НапримСр, ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ MongoDB. ΠšΠΎΠΌΡƒ-Ρ‚ΠΎ Elastic Search. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ SMS ΠΈ/ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠ·Π²ΠΎΠ½ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ. Π₯ΠΎΡ‚ΠΈΠΌ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ скрипты Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Ρ…ΠΎΡ‚ΠΈΠΌ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ сайт ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

ВсСгда ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚) Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ надССмся Π½Π° запрос сообщСства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹. И Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ сообщСства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Balerter Ρƒ сСбя ΡƒΠΆΠ΅ довольно Π΄Π°Π²Π½ΠΎ. ДСсятки скриптов стоят Π½Π° страТС нашСго спокойствия. НадСюсь, эта Ρ€Π°Π±ΠΎΡ‚Π° станСт ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅.

И Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ с вашими Issue ΠΈ PR.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ