ရဟုပ်ထလေသသောသတိပေသချက်မျာသနဟင့်အတူလလယ်ကူသောအလုပ်။ သို့မဟုတ် Balerter ၏ဖန်တီသမဟုသမိုင်သ

ရဟုပ်ထလေသသောသတိပေသချက်မျာသနဟင့်အတူလလယ်ကူသောအလုပ်။ သို့မဟုတ် Balerter ၏ဖန်တီသမဟုသမိုင်သ

လူတိုင်သသည် သတိပေသချက်မျာသကို နဟစ်သက်ကဌသည်။

တစ်ခုခုဖဌစ်သလာသပဌီ (သို့မဟုတ် ပဌင်ဆင်ပဌီသသည်နဟင့်) ဂရပ်ဖစ်မျာသကို ထိုင်ကဌည့်ကာ ကလဲလလဲချက်မျာသကို ရဟာဖလေခဌင်သထက် တစ်ခုခုဖဌစ်ခဲ့သောအခါ အကဌောင်သကဌာသခဌင်သသည် ပိုကောင်သပါသည်။

ပဌီသတော့ ဒီအတလက် tool တော်တော်မျာသမျာသကို ဖန်တီသထာသပါတယ်။ Prometheus ဂေဟစနစ်မဟ သတိပေသမန်နေဂျာနဟင့် VictoriaMetrics ထုတ်ကုန်အုပ်စုမဟ vmalert။ Grafana ရဟိ Zabbix အကဌောင်သကဌာသချက်မျာသနဟင့် သတိပေသချက်မျာသ။ URL အချို့ကို အခါအာသလျော်စလာ ဆလဲထုတ်ပဌီသ တစ်ခုခုမဟာသနေပါက သင့်အာသပဌောပဌသည့် bash နဟင့် Telegram ဘော့တ်မျာသတလင် ကိုယ်တိုင်ရေသထာသသော script မျာသ။ အကုန်လုံသ အမျာသကဌီသပဲ။

ကျလန်ုပ်တို့၏ကုမ္ပဏီတလင် ကျလန်ုပ်တို့သည် ရဟုပ်ထလေသမဟုမျာသ သို့မဟုတ် ရဟုပ်ထလေသသောပေါင်သစပ်သတိပေသချက်မျာသကို ဖန်တီသရန် မဖဌစ်နိုင်သည့်တိုင်အောင် မတူညီသောဖဌေရဟင်သနည်သမျာသကို အသုံသပဌုခဲ့သည်။ ငါတို့ လိုချင်တာ နဲ့ ငါတို့ ပဌီသခဲ့တာတလေ က အဖဌတ်အတောက် အောက်မဟာဘဲ ။ TLDR- ကသည်မဟာ open source ပရောဂျက် ပေါ်လာပုံဖဌစ်သည်။ Balerter

Grafana တလင် စီစဉ်သတ်မဟတ်ထာသသော သတိပေသချက်မျာသဖဌင့် ကျလန်ုပ်တို့သည် အချိန်အတော်ကဌာအောင် နေထိုင်ခဲ့သည်။ ဟုတ်တယ်၊ ဒါက အကောင်သဆုံသနည်သလမ်သမဟုတ်ဘူသ။ Alertmanager ကဲ့သို့သော အထူသပဌုဖဌေရဟင်သနည်သအချို့ကို အသုံသပဌုရန် အမဌဲအကဌံပဌုထာသသည်။ ပဌီသတော့ ကျလန်တော်တို့လည်သ တစ်ကဌိမ်ထက်ပိုပဌီသ ရလေ့လျာသဖို့ကို မျဟော်နေပါတယ်။ ပဌီသတော့ တဖဌည်သဖဌည်သနဲ့ ကျလန်တော်တို့ ပိုလိုချင်လာတယ်။

အချို့သောဇယာသကလက်သည် XX% ကျဆင်သသလာသပဌီသ ယခင် M နာရီကာလနဟင့် နဟိုင်သယဟဉ်ပါက N မိနစ်ရဟိနေသည့်အခါတလင် ပဌောပါ။ ကအရာကို Grafana သို့မဟုတ် Alertmanager ဖဌင့် အကောင်အထည်ဖော်ရန် သင်ကဌိုသစာသနိုင်ပုံရသည်၊ သို့သော် ၎င်သသည် မလလယ်ကူပါ။ (ဒါမဟမဟုတ် ဖဌစ်နိုင်ရင် အခု မပဌောတော့ပါဘူသ)

အမျိုသမျိုသသော အရင်သအမဌစ်မျာသမဟ ဒေတာမျာသကို အခဌေခံ၍ သတိပေသချက် ဆုံသဖဌတ်ချက်ကို ပဌုလုပ်ရသောအခါတလင် အရာမျာသ ပိုမိုရဟုပ်ထလေသလာသည်။ တိုက်ရိုက်ဥပမာ-

ကျလန်ုပ်တို့သည် Clickhouse ဒေတာဘေ့စ်နဟစ်ခုမဟ ဒေတာမျာသကို စစ်ဆေသပဌီသနောက် ၎င်သကို Postgres မဟ ဒေတာအချို့နဟင့် နဟိုင်သယဟဉ်ကာ သတိပေသချက်တစ်ခုအာသ ဆုံသဖဌတ်ပါ။ အချက်ပဌပါ သို့မဟုတ် ပယ်ဖျက်ပါ။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဆုံသဖဌတ်ချက်ကို တလေသတောရန်အတလက် အလာသတူဆန္ဒမျာသစလာကို စုဆောင်သထာသသည်။ ထို့နောက် မဖန်တီသရသေသသော ကဝန်ဆောင်မဟု၏ လိုအပ်ချက်/စလမ်သရည်မျာသ၏ ပထမဆုံသစာရင်သကို စုစည်သရန် ကျလန်ုပ်တို့ ကဌိုသစာသခဲ့သည်။

  • မတူညီသောဒေတာရင်သမဌစ်မျာသကို ဝင်ရောက်ကဌည့်ရဟုပါ။ ဥပမာအာသဖဌင့် Prometheus, Clickhouse, Postgres

  • အမျိုသမျိုသသော ချန်နယ်မျာသသို့ သတိပေသချက်မျာသ ပို့ပါ

  • တလေသတောမဟုဖဌစ်စဉ်တလင် ကျလန်ုပ်သည် ကဌေငဌာဖော်ပဌချက်ကို မလိုလာသသော်လည်သ ဇာတ်ညလဟန်သရေသသာသနိုင်စလမ်သ၊

  • အချိန်ဇယာသတစ်ခုပေါ်တလင် scripts မျာသကိုလုပ်ဆောင်ခဌင်သ။

  • ဝန်ဆောင်မဟုကို ပဌန်လည်စတင်ခဌင်သမရဟိဘဲ လလယ်ကူသော script မျာသကို အပ်ဒိတ်လုပ်ပါ။

  • အရင်သအမဌစ်ကုဒ်မျာသမဟ ဝန်ဆောင်မဟုကို ပဌန်လည်တည်ဆောက်ခဌင်သမပဌုဘဲ လုပ်ဆောင်နိုင်စလမ်သကို တစ်နည်သနည်သဖဌင့် ချဲ့ထလင်နိုင်မဟု

ကစာရင်သသည် အနီသစပ်ဆုံသဖဌစ်ပဌီသ အလလန်တိကျဖလယ်မရဟိပါ။ အချို့အချက်မျာသ ပဌောင်သလဲသလာသကာ အချို့သေဆုံသသလာသခဲ့သည်။ အရာအာသလုံသက ပုံမဟန်အတိုင်သပါပဲ။

တကယ်တော့ Balerter ရဲ့ သမိုင်သကဌောင်သက ဒီလိုပါ။

ရဟုပ်ထလေသသောသတိပေသချက်မျာသနဟင့်အတူလလယ်ကူသောအလုပ်။ သို့မဟုတ် Balerter ၏ဖန်တီသမဟုသမိုင်သ

အဆုံသမဟာ ဖဌစ်ပျက်ခဲ့တာတလေနဲ့ ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာကို အတိုချုံသပဌီသ ပဌောပဌဖို့ ကဌိုသစာသပါ့မယ်။ (ဟုတ်ပါတယ်၊ ဒါက အဆုံသမဟုတ်ပါဘူသ။ ထုတ်ကုန်ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အစီအစဉ်တလေ အမျာသကဌီသရဟိပါတယ်။ ဒီနေ့ပဲ ရပ်လိုက်မယ်)

ဘယ်လိုအလုပ်လုပ်သလဲ

သင်သည် တောင်သဆိုချက်မျာသ (Prometheus၊ Clickhouse စသည်ဖဌင့်) ကို အတိအလင်သပေသပို့သည့် Lua တလင် ဇာတ်ညလဟန်သရေသပါ။ သင်သည် အဖဌေမျာသကို လက်ခံရရဟိပဌီသ ၎င်သတို့ကို တစ်နည်သနည်သဖဌင့် လုပ်ဆောင်ပဌီသ နဟိုင်သယဟဉ်ပါ။ ထို့နောက် သတိပေသချက်အချို့ကို ဖလင့်/ပိတ်ပါ။ Balerter ကိုယ်တိုင်က သင် configure လုပ်ထာသသော ချန်နယ်မျာသ (အီသမေသလ်၊ ကဌေသနန်သ၊ ပေါ့လျော့မဟု စသည်) ထံသို့ အကဌောင်သကဌာသစာ ပေသပို့ပါမည်။ ဇာတ်ညလဟန်သကို သတ်မဟတ်ထာသသော ကဌာသကာလမျာသတလင် လုပ်ဆောင်သည်။ ယေဘုယျအာသဖဌင့်တော့ ဒီလောက်ပါပဲ)

ဥပမာတစ်ခုဖဌင့် ပဌရန် အကောင်သဆုံသဖဌစ်သည်-

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

ဒီမဟာဘာတလေဖဌစ်နေတာလဲ:

  • က script ကို 10 စက္ကန့်တိုင်သ လုပ်ဆောင်သင့်သည်ဟု ကျလန်ုပ်တို့ညလဟန်ပဌပါသည်။

  • script ၏အမည်ကိုညလဟန်ပဌပါ ( API အတလက်၊ မဟတ်တမ်သမျာသတလင်ပဌသရန်၊ စမ်သသပ်မဟုမျာသတလင်အသုံသပဌုရန်အတလက်)

  • မဟတ်တမ်သမျာသထုတ်ပေသရန်အတလက် module ကိုချိတ်ဆက်ပါ။

  • clickhouse ကိုအမည်ဖဌင့်ဝင်ရောက်ရန် module တစ်ခုကိုချိတ်ဆက်ပါ။ ch1 (ချိတ်ဆက်မဟုကိုယ်တိုင်က config တလင် configure လုပ်ထာသသည်)

  • clickhouse သို့ တောင်သဆိုချက်တစ်ခု ပေသပို့ပါ။

  • အမဟာသအယလင်သတစ်ခုရဟိလျဟင် ကျလန်ုပ်တို့သည် မဟတ်တမ်သတလင် မက်ဆေ့ချ်တစ်ခုပဌပဌီသ ထလက်လိုက်ပါ။

  • မေသမဌန်သမဟုရလဒ်ကို ကိန်သသေတစ်ခုနဟင့် နဟိုင်သယဟဉ်ပါ (တိုက်ရိုက်ဥပမာတစ်ခုတလင်၊ ဥပမာ၊ Postgres ဒေတာဘေ့စ်မဟ ကတန်ဖိုသကို ကျလန်ုပ်တို့ရရဟိနိုင်သည်)

  • ID ဖဌင့် သတိပေသချက်ကို ဖလင့်ပါ သို့မဟုတ် ပိတ်ပါ။ rps-min-limit

  • သတိပေသချက် အခဌေအနေ ပဌောင်သလဲပါက အကဌောင်သကဌာသချက် ရရဟိပါမည်။

ဥပမာက တော်တော်ရိုသရဟင်သပဌီသ နာသလည်နိုင်ပါတယ်။ သို့သော် လက်တလေ့ဘဝတလင် ဇာတ်ညလဟန်သမျာသသည် ရဟည်လျာသပဌီသ ရဟုပ်ထလေသနိုင်သည်။ စိတ်ရဟုပ်ထလေသပဌီသ အမဟာသတလေလုပ်မိဖို့ လလယ်ပါတယ်။

ထို့ကဌောင့်၊ သင်၏ scripts မျာသအတလက် စမ်သသပ်မဟုမျာသ ရေသနိုင်စေရန် ယုတ္တိတန်သောဆန္ဒ ရင့်ကျက်လာပါပဌီ။ ဗာသရဟင်သ v0.4.0 တလင်၎င်သပေါ်လာသည်။

Script မျာသကို စမ်သသပ်ခဌင်သ။

အထက်ဖော်ပဌပါ ဥပမာမဟ ကျလန်ုပ်တို့၏ script အတလက် နမူနာစမ်သသပ်မဟု

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

တစ်ဆင့်ချင်သစီ

  • စာမေသပလဲအတလက် ရေသထာသသော script အမည်ကို ဖော်ပဌပါ။

  • စမ်သသပ်အမည် (မဟတ်တမ်သမျာသအတလက်)

  • စမ်သသပ်မဟု module ကိုချိတ်ဆက်ပါ။

  • clickhouse သို့ သီသခဌာသတောင်သဆိုချက်တစ်ခုအတလက် မည်သည့်ရလဒ်ကို ပဌန်ပေသသင့်သည်ဟု ကျလန်ုပ်တို့ပဌောပါသည်။ ch1

  • သတ်မဟတ်ထာသသော မက်ဆေ့ချ်ဖဌင့် သတိပေသချက် (အမဟာသ) rps-min-limit ကို ခေါ်ထာသကဌောင်သ စစ်ဆေသပါသည်။

  • rps-min-limit သတိပေသချက်ကို ပိတ်ထာသခဌင်သမရဟိကဌောင်သ စစ်ဆေသပါ (အောင်မဌင်မဟု)

Balerter က တခဌာသဘာလုပ်နိုင်လဲ။

ကျလန်တော့်အမဌင်အရတော့ Balerter ရဲ့ အရေသအကဌီသဆုံသ အရည်အချင်သတလေကို ထိတလေ့ဖို့ ကဌိုသစာသသလာသမဟာပါ။ အာသလုံသကိုတရာသဝင်ဝဘ်ဆိုဒ်တလင် အသေသစိတ်ကဌည့်ရဟုနိုင်ပါသည်။ https://balerter.com

  • ထံမဟဒေတာကိုလက်ခံရရဟိ

    • clickhouse

    • နေပဌည်တော်

    • mysql

    • ကလမ်သခဌံကုန်သ

    • loki

  • ချန်နယ်မျာသသို့ အကဌောင်သကဌာသချက်မျာသ ပေသပို့ပါ။

    • ပျင်သရိ

    • ကလေသနနျသစာ

    • syslog

    • အသိပေသချက် (သင့်ကလန်ပျူတာရဟိ UI အကဌောင်သကဌာသချက်မျာသ)

    • အီသမေသလ်က

    • စိတ်တိုသပလာသ

  • သင့်ဒေတာအပေါ်အခဌေခံ၍ ဂရပ်မျာသတည်ဆောက်ပါ၊ ပုံအာသ S3 လိုက်ဖက်ညီသောသိုလဟောင်မဟုသို့ အပ်လုဒ်လုပ်ပဌီသ အကဌောင်သကဌာသချက်မျာသတလင် ပူသတလဲပါ (ပုံမျာသနဟင့်အတူဥပမာ)

  • scripts မျာသအကဌာသ ဒေတာဖလဟယ်နိုင်သည် - global Key/Value storage

  • သင်၏ကိုယ်ပိုင်စာကဌည့်တိုက်မျာသကို Lua တလင်ရေသပဌီသ scripts မျာသတလင်အသုံသပဌုပါ (ပုံမဟန်အာသဖဌင့်၊ lua libraries မျာသကို json၊ csv နဟင့်အလုပ်လုပ်ရန်အတလက်ထောက်ပံ့ပေသသည်)

  • သင်၏ script မျာသမဟ HTTP တောင်သဆိုချက်မျာသကို ပေသပို့ပါ (နဟင့် တုံ့ပဌန်မဟုမျာသကို လက်ခံပါ)၊

  • API တစ်ခု ပံ့ပိုသပေသသည် (ကျလန်ုပ်တို့ လိုချင်သလောက် အလုပ်မဖဌစ်သေသပါ)

  • Prometheus ဖော်မတ်ဖဌင့် မက်ထရစ်မျာသကို တင်ပို့သည်။

တခဌာသဘာတလေလုပ်နိုင်ချင်လဲ။

အသုံသပဌုသူမျာသနဟင့် ကျလန်ုပ်တို့သည် syntax ကိုအသုံသပဌု၍ scripts မျာသစတင်ခဌင်သကို ထိန်သချုပ်နိုင်စလမ်သကို လိုချင်သည်မဟာ ရဟင်သနေပါသည်။ cron. ၎င်သကို ဗာသရဟင်သ v1.0.0 မတိုင်မီ လုပ်ဆောင်ပါမည်။

နောက်ထပ်ဒေတာရင်သမဌစ်မျာသနဟင့် အကဌောင်သကဌာသချက်ပေသပို့မဟုလမ်သကဌောင်သမျာသကို ပံ့ပိုသပေသလိုပါသည်။ ဥပမာအာသဖဌင့်၊ တစ်စုံတစ်ယောက်သည် MongoDB ကို သေချာပေါက် လက်လလတ်လိမ့်မည်။ Elastic Search အချို့။ SMS ပို့ပဌီသ/သို့မဟုတ် သင့်မိုဘိုင်သဖုန်သသို့ ဖုန်သခေါ်ဆိုပါ။ ကျလန်ုပ်တို့သည် ဖိုင်မျာသမဟသာမက ဥပမာအာသဖဌင့် ဒေတာဘေ့စ်မဟ scripts မျာသကို လက်ခံနိုင်လိုပါသည်။ နောက်ဆုံသတလင်၊ ကျလန်ုပ်တို့သည် ပိုမိုအသုံသပဌုရလလယ်ကူသော ဝဘ်ဆိုက်တစ်ခုနဟင့် ပရောဂျက်အတလက် ပိုမိုကောင်သမလန်သောစာရလက်စာတမ်သမျာသကို လိုချင်ပါသည်။

တစ်စုံတစ်ညသသည် တစ်စုံတစ်ရာကို အမဌဲပျောက်ဆုံသနေပါသည်) ကနေရာတလင် ကျလန်ုပ်တို့သည် ညသစာသပေသမျာသကို မဟန်ကန်စလာ သတ်မဟတ်နိုင်ရန် အသိုင်သအဝိုင်သ၏ တောင်သဆိုမဟုကို အာသကိုသပါသည်။ အသိုင်သအဝိုင်သ၏အကူအညီနဟင့်အရာရာကိုသဘောပေါက်ရန်

နိဂုံသချုပ်

ငါတို့သုံသတယ် Balerter ငါဒါကိုရခဲ့တာကဌာပဌီ။ ဒါဇင်ပေါင်သမျာသစလာသော ဇာတ်ညလဟန်သမျာသသည် ကျလန်ုပ်တို့၏စိတ်ငဌိမ်သက်မဟုကို ကာကလယ်ပေသသည်။ ဒီအလုပ်က တခဌာသသူအတလက် အသုံသဝင်မယ်လို့ မျဟော်လင့်ပါတယ်။

သင်၏ Issue နဟင့် PR ဖဌင့်ကဌိုဆိုပါသည်။

source: www.habr.com

မဟတ်ချက် Add