Shaqo fudud oo leh digniino adag. Ama taariikhda abuurkii Balerter

Shaqo fudud oo leh digniino adag. Ama taariikhda abuurkii Balerter

Qof kastaa wuu jecel yahay digniinaha.

Dabcan, waxa aad uga wanaagsan in la ogaysiiyo marka ay wax dhacaan (ama la hagaajiyo) intii la fadhiisan lahaa oo la eegi lahaa garaafyada oo la raadin lahaa cillado.

Qalab badan ayaana loo sameeyay tan. Maamulaha digniinta ee nidaamka deegaanka Prometheus iyo vmalert oo ka socda kooxda wax soo saarka ee VictoriaMetrics. Ogeysiinta Zabbix iyo ogeysiisyada gudaha Grafana. Qoraallo iskood isku qoray oo ku jira bash iyo bots Telegram kuwaas oo si xilliyo ah u soo jiida URL oo kuu sheega haddii ay wax khaldan yihiin. Wax badan oo ka mid ah.

Anaga, shirkaddeena, sidoo kale waxaan isticmaalnay xalal kala duwan ilaa aan ku dhex orno kakanaanta, ama, halkii, suurtagal maaha abuurista digniino isku dhafan. Wixii aanu rabnay iyo wixii aanu ku dhammaynay ayaa ka hooseeya goynta. TLDR: Tani waa sida mashruuca isha furan uu u muuqday Balerter

Muddo dheer waxaan si fiican ugu noolayn digniinaha lagu habeeyay Grafana. Haa, tani maaha habka ugu fiican. Had iyo jeer waxaa lagu talinayaa in la isticmaalo xalal gaar ah, sida Alertmanager. Waxaan sidoo kale eegnay inaan u dhaqaaqno wax ka badan hal mar. Ka dibna, in yar, waxaan rabnay wax badan.

Sheeg marka jaantus gaar ah uu hoos u dhacay/kordhay XX% oo uu jiray daqiiqado N marka loo eego saacadihii hore ee M? Waxay u muuqataa inaad isku dayi karto inaad tan ku hirgaliso Grafana ama Alertmanager, laakiin ma fududa. (Ama waxaa laga yaabaa inaysan suurtagal ahayn, hadda ma dhihi doono)

Arrimuhu way sii adkaanayaan marka go'aanka digniinta lagu saleeyo xogta ilo kala duwan. Tusaalaha tooska ah:

Waxaan ka hubinaa xogta laba kayd oo Clickhouse ah, ka dibna barbar dhig xogta qaar ka mid ah Postgres, oo go'aan ka gaarno digniin. Signal ama tirtir

Waxa aanu ururinay rabitaano badan oo la mid ah si aanu uga fikirno go'aankayaga. Kadibna waxaan isku daynay inaan soo koobno ​​liiska ugu horreeya ee shuruudaha / awoodaha adeeggan, oo aan weli la abuurin.

  • galaan ilo xogeed oo kala duwan. Tusaale ahaan, Prometheus, Clickhouse, Postgres

  • u dir digniino kanaalo kala duwan - telegram, slack, iwm.

  • Inta lagu jiro habka fekerka, waxaa caddaatay inaanan rabin sharraxaad caddayn ah, laakiin awoodda qorista qoraallada

  • qoraallada ku socda jadwal

  • cusboonaysiinta fudud ee qoraallada adiga oo aan dib u bilaabin adeegga

  • Awood u leh in si uun loo ballaariyo shaqeynta iyada oo aan dib loo dhisin adeegga laga soo bilaabo koodhadhka isha

Liiskani waa qiyaas waxana ay u badan tahay in aanu sax ahayn. Qodobbada qaar ayaa isbeddelay, qaarna way dhinteen. Wax walba waa sidii caadiga ahayd.

Dhab ahaantii, tani waa sida taariikhda Balerter ku bilaabatay.

Shaqo fudud oo leh digniino adag. Ama taariikhda abuurkii Balerter

Waxaan isku dayi doonaa inaan si kooban u qeexo wixii dhacay dhamaadkii iyo sida ay u shaqeyso. (Haa, dabcan, tani maaha dhamaadka. Waxaa jira qorshayaal badan oo loogu talagalay horumarinta alaabta. Waxaan joojin doonaa maanta)

Sidee u shaqeeyaan?

Waxaad ku qortaa qoraal gudaha Lua halkaas oo aad si cad ugu dirto codsiyada (Prometheus, Clickhouse, iwm.). Waxaad helaysaa jawaabo oo si uun baad uga baaraandegtaa oo is barbar dhig. Dabadeed dami/dami nooc ka mid ah digniinta. Balerter laftiisa ayaa ogeysiin u diri doona kanaalada aad habaysay (Email, telegram, slack, iwm.). Qoraalka waxaa lagu fuliyaa waqtiyo cayiman. Iyo... guud ahaan, taasi waa dhammaan)

Way fiicantahay in lagu muujiyo tusaale:

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

Maxaa halkan ka socda:

  • waxaanu tilmaamaynaa in qoraalkan la fuliyo 10kii ilbiriqsi kasta

  • Tilmaan magaca qoraalka (ee API, si loogu soo bandhigo diiwaanka, loogu isticmaalo imtixaannada)

  • ku xidhid moduleka si aad u soo saarto logyada

  • ku xidh module si aad u gasho guriga gujin ee magaca ch1 (xidhiidhka laftiisa ayaa lagu habeeyey config)

  • codsi u dir clickhouse

  • Haddii ay dhacdo qalad, waxaan ku soo bandhignaa fariin log iyo bixitaan

  • barbar dhig natiijada weydiinta mid joogto ah (tusaale nool, waxaan ka heli karnaa qiimahan, tusaale ahaan, xogta Postgres)

  • karti ama dami digniinta aqoonsiga rps-min-limit

  • waxaad heli doontaa ogeysiin haddii heerka feejignaanta uu isbedelay

Tusaalaha waa mid fudud oo la fahmi karo. Si kastaba ha ahaatee, dabcan, qoraallada nolosha dhabta ah waxay noqon karaan kuwo aad u dheer oo adag. Way fududahay in la jahawareeriyo oo aad khalad samayso.

Sidaa darteed, rabitaan macquul ah ayaa qaan gaadhay - si aad u awooddo inaad u qorto imtixaannada qoraalladaada. Iyo nooca v0.4.0 tani waxay u muuqatay.

Qoraalada tijaabada

Imtixaanka tusaalaha qoraalkayaga ee tusaalaha sare:

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

Tallaabooyinka:

  • Tilmaan magaca qoraalka imtixaanku u qoran yahay

  • magaca tijaabada (loogu talagalay)

  • isku xidh moduleka imtixaanka

  • waxaanu nidhi waxa natiijada lagu soo celinayo codsi gaar ah oo loo dirayo clickhouse ch1

  • Waxaan hubineynaa in digniinta (qaladka) rps-min-limit ee fariinta la cayimay la soo wacay

  • hubi in digniinta rps-min-limit aanu naafo ahayn (guul)

Maxaa kale oo Balerter samayn karaa?

Waxaan isku dayi doonaa inaan taabto kuwa ugu muhiimsan, fikradayda, xirfadaha Balerter. Waxaad ka arki kartaa wax walba si faahfaahsan website-ka rasmiga ah https://balerter.com

  • xogta ka hel

    • clickhouse

    • postgres

    • MySQL

    • socodsiinta

    • loki

  • ogeysiis u dir kanaalada

    • gooyay

    • telegram

    • syslog

    • ogeysiin (Ogaysiisyada UI ee kumbuyuutarkaaga)

    • email

    • khilaafaad

  • dhis garaafyo ku salaysan xogtaada, ku dheji sawirka kaydinta ku habboon S3 oo ku dheji ogeysiisyada (Tusaale sawiro leh)

  • Waxay kuu ogolaanaysaa inaad ku beddesho xogta u dhaxaysa qoraallada - kaydinta furaha/qiimaha caalamiga ah

  • ku qor maktabadahaaga Lua oo u isticmaal qoraallo (sida caadiga ah, Lua maktabadaha waxaa loo keenay la shaqaynta json, csv)

  • Codsiyada HTTP ka soo dir qoraaladaada (oo hel jawaabaha, dabcan)

  • waxay bixisaa API (wali uma shaqayn sidii aan jeclaan lahayn)

  • dhoofinta metrics qaab Prometheus

Maxaa kale oo aad jeclaan lahayd inaad awooddo?

Way caddahay in dadka isticmaala iyo waxaan rabnaa awoodda lagu xakameynayo bilaabista qoraallada iyadoo la adeegsanayo syntax text. Tan waxa la samayn doonaa ka hor nooca v1.0.0

Waxaan jeclaan lahaa inaan taageero ilo xog badan iyo kanaalada gaarsiinta ogeysiiska. Tusaale ahaan, qof ayaa hubaal ahaan u tabi doona MongoDB. Raadi Laastik ah qaar. U dir SMS iyo/ama wicitaano ka samee taleefankaaga gacanta. Waxaan rabnaa inaan awoodno inaan ka helno qoraallada kaliya maahan faylalka, laakiin sidoo kale, tusaale ahaan, keydka xogta. Dhammaadka, waxaan rabnaa degel isticmaale-saaxiibtinimo badan iyo dukumeenti ka wanaagsan mashruuca.

Qof had iyo jeer wax baa ka maqan) Halkan waxaan ku tiirsannahay codsiga bulshada si loo dejiyo mudnaanta si sax ah. Iyo in la caawiyo bulshada si loo xaqiijiyo wax walba

Gabagabada

Waxaan isticmaalnaa Balerter In muddo ah ayaan haystay hadda. Daraasiin qoraal ah ayaa ilaaliya nabaddayada maskaxda. Waxaan rajeynayaa in shaqadani ay faa'iido u yeelan doonto qof kale.

Ku soo dhawoow arintaada iyo PR.

Source: www.habr.com

Add a comment