د پیچلي خبرتیاو سره اسانه کار. یا د بالرټر تاریخ

د پیچلي خبرتیاو سره اسانه کار. یا د بالرټر تاریخ

هرڅوک خبرتیاوې خوښوي.

البته، دا خورا ښه ده چې خبر شئ کله چې یو څه پیښ شوي وي (یا ټاکل شوي وي) د ناست او ګرافونو ته د کتلو او بې نظمیو په لټه کې.

او د دې لپاره ډیری وسایل جوړ شوي دي. د Prometheus ایکوسیستم څخه د خبرتیا مدیر او د ویکتوریا میټریکس محصول ګروپ څخه vmalert. په ګرافانا کې د زبکس خبرتیاوې او خبرتیاوې. په باش او ټیلیګرام بوټو کې پخپله لیکل شوي سکریپټونه چې په وخت سره یو څه URL راوباسي او تاسو ته ووایی که یو څه غلط وي. ډیر څه.

موږ، زموږ په شرکت کې، مختلف حلونه هم کارولي تر هغه چې موږ پیچلتیا ته ورسیږو، یا بلکه، د پیچلو، جامع خبرتیاو رامینځته کولو ناممکنیت. هغه څه چې موږ غوښتل او هغه څه چې موږ یې پای ته ورسوو د کټ لاندې دي. TLDR: دا څنګه د خلاصې سرچینې پروژه ښکاره شوه بالرټر

د اوږدې مودې لپاره موږ په ګرافانا کې ترتیب شوي خبرتیاو سره ښه ژوند کاوه. هو، دا غوره لاره نه ده. دا تل سپارښتنه کیږي چې ځینې ځانګړي حلونه وکاروي، لکه د الرټ مینیجر. او موږ هم د یو ځل څخه ډیر حرکت کولو ته سترګې په لار یو. او بیا، لږ څه، موږ نور غوښتل.

ووایه کله چې یو ټاکلی چارټ د XX٪ لخوا راټیټ شوی / ډیر شوی او د M ساعتونو د تیرې مودې په پرتله د N دقیقو لپاره شتون لري؟ داسې بریښي چې تاسو کولی شئ دا د ګرافانا یا الرټ مینیجر سره پلي کولو هڅه وکړئ ، مګر دا خورا اسانه ندي. (یا شاید دا ممکنه نه وي، زه به اوس ونه وایم)

شیان نور هم پیچلي کیږي کله چې د خبرتیا پریکړه باید د مختلف سرچینو څخه د معلوماتو پراساس ترسره شي. ژوندۍ بېلګه:

موږ د دوه کلک هاؤس ډیټابیسونو ډاټا ګورو، بیا یې د پوسټګریس ځینې ډاټا سره پرتله کوو، او د خبرتیا په اړه پریکړه کوو. سیګنال یا لغوه کول

موږ د خپلې پریکړې په اړه فکر کولو لپاره زموږ لپاره ډیری ورته هیلې راټولې کړې. او بیا موږ هڅه وکړه چې د دې خدمت د اړتیاو / وړتیاوو لومړی لیست ترتیب کړو، کوم چې تر اوسه نه دی جوړ شوی.

  • د معلوماتو مختلف سرچینو ته لاسرسی. د مثال په توګه، 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

  • تاسو به یو خبرتیا ترلاسه کړئ که چیرې د خبرتیا حالت بدل شوی وي

مثال خورا ساده او د پوهیدو وړ دی. په هرصورت، البته، په ریښتینې ژوند کې سکریپټونه خورا اوږد او پیچلي کیدی شي. دا آسانه ده چې ګډوډ شي او غلطي وکړي.

له همدې امله، یوه منطقي هیله بالغه شوې ده - د دې وړتیا ولرئ چې ستاسو د سکریپټونو لپاره ازموینې ولیکئ. او په 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 خبرتیا غیر فعال نه وه (بریالیتوب)

بالرټر نور څه کولی شي؟

زه به هڅه وکړم چې تر ټولو مهم، زما په نظر، د بالرټر مهارتونو سره اړیکه ونیسم. تاسو کولی شئ په رسمي ویب پاڼه کې هرڅه په تفصیل سره وګورئ https://balerter.com

  • څخه معلومات ترلاسه کوي

    • کلک هاؤس

    • پوسته

    • مای

    • پروميټيوس

    • لوکی

  • چینلونو ته خبرتیاوې واستوئ

    • خنډ

    • telegram

    • سیسلاګ

    • خبرتیا (ستاسو په کمپیوټر کې د UI خبرتیاوې)

    • ایمیل

    • توپیر

  • ستاسو د معلوماتو پراساس ګرافونه جوړ کړئ، انځور د S3 مناسب ذخیره کې اپلوډ کړئ او د خبرتیاو سره یې ضمیمه کړئ (د انځورونو سره مثال)

  • تاسو ته اجازه درکوي د سکریپټونو ترمینځ ډیټا تبادله کړئ - نړیوال کیلي / ارزښت ذخیره

  • په لوا کې خپل کتابتونونه ولیکئ او په سکریپټونو کې یې وکاروئ (د ډیفالټ په واسطه، لوا کتابتونونه د json، csv سره کار کولو لپاره چمتو شوي)

  • د خپلو سکریپټونو څخه د HTTP غوښتنې واستوئ (او البته ځوابونه ترلاسه کړئ)

  • یو API چمتو کوي (تر اوسه هم دومره فعال نه دی لکه څنګه چې موږ یې غواړو)

  • د پرومیتیوس په شکل کې د صادراتو میټریکونه

نور څه غواړې چې وکولای شې؟

دا لا دمخه روښانه ده چې کاروونکي او موږ د ترکیب په کارولو سره د سکریپټونو لانچ کنټرول کولو وړتیا غواړو cron. دا به د v1.0.0 نسخه دمخه ترسره شي

زه غواړم د ډیرو ډیټا سرچینو او د خبرتیا رسولو چینلونو ملاتړ وکړم. د مثال په توګه، یو څوک به خامخا MongoDB له لاسه ورکړي. د ځینو لپاره لچک وړ لټون. SMS واستوئ او/یا خپل ګرځنده تلیفون ته زنګ ووهئ. موږ غواړو د دې وړتیا ولرو چې سکریپټونه نه یوازې د فایلونو څخه ترلاسه کړو، بلکې د بیلګې په توګه، د ډیټابیس څخه. په پای کې، موږ د پروژې لپاره یو ډیر کاروونکي دوستانه ویب پاڼه او غوره اسناد غواړو.

یو څوک تل یو څه له لاسه ورکوي) دلته موږ د ټولنې په غوښتنه تکیه کوو ترڅو لومړیتوبونه په سمه توګه وټاکو. او د هر څه د احساس کولو لپاره د ټولنې مرستې ته

په پای کې

موږ یی استعمالوو بالرټر ما دا د څه مودې لپاره درلوده. په لسګونو سکریپټونه زموږ د ذهن سوله ساتي. زه امید لرم چې دا کار به د بل چا لپاره ګټور وي.

او ستاسو د مسلې او PR سره ښه راغلاست.

سرچینه: www.habr.com

Add a comment