Umsebenzi olula onezixwayiso eziyinkimbinkimbi. Noma umlando we-Balerter

Umsebenzi olula onezixwayiso eziyinkimbinkimbi. Noma umlando we-Balerter

Wonke umuntu uyazithanda izexwayiso.

Yebo, kungcono kakhulu ukwaziswa lapho okuthile kwenzekile (noma sekulungisiwe) kunokuhlala ubheke amagrafu futhi ubheke okudidayo.

Futhi amathuluzi amaningi adalelwe lokhu. I-Alertmanager evela ku-Prometheus ecosystem kanye ne-vmalert evela eqenjini lomkhiqizo we-VictoriaMetrics. Izaziso ze-Zabbix nezixwayiso e-Grafana. Izikripthi ezizibhalele ku-bash kanye ne-Telegraph bots ezidonsa ngezikhathi ezithile i-URL ethile futhi zikutshele uma kukhona okungalungile. Okuningi kwakho konke.

Thina, enkampanini yethu, siphinde sasebenzisa izixazululo ezihlukene kwaze kwaba yilapho singena enkingeni, noma, kunalokho, into engenakwenzeka yokudala izixwayiso eziyinkimbinkimbi, eziyinhlanganisela. Esikufunayo nesigcine sikwenzile kungaphansi komkhawulo. I-TLDR: Yavela kanjena iphrojekthi yomthombo ovulekile I-Balerter

Isikhathi eside impela siphila kahle ngezexwayiso ezilungiselelwe eGrafana. Yebo, lena akuyona indlela engcono kakhulu. Kuhlale kunconywa ukusebenzisa ezinye izixazululo ezikhethekile, njenge-Alertmanager. Futhi siphinde sabheka ekunyakazeni izikhathi ezingaphezu kwesisodwa. Futhi-ke, kancane kancane, sasifuna okwengeziwe.

Isho uma ishadi elithile lehlile/lenyuke ngo-XX% futhi libe khona amaminithi angu-N uma kuqhathaniswa nesikhathi sangaphambilini samahora angu-M? Kubonakala sengathi ungazama ukusebenzisa lokhu nge-Grafana noma i-Alertmanager, kodwa akulula neze. (Noma akunakwenzeka, ngeke ngisho manje)

Izinto ziba nzima nakakhulu uma kufanele kwenziwe isinqumo sokuxwayisa ngokusekelwe kudatha evela emithonjeni ehlukene. Isibonelo esibukhoma:

Sihlola idatha kusuka kuzinqolobane ezimbili ze-Clickhouse, bese siyiqhathanisa nedatha ethile evela ku-Postgres, bese sinquma ngesexwayiso. Isiginali noma khansela

Siqongelele izifiso eziningi ezifanayo ukuze sicabange ngesinqumo sethu. Sabe sesizama ukuhlanganisa uhlu lokuqala lwezidingo/amakhono ale sevisi, olungakadalwa.

  • finyelela imithombo yedatha eyahlukene. Isibonelo, i-Prometheus, i-Clickhouse, i-Postgres

  • thumela izexwayiso eziteshini ezahlukahlukene - i-telegraph, i-slack, njll.

  • ekucabangeni, kwacaca ukuthi angifuni incazelo echazayo, kodwa ikhono lokubhala imibhalo

  • ukusebenzisa imibhalo kushejuli

  • ukubuyekeza okulula kwemibhalo ngaphandle kokuqalisa kabusha isevisi

  • ikhono ngandlela thize lokwandisa ukusebenza ngaphandle kokwakha kabusha isevisi ngamakhodi omthombo

Lolu hlu luyalinganiselwa futhi cishe alunembile kakhulu. Amanye amaphuzu ashintshile, amanye afa. Konke kunjengokujwayelekile.

Empeleni, lena yindlela umlando kaBalerter owaqala ngayo.

Umsebenzi olula onezixwayiso eziyinkimbinkimbi. Noma umlando we-Balerter

Ngizozama ukuchaza kafushane ukuthi kwenzekeni ekugcineni nokuthi kusebenza kanjani. (Yebo, kunjalo, lesi akusona isiphetho. Ziningi izinhlelo zokuthuthukiswa komkhiqizo. Ngizoma nje namuhla)

Isebenza kanjani?

Ubhala umbhalo ngesi-Lua lapho uthumela khona izicelo (ku-Prometheus, Clickhouse, njll.). Uthola izimpendulo futhi ngandlela thize uzicubungule futhi uziqhathanise. Bese uvula/uvale uhlobo oluthile lwesexwayiso. I-Balerter ngokwayo izothumela isaziso eziteshini ozimisile (i-imeyili, ucingo, i-slack, njll.). Iskripthi sisetshenziswa ngezikhathi ezithile. Futhi... ngokuvamile, yilokho kuphela)

Kungcono ukukhombisa ngesibonelo:

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

Kwenzekani lapha:

  • sibonisa ukuthi lesi skripthi kufanele sisetshenziswe njalo ngemizuzwana eyi-10

  • khombisa igama lombhalo (we-API, ukuze uboniswe kumalogi, ukuze usetshenziswe ekuhlolweni)

  • xhuma imojuli yokukhipha izingodo

  • xhuma imojuli ukuze ufinyelele indawo yokuchofoza enegama ch1 (uxhumano ngokwalo lucushwe ku-config)

  • thumela isicelo ku-clickhouse

  • uma kwenzeka iphutha, sibonisa umlayezo kulogi bese siyaphuma

  • qhathanisa umphumela wombuzo nokungaguquki (esibonelweni esibukhoma, singathola leli nani, isibonelo, kusizindalwazi se-Postgres)

  • vumela noma vala isixwayiso nge-ID rps-min-limit

  • uzothola isaziso uma isimo sesexwayiso sishintshile

Isibonelo silula futhi siyaqondakala. Nokho, eqinisweni, ekuphileni kwangempela imibhalo ingaba yinde futhi ibe yinkimbinkimbi. Kulula ukudideka futhi wenze amaphutha.

Ngakho-ke, isifiso esinengqondo sesikhulile - ukwazi ukubhala izivivinyo zemibhalo yakho. Futhi enguqulweni v0.4.0 lokhu kwavela.

Imibhalo yokuhlola

Isibonelo sokuhlolwa kweskripthi sethu esivela kusibonelo esingenhla:

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

Igxathu emvakwe gxathu:

  • khombisa igama leskripthi esibhalelwe ukuhlolwa

  • igama lokuhlola (lamalogi)

  • xhuma imojuli yokuhlola

  • sithi yimuphi umphumela okufanele ubuyiselwe ngesicelo esithile ku-clickhouse ch1

  • sihlola ukuthi isaziso (iphutha) i-rps-min-limit esinomlayezo oshiwo sibiziwe

  • hlola ukuthi isaziso se-rps-min-limit asizange sikhutshazwe (impumelelo)

Yini enye angayenza u-Balerter?

Ngizozama ukuthinta okubaluleke kakhulu, ngokombono wami, amakhono e-Balerter. Ungabona yonke into ngokuningiliziwe kuwebhusayithi esemthethweni https://balerter.com

  • thola idatha evela

    • clickhouse

    • i-postgres

    • mysql

    • I-Prometheus

    • loki

  • thumela izaziso eziteshini

    • slack

    • telegram

    • syslog

    • yazisa (izaziso ze-UI kukhompyutha yakho)

    • imeyili

    • ukungezwani

  • yakha amagrafu ngokusekelwe kudatha yakho, layisha isithombe kwisitoreji esihambisanayo se-S3 futhi usinamathisele kuzaziso (Isibonelo ngezithombe)

  • ikuvumela ukuthi ushintshisane ngedatha phakathi kwemibhalo - Ukhiye womhlaba jikelele/Isitoreji senani

  • bhala eyakho imitapo yolwazi ngesiLua futhi uyisebenzise emibhalweni (ngokuzenzakalelayo, imitapo yolwazi ye-lua ihlinzekwa ukusebenza ne-json, csv)

  • thumela izicelo ze-HTTP emibhalweni yakho (futhi uthole izimpendulo, kunjalo)

  • inikeza i-API (ayikasebenzi ngendlela esingathanda ngayo)

  • ithumela ngaphandle amamethrikhi ngefomethi ye-Prometheus

Yini enye ongathanda ukwazi ukuyenza?

Sekuvele kusobala ukuthi abasebenzisi futhi sifuna amandla okulawula ukwethulwa kwemibhalo kusetshenziswa i-syntax cron. Lokhu kuzokwenziwa ngaphambi kwenguqulo v1.0.0

Ngingathanda ukusekela imithombo yedatha eyengeziwe kanye neziteshi zokulethwa kwezaziso. Isibonelo, othile uzophuthelwa yi-MongoDB. I-Elastic Search kwabanye. Thumela i-SMS kanye/noma ushaye izingcingo kumakhalekhukhwini wakho. Sifuna ukukwazi ukuthola imibhalo hhayi kuphela kumafayela, kodwa futhi, isibonelo, kusizindalwazi. Ekugcineni, sifuna iwebhusayithi esebenziseka kalula kanye nemibhalo engcono yephrojekthi.

Umuntu uhlezi eshoda ngokuthile) Lapha sincike esicelweni somphakathi ukuze sibeke izinto ezibalulekile ngendlela efanele. Futhi nosizo lomphakathi ukuqaphela konke

Ekuphethweni

Sisebenzisa I-Balerter Sengibe nayo isikhathi eside impela. Imibhalo eminingi ivikela ukuthula kwethu kwengqondo. Ngethemba ukuthi lo msebenzi uzoba usizo komunye umuntu.

Futhi wamukelekile ngodaba lwakho kanye ne-PR.

Source: www.habr.com

Engeza amazwana