Umsebenzi olula kunye nezilumkiso ezinzima. Okanye imbali yokudalwa kweBalerter

Umsebenzi olula kunye nezilumkiso ezinzima. Okanye imbali yokudalwa kweBalerter

Wonke umntu uyazithanda izilumkiso.

Ewe, kungcono kakhulu ukwaziswa xa kukho into eyenzekileyo (okanye ilungisiwe) kunokuhlala ujonge iigrafu kwaye ujonge izinto ezingaqhelekanga.

Kwaye izixhobo ezininzi zidalwe oku. Umphathi we-Alert ovela kwi-ecosystem ye-Prometheus kunye ne-vmalert esuka kwiqela lemveliso ye-VictoriaMetrics. Izaziso zeZabbix kunye nezilumkiso eGrafana. Izikripthi ezizibhalayo kwi-bash kunye neTelegram bots ezihlala zitsala i-URL ethile kwaye ikuxelele ukuba kukho into engalunganga. Ininzi yayo yonke into.

Thina, kwinkampani yethu, siphinde sasebenzisa izisombululo ezahlukeneyo de sabalekela kubunzima, okanye, kunoko, akunakwenzeka ukudala izilumkiso ezinzima, ezidibeneyo. Into ebesiyifuna kwaye esigqibe ukuyenza ingaphantsi kwe-cut. I-TLDR: Le yindlela eyavela ngayo iprojekthi yomthombo ovulekileyo Balerter

Ixesha elide besihlala kakuhle nezilumkiso ezilungiselelwe eGrafana. Ewe, le asiyondlela ilungileyo. Kuhlala kucetyiswa ukuba kusetyenziswe izisombululo ezikhethekileyo, ezinje ngeAlertmanager. Kwaye sikwajonge ekuqhubeni ngaphezulu kwesinye. Kwaye ke, kancinci kancinci, besifuna ngaphezulu.

Yitsho xa itshathi ethile iwile / inyuke nge-XX% kwaye ikhona imizuzu engama-N xa kuthelekiswa nexesha elidlulileyo leeyure ze-M? Kubonakala ngathi ungazama ukwenza oku ngeGrafana okanye iAlertmanager, kodwa akukho lula. (Okanye akunakwenzeka, andizukutsho ngoku)

Izinto ziba nzima ngakumbi xa isigqibo sokulumkisa kufuneka senziwe ngokusekelwe kwidatha evela kwimithombo eyahlukeneyo. Umzekelo ophilayo:

Sijonga idatha evela kwii-database ezimbini ze-Clickhouse, uze uyithelekise kunye nedatha evela kwi-Postgres, kwaye uthathe isigqibo malunga nesilumkiso. Umqondiso okanye urhoxise

Siye saqokelela iminqweno emininzi efanayo ukuze sicinge ngesigqibo sethu. Kwaye ke sizame ukuqokelela uluhlu lokuqala lweemfuno / amandla ale nkonzo, engekadalwa.

  • ukufikelela kwimithombo eyahlukeneyo yedatha. Umzekelo, Prometheus, Clickhouse, Postgres

  • thumela izilumkiso kumajelo ahlukeneyo-i-telegram, i-slack, njl.

  • kwinkqubo yokucinga, kwacaca ukuba andizange ndifune inkcazo yokuchaza, kodwa ukukwazi ukubhala izikripthi.

  • ukuqhuba izikripthi kwishedyuli

  • uhlaziyo olulula lwezikripti ngaphandle kokuphinda uqalise inkonzo

  • ukukwazi ngandlela ithile ukwandisa ukusebenza ngaphandle kokwakha kwakhona inkonzo kwiikhowudi zemvelaphi

Olu luhlu luqikelelweyo kwaye kusenokwenzeka ukuba aluchanekanga kakhulu. Amanye amanqaku atshintshile, amanye afa. Yonke into injengesiqhelo.

Ngokwenyani, le yindlela eyaqala ngayo imbali yeBalerter.

Umsebenzi olula kunye nezilumkiso ezinzima. Okanye imbali yokudalwa kweBalerter

Ndiza kuzama ukuchaza ngokufutshane oko kwenzekayo ekugqibeleni kunye nendlela esebenza ngayo. (Ewe, kunjalo, oku akusosiphelo. Zininzi izicwangciso zophuhliso lwemveliso. Ndiza kumisa namhlanje)

Isebenza njani?

Ubhala iskripthi kwiLua apho uthumela khona izicelo (kuPrometheus, Clickhouse, njl.). Ufumana iimpendulo kwaye ngandlela thile uziqhube kwaye uzithelekise. Emva koko uvule/ucime uhlobo oluthile lwesivuseleli. I-Balerter ngokwayo iya kuthumela isaziso kumajelo oye wawaqwalasela (i-imeyile, itelegram, i-slack, njl.). Iscript siphunyezwa ngamaxesha athile. Kwaye... ngokubanzi, kuphelele apho)

Kungcono ukubonisa ngomzekelo:

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

Kwenzeka ntoni apha:

  • sibonisa ukuba esi script kufuneka senziwe rhoqo ngemizuzwana eyi-10

  • bonisa igama loshicilelo (le-API, yokubonisa kwilog, ukusetyenziswa kwiimvavanyo)

  • qhagamshela umnqongo wokukhupha iilog

  • qhagamshela umnqongo wokufikelela kwindawo yokucofa enegama ch1 (uxhulumaniso ngokwalo luqwalaselwe kuqwalaselo)

  • thumela isicelo kwi-clickhouse

  • kwimeko yempazamo, sibonisa umyalezo kwilog kwaye uphume

  • thelekisa isiphumo sombuzo ngokuqhubekayo (kumzekelo ophilayo, singafumana eli xabiso, umzekelo, kwisiseko sedatha sasePostgres)

  • yenza okanye uvale isivuseleli nge-ID rps-min-limit

  • uya kufumana isaziso ukuba imeko yesilumkiso itshintshile

Umzekelo ulula kwaye uyaqondakala. Nangona kunjalo, ewe, kubomi bokwenyani imibhalo inokuba nde kwaye intsonkothe. Kulula ukubhideka kwaye wenze iimpazamo.

Ngoko ke, umnqweno onengqiqo ukhulile - ukukwazi ukubhala iimvavanyo kwizikripthi zakho. Kwaye kwinguqulelo v0.4.0 oku kwavela.

Ukuvavanya izikripthi

Uvavanyo lomzekelo wesikripthi sethu kumzekelo ongasentla:

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

Inyathelo nenyathelo:

  • bonisa igama lescript esibhalelwe lona uvavanyo

  • igama lovavanyo (lweelog)

  • qhagamshela imodyuli yovavanyo

  • sixela ukuba yeyiphi isiphumo ekufuneka ibuyiswe kwisicelo esithile kwi-clickhouse ch1

  • sijonga ukuba isilumkiso (impazamo) rps-min-umda ngomyalezo ochaziweyo ubiziwe

  • khangela ukuba isilumkiso se-rps-min-mda khange sivalwe (impumelelo)

Yintoni enye enokwenziwa nguBalerter?

Ndiza kuzama ukuchukumisa okona kubaluleke kakhulu, ngokombono wam, izakhono zeBalerter. Ungabona yonke into ngokweenkcukacha kwiwebhusayithi esemthethweni https://balerter.com

  • fumana idata kwi

    • indawo yokucofa

    • postgres

    • mysql

    • prometheus

    • loki

  • thumela izaziso kumajelo

    • ukulahla

    • yilelegram

    • syslog

    • yazisa (izaziso ze-UI kwikhompyuter yakho)

    • email

    • ukungavisisani

  • Yakha iigrafu ngokusekelwe kwidatha yakho, layisha umfanekiso kwi-S3 yokugcina ehambelanayo kwaye uyinamathisele kwizaziso (Umzekelo ngemifanekiso)

  • ikuvumela ukuba utshintshiselane ngedatha phakathi kwezikripthi - iSitshixo sehlabathi / ugcino lwexabiso

  • bhala awakho amathala kwiLua kwaye uwasebenzise kwizikripthi (ngokungagqibekanga, iilayibrari zelua zibonelelwe ukusebenza ngejson, csv)

  • thumela izicelo zeHTTP kwizikripthi zakho (kwaye ufumane iimpendulo, kunjalo)

  • inikeza i-API (ayikasebenzi ngendlela esingathanda ngayo)

  • ithumela ngaphandle iimetrics kwifomathi yePrometheus

Yintoni enye ongathanda ukuyenza?

Sele kucacile ukuba abasebenzisi kwaye sifuna ukukwazi ukulawula ukuqaliswa kwezikripthi usebenzisa i-syntax Cron. Oku kuya kwenziwa phambi kwenguqulelo v1.0.0

Ndingathanda ukuxhasa imithombo yedatha engaphezulu kunye namajelo okuhanjiswa kwesaziso. Umzekelo, umntu ngokuqinisekileyo uya kukhumbula iMongoDB. Ukukhangela kwe-Elastic kwabanye. Thumela iSMS kunye/okanye ufowunele kwifowuni yakho ephathekayo. Sifuna ukukwazi ukufumana izikripthi kungekhona kuphela kwiifayile, kodwa kwakhona, umzekelo, kwisiseko sedatha. Ekugqibeleni, sifuna iwebhusayithi esebenziseka lula ngakumbi kunye namaxwebhu angcono eprojekthi.

Umntu uhlala elahlekile into ethile) Apha sithembele kwisicelo soluntu sokubeka izinto eziphambili ngokuchanekileyo. Kwaye kuncedo loluntu ukuqonda yonke into

Ekugqibeleni

Sisebenzisa Balerter Bendinayo ixesha elide ngoku. Izikripthi ezininzi zikhusela uxolo lwethu lwengqondo. Ndiyathemba ukuba lo msebenzi uya kuba luncedo komnye umntu.

Kwaye wamkelekile ngoMba wakho kunye nePR.

umthombo: www.habr.com

Yongeza izimvo