پيچيده خبردارين سان آسان ڪم. يا Balerter جي تاريخ

پيچيده خبردارين سان آسان ڪم. يا Balerter جي تاريخ

هرڪو خبرداري سان پيار ڪندو آهي.

يقينن، اهو گهڻو بهتر آهي ته مطلع ڪيو وڃي جڏهن ڪجهه ٿي چڪو هجي (يا طئي ڪيو ويو هجي) ويهڻ ۽ گرافس کي ڏسڻ ۽ بي ضابطگين کي ڳولڻ کان.

۽ ان لاءِ ڪيترائي اوزار ٺاهيا ويا آهن. Alertmanager from the Prometheus ecosystem and vmalert from VictoriaMetrics پراڊڪٽ گروپ. Grafana ۾ Zabbix نوٽيفڪيشن ۽ الرٽ. بش ۽ ٽيليگرام بوٽن ۾ خود لکيل اسڪرپٽ جيڪي وقتي طور تي ڪجهه URL ڪڍندا آهن ۽ توهان کي ٻڌائيندا آهن ته ڇا ڪجهه غلط آهي. تمام گهڻو.

اسان، اسان جي ڪمپني ۾، مختلف حل پڻ استعمال ڪيو جيستائين اسان پيچيدگي ۾ ڀڄي ويا، يا، بلڪه، پيچيده، جامع الرٽ ٺاهڻ جي ناممڪن. جيڪو اسان چاهيون ٿا ۽ جيڪو اسان ختم ڪيو اهو ڪٽ کان هيٺ آهي. TLDR: هي ڪيئن اوپن سورس پروجيڪٽ ظاهر ٿيو بيلٽر

ڪافي وقت تائين اسان گرافانا ۾ ترتيب ڏنل الرٽ سان گڏ رھندا ھئاسين. ها، اهو بهترين طريقو ناهي. اهو هميشه ڪجهه خاص حل استعمال ڪرڻ جي صلاح ڏني وئي آهي، جهڙوڪ Alertmanager. ۽ اسان به هڪ کان وڌيڪ ڀيرا اڳتي وڌڻ ڏانهن ڏٺو. ۽ پوء، ٿوري دير سان، اسان وڌيڪ چاهيون ٿا.

چئو ته جڏهن هڪ خاص چارٽ گهٽجي ويو آهي / وڌايو ويو آهي XX٪ ۽ M ڪلاڪ جي پوئين دور جي مقابلي ۾ N منٽ لاء موجود آهي؟ اهو لڳي ٿو ته توهان هن کي Grafana يا Alertmanager سان لاڳو ڪرڻ جي ڪوشش ڪري سگهو ٿا، پر اهو بلڪل آسان ناهي. (يا ٿي سگهي ٿو اهو ممڪن ناهي، مان هاڻي نه چوندس)

شيون اڃا به وڌيڪ پيچيده ٿي وينديون آهن جڏهن خبردار ڪرڻ جو فيصلو ڪيو وڃي مختلف ذريعن کان ڊيٽا جي بنياد تي. زنده مثال:

اسان ڊيٽا کي چيڪ ڪريون ٿا ٻن ڪلڪ هائوس ڊيٽابيس مان، پوءِ ان کي پوسٽ گريس جي ڪجهه ڊيٽا سان ڀيٽيو، ۽ هڪ خبرداري تي فيصلو ڪيو. سگنل يا منسوخ ڪريو

اسان پنهنجي فيصلي بابت سوچڻ لاءِ اسان لاءِ ڪافي ساڳين خواهشون گڏ ڪيون آهن. ۽ پوءِ اسان هن خدمت جي ضرورتن/صلاحيتن جي پهرين لسٽ مرتب ڪرڻ جي ڪوشش ڪئي، جيڪا اڃا تائين نه ٺاهي وئي آهي.

  • مختلف ڊيٽا ذريعن تائين رسائي. مثال طور، Prometheus، Clickhouse، Postgres

  • مختلف چينلن ڏانهن الرٽ موڪليو - ٽيليگرام، سست، وغيره.

  • سوچڻ جي عمل ۾، اهو واضح ٿي ويو ته مون کي هڪ بياني وضاحت نه آهي، پر اسڪرپٽ لکڻ جي صلاحيت

  • هڪ شيڊول تي هلندڙ اسڪرپٽ

  • سروس کي ٻيهر شروع ڪرڻ کان سواء اسڪرپٽ جي آسان تازه ڪاري

  • ڪنهن به طريقي سان ڪارڪردگي کي وڌائڻ جي صلاحيت کان سواءِ خدمت کي ٻيهر تعمير ڪرڻ کان سواءِ سورس ڪوڊس

هي فهرست تقريبن آهي ۽ گهڻو ڪري بلڪل صحيح ناهي. ڪي نقطا بدلجي ويا، ڪي مري ويا. سڀ ڪجهه معمول وانگر آهي.

درحقيقت، بالرٽر جي تاريخ ڪيئن شروع ٿي.

پيچيده خبردارين سان آسان ڪم. يا Balerter جي تاريخ

مان مختصر طور تي بيان ڪرڻ جي ڪوشش ڪندس ته آخر ۾ ڇا ٿيو ۽ اهو ڪيئن ڪم ڪري ٿو. (ها، يقينا، اهو آخر ناهي. پيداوار جي ترقي لاء ڪيترائي منصوبا آهن. مان صرف اڄ بند ڪندس)

ان کي ڪيئن ڪم ڪندو؟

توهان لوا ۾ هڪ اسڪرپٽ لکندا آهيو جتي توهان واضح طور تي درخواستون موڪليندا آهيو (پروميٿيس، ڪلڪ هائوس، وغيره). توهان جواب حاصل ڪندا آهيو ۽ ڪنهن به طريقي سان عمل ڪيو ۽ انهن جو مقابلو ڪيو. پوءِ بند ڪريو / بند ڪريو ڪجھ قسم جي خبرداري. بيلرٽر پاڻ انهن چينلن ڏانهن هڪ نوٽيفڪيشن موڪليندو جيڪو توهان ترتيب ڏنو آهي (اي ميل، ٽيليگرام، سست، وغيره). رسم الخط مخصوص وقفن تي عمل ڪيو ويندو آهي. ۽ ... عام طور تي، اهو سڀ ڪجهه آهي)

اهو بهتر آهي ته هڪ مثال سان ڏيکاريو:

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

هتي ڇا ٿي رهيو آهي:

  • اسان اشارو ڪريون ٿا ته هي اسڪرپٽ هر 10 سيڪنڊن تي عمل ڪيو وڃي

  • اسڪرپٽ جو نالو ظاهر ڪريو (API لاءِ، لاگن ۾ ڊسپلي لاءِ، ٽيسٽ ۾ استعمال لاءِ)

  • подключаем модуль для вывода логов

  • نالي سان ڪلڪ هائوس تائين رسائي حاصل ڪرڻ لاءِ ماڊل جوڙيو ch1 (ڪنيڪشن خود ترتيب ۾ ترتيب ڏنل آهي)

  • ڪلڪ هائوس ڏانهن هڪ درخواست موڪليو

  • غلطي جي صورت ۾، اسان لاگ ۽ نڪرڻ ۾ هڪ پيغام ڏيکاري ٿو

  • سوال جي نتيجي کي مستقل سان ڀيٽيو (هڪ لائيو مثال ۾، اسان هي قيمت حاصل ڪري سگهون ٿا، مثال طور، پوسٽ گريس ڊيٽابيس مان)

  • ID سان خبرداري کي فعال يا غير فعال ڪريو rps-min-limit

  • توهان کي نوٽيفڪيشن ملندو جيڪڏهن خبرداري جي صورتحال تبديل ٿي وئي آهي

مثال بلڪل سادو ۽ سمجھڻ وارو آهي. بهرحال، يقينا، حقيقي زندگي ۾ لکت ڪافي ڊگهو ۽ پيچيده ٿي سگهي ٿو. اهو پريشان ٿيڻ ۽ غلطي ڪرڻ آسان آهي.

تنهن ڪري، هڪ منطقي خواهش پختو ٿي چڪي آهي - توهان جي اسڪرپٽ لاء ٽيسٽ لکڻ جي قابل ٿي. ۽ نسخو v0.4.0 ۾ اهو ظاهر ٿيو.

جاچ اسڪرپٽ

مٿين مثال مان اسان جي اسڪرپٽ لاءِ مثال ٽيسٽ:

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

قدم به قدم:

  • لکت جو نالو ظاهر ڪريو جنهن لاءِ ٽيسٽ لکيو ويو آهي

  • ٽيسٽ جو نالو (لاگز لاءِ)

  • ٽيسٽ ماڊل کي ڳنڍيو

  • اسان چئون ٿا ته ڪلڪ هائوس ڏانهن مخصوص درخواست لاءِ ڪهڙو نتيجو واپس ڪيو وڃي ch1

  • اسان چيڪ ڪريون ٿا ته خبرداري (غلطي) rps-min-limit کي مخصوص پيغام سان سڏيو ويو

  • چيڪ ڪريو ته rps-min-limit الرٽ غير فعال نه ڪيو ويو (ڪاميابي)

Balerter ٻيو ڇا ڪري سگهي ٿو؟

مان ڪوشش ڪندس ته سڀ کان اهم، منهنجي راء ۾، بالرٽر صلاحيتن کي. توهان سڀ ڪجهه تفصيل سان ڏسي سگهو ٿا سرڪاري ويب سائيٽ تي https://balerter.com

  • کان ڊيٽا حاصل ڪريو

    • ڪلڪ هائوس

    • پوسٽ

    • هن MySQL

    • تڪڙو

    • لاکو

  • چينلن ڏانهن اطلاع موڪليو

    • نڀاڳ

    • ٽيليگرام

    • syslog

    • اطلاع (توهان جي ڪمپيوٽر تي UI اطلاعن)

    • اي ميل

    • انبن

  • توهان جي ڊيٽا جي بنياد تي گراف ٺاهيو، تصوير کي S3 مطابقت واري اسٽوريج تي اپ لوڊ ڪريو ۽ ان کي اطلاعن سان ڳنڍيو (تصويرن سان گڏ مثال)

  • توهان کي اسڪرپٽس جي وچ ۾ ڊيٽا مٽائڻ جي اجازت ڏئي ٿي - گلوبل ڪي/ويل اسٽوريج

  • Lua ۾ پنهنجون پنهنجون لائبريريون لکو ۽ انهن کي اسڪرپٽ ۾ استعمال ڪريو (ڊفالٽ طور، lua لائبريريون json، csv سان ڪم ڪرڻ لاءِ فراهم ڪيون وينديون آهن)

  • توهان جي اسڪرپٽ مان HTTP درخواستون موڪليو (۽ جواب حاصل ڪريو، يقينا)

  • هڪ API مهيا ڪري ٿو (اڃا تائين فنڪشنل نه آهي جيئن اسان چاهيون ٿا)

  • Prometheus فارميٽ ۾ ميٽرڪ برآمد

تون ٻيو ڇا ڪرڻ چاهيندو؟

اهو اڳ ۾ ئي واضح آهي ته صارفين ۽ اسان نحو استعمال ڪندي اسڪرپٽ جي لانچ کي ڪنٽرول ڪرڻ جي صلاحيت چاهيون ٿا کلون. اهو نسخو v1.0.0 کان اڳ ڪيو ويندو

مان وڌيڪ ڊيٽا ذريعن ۽ نوٽيفڪيشن ترسيل چينلن کي سپورٽ ڪرڻ چاهيان ٿو. مثال طور، ڪو ماڻهو ضرور ياد ڪندو MongoDB. لچڪدار ڳولها ڪجهه لاء. ايس ايم ايس موڪليو ۽/يا پنهنجي موبائل فون تي ڪال ڪريو. اسان چاهيون ٿا ته اسڪرپٽس حاصل ڪرڻ جي قابل نه صرف فائلن مان، پر پڻ، مثال طور، ڊيٽابيس مان. آخر ۾، اسان چاهيون ٿا هڪ وڌيڪ صارف دوست ويب سائيٽ ۽ پروجيڪٽ لاءِ بهتر دستاويز.

ڪو ماڻهو هميشه ڪجهه وڃائي رهيو آهي) هتي اسان ڪميونٽي جي درخواست تي ڀروسو ڪريون ٿا ته جيئن ترجيحن کي صحيح طرح سان ترتيب ڏيو. ۽ ڪميونٽي جي مدد لاء هر شيء کي محسوس ڪرڻ لاء

نتيجو

اسان استعمال ڪريون ٿا بيلٽر مون کي اهو ڪافي وقت کان وٺي رهيو آهي. درجنين اسڪرپٽ اسان جي ذهن جي امن جي حفاظت ڪن ٿا. مون کي اميد آهي ته هي ڪم ڪنهن ٻئي لاء مفيد ٿيندو.

۽ توهان جي مسئلي ۽ پي آر سان ڀليڪار.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو