Hana maʻalahi me nā makaʻala paʻakikī. A i ʻole ka moʻolelo o ka hana ʻana o Balerter

Hana maʻalahi me nā makaʻala paʻakikī. A i ʻole ka moʻolelo o ka hana ʻana o Balerter

Makemake nā kānaka a pau i nā makaʻala.

ʻOiaʻiʻo, ʻoi aku ka maikaʻi o ka hoʻomaopopo ʻana i ka wā i hana ʻia (a i hoʻopaʻa ʻia paha) ma mua o ka noho ʻana a nānā i nā kiʻi a nānā i nā anomalies.

A ua hana ʻia nā mea hana he nui no kēia. Alertmanager mai ka Prometheus ecosystem a me vmalert mai ka hui huahana VictoriaMetrics. Nā leka hoʻomaopopo a Zabbix ma Grafana. Nā palapala kākau ponoʻī i ka bash a me Telegram bots e huki pinepine i kekahi URL a haʻi iā ʻoe inā he hewa kekahi. Nui nā mea a pau.

ʻO mākou, i kā mākou hui, ua hoʻohana pū mākou i nā hoʻonā ʻokoʻa a hiki i ka holo ʻana i ka paʻakikī, a i ʻole, ka hiki ʻole ke hana i nā mākaʻikaʻi paʻakikī, composite. ʻO ka mea a mākou i makemake ai a me nā mea a mākou i hana ai ma lalo o ka ʻoki. TLDR: ʻO kēia ke ʻano i ʻike ʻia ai ka papahana open source Balerter

No ka manawa lōʻihi ua noho maikaʻi mākou me nā mākaʻikaʻi i hoʻonohonoho ʻia ma Grafana. ʻAe, ʻaʻole kēia ke ala maikaʻi loa. Manaʻo mau ʻia e hoʻohana i kekahi mau hoʻonā kūikawā, e like me Alertmanager. A ua nānā pū mākou i ka neʻe ʻana ma mua o hoʻokahi manawa. A laila, liʻiliʻi, makemake mākou i nā mea hou aku.

E haʻi i ka wā i hāʻule a piʻi aʻe kekahi pakuhi e XX% a aia ma laila no N mau minuke i hoʻohālikelike ʻia me ka manawa mua o nā hola M? Me he mea lā hiki iā ʻoe ke hoʻāʻo e hoʻokō i kēia me Grafana a i ʻole Alertmanager, akā ʻaʻole maʻalahi. (A i ʻole hiki ʻole, ʻaʻole wau e ʻōlelo i kēia manawa)

ʻOi aku ka paʻakikī o nā mea i ka wā e pono ai ka hoʻoholo makaʻala ma muli o ka ʻikepili mai nā kumu like ʻole. Laʻana ola:

Nānā mākou i ka ʻikepili mai ʻelua mau waihona Clickhouse, a laila hoʻohālikelike me kekahi mau ʻikepili mai Postgres, a hoʻoholo i kahi makaʻala. Hōʻailona a hoʻopau paha

Ua hōʻiliʻili mākou i nā makemake like ʻole no mākou e noʻonoʻo ai i kā mākou hoʻoholo. A laila ua ho'āʻo mākou e hōʻuluʻulu i ka papa inoa mua o nā koi / hiki o kēia lawelawe, ʻaʻole i hana ʻia.

  • komo i nā kumu ʻikepili like ʻole. No ka laʻana, Prometheus, Clickhouse, Postgres

  • e hoʻouna i nā leka i nā ala like ʻole - telegram, slack, etc.

  • i ke kaʻina o ka noʻonoʻo, ua maopopo iaʻu ʻaʻole makemake wau i kahi wehewehe wehewehe, akā ʻo ka hiki ke kākau i nā palapala

  • e holo ana i nā palapala ma kahi papa manawa

  • hoʻohou maʻalahi o nā palapala me ka hoʻomaka hou ʻana i ka lawelawe

  • ka hiki ke hoʻonui i ka hana me ke kūkulu hou ʻana i ka lawelawe mai nā code kumu

He pili kēia papa inoa a ʻaʻole pololei loa. Ua loli kekahi mau wahi, ua make kekahi. ʻO nā mea a pau e like me ka mea maʻamau.

ʻOiaʻiʻo, ʻo ia ka mea i hoʻomaka ai ka mōʻaukala o Balerter.

Hana maʻalahi me nā makaʻala paʻakikī. A i ʻole ka moʻolelo o ka hana ʻana o Balerter

E ho'āʻo wau e wehewehe pōkole i ka mea i hana i ka hopena a pehea e hana ai. (ʻAe, ʻoiaʻiʻo, ʻaʻole kēia ka hopena. Nui nā hoʻolālā no ka hoʻomohala ʻana i nā huahana. E kū wau i kēia lā)

Pehea ia hana?

Kākau ʻoe i kahi palapala ma Lua kahi āu e hoʻouna pololei ai i nā noi (i Prometheus, Clickhouse, etc.). Loaʻa iā ʻoe nā pane a hana a hoʻohālikelike iā lākou. A laila ho'ā a ho'opau i kekahi 'ano makaala. E hoʻouna ʻo Balerter i kahi leka i nā kahawai āu i hoʻonohonoho ai (Email, telegram, slack, etc.). Hoʻokō ʻia ka palapala i nā manawa kikoʻī. A... ma ka laulā, ʻo ia wale nō)

ʻOi aku ka maikaʻi e hōʻike me kahi laʻana:

-- @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 

He aha ka hana ma ʻaneʻi:

  • hōʻike mākou e hoʻokō ʻia kēia palapala i kēlā me kēia 10 kekona

  • hōʻike i ka inoa o ka palapala (no ka API, no ka hōʻike ʻana i nā lāʻau, no ka hoʻohana ʻana i nā hoʻāʻo)

  • hoʻohui i ka module no ka hoʻopuka ʻana i nā lāʻau

  • hoʻohui i kahi module e komo i ka clickhouse me ka inoa ch1 (ua hoʻonohonoho ʻia ka pilina ma ka config)

  • hoʻouna i kahi noi i clickhouse

  • inā he hewa, hōʻike mākou i kahi leka ma ka log a puka

  • e hoʻohālikelike i ka hopena o ka nīnau me ka mea mau (ma kahi laʻana ola, hiki iā mākou ke loaʻa kēia waiwai, no ka laʻana, mai ka waihona Postgres)

  • hoʻā a hoʻopau paha i ka makaʻala me ka ID rps-min-limit

  • e loaʻa iā ʻoe kahi leka inā ua loli ke kūlana makaʻala

He maʻalahi a hoʻomaopopo ʻia ka laʻana. Eia naʻe, ʻoiaʻiʻo, ma ke ola maoli hiki ke lōʻihi a paʻakikī nā palapala. He mea maʻalahi ka huikau a hana hewa.

No laila, ua oʻo ka makemake kūpono - hiki iā ʻoe ke kākau i nā hoʻokolohua no kāu mau palapala. A ma ka mana v0.4.0 ua ʻike ʻia kēia.

Hoʻāʻo palapala

Ka laʻana hoʻāʻo no kā mākou palapala mai ka laʻana ma luna:

-- @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')

ʻO kēlā me kēia ʻanuʻu:

  • hōʻike i ka inoa o ka palapala i kākau ʻia ai ka hōʻike

  • inoa hoʻāʻo (no nā lāʻau)

  • hoʻohui i ka module hoʻāʻo

  • ʻōlelo mākou i ka hopena e hoʻihoʻi ʻia no kahi noi kikoʻī i ka clickhouse ch1

  • nānā mākou ua kāhea ʻia ka makaʻala (hewa) rps-min-limit me ka memo i ʻōlelo ʻia

  • e nānā ʻaʻole i pio ka makaʻala rps-min-limit (kūpono)

He aha hou aʻe e hiki ai iā Balerter ke hana?

E ho'āʻo wau e hoʻopā i ka mea nui loa, i koʻu manaʻo, nā mākau Balerter. Hiki iā ʻoe ke ʻike i nā mea āpau ma ka pūnaewele official https://balerter.com

  • loaa ikepili mai

    • hale kaomi

    • postgres

    • mysql

    • Prometheus

    • loki

  • hoʻouna i nā leka hoʻomaopopo i nā kahawai

    • hoʻomaha

    • telegram

    • syslog

    • hoʻomaopopo (nā leka UI ma kāu kamepiula)

    • mail

    • ke kū'ē

  • e kūkulu i nā kiʻi e pili ana i kāu ʻikepili, e hoʻouka i ke kiʻi i kahi waihona S3 kūpono a hoʻopili i nā leka hoʻomaopopo (Laʻana me nā kiʻi)

  • hiki iā ʻoe ke hoʻololi i ka ʻikepili ma waena o nā palapala - global Key/Value storage

  • E kākau i kāu mau hale waihona puke ponoʻī ma Lua a hoʻohana iā lākou ma nā palapala (ma ka paʻamau, hoʻolako ʻia nā hale waihona lua no ka hana ʻana me json, csv)

  • hoʻouna i nā noi HTTP mai kāu mau palapala (a loaʻa nā pane, ʻoiaʻiʻo)

  • hāʻawi i kahi API (ʻaʻole i like me ka hana e like me kā mākou makemake)

  • hoʻokuʻu aku i nā ana ma ke ʻano Prometheus

He aha hou kāu e makemake ai e hana?

Ua ʻike mua ʻia nā mea hoʻohana a makemake mākou i ka hiki ke hoʻokele i ka hoʻomaka ʻana o nā palapala me ka hoʻohana ʻana i ka syntax cron. E hana ʻia kēia ma mua o ka mana v1.0.0

Makemake au e kākoʻo i nā kumu ʻikepili hou aʻe a me nā ala hoʻolaha hoʻolaha. No ka laʻana, e haʻalele kekahi iā MongoDB. Elastic Huli no kekahi. E hoʻouna i ka SMS a/a i ʻole e kelepona i kāu kelepona paʻalima. Makemake mākou e hiki ke loaʻa nā palapala mai nā faila wale nō, akā, no ka laʻana, mai kahi waihona. I ka hopena, makemake mākou i kahi pūnaewele hoʻohana ʻoi aku ka maikaʻi a me nā palapala ʻoi aku ka maikaʻi no ka papahana.

Ke nalo nei kekahi i kekahi mea) Eia mākou ke hilinaʻi nei i ka noi o ke kaiāulu i mea e hoʻonohonoho pono ai i nā mea nui. A i ke kōkua o ke kaiāulu e hoʻomaopopo i nā mea a pau

I ka hopena

Hoʻohana mākou Balerter Ua loaʻa iaʻu no kekahi manawa i kēia manawa. ʻO ka nui o nā palapala e mālama i ko mākou maluhia o ka noʻonoʻo. Manaʻo wau e pono kēia hana i kekahi.

A hoʻokipa me kāu Puka a me PR.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka