ከተወሳሰቡ ማንቂያዎች ጋር ቀላል ስራ። ወይም የባለርተር አፈጣጠር ታሪክ

ከተወሳሰቡ ማንቂያዎች ጋር ቀላል ስራ። ወይም የባለርተር አፈጣጠር ታሪክ

ሁሉም ሰው ማንቂያዎችን ይወዳል።

እርግጥ ነው፣ አንድ ነገር ሲከሰት (ወይም ሲስተካከል) ተቀምጦ ግራፎችን ከመመልከት እና ያልተለመዱ ነገሮችን ከመፈለግ ማሳወቅ በጣም የተሻለ ነው።

እና ለዚህ ብዙ መሳሪያዎች ተፈጥረዋል. Alertmanager ከPrometheus ምህዳር እና vmalert ከ VictoriaMetrics የምርት ቡድን። የዛቢክስ ማሳወቂያዎች እና ማንቂያዎች በግራፋና ውስጥ። በራስ የተፃፉ ስክሪፕቶች በባሽ እና በቴሌግራም ቦቶች በየጊዜው አንዳንድ ዩአርኤልን የሚስቡ እና የሆነ ችግር እንዳለ የሚነግሩዎት። ብዙ ነገር።

እኛ በኩባንያችን ውስጥ ወደ ውስብስብነት እስክንሄድ ድረስ የተለያዩ መፍትሄዎችን እንጠቀማለን ፣ ይልቁንም ፣ ውስብስብ ፣ የተዋሃዱ ማንቂያዎችን መፍጠር የማይቻል ነው። የፈለግነው እና የጨረስነው ከቁርጡ በታች ነው። TLDR: የክፍት ምንጭ ፕሮጄክቱ እንደዚህ ታየ ባለርተር

በግራፋና ውስጥ ከተዋቀሩ ማንቂያዎች ጋር ለረጅም ጊዜ በደንብ ኖረናል። አዎ, ይህ ከሁሉ የተሻለው መንገድ አይደለም. እንደ Alertmanager ያሉ አንዳንድ ልዩ መፍትሄዎችን ሁልጊዜ እንዲጠቀሙ ይመከራል። እና ከአንድ ጊዜ በላይ ለመንቀሳቀስም ተመልክተናል። እና ከዚያ ፣ ቀስ በቀስ ፣ የበለጠ እንፈልጋለን።

የተወሰነ ገበታ በXX% ሲወድቅ/ሲጨምር እና ለኤን ደቂቃዎች ካለፈው የ M ሰዓቶች ጊዜ ጋር ሲወዳደር ይናገሩ? ይህን በ Grafana ወይም Alertmanager ለመተግበር መሞከር የምትችል ይመስላል፣ ግን በጣም ቀላል አይደለም። (ወይም ምናልባት ላይሆን ይችላል፣ አሁን አልናገርም)

የማንቂያ ውሳኔው ከተለያዩ ምንጮች በተገኘ መረጃ መሰጠት ሲኖርበት ነገሮች ይበልጥ ውስብስብ ይሆናሉ። የቀጥታ ምሳሌ፡-

ውሂቡን ከሁለት የክሊክሃውስ የውሂብ ጎታዎች እንፈትሻለን፣ ከዚያም ከፖስትግሬስ አንዳንድ መረጃዎች ጋር እናነፃፅራለን እና ማንቂያ ላይ እንወስናለን። ሲግናል ወይም ሰርዝ

ስለ ውሳኔያችን እንድናስብ ብዙ ተመሳሳይ ምኞቶችን አከማችተናል። እና ከዚያ የዚህን አገልግሎት የመጀመሪያ ዝርዝር መስፈርቶች / ችሎታዎች ለማዘጋጀት ሞክረናል, ይህም ገና አልተፈጠረም.

  • የተለያዩ የውሂብ ምንጮችን መድረስ. ለምሳሌ ፕሮሜቴየስ፣ ክሊክ ሃውስ፣ ፖስትግሬስ

  • ለተለያዩ ቻናሎች ማንቂያዎችን ይላኩ - ቴሌግራም ፣ ስላክ ፣ ወዘተ.

  • በአስተሳሰብ ሂደት ውስጥ, ስክሪፕቶችን የመጻፍ ችሎታ እንጂ ገላጭ መግለጫ እንደማልፈልግ ግልጽ ሆነ.

  • በጊዜ መርሐግብር ላይ ስክሪፕቶችን ማሄድ

  • አገልግሎቱን እንደገና ሳይጀምሩ የስክሪፕቶችን ቀላል ማዘመን

  • አገልግሎቱን ከምንጭ ኮዶች እንደገና ሳይገነቡ ተግባርን በሆነ መንገድ የማስፋት ችሎታ

ይህ ዝርዝር ግምታዊ ነው እና ምናልባትም በጣም ትክክል ላይሆን ይችላል። አንዳንድ ነጥቦች ተለውጠዋል, አንዳንዶቹ ሞተዋል. ሁሉም ነገር እንደተለመደው ነው።

በእውነቱ የባለርተር ታሪክ የጀመረው በዚህ መንገድ ነው።

ከተወሳሰቡ ማንቂያዎች ጋር ቀላል ስራ። ወይም የባለርተር አፈጣጠር ታሪክ

በመጨረሻ ምን እንደተፈጠረ እና እንዴት እንደሚሰራ በአጭሩ ለመግለጽ እሞክራለሁ. (አዎ፣ በእርግጥ ይህ መጨረሻ አይደለም፣ ለምርት ልማት ብዙ እቅዶች አሉ። ዛሬ ላይ ብቻ አቆማለሁ።)

ይህ የሚሠራው እንዴት ነው?

ጥያቄዎችን በግልፅ የምትልኩበት ስክሪፕት በሉዋ (ወደ ፕሮሜቴየስ፣ ክሊክ ሃውስ፣ ወዘተ) ይጽፋሉ። መልሶች ይቀበላሉ እና በሆነ መንገድ ሂደት እና ያወዳድሯቸው። ከዚያ አንድ ዓይነት ማንቂያን ያብሩ/ያጥፉ። ባለርተር ራሱ ላዋቀርካቸው ቻናሎች (ኢሜል፣ ቴሌግራም፣ ስላክ፣ ወዘተ) ማሳወቂያ ይልካል። ስክሪፕቱ በተወሰኑ ክፍተቶች ላይ ይከናወናል. እና ... በአጠቃላይ ፣ ያ ብቻ ነው)

በምሳሌ ማሳየት ጥሩ ነው፡-

-- @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 ሰከንድ መተግበር እንዳለበት እንጠቁማለን።

  • የስክሪፕቱን ስም ያመልክቱ (ለኤፒአይ ፣ በምዝግብ ማስታወሻዎች ውስጥ ለማሳየት ፣ ለሙከራዎች ጥቅም ላይ የሚውል)

  • የምዝግብ ማስታወሻዎችን ለማውጣት ሞጁሉን ያገናኙ

  • ከስሙ ጋር ጠቅታ ቤቱን ለመድረስ ሞጁሉን ያገናኙ ch1 (ግንኙነቱ ራሱ በውቅሩ ውስጥ ተዋቅሯል)

  • ጥያቄ ወደ ጠቅታ ቤት ይላኩ።

  • ስህተት በሚፈጠርበት ጊዜ, በምዝግብ ማስታወሻው ውስጥ መልእክት እናሳያለን እና እንወጣለን

  • የጥያቄውን ውጤት ከቋሚው ጋር ያወዳድሩ (በቀጥታ ምሳሌ፣ ይህንን ዋጋ ለምሳሌ ከፖስትግሬስ ዳታቤዝ) ማግኘት እንችላለን።

  • ማንቂያውን በመታወቂያ ማንቃት ወይም ማሰናከል 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

  • ከ ውሂብ ተቀበል

    • ጠቅታ ቤት

    • ፖስትጋሮች

    • MySQL

    • ተስፋ

    • loki

  • ማሳወቂያዎችን ወደ ሰርጦች ይላኩ።

    • ድካም

    • ቴሌግራም

    • syslog

    • አሳውቅ (በኮምፒተርዎ ላይ ያሉ የUI ማሳወቂያዎች)

    • ኢሜይል

    • አለመግባባት

  • በመረጃዎ ላይ በመመስረት ግራፎችን ይገንቡ ፣ ምስሉን ወደ S3 ተስማሚ ማከማቻ ይስቀሉ እና ከማሳወቂያዎች ጋር ያያይዙት (ምሳሌ ከሥዕሎች ጋር)

  • በስክሪፕቶች መካከል ውሂብ እንዲለዋወጡ ይፈቅድልዎታል - ዓለም አቀፍ ቁልፍ / እሴት ማከማቻ

  • የእራስዎን ቤተ-መጻሕፍት በሉአ ውስጥ ይጻፉ እና በስክሪፕቶች ይጠቀሙባቸው (በነባሪ የሉa ቤተ-መጻሕፍት ከ json, csv ጋር ለመስራት ቀርበዋል)

  • የኤችቲቲፒ ጥያቄዎችን ከስክሪፕቶችዎ ይላኩ (እና በእርግጥ ምላሾችን ይቀበሉ)

  • ኤፒአይ ያቀርባል (እስካሁን የምንፈልገውን ያህል ተግባራዊ አይደለም)

  • መለኪያዎችን በPrometheus ቅርጸት ወደ ውጭ ይልካል

ሌላ ምን ማድረግ መቻል ይፈልጋሉ?

እኛ ተጠቃሚዎች እና እኛ አገባብ በመጠቀም የስክሪፕት መጀመርን የመቆጣጠር ችሎታ እንደምንፈልግ ቀድሞውኑ ግልጽ ነው። በመርሃግብሩ. ይህ ከስሪት v1.0.0 በፊት ይከናወናል

ተጨማሪ የውሂብ ምንጮችን እና የማሳወቂያ ማቅረቢያ ጣቢያዎችን መደገፍ እፈልጋለሁ። ለምሳሌ፣ አንድ ሰው በእርግጠኝነት MongoDB ይናፍቃል። ላስቲክ ፍለጋ ለአንዳንዶች። ኤስኤምኤስ ይላኩ እና/ወይም ወደ ሞባይል ስልክዎ ይደውሉ። ስክሪፕቶችን ከፋይሎች ብቻ ሳይሆን ለምሳሌ ከመረጃ ቋት መቀበል መቻል እንፈልጋለን። በመጨረሻም ለተጠቃሚ ምቹ የሆነ ድር ጣቢያ እና ለፕሮጀክቱ የተሻለ ሰነድ እንፈልጋለን።

አንድ ሰው ሁል ጊዜ የሆነ ነገር ይጎድለዋል) እዚህ ቅድሚያ የሚሰጣቸውን ነገሮች በትክክል ለማዘጋጀት በማህበረሰቡ ጥያቄ ላይ እንተማመናለን። እና ሁሉንም ነገር ለመገንዘብ ማህበረሰቡን ለመርዳት

በማጠቃለያው

እኛ እንጠቀማለን ባለርተር አሁን ለተወሰነ ጊዜ አግኝቻለሁ። በደርዘን የሚቆጠሩ ስክሪፕቶች የአእምሯችንን ሰላም ይጠብቃሉ። ይህ ስራ ለሌላ ሰው ጠቃሚ እንደሚሆን ተስፋ አደርጋለሁ.

እና ከእርስዎ ጉዳይ እና የህዝብ ግንኙነት ጋር እንኳን ደህና መጡ።

ምንጭ: hab.com

አስተያየት ያክሉ