ЛСсна Ρ€Π°Π±ΠΎΡ‚Π° със слоТни сигнали. Или историята Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Balerter

ЛСсна Ρ€Π°Π±ΠΎΡ‚Π° със слоТни сигнали. Или историята Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Balerter

ВсСки ΠΎΠ±ΠΈΡ‡Π° сигналитС.

Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° Π±ΡŠΠ΄Π΅Ρ‚Π΅ увСдомявани, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅Ρ‰ΠΎ сС Π΅ случило (ΠΈΠ»ΠΈ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΎ), ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄Π° сСдитС ΠΈ Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ.

И Π·Π° Ρ‚ΠΎΠ²Π° са създадСни ΠΌΠ½ΠΎΠ³ΠΎ инструмСнти. Alertmanager ΠΎΡ‚ СкосистСмата Prometheus ΠΈ vmalert ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Π°Ρ‚Π° Π³Ρ€ΡƒΠΏΠ° VictoriaMetrics. Π˜Π·Π²Π΅ΡΡ‚ΠΈΡ ΠΈ сигнали Π½Π° Zabbix Π² Grafana. Бамонаписани скриптовС Π² bash ΠΈ Π±ΠΎΡ‚ΠΎΠ²Π΅ Π½Π° Telegram, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Ρ‚ някои URL ΠΈ Π²ΠΈ ΠΊΠ°Π·Π²Π°Ρ‚, Π°ΠΊΠΎ Π½Π΅Ρ‰ΠΎ Π½Π΅ Π΅ Π½Π°Ρ€Π΅Π΄. ΠžΡ‚ всичко ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎ.

НиС, Π² Π½Π°ΡˆΠ°Ρ‚Π° компания, ΡΡŠΡ‰ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ сС Π½Π°Ρ‚ΡŠΠΊΠ½Π°Ρ…ΠΌΠ΅ Π½Π° слоТността, ΠΈΠ»ΠΈ ΠΏΠΎ-скоро Π½Π° Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° създаванС Π½Π° слоТни, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ сигнали. Π’ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ искахмС ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅, Π΅ ΠΏΠΎΠ΄ разфасовката. TLDR: Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ сС появи ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Balerter

Доста дълго Π²Ρ€Π΅ΠΌΠ΅ ΠΆΠΈΠ²Π΅Π΅Ρ…ΠΌΠ΅ Π΄ΠΎΠ±Ρ€Π΅ с Π°Π»Π°Ρ€ΠΌΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π² Grafana. Π”Π°, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΉ-добрият Π½Π°Ρ‡ΠΈΠ½. Π’ΠΈΠ½Π°Π³ΠΈ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° някои спСциализирани Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Alertmanager. И Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π°Ρ…ΠΌΠ΅ към прСмСстванС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ вСднъТ. И Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ ΠΌΠ°Π»ΠΊΠΎ искахмС ΠΏΠΎΠ²Π΅Ρ‡Π΅.

Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π΅ ΠΏΠ°Π΄Π½Π°Π»Π°/ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π° с XX% ΠΈ Π΅ Π±ΠΈΠ»Π° Ρ‚Π°ΠΌ Π·Π° N ΠΌΠΈΠ½ΡƒΡ‚ΠΈ Π² сравнСниС с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ M часа? ИзглСТда, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° с Grafana ΠΈΠ»ΠΈ Alertmanager, Π½ΠΎ Π½Π΅ Π΅ съвсСм лСсно. (Или ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅ Π΅ възмоТно, няма Π΄Π° ΠΊΠ°ΠΆΠ° сСга)

НСщата стават ΠΎΡ‰Π΅ ΠΏΠΎ-слоТни, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ трябва Π΄Π° сС Π²Π·Π΅ΠΌΠ΅ въз основа Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΠΆΠΈΠ²ΠΎ:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ Π΄Π²Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° Clickhouse, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΈ сравнявамС с някои Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Postgres ΠΈ Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π‘ΠΈΠ³Π½Π°Π» ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Π·

НатрупахмС доста ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ТСлания, Π·Π° Π΄Π° обмислим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си. И Ρ‚ΠΎΠ³Π°Π²Π° сС ΠΎΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅ Π΄Π° ΡΡŠΡΡ‚Π°Π²ΠΈΠΌ ΠΏΡŠΡ€Π²ΠΈΡ списък с изисквания/Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Ρ‚Π°Π·ΠΈ услуга, ΠΊΠΎΠΉΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ създадСн.

  • Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ. НапримСр Prometheus, Clickhouse, Postgres

  • ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° сигнали Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ - telegram, slack ΠΈ Π΄Ρ€.

  • Π² процСса Π½Π° мислСнС стана ясно, Ρ‡Π΅ Π½Π΅ искам Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ описаниС, Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° писанС Π½Π° скриптовС

  • изпълнСниС Π½Π° скриптовС ΠΏΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ

  • лСсно Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° скриптовС Π±Π΅Π· рСстартиранС Π½Π° услугата

  • способността ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ функционалността, Π±Π΅Π· Π΄Π° сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π° услугата ΠΎΡ‚ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅

Π’ΠΎΠ·ΠΈ списък Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π΅Π½ ΠΈ Π½Π°ΠΉ-вСроятно Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΡ‡Π΅Π½. Някои Ρ‚ΠΎΡ‡ΠΊΠΈ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ…Π°, Π΄Ρ€ΡƒΠ³ΠΈ умряха. Всичко Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚Π°ΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π²Π° историята Π½Π° Balerter.

ЛСсна Ρ€Π°Π±ΠΎΡ‚Π° със слоТни сигнали. Или историята Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Balerter

Π©Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° опиша Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΊΠ°ΠΊΠ²ΠΎ сС случи Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ. (Π”Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ краят. Има ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΡ‚Π΅. Π©Π΅ спра Π΄ΠΎ днСс)

Как дСйства тя?

Π’ΠΈΠ΅ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ скрипт Π² Lua, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ заявки (Π΄ΠΎ Prometheus, Clickhouse ΠΈ Ρ‚.Π½.). ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ ΠΈ сравняватС. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅/ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ някакъв Π²ΠΈΠ΄ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Бамият Balerter Ρ‰Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ извСстиС Π΄ΠΎ ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ стС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π»ΠΈ (ΠΈΠΌΠ΅ΠΉΠ», Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ°, 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, Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π² рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² тСстовС)

  • ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅

  • ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ» Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ clickhouse с ΠΈΠΌΠ΅Ρ‚ΠΎ ch1 (самата Π²Ρ€ΡŠΠ·ΠΊΠ° Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π° Π² конфигурацията)

  • ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Ρ‚Π΅ заявка Π΄ΠΎ clickhouse

  • Π² случай Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π²Π°ΠΌΠ΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°ΠΌΠ΅

  • сравнСтС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ заявката с константа (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΠΆΠΈΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°Π·ΠΈ стойност, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½Π° 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')

Π‘Ρ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ°:

  • посочСтС ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° скрипта, Π·Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ написан Ρ‚Π΅ΡΡ‚ΡŠΡ‚

  • ΠΈΠΌΠ΅ Π½Π° тСст (Π·Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅)

  • ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ тСстовия ΠΌΠΎΠ΄ΡƒΠ»

  • ΠΊΠ°Π·Π²Π°ΠΌΠ΅ какъв Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ трябва Π΄Π° бъдС Π²ΡŠΡ€Π½Π°Ρ‚ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° заявка към clickhouse ch1

  • провСрявамС Π΄Π°Π»ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ (Π³Ρ€Π΅ΡˆΠΊΠ°) rps-min-limit с ΡƒΠΊΠ°Π·Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΎ

  • ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° rps-min-limit Π½Π΅ Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ (успСх)

Какво Π΄Ρ€ΡƒΠ³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Balerter?

Π©Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° засСгна Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅, спорСд ΠΌΠ΅Π½, умСния Π½Π° Balerter. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ всичко ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π½Π° официалния сайт https://balerter.com

  • ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚

    • clickhouse

    • Postgres

    • MySQL

    • ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π΅ΠΉ

    • Π›ΠΎΠΊΠΈ

  • ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° извСстия Π΄ΠΎ ΠΊΠ°Π½Π°Π»ΠΈ

    • застой

    • Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ°

    • Syslog

    • увСдомяванС (извСстия ΠΎΡ‚ потрСбитСлския интСрфСйс Π½Π° вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€)

    • Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Π° ΠΏΠΎΡ‰Π°

    • Ρ€Π°Π·Π΄ΠΎΡ€

  • ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ въз основа Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‡Π΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎ с S3 Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Ρ‚Π΅ към извСстията (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ със снимки)

  • Π²ΠΈ позволява Π΄Π° обмСнятС Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ скриптовС - Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡/стойност

  • Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ свои собствСни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Lua ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π² скриптовС (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ lua Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ сС прСдоставят Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с json, csv)

  • ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΉΡ‚Π΅ HTTP заявки ΠΎΡ‚ Π²Π°ΡˆΠΈΡ‚Π΅ скриптовС (ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС)

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

  • Скспортира ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Prometheus

Какво Π΄Ρ€ΡƒΠ³ΠΎ Π±ΠΈΡ…Ρ‚Π΅ искали Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅?

Π’Π΅Ρ‡Π΅ Π΅ ясно, Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΈ Π½ΠΈΠ΅ искамС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΌΠ΅ стартиранСто Π½Π° скриптовС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ синтаксиса Cron. Π’ΠΎΠ²Π° Ρ‰Π΅ бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ вСрсия v1.0.0

Π‘ΠΈΡ… искал Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ Π·Π° доставка Π½Π° извСстия. НапримСр, някой със сигурност Ρ‰Π΅ пропуснС MongoDB. Еластично Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π·Π° някои. Π˜Π·ΠΏΡ€Π°Ρ‰Π°ΠΉΡ‚Π΅ SMS ΠΈ/ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°ΠΉΡ‚Π΅ обаТдания Π΄ΠΎ мобилния си Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½. ИскамС Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ скриптовС Π½Π΅ само ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π½ΠΎ ΠΈ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка искамС ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° потрСбитСля уСбсайт ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° докумСнтация Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Някой Π²ΠΈΠ½Π°Π³ΠΈ пропуска Π½Π΅Ρ‰ΠΎ) Π’ΡƒΠΊ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ Π½Π° исканСто Π½Π° общността, Π·Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈΡ‚Π΅. И с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° общността Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° всичко

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

НиС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Balerter Имам Π³ΠΎ ΠΎΡ‚ доста Π²Ρ€Π΅ΠΌΠ΅. ДСсСтки скриптовС пазят спокойствиСто Π½ΠΈ. Надявам сС Ρ‚Π°Π·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π΄Π° бъдС ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π½Π° някой Π΄Ρ€ΡƒΠ³.

И Π΄ΠΎΠ±Ρ€Π΅ дошли с вашия ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ PR.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€