Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Breathnaímid ar na bunghnéithe logáil isteach i Docker agus Kubernetes, agus ansin déan machnamh ar dhá uirlis is féidir a úsáid go sábháilte i dtáirgeadh: Grafana Loki agus an stack EFK (Elasticsearch + Fluent Bit + Kibana).

Is é ábhar an ailt ná squeeze ó léacht oscailte na scoile "Slurm". Má tá dúil agat, agus níos mó fós riachtanas táirgeachta, is féidir leat dul faoi oiliúint iomlán - clárú le haghaidh cúrsa ar Monatóireacht agus logáil bonneagair i Kubernetes.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Logáil isteach i Docker

Ag leibhéal Kubernetes, reáchtálann iarratais i pods, ach ag an leibhéal thíos is gnách go reáchtálann siad i Docker. Dá bhrí sin, ní mór duit logáil a chumrú sa chaoi is gur féidir logaí a bhailiú ó choimeádáin. Seoltar coimeádáin ag Docker, rud a chiallaíonn go gcaithfidh tú a thuiscint conas a oibríonn logáil ag leibhéal an Docker.

Tá súil agam go bhfuil a fhios ag gach léitheoir: ba cheart logaí iarratais a scríobh chuig stdout/stderr, agus ní laistigh den choimeádán. Comhbhailíonn Docker Daemon na logaí, agus oibríonn sé leis na logaí sin go díreach a sheoltar chuig stdout/stderr. Ina theannta sin, tá fadhbanna ag baint le logaí a scríobh taobh istigh den choimeádán: swells an coimeádán ón logáil atá ag fás (mar is dócha nach bhfuil Logrotate sa choimeádán), agus níl Docker Daemon ar an eolas faoin logáil seo.

Tá roinnt tiománaithe loga nó breiseán ag Docker chun logaí coimeádán a bhailiú. Tá níos lú tiománaithe loga ag an Eagrán Pobail Docker (CE) saor in aisce ná an Eagrán Fiontraíochta Docker (EE).

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Níor úsáid mé Docker EE riamh go praiticiúil: ag Southbridge déanaimid iarracht cloí le réitigh Foinse Oscailte, agus ní gá do chliaint an chuid is mó de na gnéithe breise de Docker EE.

Logáil isteach tiománaithe i Docker CE:

áitiúil — logaí a scríobh chuig comhaid inmheánacha Deamhan Docker;
json-chomhad — json-log a chruthú i bhfillteán gach coimeádáin;
iris — logaí a sheoladh chuig journald.

Tá socruithe logála docker lonnaithe sa chomhad daemon.json.

Léiríonn an réimse “log-tiománaí” an breiseán, agus léiríonn an réimse “log-roghanna” a socruithe. Sa sampla thuas, sonraítear an breiseán “json-file”, is é teorainn mhéid an loga ná “uasmhéid”: “10m”; teorainn ar líon na gcomhad (socruithe uainíochta) - "uas-comhad": "3"; chomh maith leis na luachanna a bheidh ag gabháil leis na logs.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Is féidir roinnt socruithe tiománaí logála a shocrú tríd an bhfóntas ordaithe. Tá sé seo áisiúil más gá coimeádán ar leith a sheoladh le tiománaí logála difriúil.

Seo an chuma atá ar an scéim logála in Docker:

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Conas a oibríonn an scéim: cruthaíonn tiománaí logála, mar json-file, comhaid. Bailíonn bailitheoirí loga (Rsyslog, Fluentd, Logagent agus eile) na comhaid seo agus aistrítear iad le haghaidh stórála chuig Leaisteachas, Sematext nó saoráidí stórála eile.

Gnéithe den logáil isteach i Kubernetes

Breathnaíonn scéim logáil simplithe i Kubernetes mar seo: tá pod ann, tá coimeádán ag rith ann, seolann an coimeádán logaí chuig stdout/stderr. Cruthaíonn Docker comhad ansin agus scríobhann sé logaí, ar féidir é a rothlú ansin.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Breathnaímid ar na gnéithe a bhaineann le logáil isteach i Kubernetes.

Sábháil logaí idir imscaradh. Is réamhriachtanas é seo chun logáil cheart a shocrú. Mura sábhálann tú logaí idir imscaradh, ansin nuair a scaoiltear leagan nua den fheidhmchlár, déanfar logaí an chinn roimhe seo a fhorscríobh, agus beidh an coimeádán á atosú freisin lán le cailliúint logaí. Tá —eochair roimhe seo ag Kubernetes, a ligeann duit logaí feidhmchláir a fheiceáil suas go dtí an atosú Pod deireanach, ach ní níos doimhne.

Logs comhiomlán ó gach cás. Má tá microservices á óstáil i scamaill, ansin tá an soláthraí scamall freagrach as monatóireacht a dhéanamh ar an gcóras. Má tá microservices ar do chrua-earraí féin, ansin i dteannta le logaí ó choimeádáin, ní mór duit logaí córais a bhailiú.

Roimhe seo, ní raibh aon uirlisí áisiúla ann chun logaí a bhailiú ón gcóras agus ó mhicrisheirbhísí araon. De ghnáth, bhailigh uirlis amháin logaí córais (mar shampla, Rsyslog), agus bhailigh uirlis eile logaí ó Docker (mar shampla, journal-bit leis an tiománaí loga Docker cumraithe go journald). Rinneamar iarracht journal-bit a úsáid chun logaí a bhailiú ón dá choimeádán (trí shonrú sa tiománaí loga Docker gur cheart logaí a scríobh chuig journald) agus ón gcóras (i CentOS Tá systemd agus journald ag 7 cheana féin. Oibríonn an réiteach, ach níl sé idéalach. Má tá go leor logaí ann, tosaíonn journal-bit ag moilliú, agus cailltear teachtaireachtaí.

Lean na turgnaimh ar aghaidh agus thángthas ar bhealach eile. CentOS Déantar 7 bpríomhlog córais (teachtaireachtaí, iniúchadh, slán) a dhúbláil sa log var mar chomhaid. Is féidir Docker a chumrú freisin chun logaí a shábháil i gcomhaid JSON. Dá réir sin, tá na comhaid seo CentOS Is féidir 7 agus Docker a thógáil le chéile.

Le himeacht ama, tháinig tóir ar réiteach ELK Stack. Is meascán de uirlisí éagsúla é: Elasticsearch, Logstash agus Kibana.

Stórálann Elasticsearch logaí ó choimeádáin, bailíonn Logstash logaí ó chásanna, ligeann Kibana duit na logaí faighte a phróiseáil agus graif a thógáil bunaithe orthu. Tá an ELK Stack in úsáid go gníomhach le tamall anuas, ach is é mo thuairim go bhfuil an t-am aige ag imeacht. Inseoidh mé duit cén fáth níos déanaí.

Cuir meiteashonraí leis. Is féidir pods, iarratais, coimeádáin a reáchtáil in áit ar bith. Ina theannta sin, is féidir go mbeadh roinnt cásanna ag iarratas amháin. Scríobhtar na logaí san fhormáid chéanna, ach ní mór dúinn a thuiscint cén macasamhail atá ann, cé acu Pod atá á scríobh, agus cén ainmspás ina bhfuil sé suite. Sin é an fáth go gcaithfidh logs meiteashonraí a chur leis.

Parsáil logs. Tá sé greannmhar, ach is féidir leis an gcostas a bhaineann le córas logáil agus monatóireachta a chothabháil níos mó ná costas an phríomhiarratais. Nuair a bhíonn na mílte agus na mílte logs ag eitilt in aghaidh an tsoicind, is cosúil go bhfuil sé seo nádúrtha, ach ní mór duit an líne a fhios fós. Bealach amháin leis an líne seo a aimsiú ná logaí a pharsáil.

De ghnáth, ní gá na logaí go léir a bhailiú agus a stóráil; níor cheart ach cuid a sheoladh le haghaidh stórála - mar shampla, logaí leis an stádas "rabhadh" nó "earráid". Má tá muid ag caint faoi logaí rialtóirí nginx nó ingress, ansin is féidir leat a sheoladh le haghaidh stórála ach amháin iad siúd a bhfuil a stádas difriúil ó 200. Ach ní comhairle uilíoch é seo: má thógann tú anailísíocht ar logaí Nginx ar bhealach éigin, is léir gur fiú iad a bhailiú. .

Ní mholtar logaí a scagadh go míchúramach, mar b’fhéidir nach leor na sonraí scagtha don ghnáth-anailísíocht. Ar an láimh eile, b'fhéidir gur cheart anailísíocht a dhéanamh ní ar an leibhéal logála, ach ar leibhéal an bhailiúcháin méadrachta. Ansin ní bheidh ort na céadta mílte sraitheanna a stóráil le cód 200. Cur chuige amháin is ea faisnéis a fháil faoi thrácht agus earráidí ó mhéadracht rialaithe isteach.

Go ginearálta, ní mór duit smaoineamh go cúramach anseo: cad ba mhaith leat a stóráil agus cé chomh fada, mar gheall ar shlí eile beidh cás ann nuair a thógfaidh an córas logála níos mó acmhainní ná an príomhthionscadal.

Níl aon réiteach caighdeánach ann maidir le logáil fós. Murab ionann agus monatóireacht, áit a bhfuil réiteach Prometheus amháin is coitianta, níl aon chaighdeán sa logáil.

Sa léacht seo, féachfaimid ar dhá uirlis: ceann amháin a bhfuil tóir uirthi, agus an dara ceann ag fáil tóir. Chomh maith leo, tá daoine eile, ach ní bheidh muid i dteagmháil leo san Airteagal seo.

Agus na gnéithe go léir a pléadh thuas á gcur san áireamh, is féidir logáil isteach Kubernetes a léiriú sa léaráid seo a leanas anois:

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Fanann logáil agus rothlú an choimeádáin, ach feictear gníomhaire bailiúcháin, a roghnaíonn na logaí agus a sheolann iad le haghaidh stórála (sa léaráid - chuig an Inneall Logála). Ritheann an gníomhaire ar gach nód agus de ghnáth reáchtáiltear é ar Kubernetes.

Anois, déanaimis féachaint ar uirlisí logála.

Grafana Loki

Grafana Loki chuma le déanaí, ach tá cáil go leor cheana féin. Na buntáistí a bhaineann leis: éasca le suiteáil, ídíonn sé roinnt acmhainní, ní gá Elasticsearch a shuiteáil, toisc go stórálann sé sonraí i TSDB (bunachar sonraí sraith ama). San alt roimhe seo, scríobh mé go stórálann Prometheus sonraí i mbunachar sonraí den sórt sin, agus tá sé seo ar cheann de na cosúlachtaí iomadúla idir an dá tháirge. Maíonn na forbróirí fiú gurb é Loki “Prometheus don domhan logála”.

Léiriú gairid ar TSDB dóibh siúd nár léigh é alt roimhe seo: Tá TSDB iontach ag stóráil méideanna móra sonraí sraith ama, ach níl sé deartha le haghaidh stórála fadtéarmach. Más rud é ar chúis éigin gur gá duit logaí a stóráil ar feadh níos faide ná dhá sheachtain, ansin is fearr a n-aistriú chuig bunachar sonraí eile a chumrú.

Buntáiste eile a bhaineann le Loki ná go n-úsáidtear Grafana le haghaidh léirshamhlú sonraí. Tá sé an-áisiúil: i Grafana féachaimid ar shonraí monatóireachta agus, tar éis Loki a nascadh, féachaimid ar na logaí. Is féidir leat graif a thógáil ag baint úsáide as na logaí.

Breathnaíonn an ailtireacht Loki rud éigin mar seo:

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Ag baint úsáide as DaemonSet, déantar gníomhaire - Promtail nó Giotán Líofa - a imscaradh ar gach freastalaí sa bhraisle. Bailíonn an gníomhaire logaí. Tógann Loki iad agus stórálann siad iad ina TSDB. Cuirtear meiteashonraí leis na logaí láithreach, rud atá áisiúil: is féidir leat a scagadh de réir Podaí, spásanna ainmneacha, ainmneacha coimeádáin, agus fiú lipéid.

Treoracha le haghaidh Suiteáil Loki

Ritheann Loki ar chomhéadan eolach Grafana. Tá a teanga fiosrúcháin féin ag Loki fiú, LogQL a thugtar air - cosúil le hainm agus comhréir le PromQL in Prometheus. Tá leideanna fiosrúcháin ag comhéadan Loki, mar sin ní gá duit iad a chur ar an eolas de chroí.

Doiciméadú don teanga LogQL

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil
Loki sa chomhéadan Grafana

Ag baint úsáide as scagairí, is féidir leat cóid a aimsiú i Loki ("400", "404" agus aon cheann eile); logs amharc ón nód ar fad; scagaire gach loga a bhfuil an focal "earráid". Má chliceálann tú ar an loga, osclófar cárta leis an eolas ar fad faoin imeacht.

Tá go leor uirlisí ag Loki a ligeann duit na logaí riachtanacha a tharraingt amach, cé go bhfuil sé macánta, go teicniúil d'fhéadfadh go mbeadh níos mó ann. Anois tá Loki ag forbairt go gníomhach agus ag fáil tóir.

Leaisteacha + Giotán Líofa + Kibana (Cruach EFK)

Is uirlis logála níos clasaiceach é an chairn EFK, ach nach bhfuil chomh coitianta leis.

Ag tús an ailt, luadh ELK (Elasticsearch + Logstash + Kibana), ach tá an stack seo as dáta mar gheall ar an Logstash nach bhfuil an-táirgiúil agus ag an am céanna atá dian ar acmhainní. Ina áit sin, thosaigh siad ag baint úsáide as an níos éadroma agus níos táirgiúla Fluentd, agus tar éis roinnt ama tháinig chun a chuid cabhrach Giotán Líofa — gníomhaire bailiúcháin níos éadroime agus níos táirgiúla fós.

De réir na bhforbróirí, tá Giotán Líofa níos mó ná 100 uair níos fearr ó thaobh feidhmíochta ná Fluentd: “i gcás ina n-ídíonn Fluentd 20 MB RAM, ídeoidh Giotán Líofa 150 KB” - luachan díreach ó na doiciméid. Ag féachaint air seo, thosaigh Giotán Líofa a úsáid níos minice.

Tá níos lú gnéithe ag Giotán Líofa ná mar a bhíonn Fluentd, ach clúdaíonn sé na bunriachtanais, mar sin úsáidimid Giotán Líofa den chuid is mó.

Scéim oibriúcháin an chruach EFK: bailíonn an gníomhaire logaí ó na pods go léir (mar riail, is DaemonSet é seo a ritheann ar gach freastalaí sa bhraisle) agus cuireann sé chuig an stóráil (Elasticsearch, PostgreSQL nó Kafka). Ceanglaíonn Kibana leis an stóráil agus aisghabhann sé an fhaisnéis riachtanach go léir as sin.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Kibana cuireann sé faisnéis i láthair i gcomhéadan gréasáin áisiúil. Tá graif, scagairí agus go leor eile.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Is féidir leat deais iomlána a chruthú ag baint úsáide as logaí.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Gnéithe Giotán Líofa

Ós rud é go ginearálta nach gcloistear níos lú faoi Giotán Líofa ná Logstash, déanaimis breathnú níos géire air. Is féidir Giotán Líofa a roinnt go loighciúil i 6 mhodúl; is féidir forlíontáin a áireamh i gcuid de na modúil a leathnaíonn cumas Giotán Líofa.

Logáil isteach Kubernetes: conas logaí a bhailiú, a stóráil, a pharsáil agus a phróiseáil

Modúl ionchuir bailíonn sé logaí ó chomhaid, ó sheirbhísí córasacha, agus fiú ó tcp-socket (ní mór duit ach an críochphointe a shonrú, agus tosóidh Giotán Líofa ag dul ann). Is leor na cumais seo chun logaí a bhailiú ón gcóras agus ó na coimeádáin araon.

I dtáirgeadh is minic a úsáidimid forlíontáin eireaball (is féidir é a shocrú i gcoinne fillteán le logs) agus córas (is féidir leat insint dó cé na seirbhísí as a mbailítear logaí).

Modúl parsálaí tugann sé na logaí go foirm ghinearálta. De réir réamhshocraithe, is teaghrán iad logaí Nginx. Ag baint úsáide as an breiseán, is féidir an teaghrán seo a thiontú go JSON: socraigh na réimsí agus a luachanna. Tá sé i bhfad níos éasca oibriú leis JSON ná loga teaghrán mar go bhfuil roghanna sórtála níos solúbtha ann.

Modúl scagaire. Ag an leibhéal seo, déantar logaí neamhriachtanacha a scagadh amach. Mar shampla, ní sheoltar ach logaí leis an luach “rabhadh” nó le lipéid áirithe le haghaidh stórála. Téann na logaí roghnaithe isteach sa mhaolán.

Modúl maolán. Tá dhá chineál maoláin ag Giotán Líofa: maolán cuimhne agus maolán diosca. Is éard is maolán ann ná stóráil shealadach logaí, a theastaíonn i gcás earráidí nó teipeanna. Tá gach duine ag iarraidh a shábháil ar RAM, mar sin de ghnáth roghnaíonn siad maolán diosca. Ach ní mór duit a chur san áireamh go bhfuil na logs íoslódáil fós i gcuimhne roimh dul chuig an diosca.

Modúl Ródúcháin/Aschuir ina bhfuil rialacha agus seoltaí chun logaí a sheoladh. Mar a luadh cheana, is féidir logs a sheoladh chuig Elasticsearch, PostgreSQL nó, mar shampla, Kafka.

Suimiúil go leor, is féidir logaí ó Giotán Líofa a sheoladh chuig Fluentd. Ós rud é go bhfuil an chéad cheann níos éadroma agus níos lú feidhmiúla, tríd is féidir leat logaí a bhailiú agus iad a sheoladh chuig Fluentd, agus ansin, le cabhair ó bhreiseáin bhreise, is féidir iad a phróiseáil tuilleadh agus a sheoladh chuig stórtha.

Má tá sé ar intinn agat Elasticsearch a úsáid...

Ar deireadh, dhá leid dóibh siúd a phleanáil Elasticsearch a úsáid mar stóráil log i dtáirgeadh.

  1. Socrú foláirimh ag baint úsáide as ElastAlert. Déanann an clár seo teachtaireachtaí tábhachtacha a leithlisiú ón sreabhadh ginearálta logaí agus cuireann sé foláireamh orthu chuig ríomhphost nó chuig cainéal eile. Fíor, níor tháinig sé amach chomh fada ó shin scéal brónach go bhféadfadh sé go dtiocfaidh deireadh leis an tionscadal go luath.
  2. Rothlaigh logaí ag baint úsáide as an bhfeidhmchlár Coimeádaí nó glaonna chuig an API Elasticsearch. Tá leaisteacha féin, i bprionsabal, ag déanamh céimeanna suntasacha anois chun saol na n-innéacsanna a bhainistiú gan úsáid a bhaint as uirlisí tríú páirtí. Go ginearálta, níl aon phointe ann maidir le logaí a stóráil ar feadh i bhfad: ní dócha go mbeidh gá le haon logáil tar éis dhá sheachtain - má tá sé fíor-chriticiúil, is cinnte go ndéanfar é a phróiseáil i dhá sheachtain. Mar rogha dheireanach, is féidir sean-logs a chur i gcartlann agus a sheoladh áit éigin le haghaidh stórála fadtéarmach. Chuala mé faoi logaí speisialta a cheanglaítear de réir an dlí a stóráil ar feadh suas le 5 bliana. Go pearsanta, níor tháinig mé ar seo, ach ní dhéanfainn faisnéis den sórt sin a chomhionannú le gnáth-logs, agus b'fhéidir fiú iad a stóráil ar leithligh.

Le leanúint ...

Údar: Marcel Ibraev, riarthóir Kubernetes deimhnithe, innealtóir cleachtach sa chuideachta Southbridge, cainteoir agus forbróir an chúrsa Slurm.

Foinse: will.com

Ceannaigh óstáil iontaofa do shuímh le cosaint DDoS, freastalaithe VPS VDS 🔥 Ceannaigh óstáil gréasáin iontaofa le cosaint DDoS, freastalaithe VPS VDS | ProHoster