يقينن، اهو گهڻو بهتر آهي ته مطلع ڪيو وڃي جڏهن ڪجهه ٿي چڪو هجي (يا طئي ڪيو ويو هجي) ويهڻ ۽ گرافس کي ڏسڻ ۽ بي ضابطگين کي ڳولڻ کان.
۽ ان لاءِ ڪيترائي اوزار ٺاهيا ويا آهن. Alertmanager from the Prometheus ecosystem and vmalert from VictoriaMetrics پراڊڪٽ گروپ. Grafana ۾ Zabbix نوٽيفڪيشن ۽ الرٽ. بش ۽ ٽيليگرام بوٽن ۾ خود لکيل اسڪرپٽ جيڪي وقتي طور تي ڪجهه URL ڪڍندا آهن ۽ توهان کي ٻڌائيندا آهن ته ڇا ڪجهه غلط آهي. تمام گهڻو.
اسان، اسان جي ڪمپني ۾، مختلف حل پڻ استعمال ڪيو جيستائين اسان پيچيدگي ۾ ڀڄي ويا، يا، بلڪه، پيچيده، جامع الرٽ ٺاهڻ جي ناممڪن. جيڪو اسان چاهيون ٿا ۽ جيڪو اسان ختم ڪيو اهو ڪٽ کان هيٺ آهي. TLDR: هي ڪيئن اوپن سورس پروجيڪٽ ظاهر ٿيو بيلٽر
ڪافي وقت تائين اسان گرافانا ۾ ترتيب ڏنل الرٽ سان گڏ رھندا ھئاسين. ها، اهو بهترين طريقو ناهي. اهو هميشه ڪجهه خاص حل استعمال ڪرڻ جي صلاح ڏني وئي آهي، جهڙوڪ Alertmanager. ۽ اسان به هڪ کان وڌيڪ ڀيرا اڳتي وڌڻ ڏانهن ڏٺو. ۽ پوء، ٿوري دير سان، اسان وڌيڪ چاهيون ٿا.
چئو ته جڏهن هڪ خاص چارٽ گهٽجي ويو آهي / وڌايو ويو آهي XX٪ ۽ M ڪلاڪ جي پوئين دور جي مقابلي ۾ N منٽ لاء موجود آهي؟ اهو لڳي ٿو ته توهان هن کي Grafana يا Alertmanager سان لاڳو ڪرڻ جي ڪوشش ڪري سگهو ٿا، پر اهو بلڪل آسان ناهي. (يا ٿي سگهي ٿو اهو ممڪن ناهي، مان هاڻي نه چوندس)
شيون اڃا به وڌيڪ پيچيده ٿي وينديون آهن جڏهن خبردار ڪرڻ جو فيصلو ڪيو وڃي مختلف ذريعن کان ڊيٽا جي بنياد تي. زنده مثال:
اسان ڊيٽا کي چيڪ ڪريون ٿا ٻن ڪلڪ هائوس ڊيٽابيس مان، پوءِ ان کي پوسٽ گريس جي ڪجهه ڊيٽا سان ڀيٽيو، ۽ هڪ خبرداري تي فيصلو ڪيو. سگنل يا منسوخ ڪريو
اسان پنهنجي فيصلي بابت سوچڻ لاءِ اسان لاءِ ڪافي ساڳين خواهشون گڏ ڪيون آهن. ۽ پوءِ اسان هن خدمت جي ضرورتن/صلاحيتن جي پهرين لسٽ مرتب ڪرڻ جي ڪوشش ڪئي، جيڪا اڃا تائين نه ٺاهي وئي آهي.
مختلف ڊيٽا ذريعن تائين رسائي. مثال طور، Prometheus، Clickhouse، Postgres
مختلف چينلن ڏانهن الرٽ موڪليو - ٽيليگرام، سست، وغيره.
سوچڻ جي عمل ۾، اهو واضح ٿي ويو ته مون کي هڪ بياني وضاحت نه آهي، پر اسڪرپٽ لکڻ جي صلاحيت
هڪ شيڊول تي هلندڙ اسڪرپٽ
سروس کي ٻيهر شروع ڪرڻ کان سواء اسڪرپٽ جي آسان تازه ڪاري
ڪنهن به طريقي سان ڪارڪردگي کي وڌائڻ جي صلاحيت کان سواءِ خدمت کي ٻيهر تعمير ڪرڻ کان سواءِ سورس ڪوڊس
مان مختصر طور تي بيان ڪرڻ جي ڪوشش ڪندس ته آخر ۾ ڇا ٿيو ۽ اهو ڪيئن ڪم ڪري ٿو. (ها، يقينا، اهو آخر ناهي. پيداوار جي ترقي لاء ڪيترائي منصوبا آهن. مان صرف اڄ بند ڪندس)
ان کي ڪيئن ڪم ڪندو؟
توهان لوا ۾ هڪ اسڪرپٽ لکندا آهيو جتي توهان واضح طور تي درخواستون موڪليندا آهيو (پروميٿيس، ڪلڪ هائوس، وغيره). توهان جواب حاصل ڪندا آهيو ۽ ڪنهن به طريقي سان عمل ڪيو ۽ انهن جو مقابلو ڪيو. پوءِ بند ڪريو / بند ڪريو ڪجھ قسم جي خبرداري. بيلرٽر پاڻ انهن چينلن ڏانهن هڪ نوٽيفڪيشن موڪليندو جيڪو توهان ترتيب ڏنو آهي (اي ميل، ٽيليگرام، سست، وغيره). رسم الخط مخصوص وقفن تي عمل ڪيو ويندو آهي. ۽ ... عام طور تي، اهو سڀ ڪجهه آهي)
اهو بهتر آهي ته هڪ مثال سان ڏيکاريو:
-- @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
توهان کي نوٽيفڪيشن ملندو جيڪڏهن خبرداري جي صورتحال تبديل ٿي وئي آهي
توهان جي ڊيٽا جي بنياد تي گراف ٺاهيو، تصوير کي S3 مطابقت واري اسٽوريج تي اپ لوڊ ڪريو ۽ ان کي اطلاعن سان ڳنڍيو (تصويرن سان گڏ مثال)
توهان کي اسڪرپٽس جي وچ ۾ ڊيٽا مٽائڻ جي اجازت ڏئي ٿي - گلوبل ڪي/ويل اسٽوريج
Lua ۾ پنهنجون پنهنجون لائبريريون لکو ۽ انهن کي اسڪرپٽ ۾ استعمال ڪريو (ڊفالٽ طور، lua لائبريريون json، csv سان ڪم ڪرڻ لاءِ فراهم ڪيون وينديون آهن)
توهان جي اسڪرپٽ مان HTTP درخواستون موڪليو (۽ جواب حاصل ڪريو، يقينا)
هڪ API مهيا ڪري ٿو (اڃا تائين فنڪشنل نه آهي جيئن اسان چاهيون ٿا)
Prometheus فارميٽ ۾ ميٽرڪ برآمد
تون ٻيو ڇا ڪرڻ چاهيندو؟
اهو اڳ ۾ ئي واضح آهي ته صارفين ۽ اسان نحو استعمال ڪندي اسڪرپٽ جي لانچ کي ڪنٽرول ڪرڻ جي صلاحيت چاهيون ٿا کلون. اهو نسخو v1.0.0 کان اڳ ڪيو ويندو
مان وڌيڪ ڊيٽا ذريعن ۽ نوٽيفڪيشن ترسيل چينلن کي سپورٽ ڪرڻ چاهيان ٿو. مثال طور، ڪو ماڻهو ضرور ياد ڪندو MongoDB. لچڪدار ڳولها ڪجهه لاء. ايس ايم ايس موڪليو ۽/يا پنهنجي موبائل فون تي ڪال ڪريو. اسان چاهيون ٿا ته اسڪرپٽس حاصل ڪرڻ جي قابل نه صرف فائلن مان، پر پڻ، مثال طور، ڊيٽابيس مان. آخر ۾، اسان چاهيون ٿا هڪ وڌيڪ صارف دوست ويب سائيٽ ۽ پروجيڪٽ لاءِ بهتر دستاويز.
ڪو ماڻهو هميشه ڪجهه وڃائي رهيو آهي) هتي اسان ڪميونٽي جي درخواست تي ڀروسو ڪريون ٿا ته جيئن ترجيحن کي صحيح طرح سان ترتيب ڏيو. ۽ ڪميونٽي جي مدد لاء هر شيء کي محسوس ڪرڻ لاء
نتيجو
اسان استعمال ڪريون ٿا بيلٽر مون کي اهو ڪافي وقت کان وٺي رهيو آهي. درجنين اسڪرپٽ اسان جي ذهن جي امن جي حفاظت ڪن ٿا. مون کي اميد آهي ته هي ڪم ڪنهن ٻئي لاء مفيد ٿيندو.