Kitengo 6 / 11

Ufuatiliaji na Uangalizi: Kanuni za kipimo, Kumbukumbu, Ufuatiliaji na Kengele

Faida:

  • Uwezo wa kuelewa nguzo tatu za uangalizi (metric, logi, trace) na ishara nne za dhahabu na kuwa na akili ya bandia hutoa maswali ya PromQL, sheria za kengele na dashibodi.
  • Uwezo wa kuzuia uchovu wa kengele kwa kuweka kengele zenye mwelekeo wa vitendo na kwa uharaka sahihi na viwango vya majaribio dhidi ya data ya kihistoria ya mfumo wako mwenyewe.
  • Uwezo wa kuzuia usiri na uvujaji wa siri kwa kuficha maeneo nyeti kabla ya kutoa kumbukumbu kwa akili ya bandia.

Ingawa mfumo unaweza kuonekana kufanya kazi, unaweza kufa ndani: kumbukumbu inajaa polepole, muda wa majibu kuongezeka, kasi ya makosa kuongezeka. Njia pekee ya kutambua hili ni kufuatilia mara kwa mara mfumo. Dhana ya juu zaidi ni uchunguzi: uwezo wa kuelewa kinachoendelea ndani ya mfumo kwa kuangalia ishara zake za nje. Kuna nguzo tatu za uangalizi, na mtaalamu wa DevOps hutumia zote tatu:

  • Kipimo: Nambari za nambari zinazopimwa kwa muda - matumizi ya CPU, idadi ya maombi, wakati wa majibu, kiwango cha makosa. "Kiasi gani?" anajibu swali.
  • Rekodi: Rekodi za tukio la maandishi zinazotolewa na mfumo-"mtumiaji ameingia", "muunganisho wa hifadhidata umepotea". "Nini hasa kilitokea?" anajibu swali.
  • Fuatilia: Njia ambayo ombi hufuata wakati wa kupita kutoka huduma hadi huduma ndani ya mfumo na muda wa kila hatua. "Upole uko wapi?" anajibu swali.

Zana zinazojulikana zaidi: Prometheus ya vipimo, Grafana ya taswira, Loki/ELK ya kumbukumbu, Jaeger/OpenTelemetry ya ufuatiliaji. AI ina ustadi mkubwa wa kuandika lugha za maswali (hasa Prometheus' PromQL), sheria za kengele, na usanidi wa dashibodi kwa zana hizi. Pia ndipo ambapo AI iko katika nguvu zake zote: kufupisha vipande vikubwa vya kumbukumbu na vipimo na kuripoti hitilafu.

Hebu tufafanue tofauti kati ya ufuatiliaji na uangalizi katika sentensi moja: ufuatiliaji ni kuuliza maswali ambayo tayari unajua (“Je, CPU imepita 90%?”); uangalizi ni kuweza kuuliza maswali ambayo ulikuwa hujui tayari ("kwa nini ucheleweshaji huu wa ajabu unatokea kwa mteja fulani kwa wakati fulani?"). Mifumo ya kisasa ni ngumu sana kwamba huwezi kutabiri njia zote za kushindwa; Kwa hivyo, uwezo wa kukusanya metriki tajiri, kumbukumbu, na athari na kisha kuuliza kwa kina - ambayo ni, uchunguzi - inakuwa muhimu. Hapa ndipo AI inapohusika wakati wa kujibu "swali ambalo halikujulikana hapo awali": huchanganua haraka data ghafi uliyo nayo, inapendekeza mifumo na hitilafu, na utapata chanzo kikuu kwa kuthibitisha vidokezo hivi.

Hatua kwa hatua: nini na jinsi ya kufuatilia?

  1. Chagua vipimo sahihi. Katika tasnia, "ishara nne za dhahabu" huchukuliwa kama msingi: utulivu, trafiki, makosa, kueneza - jinsi rasilimali imejaa. Hizi ni muhtasari wa afya ya huduma nyingi.
  2. Kusanya vipimo. Ruhusu programu iwasilishe mwisho ambao Prometheus anaweza kusoma.
  3. Sanidi dashibodi. Tazama vipimo hivi ukiwa Grafana.
  4. Andika sheria za kengele. Nani ataonywa wakati kizingiti kinapitwa na vipi?
  5. Weka magogo katikati. Fanya kumbukumbu zote za huduma ziweze kutafutwa katika sehemu moja.
  6. Punguza kelele. Kengele nyingi huleta "uchovu wa tahadhari"; Kengele muhimu hupotea.
Kidokezo: Kengele nzuri hutimiza mambo mawili: inaweza kutekelezeka na ina uharaka ufaao. Kengele inayomwamsha mtu saa 3 asubuhi lazima iwe kitu ambacho kinahitaji uingiliaji kati wa usiku. Usiamshe mtu yeyote kwa jambo ambalo halihitaji hatua peke yake, kama "CPU 70%"; onyesha ubaoni.

Jinsi ya kuandika sheria ya kengele?

Tahadhari ina vipengele vitatu: hali (ambayo kipimo kinazidi kizingiti kipi na kwa muda gani), muda ("kwa dakika 5" ili kuepuka kusababisha kushuka kwa thamani kwa muda), na umuhimu/hatua (kwa nani, kupitia kituo gani). AI huanzisha hizi tatu kwa ustadi na muktadha sahihi. Kwa mfano, kutafsiri sheria kama vile "kengele muhimu ikiwa kasi ya hitilafu inazidi 5% kwa dakika 5" hadi PromQL ni kazi ya sehemu ya pili kwa AI - lakini unaamua ikiwa kiwango cha juu kinafaa kwa mfumo wako.

Tahadhari: Vizingiti vya kengele vinavyopendekezwa na AI ni mawazo ya jumla. Uzito wa kawaida wa mfumo wako, uvumilivu na athari ya kazi ni tofauti. Kabla ya kuweka kizingiti moja kwa moja kwenye prod, unatazama data yako ya kihistoria na kuuliza "ni mara ngapi kizingiti hiki kimeanzishwa hapo awali, ni ngapi kati ya hizo zilikuwa matatizo halisi?" Jibu swali.

Faragha ya kumbukumbu: onyo muhimu

Kumbukumbu ndio chanzo kinachopuuzwa mara kwa mara cha uvujaji. Mstari wa kumbukumbu unaweza kwa bahati mbaya kuwa na nenosiri, nambari ya kadi ya mkopo au data ya kibinafsi (chini ya KVKK/GDPR). Wakati wa kubandika kumbukumbu kwenye AI kwa uchambuzi:

  1. Mask maeneo nyeti. Badilisha thamani kama vile tokeni, nenosiri, barua pepe, nambari ya kitambulisho na <REDACTED>.
  2. Toa mifano, sio yote. Badala ya mistari milioni, mistari mia chache ya mwakilishi mara nyingi inatosha.
  3. Chagua gari lililoidhinishwa na taasisi. Hasa kwa magogo ya uzalishaji, tumia chombo ambacho data haiendi kwenye mafunzo.

Ishara nne za dhahabu na meza za kengele

ishara

kupimwa na

Mfano kizingiti cha kengele

uharaka

utulivu

wakati wa majibu

p95 > 800 ms, dakika 5

juu

trafiki

Ombi/sek

Kuongezeka kwa ghafla / kupungua kwa 300%.

kati

Hitilafu

Kiwango cha ombi kilichoshindikana

> 5%, dakika 5

muhimu

Kueneza

umiliki wa rasilimali

Diski > 85%

juu

kesi tatu ndogo

Kesi ya 1 - mistari 400 ya kumbukumbu iliyofupishwa katika sekunde 30. Huduma ilikuwa imepungua. Mhandisi alitoa mistari 400 ya logi iliyofunikwa kwa AI na kusema, "fanya muhtasari wa mifumo ya makosa ya mara kwa mara na ukubwa wa wakati." AI ilionyesha kuwa simu fulani ya nje ya API inakatika kila sekunde 30. Sababu ya mizizi hupatikana katika sekunde 30; Kuchanganua kumbukumbu kwa mikono kunaweza kuchukua nusu saa.

Kesi ya 2 - uchovu wa kengele umetatuliwa. Timu moja ilikuwa ikipokea kengele 200 kwa siku na ilikuwa ikizipuuza zote - hadi kengele halisi ya kukatika ilipopuuzwa. Ipe AI sheria zote za tahadhari na uulize "ni zipi hazifanyiki kazi na ni zipi zinaweza kuunganishwa?" waliuliza. Idadi ya kengele ilipungua hadi 12 kwa siku; Kila kengele sasa ilichukuliwa kwa uzito.

Kesi ya 3 - kiwango kisicho sahihi kilipatikana mapema. YZ ilipendekeza "Onya wakati 95% imejaa" kwa diski. Mhandisi aliangalia data ya kihistoria: mara tu disk ilifikia 95% kulikuwa na muda mdogo wa kuingilia kati. Ilipunguza kiwango cha juu hadi 80% na kuongeza kengele ya pili kulingana na "kiwango cha ukuaji." Uthibitishaji ulizuia kukatika kwa kweli usiku wa manane.

Violezo vinne vinavyoweza kunakiliwa

1) Muhtasari wa kumbukumbu (iliyofunikwa):

Changanua mfano wa kumbukumbu hapa chini (nilificha maadili nyeti kwa <REDACTED>). Nipe: (1) mifumo ya hitilafu inayojirudia, (2) umakinifu baada ya muda, (3) uwezekano mkubwa ndio chanzo, na (4) vipimo 3 nitakavyoangalia ili kuthibitisha. Kumbukumbu: [LINES]

2) Uzalishaji wa sheria ya kengele:

Andika sheria ya kengele kwa Prometheus/Alertmanager: Tengeneza kengele ya [SEVERITY] ikiwa [THRESHOLD] inazidi [METRIC][DURATION]. Sheria inapaswa kuelekezwa kwa vitendo na kujumuisha sehemu ya kiungo cha kidokezo na kitabu cha kukimbia. Eleza PromQL na uandike kwa nini kiwango hiki ni sawa.

3) Kuandika/kutangaza hoja ya PromQL:

Andika swali la PromQL ambalo hupima: [EX. Asilimia ya kiwango cha 5xxerror katika dakika 5 zilizopita]. Eleza hoja hatua kwa hatua. Kisha niambie kiwango cha afya cha thamani hii kinapaswa kuwa nini.

4) Muundo wa dashibodi:

Unda dashibodi ya Grafana ya [SERVICE]: nikitumia paneli zipi ninapaswa kuonyesha mawimbi manne ya dhahabu (muda wa kusubiri, trafiki, hitilafu, kueneza)? Pendekeza kipimo, aina ya taswira na kiwango kinachofaa kwa kila kidirisha. Kusudi: kuona hali ya afya ya mlinzi katika sekunde 10.

Mwongozo dhaifu / Mwongozo thabiti

Dhaifu: "Ni nini kwenye logi hiyo?" (ikifuatiwa na mistari 5000 ya logi mbichi, ishara ndani yake)

Matokeo: unavujisha siri na AI inatoa muhtasari wa juu juu usiolengwa.

Imara: "Tafuta mifumo ya hitilafu inayojirudia na ukubwa wa muda katika mfano wa logi iliyofichwa ya mistari 300 hapa chini; niambie sababu inayowezekana zaidi na vipimo nitakavyoangalia ili kuthibitisha. Nilitengeneza tokeni <REDACTED>."

Tofauti: kidokezo cha pili kinatoa mfano uliofichwa na uliolenga, ukiuliza matokeo ya uchambuzi wazi; Ni salama na muhimu.

Makosa ya kawaida

  • Kubandika logi kwenye AI bila kuifunga. Uvujaji wa kawaida wa siri/data ya kibinafsi.
  • Kuweka kengele kwa kila kitu. Uchovu wa kengele huzika kengele halisi.
  • Kengele isiyoweza kutekelezeka. Ni kelele za onyo ambazo hakuna mtu anayeweza kufanya chochote juu yake.
  • Kukubali kizingiti cha AI bila swali. Kizingiti kinapaswa kuwekwa kulingana na historia ya mfumo wako.
  • Kuangalia tu kipimo. Bila logi na kufuatilia, sababu ya mizizi haiwezi kupatikana mara nyingi.
  • Sio kuweka saa ya kengele (kwa). Kushuka kwa thamani kwa muda mfupi hutoa kengele za uwongo.

Kwa muhtasari

Kuzingatiwa; Ni uwezo wa kuelewa ndani ya mfumo kutoka nje kwa vipimo, kumbukumbu na athari. Ishara nne za dhahabu (kuchelewa, trafiki, makosa, kueneza) ni muhtasari wa afya ya huduma nyingi. AI ina nguvu sana katika kuandika hoja za PromQL, sheria za kengele na dashibodi, na katika muhtasari wa vipande vikubwa vya kumbukumbu na kutafuta hitilafu. Lakini ni wajibu wako kuthibitisha viwango vya kengele dhidi ya historia ya mfumo wako mwenyewe, kuweka kengele zikiwa zimeelekezwa kwa vitendo, na usishiriki kamwe kumbukumbu bila kuzificha.

Jukumu la maombi

Kwa huduma (au sampuli ya huduma): (1) Kuwa na sheria ya kengele itakayotolewa kwa kasi ya hitilafu kwa kiolezo cha "Uzalishaji wa kanuni za kengele" na uweke kizingiti kilichopendekezwa kuwa "imeanzisha mara ngapi hapo awali?" Ijaribu kwa swali; (2) funika sampuli ya kumbukumbu uliyo nayo na ichanganuliwe kwa kiolezo cha "Muhtasari wa kumbukumbu"; (3) kumbuka ni kipimo gani utaangalia ili kuthibitisha sababu inayowezekana zaidi.

orodha ya ukaguzi

  • [ ] Nilichagua vipimo vya kufuatilia kulingana na mawimbi manne ya dhahabu.
  • [ ] Nilifunika kumbukumbu zote nilizotoa kwa AI kulingana na maeneo nyeti.
  • [ ] Nilithibitisha kuwa kila kengele ilielekezwa kwa vitendo na uharaka sahihi.
  • [ ] Nilijaribu viwango vya kengele dhidi ya data ya kihistoria ya mfumo wangu.
  • [ ] Nilichuja mabadiliko ya papo hapo kwa kuongeza kwa (muda) kwenye kengele.
  • [ ] Nilitumia metric + log + trace pamoja kwa sababu ya mizizi.