ααα»ααααααααααααΆα αΌαα α·αααααΆαααΌαααααΉαα
ααΆααΆααα·αααΆαα ααΆααΆααΆααααααΎαααΆααααα»αααΆαααΌαααααΉααα ααααααααΆαα’αααΈαα½αααΎαα‘αΎα (α¬ααααΌαααΆααα½ααα»α) ααΆααΆαα’αααα»αααΎαααααΆα αα α αΎαααααΎαααΆααα·αααααααααΈα
α αΎαα§αααααααΆα αααΎαααααΌαααΆααααααΎαα‘αΎααααααΆααααΏααααα Alertmanager ααααΈααααααααα’αααΌ Prometheus αα·α vmalert ααααΈαααα»αααα·ααα VictoriaMetrics α ααΆαααΌαααααΉα αα·αααΆαααΌαααααΉα Zabbix αα αααα»α Grafana α ααααααΈαααααααααααααααα½αα―ααα αααα»α bash αα·α Telegram bots αααααΆα URL αα½αα ααα½ααααααααΆαα α αΎαααααΆααα’αααααΆααΎααΆαα’αααΈαα»αα ααΆα αααΎαααα’αααΈααααααααΆαα
ααΎααα
αααα»ααααα»αα αα»αααααααΎαααααΆαααααΎαααααααααΆααααααααα αΌααααααΎαααΆααααααΆααααα»αααααΆα α¬αααα»ααα
αα·α ααΆααα·αα’αΆα
αα
αα½α
ααααΆααααααΎαααΆαααΌαααααΉααααααΆααααααααααα»αααααΆαα α’αααΈβαααβααΎαβα
ααβααΆα αα·αβα’αααΈβαααβααΎαβααΆαβαααα
ααβααΊβαααα·αβαα
βαααααβααΆαβααΆααβαααααα TLDRα αααααΆααααααααααααααααααααΎαα
αα ααΆααααα αΆααααα½α
ααΆβααΌαβααβα αΎαβααΎαβαααβαα βααΆαβααα’βααΆαα½αβααΉαβααΆαβααΌαβααααΉαβαααβααΆαβαααααβαα ααΆααααααααβαα Grafanaα ααΆα ααααα·ααααααΆαα·ααΈααα’αααα»αααα ααΆααααΌαααΆαααααΆαα±ααααααΎαααααααααΆαα―αααααα½αα ααα½αααΌα ααΆ Alertmanager ααΆαα·α αα α α αΎαααΎαααααΆααααααΉαααααααα ααααΆαααααΆααααΈα αααΎαααΆαααααα α αΎααααααΆααααααααα·α ααααα ααΎαα ααααΆαααΆααααα αααΎαα
αα·ααΆαααΆαα ααααααααααΌαααΆαααΆααααΆαααα½αααΆαααααΆααα α»α / ααΎαα‘αΎα XX% α αΎαααΆααα ααΈααααααααΆαα N ααΆααΈααΎαααααααααα ααΉααααααααα»ααα M αααα? ααΆα αΆααααΌα ααΆα’αααα’αΆα ααααΆααΆαα’αα»ααααααΆααΆαα½α Grafana α¬ Alertmanager ααα»ααααααΆαα·αααΆααααα½ααααααα (α¬αααα ααααΆααΆαα·αα’αΆα αα αα½α αααα»ααα·ααα·ααΆαα₯α‘αΌαααααα)
α’αααΈαααΆαααααααα»αααααΆα αα ααααααααΆααααααα α α·αααααΆααααΏαααααΌαααααααΎα‘αΎααααααα’ααααΎαα·ααααααααΈαααααααααααααααΆα α§ααΆα αααααααΆααα
ααΎααα·αα·αααααΎααα·ααααααααΈααΌαααααΆααα·αααααα Clickhouse ααΈα αααααΆααααααααααααααΆααΆαα½ααα·αααααααα½αα ααα½αααΈ Postgres α αΎααααααα α α·αααααΎααΆαααΌαααααΉααα½αα αααααΆα¬αα»αα αα
ααΎαααΆααααααΌαααΌαααααααααΆααααΆααααααααααΆααΆα αααΎααααααΆααααΎααααα»αααΆααα·αα’αααΈααΆααααααα α α·αααααααααΎαα α αΎααααααΆααααααΎαααΆαααααΆααΆαα ααααααααααΈααααΌαααΆα/αααααααΆαααααΌαααααααΆααααααα ααααα·αααΆααααααΌαααΆααααααΎαα
-
α αΌαααααΎααααααα·ααααααααααααααααΆα α§ααΆα ααα Prometheus, Clickhouse, Postgres
-
ααααΎβααΆαβααΌαβααααΉαβαα βααΆαααβαααααβααααΆ - ααα‘αααααΆα, slack, αα
-
αα αααα»αααααΎαααΆαααααΆααα·α ααΆα αααΆααααΆααααΆ αααα»ααα·αα ααααΆαααΆααα·αααααΆααααααααΆααα ααα»αααααααααααΆααααα»αααΆααααααααααααΈα
-
ααααΎαααΆαααααααΈαααΆαααΆααα·ααΆα
-
ααΆαααααΎαα αα α»ααααααααΆαααααααΈαααΆααααα½αααααα·αα αΆαααΆα αα αΆααααααΎαααααΆααααα‘αΎααα·α
-
αααααααΆααααα»αααΆααααααΈααα»αααΆαααααα·ααΈααΆαα½αααααα·αα αΆαααΆα ααααααΎαααααΆααααα‘αΎααα·αααΈααΌαααααα
αααααΈαααααΊαααα αΆαααααα αα α αΎαααααααΆαα·αααΆαααΆαααααΉαααααΌαααααΆαααααααα α ααα»α ααααααααΆααααααΌα ααααααααΆααα α’αααΈααααααααΆαααΊααΌα ααααααΆα
ααΆααα·ααααααΆααααααααααααααα·ααΆααααααααα Balerter ααΆαα αΆααααααΎαα
αααα»αααΉαααααΆααΆααααααΆαααααΆαααααΈα’αααΈα’αααΈαααααΆαααΎαα‘αΎααα ααΈαααα αα αα·ααααααααααΆααααΎαααΆαα (ααΆα αα·αααΆαα ααααα·αααΆααα ααααα ααΆαααααααααΆα αααΎααααααΆααααΆαα’αα·ααααααααα·αααα αααα»αααΉααααααααΉαααααααα)
ααΎααΆααααΎαααΆααααΆαααΌα ααααα ?
α’ααααααααααααααΈααα αααα»α Lua αααα’αααααααΎααααΎαααΆαα αααΆααααΆαα (αα ααΆαα Prometheus, Clickhouse ααα)α α’αααβααα½αβααΆαβα αααΎα α αΎαβααααΎβααΆαβααααααααβαα½αααβααΌα ααααα α αααααΆααααααΎα/αα·αααΆαααΌαααααΉααααααααα½αα ααα½αα Balerter αααα½αααΆααΉαααααΎααΆαααΌαααααΉααα ααΆααααα»αααα·ααααα’αααααΆαααααααα ααΆαααααααα (α’ααΈααα ααα‘αααααΆα ααΆαααΊααααΆαααα)α ααααααΈαααααΌαααΆαααααα·ααααα·αα α ααααααααααΆααααΆααα α αΎα... ααΆααΌαα αααα αΎαααΆα’αααΈααΆααα’αα)
ααΆααΆααΆαααα’αααα»ααααα»αααΆααααα αΆαααΆαα½αα§ααΆα αααα
-- @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
(ααΆααααααΆααααααααα½αααΆααααΌαααΆαααααααα ααΆαααααααααα αααα»α config) -
ααααΎααααΎαα clickhouse
-
αααα»αααααΈααΆαααα α»α ααΎααααα αΆαααΆααα αααα»ααααααα ααα» α αΎαα αα
-
αααααααααααααααααα½αααΆαα½αααα (αααα»αα§ααΆα αααααααΆαα ααΎαα’αΆα ααα½αααΆααααααααα α§ααΆα αααααΈααΌαααααΆααα·αααααα Postgres)
-
ααΎα α¬αα·αααΆαααΌαααααΉααααααααΎααααααααΆαα
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 α α’αααα’αΆα
ααΎαα’αααΈααααααααΆααααα’α·ααα
ααΎααα αααααααααΌαααΆα
-
ααα½ααα·ααααααααΈ
-
ααααα α»α
-
postgres
-
αααααα·ααΈ MySQL
-
ααααΌααααΈα
-
loki
-
-
ααααΎααΆαααΌαααααΉααα ααΆααααα»αααα·α
-
slack
-
ααΌαααα
-
syslog
-
ααΌαααααΉα (ααΆαααΌαααααΉα UI αα ααΎαα»αααααΌαααααααα’ααα)
-
α’ααΈαααα
-
ααΆααα·αα α»αααααα»α
-
-
αααααΎαααααΆα αααααααα’ααααΎαα·ααααααααααα’ααα αααα ααααΌαααΆααα αααααααααα»ααααααααΌαααααΆ S3 α αΎαααααΆααααΆαα ααΆαααΌαααααΉα (
α§ααΆα αααααΆαα½αααΌαααΆα ) -
α’αα»ααααΆαα±ααα’αααααααΆααααααΌααα·αααααααααΆαααααααΈα - ααΆααααα»ααα/αααααααα
-
ααααααααααΆαααααααΆαααααα½αααααα’ααααα αααα»α Lua α αΎαααααΎααΆαα αααα»αααααααΈα (ααΆαααααΆαααΎα αααααΆααα lua ααααΌαααΆααααααααααααααααΆααααααΎααΆαααΆαα½α json, csv)
-
ααααΎααααΎ HTTP ααΈααααααΈαααααα’ααα (αα·αααα½αααΆαααααΎααα ααΆααΆααα·α)
-
ααααα API (αα·αααΆααααΆααα»αααΆαααΌα αααααΎαα ααααΆα)
-
ααΆαα αααααααααααα»ααααααα Prometheus
ααΎα’αααα ααααααΎα’αααΈααα?
ααΆα αααΆααα αΎαααΆα’αααααααΎααααΆαα α αΎαααΎαα ααααΆααααααααΆααααα»αααΆααααααααααααΆαα αΆααααααΎαααααααααΈααααααααΎααΆααααααααααα cron. ααΆααΉαααααΌαααΆαααααΎαα»ααααα v1.0.0
αααα»αα ααααΆααααααααααα·αααααα αα·ααααααΆαα ααα αΆαααΆαααΌαααααΉααααααααααα ααΆα§ααΆα ααα ααααΆααααΆααααααΆααααΆααΉα MongoDBα ααΆαααααααα Elastic αααααΆαααα½αα ααα½αα ααααΎααΆα SMS αα·α/α¬α α ααΌααααααα ααΆααααΌαααααααααα’αααα ααΎαα ααααα½αααΆαααααααΈααα·αααααΉαααααΈα―αααΆαααα»αααααααααα»αααααααααΆααα§ααΆα αααααΈααΌαααααΆααα·αααααααααααα αα ααΈαααα αα ααΎαα ααααΆαααα ααααααααααΆααααα½αααααΎααΆααα»α αα·αα―αααΆααααααΎαααΆααα»ααααααΆααααααααα
ααααΆααααΆαααααααααΆααα’αααΈαα½α) αα ααΈαααααΎαααΉαααα’ααααΎααααΎαααααα ααααααΎααααΈαααααα’αΆαα·ααΆαα±ααααΆαααααΉαααααΌαα α αΎαβαα½αβαα ααααβα²ααβααΉαβαααααβαααΆα
αα αααα»αααα ααααΈααααα·ααααΆα
ααΎαβααααΎ
α αΎαααΌαααααΆααααααΆαα½αααΉααααα αΆ αα·α PR ααααα’αααα
ααααα: www.habr.com