Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

Loni, ni afikun si koodu monolithic, iṣẹ akanṣe wa pẹlu awọn dosinni ti awọn iṣẹ microservices. Ọkọọkan wọn nilo lati ṣe abojuto. Ṣiṣe eyi lori iru iwọn lilo DevOps jẹ iṣoro. A ti ṣe agbekalẹ eto ibojuwo ti o ṣiṣẹ bi iṣẹ kan fun awọn olupilẹṣẹ. Wọn le kọ awọn metiriki ni ominira sinu eto ibojuwo, lo wọn, kọ awọn dasibodu ti o da lori wọn, ati so awọn titaniji si wọn ti yoo jẹ okunfa nigbati awọn iye ala ba de. Fun DevOps Enginners, nikan amayederun ati iwe.

Ifiweranṣẹ yii jẹ iwe afọwọkọ ti ọrọ mi pẹlu wa awọn apakan ni RIT++. Ọpọlọpọ eniyan beere lọwọ wa lati ṣe awọn ẹya ọrọ ti awọn ijabọ lati ibẹ. Ti o ba wa ni apejọ tabi wo fidio naa, iwọ kii yoo rii ohunkohun tuntun. Ati gbogbo eniyan miran - kaabo si o nran. Emi yoo sọ fun ọ bi a ṣe wa si iru eto kan, bii o ṣe n ṣiṣẹ ati bii a ṣe gbero lati ṣe imudojuiwọn rẹ.

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

Awọn ti o ti kọja: Siso ati eto

Bawo ni a ṣe de eto ibojuwo lọwọlọwọ? Lati dahun ibeere yii, o nilo lati lọ si 2015. Eyi ni ohun ti o dabi nigbana:

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

A ní nipa 24 apa ti o wà lodidi fun mimojuto. Odidi idii ti awọn ade oriṣiriṣi wa, awọn iwe afọwọkọ, awọn daemons ti o ṣe atẹle nkan kan, firanṣẹ awọn ifiranṣẹ, ati ṣe awọn iṣẹ. A ro pe bi a ba ti lọ siwaju, iru eto yii yoo kere si. Ko si aaye lati ṣe idagbasoke rẹ: o jẹ cumbersome ju.
A pinnu lati yan awọn eroja ibojuwo ti a yoo tọju ati dagbasoke, ati awọn ti a yoo kọ silẹ. Won ni 19. Nikan graphites, aggregators ati Grafana bi a dashboard wà. Ṣugbọn kini eto tuntun yoo dabi? Bi eleyi:

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

A ni ibi ipamọ awọn metiriki kan: iwọnyi jẹ awọn aworan atọka, eyiti yoo da lori awọn awakọ SSD iyara, iwọnyi jẹ awọn aggregators kan fun awọn metiriki. Nigbamii - Grafana fun iṣafihan awọn dashboards ati Moira fun titaniji. A tun fẹ lati ṣe agbekalẹ eto kan fun wiwa awọn aiṣedeede.

Standard: Abojuto 2.0

Eyi ni ohun ti awọn eto naa dabi ni 2015. Ṣugbọn a ni lati mura kii ṣe awọn amayederun ati iṣẹ funrararẹ, ṣugbọn tun awọn iwe-ipamọ fun rẹ. A ti ṣe agbekalẹ boṣewa ile-iṣẹ fun ara wa, eyiti a pe ni ibojuwo 2.0. Kini awọn ibeere fun eto naa?

  • wiwa nigbagbogbo;
  • metiriki ipamọ aarin = 10 aaya;
  • ibi ipamọ ti a ṣeto ti awọn metiriki ati awọn dasibodu;
  • SLA> 99,99%
  • gbigba ti awọn metiriki iṣẹlẹ nipasẹ UDP (!).

A nilo UDP nitori a ni ṣiṣan nla ti ijabọ ati awọn iṣẹlẹ ti o ṣe ina awọn metiriki. Ti o ba kọ gbogbo wọn sinu graphite ni ẹẹkan, ibi ipamọ yoo ṣubu. A tun yan awọn ami-ipele akọkọ fun gbogbo awọn metiriki.

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

Kọọkan ninu awọn ìpele ni diẹ ninu awọn ohun ini. Awọn metiriki wa fun awọn olupin, awọn nẹtiwọọki, awọn apoti, awọn orisun, awọn ohun elo, ati bẹbẹ lọ. Ko o, ti o muna, sisẹ ti tẹ ti wa ni imuse, nibiti a ti gba awọn metiriki ipele akọkọ ati nirọrun ju iyoku silẹ. Eyi ni bii a ṣe gbero eto yii ni ọdun 2015. Kini o wa ni bayi?

Iwaju: aworan atọka ti ibaraenisepo ti awọn paati ibojuwo

Ni akọkọ, a ṣe atẹle awọn ohun elo: koodu PHP wa, awọn ohun elo ati awọn iṣẹ microservices - ni kukuru, ohun gbogbo ti awọn olupilẹṣẹ wa kọ. Gbogbo awọn ohun elo firanṣẹ awọn metiriki nipasẹ UDP si aggregator Brubeck (statsd, ti a tun kọ ni C). O yipada lati jẹ iyara julọ ni awọn idanwo sintetiki. Ati pe o firanṣẹ awọn metiriki akojọpọ tẹlẹ si Graphite nipasẹ TCP.

O ni iru awọn metiriki ti a npe ni awọn akoko. Eyi jẹ ohun ti o rọrun pupọ. Fun apẹẹrẹ, fun asopọ olumulo kọọkan si iṣẹ naa, o firanṣẹ metiriki kan pẹlu akoko idahun si Brubeck. Awọn idahun miliọnu kan wa, ṣugbọn alaropọ da awọn metiriki 10 nikan pada. O ni nọmba awọn eniyan ti o wa, o pọju, o kere julọ ati akoko idahun apapọ, agbedemeji ati ipin 4th. Lẹhinna a gbe data naa si Graphite ati pe a rii gbogbo rẹ laaye.

A tun ni akojọpọ fun awọn metiriki lori ohun elo, sọfitiwia, awọn metiriki eto ati eto ibojuwo Munin atijọ wa (o ṣiṣẹ fun wa titi di ọdun 2015). A gba gbogbo eyi nipasẹ C daemon CollectD (o ni gbogbo opo ti awọn afikun oriṣiriṣi ti a ṣe sinu rẹ, o le ṣe ibo gbogbo awọn orisun ti eto agbalejo eyiti o ti fi sii, kan pato ninu iṣeto ni ibiti o ti kọ data) ati kọ data si Graphite nipasẹ rẹ. O tun ṣe atilẹyin awọn afikun Python ati awọn iwe afọwọkọ ikarahun, nitorinaa o le kọ awọn solusan aṣa tirẹ: CollectD yoo gba data yii lati ọdọ agbegbe tabi agbalejo latọna jijin (ti o ro Curl) ati firanṣẹ si Graphite.

Lẹhinna a firanṣẹ gbogbo awọn metiriki ti a kojọ si Carbon-c-relay. Eyi ni ojutu Carbon Relay lati Graphite, ti a ṣe atunṣe ni C. Eyi jẹ olulana ti o gba gbogbo awọn metiriki ti a fi ranṣẹ lati ọdọ awọn apepọ wa ati awọn ipa-ọna wọn si awọn apa. Paapaa ni ipele ipa-ọna, o ṣayẹwo iwulo ti awọn metiriki naa. Ni akọkọ, wọn gbọdọ ni ibamu si ero iṣaaju ti Mo fihan tẹlẹ ati, keji, wọn wulo fun graphite. Bibẹẹkọ wọn yoo lọ silẹ.

Carbon-c-relay lẹhinna firanṣẹ awọn metiriki si iṣupọ Graphite. A lo Carbon-cache, tunkọ ni Go, bi ibi ipamọ akọkọ ti awọn metiriki. Go-erogba, nitori awọn oniwe-multithreading, jina outperforms Erogba-cache. O gba data ati kọwe si awọn disiki ni lilo package whisper (boṣewa, ti a kọ sinu Python). Lati le ka data lati awọn ibi ipamọ wa, a lo API Graphite. O ti wa ni Elo yiyara ju boṣewa Graphite WEB. Kini yoo ṣẹlẹ si data nigbamii?

Wọn lọ si Grafana. A lo awọn iṣupọ lẹẹdi wa bi orisun akọkọ ti data, pẹlu a ni Grafana bi wiwo wẹẹbu fun iṣafihan awọn metiriki ati awọn dasibodu kikọ. Fun ọkọọkan awọn iṣẹ wọn, awọn olupilẹṣẹ ṣẹda dasibodu tiwọn. Lẹhinna wọn kọ awọn aworan ti o da lori wọn, eyiti o ṣafihan awọn metiriki ti wọn kọ lati awọn ohun elo wọn. Ni afikun si Grafana, a tun ni SLAM. Eyi jẹ ẹmi eṣu Python ti o ṣe iṣiro SLA ti o da lori data lati lẹẹdi. Gẹgẹbi Mo ti sọ tẹlẹ, a ni awọn iṣẹ mejila mejila, ọkọọkan wọn ni awọn ibeere tirẹ. Lilo SLAM, a lọ si iwe-ipamọ ati ṣe afiwe pẹlu ohun ti o wa ninu Graphite ati ṣe afiwe bi awọn ibeere ṣe baamu wiwa awọn iṣẹ wa.

Jẹ ki a lọ siwaju: gbigbọn. O ti ṣeto ni lilo eto ti o lagbara - Moira. O jẹ ominira nitori pe o ni Graphite tirẹ labẹ hood. Ni idagbasoke nipasẹ awọn eniyan lati SKB "Kontur", ti a kọ sinu Python ati Go, orisun ṣiṣi patapata. Moira gba sisan kanna ti o lọ sinu awọn graphites. Ti fun idi kan ibi ipamọ rẹ ba ku, titaniji rẹ yoo tun ṣiṣẹ.

A ran Moira ni Kubernetes; o nlo iṣupọ ti awọn olupin Redis bi aaye data akọkọ. Abajade jẹ eto ifarada-aṣiṣe. O ṣe afiwe ṣiṣan ti awọn metiriki pẹlu atokọ ti awọn okunfa: ti ko ba si awọn mẹnuba ninu rẹ, lẹhinna o ṣubu metric naa. Nitorinaa o ni anfani lati da awọn gigabytes ti awọn metiriki fun iṣẹju kan.

A tun so LDAP ile-iṣẹ kan si i, pẹlu iranlọwọ ti eyiti olumulo kọọkan ti eto ile-iṣẹ le ṣẹda awọn iwifunni fun ara wọn ti o da lori awọn okunfa ti o wa tẹlẹ (tabi tuntun ti a ṣẹda). Niwọn igba ti Moira ni Graphite, o ṣe atilẹyin gbogbo awọn ẹya rẹ. Nitorina o kọkọ gba ila naa ki o daakọ rẹ sinu Grafana. Wo bi data ṣe han lori awọn aworan. Ati lẹhinna o mu ila kanna ki o daakọ sinu Moira. O gbele pẹlu awọn opin ati gba itaniji ni iṣelọpọ. Lati ṣe gbogbo eyi, iwọ ko nilo imọ kan pato. Moira le gbigbọn nipasẹ SMS, imeeli, Jira, Slack... O tun ṣe atilẹyin ipaniyan ti awọn iwe afọwọkọ aṣa. Nigbati okunfa kan ba ṣẹlẹ si i, ati pe o ṣe alabapin si iwe afọwọkọ aṣa tabi alakomeji, o ṣiṣẹ ati firanṣẹ JSON si alakomeji yii lori stdin. Nitorinaa, eto rẹ gbọdọ ṣe itupalẹ rẹ. Ohun ti iwọ yoo ṣe pẹlu JSON yii jẹ tirẹ. Ti o ba fẹ, firanṣẹ si Telegram, ti o ba fẹ, ṣii awọn iṣẹ-ṣiṣe ni Jira, ṣe ohunkohun ti.

A tun lo idagbasoke tiwa fun titaniji - Imagotag. A ṣe atunṣe nronu naa, eyiti a maa n lo fun awọn ami idiyele itanna ni awọn ile itaja, lati baamu awọn iwulo wa. A mu awọn okunfa lati Moira si o. O tọkasi iru ipo ti wọn wa ati nigba ti wọn waye. Diẹ ninu awọn eniyan idagbasoke ti kọ awọn iwifunni silẹ ni Slack ati imeeli ni ojurere ti igbimọ yii.

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

O dara, niwọn igba ti a jẹ ile-iṣẹ ilọsiwaju, a tun ṣe abojuto Kubernetes ninu eto yii. A fi sii ninu eto nipa lilo Heapster, eyiti a fi sori ẹrọ ni iṣupọ, o gba data ati firanṣẹ si Graphite. Bi abajade, aworan atọka naa dabi eyi:

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice

Abojuto irinše

Eyi ni atokọ ti awọn ọna asopọ si awọn paati ti a lo fun iṣẹ yii. Gbogbo wọn jẹ orisun ṣiṣi.

Aworan:

Carbon-c-relay:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

Akojo:

ti gba.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Статистика

Ati pe nibi ni diẹ ninu awọn nọmba nipa bi eto naa ṣe n ṣiṣẹ fun wa.

Aggregator (brubeck)

Nọmba awọn metiriki: ~ 300 / iṣẹju-aaya
Aarin fun fifiranṣẹ awọn metiriki si Graphite: 30 iṣẹju-aaya
Lilo orisun olupin: ~ 6% Sipiyu (a n sọrọ nipa awọn olupin ti o ni kikun); ~ 1Gb Ramu; ~ 3 Mbps LAN

Lẹẹdi (erogba lọ)

Nọmba awọn metiriki: ~ 1 / min
Aarin imudojuiwọn metiriki: iṣẹju-aaya 30
Eto ipamọ Metrics: 30sec 35d, 5min 90d, 10min 365d (fun ọ ni oye ohun ti o ṣẹlẹ si iṣẹ naa fun igba pipẹ)
Lilo orisun olupin: ~ 10% Sipiyu; 20Gb Ramu; ~ 30 Mbps LAN

Ni irọrun

A ni Avito ga ni iye irọrun ni iṣẹ ibojuwo wa. Kini idi ti o fi jade bi eyi gangan? Ni akọkọ, awọn paati rẹ jẹ paarọ: mejeeji awọn paati funrararẹ ati awọn ẹya wọn. Ni apa keji, atilẹyin. Niwọn igba ti gbogbo iṣẹ akanṣe wa ni ṣiṣi, o le ṣatunkọ koodu funrararẹ, ṣe awọn ayipada, ati ṣe awọn iṣẹ ti ko si lati inu apoti. Awọn akopọ ti o wọpọ ni a lo, ni pataki Go ati Python, nitorinaa eyi ni o rọrun.

Eyi jẹ apẹẹrẹ ti iṣoro gidi kan. Metiriki ninu Graphite jẹ faili kan. O ni orukọ kan. Orukọ faili = orukọ metiriki. Ati pe ọna kan wa lati de ibẹ. Awọn orukọ faili ni Linux ni opin si awọn ohun kikọ 255. Ati pe a ni (bii “awọn alabara inu”) awọn eniyan lati ẹka ibi ipamọ data. Wọn sọ fun wa: “A fẹ lati ṣe atẹle awọn ibeere SQL wa. Ati pe wọn kii ṣe awọn ohun kikọ 255, ṣugbọn 8 MB kọọkan. A fẹ lati ṣafihan wọn ni Grafana, wo awọn paramita fun ibeere yii, ati paapaa dara julọ, a fẹ lati rii oke ti iru awọn ibeere naa. Yoo jẹ nla ti o ba han ni akoko gidi. Yoo dara gaan lati fi wọn sinu itaniji. ”

Abojuto bi iṣẹ kan: eto apọjuwọn fun faaji microservice
Apeere ibeere SQL ni a mu bi apẹẹrẹ lati ojula postgrespro.ru

A ṣeto olupin Redis kan ati lo awọn afikun ti a kojọpọ, eyiti o lọ si Postgres ati mu gbogbo data lati ibẹ, fifiranṣẹ awọn metiriki si Graphite. Ṣugbọn a rọpo orukọ metiriki pẹlu hashes. A firanṣẹ hash kanna si Redis nigbakanna, ati gbogbo ibeere SQL bi iye kan. Gbogbo ohun ti a ni lati ṣe ni rii daju pe Grafana le lọ si Redis ki o gba alaye yii. A nsii API Graphite nitori... eyi ni wiwo akọkọ fun ibaraenisepo ti gbogbo awọn paati ibojuwo pẹlu lẹẹdi, ati pe a tẹ iṣẹ tuntun kan nibẹ ti a pe ni aliasByHash () - lati Grafana a gba orukọ metiriki naa, ati lo ni ibeere lati Redis bi bọtini, ni esi a gba iye bọtini naa, eyiti o jẹ “ibeere SQL” wa Bayi, a ṣe afihan ni Grafana ifihan ibeere SQL kan, eyiti ko ṣee ṣe lati ṣafihan nibẹ, pẹlu awọn iṣiro lori rẹ (awọn ipe, awọn ori ila, lapapọ_akoko, ...).

Awọn esi

Wiwa Iṣẹ ibojuwo wa wa 24/7 lati eyikeyi ohun elo ati eyikeyi koodu. Ti o ba ni iwọle si awọn ohun elo ibi ipamọ, o le kọ data si iṣẹ naa. Ede ko ṣe pataki, awọn ipinnu ko ṣe pataki. Iwọ nikan nilo lati mọ bi o ṣe le ṣii iho, fi metric kan sibẹ ki o pa iho naa.

Igbẹkẹle Gbogbo awọn paati jẹ ọlọdun ẹbi ati mu awọn ẹru wa daradara.

Idena kekere si titẹsi. Lati le lo eto yii, iwọ ko nilo lati kọ awọn ede siseto ati awọn ibeere ni Grafana. Kan ṣii ohun elo rẹ, tẹ iho sinu rẹ ti yoo firanṣẹ awọn metiriki si Graphite, tii, ṣii Grafana, ṣẹda dashboards nibẹ ki o wo ihuwasi awọn metiriki rẹ, gbigba awọn iwifunni nipasẹ Moira.

Ominira. O le ṣe gbogbo eyi funrararẹ, laisi iranlọwọ ti awọn ẹlẹrọ DevOps. Ati pe eyi jẹ anfani, nitori o le ṣe atẹle iṣẹ akanṣe rẹ ni bayi, o ko ni lati beere lọwọ ẹnikẹni - boya lati bẹrẹ iṣẹ tabi lati ṣe awọn ayipada.

Kí ni à ń lépa?

Ohun gbogbo ti a ṣe akojọ rẹ si isalẹ kii ṣe awọn ero abọtẹlẹ nikan, ṣugbọn nkankan si eyiti o kere ju awọn igbesẹ akọkọ ti a ti gbe.

  1. Anomaly aṣawari. A fẹ ṣẹda iṣẹ kan ti yoo lọ si awọn ibi ipamọ Graphite wa ati ṣayẹwo metiriki kọọkan nipa lilo awọn algoridimu oriṣiriṣi. Awọn algoridimu tẹlẹ wa ti a fẹ lati wo, data wa, a mọ bi a ṣe le ṣiṣẹ pẹlu rẹ.
  2. Metadata. A ni ọpọlọpọ awọn iṣẹ, wọn yipada lori akoko, gẹgẹ bi awọn eniyan ti o ṣiṣẹ pẹlu wọn. Ṣiṣe itọju iwe nigbagbogbo pẹlu ọwọ kii ṣe aṣayan. Ti o ni idi ti a fi nfi awọn metadata sinu awọn iṣẹ microservices wa bayi. O sọ ẹniti o ṣe idagbasoke rẹ, awọn ede ti o ṣe ajọṣepọ pẹlu awọn ibeere SLA, ibo ati tani o yẹ ki o firanṣẹ awọn iwifunni. Nigbati o ba nfi iṣẹ kan ransẹ, gbogbo data nkankan ni a ṣẹda ni ominira. Bi abajade, o gba awọn ọna asopọ meji - ọkan si awọn okunfa, ekeji si dashboards ni Grafana.
  3. Abojuto ni gbogbo ile. A gbagbọ pe gbogbo awọn olupilẹṣẹ yẹ ki o lo iru eto kan. Ni idi eyi, o nigbagbogbo ye ibi ti ijabọ rẹ wa, ohun ti o ṣẹlẹ si rẹ, ibi ti o ṣubu, nibiti awọn ailera rẹ wa. Ti, fun apẹẹrẹ, ohun kan ba wa ati kọlu iṣẹ rẹ, lẹhinna o yoo kọ ẹkọ nipa rẹ kii ṣe lakoko ipe lati ọdọ oluṣakoso, ṣugbọn lati itaniji, ati pe o le ṣii awọn akọọlẹ tuntun lẹsẹkẹsẹ ki o wo ohun ti o ṣẹlẹ nibẹ.
  4. Ga išẹ. Ise agbese wa n dagba nigbagbogbo, ati loni o ṣe ilana nipa awọn iye metric 2 fun iṣẹju kan. Ni ọdun kan sẹyin, nọmba yii jẹ 000. Ati pe idagba naa tẹsiwaju, ati pe eyi tumọ si pe lẹhin igba diẹ Graphite (whisper) yoo bẹrẹ lati fifuye disiki subsystem. Gẹgẹbi Mo ti sọ tẹlẹ, eto ibojuwo yii jẹ gbogbo agbaye nitori iyipada ti awọn paati. Ẹnikan n ṣetọju ati nigbagbogbo faagun awọn amayederun wọn pataki fun Graphite, ṣugbọn a pinnu lati lọ ni ipa-ọna ti o yatọ: lilo Tẹ Ile bi ibi ipamọ fun awọn metiriki wa. Iyipada yii ti fẹrẹ pari, ati laipẹ Emi yoo sọ fun ọ ni alaye diẹ sii bi a ṣe ṣe eyi: kini awọn iṣoro ti o wa ati bii wọn ṣe bori, bii ilana iṣiwa ti lọ, Emi yoo ṣe apejuwe awọn paati ti a yan bi abuda ati awọn atunto wọn.

Mo dupe fun ifetisile re! Beere ibeere rẹ lori koko, Emi yoo gbiyanju lati dahun nibi tabi ni awọn wọnyi posts. Boya ẹnikan ni iriri kikọ eto ibojuwo ti o jọra tabi yi pada si Clickhouse ni ipo kanna - pin ninu awọn asọye.

orisun: www.habr.com

Fi ọrọìwòye kun