Logs á mbailiú ó Loki

Logs á mbailiú ó Loki

Ag Badoo, déanaimid monatóireacht leanúnach ar theicneolaíochtaí nua agus déanaimid measúnú ar cibé an fiú iad a úsáid inár gcóras. Ba mhaith linn ceann de na staidéir seo a roinnt leis an bpobal. Tá sé tiomnaithe do Loki, córas comhiomlánaithe loga.

Is réiteach é Loki chun logaí a stóráil agus a fheiceáil, agus cuireann an stack seo córas solúbtha ar fáil freisin chun anailís a dhéanamh orthu agus sonraí a sheoladh chuig Prometheus. I mí na Bealtaine, scaoileadh nuashonrú eile, a chuireann na cruthaitheoirí chun cinn go gníomhach. Bhí suim againn i cad is féidir le Loki a dhéanamh, cad iad na cumais a sholáthraíonn sé, agus a mhéid is féidir leis gníomhú mar mhalairt ar ELK, an stack a úsáidimid anois.

Cad é Loki

Is sraith comhpháirteanna é Grafana Loki le haghaidh córas iomlán chun oibriú le logaí. Murab ionann agus córais eile dá samhail, tá Loki bunaithe ar an smaoineamh gan ach meiteashonraí loga a innéacsú - lipéid (mar an gcéanna le Prometheus), agus na logaí a chomhbhrú ina smután ar leith.

Leathanach baile, GitHub

Sula dtugaimid isteach cad is féidir leat a dhéanamh le Loki, ba mhaith liom a shoiléiriú cad atá i gceist againn le "an smaoineamh meiteashonraí a innéacsú amháin." Déanaimis comparáid idir cur chuige Loki agus an cur chuige maidir le hinnéacsú i réitigh thraidisiúnta ar nós Elasticsearch, ag baint úsáide as an sampla de líne ó log nginx:

172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"

Déanann córais thraidisiúnta an tsraith iomlán a pharsáil, lena n-áirítear réimsí le líon mór luachanna uathúla user_id agus item_id, agus stóráiltear gach rud in innéacsanna móra. Is é an buntáiste a bhaineann leis an gcur chuige seo ná gur féidir leat ceisteanna casta a rith go tapa, ós rud é go bhfuil beagnach na sonraí go léir san innéacs. Ach tagann sé seo ar chostas sa mhéid is go n-éiríonn an t-innéacs mór, a aistríonn go riachtanais chuimhne. Mar thoradh air sin, tá an t-innéacs logála téacs iomlán inchomparáide i méid leis na logaí féin. Chun cuardach a dhéanamh go tapa tríd, ní mór an t-innéacs a luchtú i gcuimhne. Agus dá mhéad logaí, is amhlaidh is tapúla a fhásann an t-innéacs agus is amhlaidh is mó cuimhne a ídíonn sé.

Éilíonn cur chuige Loki nach mbaintear ach na sonraí riachtanacha as teaghrán, a bhfuil líon na luachanna beag. Ar an mbealach seo faigheann muid innéacs beag agus is féidir linn na sonraí a chuardach trína scagadh de réir ama agus de réir réimsí innéacsaithe, agus ansin an chuid eile a scanadh le habairtí rialta nó le cuardach fotheaghrán. Ní cosúil go bhfuil an próiseas is tapúla, ach scoilteann Loki an t-iarratas ina chodanna éagsúla agus déanann sé iad a fhorghníomhú go comhthreomhar, ag próiseáil cuid mhór sonraí i mbeagán ama. Tá líon na shards agus na n-iarratas comhthreomhar iontu inchumraithe; dá bhrí sin, braitheann an méid sonraí is féidir a phróiseáil in aghaidh an aonaid ama go líneach ar an méid acmhainní a chuirtear ar fáil.

Ligeann an comhbhabhtáil seo idir innéacs mór tapa agus innéacs beag, comhthreomhar brúidiúil do Loki costas an chórais a rialú. Is féidir é a chumrú agus a leathnú go solúbtha de réir riachtanas.

Tá trí chomhpháirt sa chruach Loki: Promtail, Loki, Grafana. Bailíonn Promtail logaí, próiseálann iad agus seolann chuig Loki iad. Coinníonn Loki iad. Agus is féidir le Grafana sonraí a iarraidh ó Loki agus iad a thaispeáint. Go ginearálta, is féidir Loki a úsáid, ní hamháin le haghaidh logaí a stóráil agus cuardach a dhéanamh tríothu. Soláthraíonn an stack iomlán deiseanna iontacha chun sonraí a thagann isteach a phróiseáil agus a anailísiú ag baint úsáide as an mbealach Prometheus.
Is féidir cur síos ar an bpróiseas suiteála a fháil anseo.

Cuardach Logála

Is féidir leat na logaí a chuardach i gcomhéadan speisialta Grafana - Explorer. Úsáideann na fiosrúcháin an teanga LogQL, atá an-chosúil leis an PromQL a úsáidtear i Prometheus. I bprionsabal, is féidir smaoineamh air mar ghrep dáilte.

Breathnaíonn an comhéadan cuardaigh mar seo:

Logs á mbailiú ó Loki

Tá dhá chuid san iarratas féin: roghnóir agus scagaire. Is éard atá i Roghnóir ná cuardach a úsáideann meiteashonraí innéacsaithe (lipéid) a shanntar do logaí, agus is teaghrán cuardaigh nó regexp é an scagaire a dhéanann scagadh ar thaifid arna sainiú ag an roghnóir. Sa sampla a thugtar: I braces curly tá roghnóir, gach rud ina dhiaidh sin scagaire.

{image_name="nginx.promtail.test"} |= "index"

Mar gheall ar an gcaoi a n-oibríonn Loki, ní féidir leat fiosruithe a dhéanamh gan roghnóir, ach is féidir lipéid a dhéanamh chomh ginearálta agus is mian leat.

Is luach eochrachluachach é roghnóir sna braces curly. Is féidir leat roghnóir a chomhcheangal agus coinníollacha cuardaigh éagsúla a shonrú ag baint úsáide as na hoibreoirí =, != nó nathanna rialta:

{instance=~"kafka-[23]",name!="kafka-dev"} 
// Найдёт логи с лейблом instance, имеющие значение kafka-2, kafka-3, и исключит dev 

Is éard is scagaire ann ná téacs nó regexp a scagfaidh amach na sonraí go léir a fhaigheann an roghnóir.

Is féidir graif ad-hoc a fháil bunaithe ar na sonraí faighte i mód méadrachta. Mar shampla, is féidir leat a fháil amach cé chomh minic is a bhíonn iontráil ina bhfuil an t-innéacs teaghrán le feiceáil i logaí nginx:

Logs á mbailiú ó Loki

Tá cur síos iomlán ar na cumais le fáil sna doiciméid LogQL.

Parsáil logáil

Tá go leor bealaí ann chun logaí a bhailiú:

  • Ag baint úsáide as Promtail, comhpháirt chaighdeánach den chruach chun logaí a bhailiú.
  • Go díreach ón gcoimeádán docker ag baint úsáide as Tiománaí logáil isteach Loki Docker.
  • Úsáid Giotán Líofa nó Líofa, ar féidir leo sonraí a sheoladh chuig Loki. Murab ionann agus Promtail, tá parsálaithe réamhdhéanta acu le haghaidh beagnach aon chineál loga agus is féidir leo logaí illíne a láimhseáil freisin.

De ghnáth úsáidtear Promtail le haghaidh parsála. Déanann sé trí rud:

  • Aimsíonn foinsí sonraí.
  • Ceangailte lipéid leo.
  • Seolann sonraí chuig Loki.

Faoi láthair is féidir le Promtail logaí a léamh ó chomhaid áitiúla agus ó irisleabhar córasach. Ní mór é a shuiteáil ar gach meaisín as a mbailítear na logaí.

Tá comhtháthú le Kubernetes: Promtail go huathoibríoch, trí API Kubernetes REST, aithníonn sé staid an bhraisle agus bailíonn sé logaí ó nód, seirbhís nó pod, ag postáil láithreach lipéid bunaithe ar mheiteashonraí ó Kubernetes (ainm pod, ainm comhaid, etc.) .

Is féidir leat freisin lipéid a chrochadh bunaithe ar shonraí ón logáil ag baint úsáide as Píblíne. Is féidir le Píblíne Promtail comhdhéanta de cheithre chineál céimeanna. Tuilleadh sonraí i doiciméadú oifigiúil, tabharfaidh mé faoi deara láithreach roinnt nuances.

  1. Céimeanna parsála. Is é seo an chéim RegEx agus JSON. Ag an gcéim seo, bainimid sonraí ó na logaí isteach sa léarscáil a bhaintear mar a thugtar air. Is féidir linn sliocht as JSON trí na réimsí a theastaíonn uainn a chóipeáil isteach sa léarscáil a bhaintear, nó trí shloinnte rialta (RegEx), áit a ndéantar grúpaí ainmnithe a “mhapáil” isteach sa léarscáil a bhaintear as. Is stór luach eochrach é an léarscáil Eastósctha, áit arb é eochair ainm na páirce, agus is é luach a luach ó na logaí.
  2. Céimeanna a athrú. Tá dhá rogha ag an gcéim seo: claochlú, áit a leagaimid na rialacha claochlaithe, agus foinse - an fhoinse sonraí le haghaidh claochlaithe ón léarscáil a bhaintear. Mura bhfuil a leithéid de réimse sa léarscáil a bhaintear, cruthófar é. Ar an mbealach seo is féidir lipéid a chruthú nach bhfuil bunaithe ar an léarscáil a bhaintear as. Ag an gcéim seo is féidir linn na sonraí sa léarscáil a bhaintear a ionramháil ag baint úsáide as measartha cumhachtach Teimpléad Golang. Ina theannta sin, ní mór dúinn cuimhneamh go bhfuil an léarscáil bainte lódáilte go hiomlán le linn parsála, rud a fhágann gur féidir, mar shampla, an luach atá ann a sheiceáil: “{{má tá luach taga .tag} ann{deireadh}}”. Tacaíonn an teimpléad le coinníollacha, lúba, agus roinnt feidhmeanna teaghrán mar Ionadaigh agus Baile Átha Troim.
  3. Céimeanna gníomhaíochta. Ag an bpointe seo is féidir leat rud éigin a dhéanamh leis an ábhar a bhaintear:
    • Cruthaigh lipéad ó na sonraí a bhaintear, a bheidh innéacsaithe ag Loki.
    • Athraigh nó socraigh am an imeachta ón loga.
    • Athraigh na sonraí (logthéacs) a rachaidh chuig Loki.
    • Cruthaigh méadracht.
  4. Céimeanna scagtha. Céim an chluiche, áit ar féidir linn iontrálacha nach gá dúinn a sheoladh /dev/null nó iad a chur ar aghaidh le haghaidh tuilleadh próiseála.

Ag baint úsáide as sampla de phróiseáil logaí nginx rialta, taispeánfaidh mé conas is féidir leat logaí a pharsáil ag baint úsáide as Promtail.

Don tástáil, glacaimis mar nginx-seachfhreastalaí íomhá nginx modhnaithe jwilder/nginx-proxy:alpach agus deamhan beag ar féidir a iarraidh air féin trí HTTP. Tá roinnt críochphointí ag an deamhan, ar féidir leis freagairtí de mhéideanna éagsúla a sholáthar, le stádas HTTP éagsúla agus le moilleanna éagsúla.

Baileoimid logaí ó choimeádáin dhuganna, atá le fáil feadh an chosáin /var/lib/docker/containers/ / -json.log

In docker-compose.yml déanaimid Promtail a chumrú agus an cosán chuig an gcumraíocht a shonrú:

promtail:
  image: grafana/promtail:1.4.1
 // ...
 volumes:
   - /var/lib/docker/containers:/var/lib/docker/containers:ro
   - promtail-data:/var/lib/promtail/positions
   - ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
 command:
   - '-config.file=/etc/promtail/promtail.yml'
 // ...

Cuir an cosán leis na logaí chuig promtail.yml (tá rogha “docker” sa chumraíocht, a dhéanann an rud céanna i líne amháin, ach ní bheadh ​​sé chomh soiléir):

scrape_configs:
 - job_name: containers

   static_configs:
       labels:
         job: containerlogs
         __path__: /var/lib/docker/containers/*/*log  # for linux only

Nuair a bheidh an chumraíocht seo cumasaithe, seolfar logaí ó gach coimeádán chuig Loki. Chun seo a sheachaint, athraíonn muid socruithe an nginx tástála i docker-compose.yml - cuir réimse tag logála leis:

proxy:
 image: nginx.test.v3
//…
 logging:
   driver: "json-file"
   options:
     tag: "{{.ImageName}}|{{.Name}}"

Ag eagarthóireacht promtail.yml agus ag bunú Phíblíne. Áirítear leis an ionchur logaí den chineál seo a leanas:

{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /api/index HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.096"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /200 HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.000"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}

Céim na píblíne:

 - json:
     expressions:
       stream: stream
       attrs: attrs
       tag: attrs.tag

Bainimid an sruth réimsí, attrs, attrs.tag (má tá siad ann) ón JSON atá ag teacht isteach agus cuirimid sa léarscáil a bhaintear iad.

 - regex:
     expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
     source: "tag"

Má d'éirigh linn réimse na clibeanna a chur ar an léarscáil a baineadh as, bainimid úsáid as regexp ansin bainimid amach ainmneacha na híomhá agus an choimeádáin.

 - labels:
     image_name:
     container_name:

Sannaimid lipéid. Má aimsítear na heochracha image_name agus container_name sna sonraí a bhaintear, ansin sannfar a luachanna do na lipéid chomhfhreagracha.

 - match:
     selector: '{job="docker",container_name="",image_name=""}'
     action: drop

Caithfimid gach loga nach bhfuil lipéid suiteáilte image_name agus container_name acu.

  - match:
     selector: '{image_name="nginx.promtail.test"}'
     stages:
       - json:
           expressions:
             row: log

I gcás gach loga a bhfuil a image_name nginx.promtail.test, bain an réimse loga as an loga foinse agus é a chur ar an léarscáil bhaintear leis an eochair ró.

  - regex:
         # suppress forego colors
         expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
         source: logrow

Déanaimid an líne ionchuir a ghlanadh le habairtí rialta agus tarraingímid amach an t-óstach fíorúil nginx agus an líne logála nginx.

     - regex:
         source: nginxlog
         expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?

Parsáil logáil nginx ag baint úsáide as nathanna rialta.

    - regex:
           source: request_url
           expression: ^.+.(?P<static_type>jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
     - regex:
           source: request_url
           expression: ^/photo/(?P<photo>[^/?.]+).*$
       - regex:
           source: request_url
           expression: ^/api/(?P<api_request>[^/?.]+).*$

Déanaimis request_url a pharsáil. Ag baint úsáide as regexp cinnimid cuspóir an iarratais: sonraí statacha, grianghraif, API agus socróimid an eochair chomhfhreagrach sa léarscáil asbhainte.

       - template:
           source: request_type
           template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"

Ag baint úsáide as oibreoirí coinníollach i Teimpléad, déanaimid seiceáil ar na réimsí suiteáilte sa léarscáil a bhaintear as agus socróimid na luachanna riachtanacha don réimse request_type: grianghraf, statach, API. Sann eile má theipeann air. tá an cineál iarratais anois i request_type.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

Shocraigh muid na lipéid api_request, virtual_host, request_type agus stádas (stádas HTTP) bunaithe ar an méid a d’éirigh linn a chur sa léarscáil asbhainte.

       - output:
           source: nginx_log_row

Athraigh aschur. Anois téann an logáil nginx glanta ón léarscáil a bhaintear chuig Loki.

Logs á mbailiú ó Loki

Tar éis duit an cumraíocht thuas a rith, is féidir leat a fheiceáil go bhfuil lipéid sannta do gach iontráil bunaithe ar shonraí ón logáil.

Rud amháin a choinneáil i gcuimhne gur féidir le lipéid a aisghabháil le líon mór luachanna (cardinality) mhoilliú go suntasach ar Loki. Is é sin, níor cheart duit, mar shampla, user_id a chur san innéacs. Léigh tuilleadh faoi seo san alt “Conas is féidir le lipéid i Loki fiosruithe loga a dhéanamh níos tapúla agus níos éasca" Ach ní chiallaíonn sé seo nach féidir leat cuardach a dhéanamh de réir user_id gan innéacsanna. Ní mór duit scagairí a úsáid agus tú ag cuardach (“gabh” na sonraí), agus feidhmíonn an t-innéacs anseo mar aitheantóir srutha.

Amharcléiriú na logaí

Logs á mbailiú ó Loki

Is féidir le Loki feidhmiú mar fhoinse sonraí do ghraif Grafana trí LogQL a úsáid. Tacaítear leis na gnéithe seo a leanas:

  • ráta — líon na dtaifead in aghaidh an tsoicind;
  • comhaireamh thar am — líon na dtaifead sa raon sonraithe.

Tá feidhmeanna comhiomlánaithe Suim, Meán Fómhair agus eile ann freisin. Is féidir leat graif sách casta a thógáil, mar shampla graf de líon na n-earráidí HTTP:

Logs á mbailiú ó Loki

Tá feidhmiúlacht an fhoinse sonraí chaighdeánaigh Loki laghdaithe beagán i gcomparáid le foinse sonraí Prometheus (mar shampla, ní féidir leat an finscéal a athrú), ach is féidir Loki a nascadh mar fhoinse leis an gcineál Prometheus. Nílim cinnte an iompraíocht dhoiciméadaithe é seo, ach ag déanamh breithiúnas de réir fhreagra na bhforbróirí “Conas Loki a chumrú mar fhoinse sonraí Prometheus? · Eisiúint #1222 · grafana/loki”, mar shampla, go hiomlán dlíthiúil, agus tá Loki ag luí go hiomlán le PromQL.

Cuir Loki leis mar fhoinse sonraí le cineál Prometheus agus cuir URL / loki leis:

Logs á mbailiú ó Loki

Agus is féidir linn graif a dhéanamh, amhail is dá mbeimis ag obair le méadracht Prometheus:

Logs á mbailiú ó Loki

Sílim go bhfuil an neamhréireacht i bhfeidhmiúlacht sealadach agus ceartóidh na forbróirí é seo amach anseo.

Logs á mbailiú ó Loki

Méadracht

Soláthraíonn Loki an cumas méadracht uimhriúil a bhaint as logaí agus iad a sheoladh chuig Prometheus. Mar shampla, tá líon na mbeart in aghaidh an fhreagra sa logáil nginx, chomh maith le, le modhnú áirithe ar an bhformáid logála caighdeánach, an t-am i soicindí a thóg sé freagra a thabhairt. Is féidir na sonraí seo a bhaint agus a sheoladh chuig Prometheus.

Cuir alt eile le promtail.yml:

- match:
   selector: '{request_type="api"}'
   stages:
     - metrics:
         http_nginx_response_time:
           type: Histogram
           description: "response time ms"
           source: response_time
           config:
             buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
   selector: '{request_type=~"static|photo"}'
   stages:
     - metrics:
         http_nginx_response_bytes_sum:
           type: Counter
           description: "response bytes sum"
           source: bytes_out
           config:
             action: add
         http_nginx_response_bytes_count:
           type: Counter
           description: "response bytes count"
           source: bytes_out
           config:
             action: inc

Ligeann an rogha duit méadracht a shainiú agus a nuashonrú bunaithe ar shonraí ón léarscáil a bhaintear. Ní sheoltar na méadrachtaí seo chuig Loki - tá siad le feiceáil i gcríochphointe Promtail/méadracht. Ní mór Prometheus a chumrú chun na sonraí a fuarthas a fháil ag an gcéim seo. Sa sampla thuas, le haghaidh request_type = “api” bailímid histeagram méadrach. Leis an gcineál seo méadrachta tá sé áisiúil peircintílí a fháil. Le haghaidh statach agus grianghraf, bailímid suim na mbeart agus líon na sraitheanna ina bhfuaireamar bearta chun an meán a ríomh.

Léigh tuilleadh faoi mhéadracht anseo.

Oscail an port ar Promtail:

promtail:
     image: grafana/promtail:1.4.1
     container_name: monitoring.promtail
     expose:
       - 9080
     ports:
       - "9080:9080"

Cinntigh go bhfuil méadracht leis an réimír promtail_custom le feiceáil:

Logs á mbailiú ó Loki

Prometheus a bhunú. Cuir fógra poist leis:

- job_name: 'promtail'
 scrape_interval: 10s
 static_configs:
   - targets: ['promtail:9080']

Agus tarraingímid graf:

Logs á mbailiú ó Loki

Ar an mbealach seo is féidir leat a fháil amach, mar shampla, na ceithre cheist is moille. Is féidir leat monatóireacht a dhéanamh ar na méadrachtaí seo freisin.

Scálú

Is féidir le Loki a bheith i mód dénártha amháin nó i mód bearrtha (modh cothrománach inscálaithe). Sa dara cás, is féidir leis sonraí a shábháil ar an scamall, agus na smután agus innéacs a stóráil ar leithligh. Tugann Leagan 1.5 isteach an cumas a stóráil in aon áit amháin, ach ní mholtar fós é a úsáid i dtáirgeadh.

Logs á mbailiú ó Loki

Is féidir smután a stóráil i stóras atá comhoiriúnach le S3, agus is féidir bunachair shonraí atá inscálaithe go cothrománach a úsáid chun innéacsanna a stóráil: Cassandra, BigTable nó DynamoDB. Tá codanna eile de Loki - Dáileoirí (le haghaidh scríbhneoireachta) agus Querier (le haghaidh ceisteanna) - gan stát agus freisin scála cothrománach.

Ag comhdháil DevOpsDays Vancouver 2019, d’fhógair duine de na rannpháirtithe Callum Styan go bhfuil petabytes logaí ag a thionscadal le Loki le hinnéacs níos lú ná 1% den mhéid iomlán: “Mar a Chomhghaolaíonn Loki Méadracht agus Logchomhaid - Agus Sábhálann tú Airgead duit".

Comparáid idir Loki agus ELK

Méid innéacs

Chun an méid innéacs mar thoradh air a thástáil, ghlac mé logaí ón gcoimeádán nginx a raibh an Phíblíne thuas cumraithe dó. Bhí 406 líne sa logchomhad le toirt iomlán de 624 MB. Gineadh logaí laistigh d’uair an chloig, thart ar 109 iontráil in aghaidh an tsoicind.

Sampla de dhá líne ón loga:

Logs á mbailiú ó Loki

Agus é innéacsaithe ag ELK, thug sé seo méid innéacs 30,3 MB:

Logs á mbailiú ó Loki

I gcás Loki, bhí thart ar 128 KB innéacs agus thart ar 3,8 MB de shonraí i smután mar thoradh air seo. Is fiú a thabhairt faoi deara gur gineadh an logáil go saorga agus nach raibh éagsúlacht mhór sonraí ann. Thug gzip simplí ar an logáil Docker JSON bunaidh le sonraí comhbhrú 95,4%, agus ag cur san áireamh gur cuireadh ach an logáil nginx glanta chuig Loki féin, tá comhbhrú suas le 4 MB intuigthe. Ba é 35 líon iomlán na luachanna uathúla do lipéid Loki, rud a mhíníonn méid beag an innéacs. Do ELK glanadh an logáil freisin. Mar sin, chomhbhrúigh Loki na sonraí bunaidh 96%, agus ELK 70%.

Tomhaltas cuimhne

Logs á mbailiú ó Loki

Má dhéanaimid comparáid idir an chruach iomlán Prometheus agus ELK, ansin “itheann Loki” cúpla uair níos lú. Is léir go n-ídíonn seirbhís Go níos lú ná seirbhís Java, agus tá comparáid idir méid an JVM Heap Elasticsearch agus an chuimhne leithdháilte do Loki mícheart, ach mar sin féin is fiú a thabhairt faoi deara go n-úsáideann Loki cuimhne i bhfad níos lú. Níl a buntáiste LAP chomh soiléir, ach tá sé i láthair freisin.

Speed

Logálann Loki “devours” níos tapúla. Braitheann an luas ar go leor fachtóirí - cén cineál logaí, cé chomh sofaisticiúla atá muid ag parsáil orthu, líonra, diosca, etc - ach tá sé cinnte níos airde ná ELK (i mo thástáil - thart ar dhá uair níos mó). Mínítear é seo tríd an bhfíric go gcuireann Loki i bhfad níos lú sonraí isteach san innéacs agus, dá réir sin, go gcaitheann sé níos lú ama ar innéacsú. Le luas cuardaigh, tá a mhalairt ar fad ag baint leis an scéal: moillíonn Loki go suntasach ar shonraí níos mó ná roinnt ghigibheart, cé nach mbraitheann luas cuardaigh ELK ar mhéid na sonraí.

Cuardach Logála

Tá Loki i bhfad níos ísle ná ELK i dtéarmaí cumais chuardaigh loga. Tá Grep le nathanna rialta cumhachtach, ach tá sé níos lú ná bunachar sonraí aibí. An easpa fiosrúcháin raoin, comhiomlánú de réir lipéid amháin, an neamhábaltacht chun cuardach a dhéanamh gan lipéid - cuireann sé seo go léir srian orainn agus muid ag cuardach faisnéise spéise i Loki. Ní chiallaíonn sé seo nach féidir aon rud a fháil ag baint úsáide as Loki, ach sainmhíníonn sé an sreabhadh oibre le logs nuair a aimsíonn tú fadhb ar dtús sna cairteacha Prometheus, agus ansin bain úsáid as na lipéid seo chun an méid a tharla sna logaí a chuardach.

Comhéadan

Ar an gcéad dul síos, tá sé go hálainn (tá brón orm, níorbh fhéidir cur i gcoinne). Tá cuma deas ar chomhéadan Grafana, ach tá i bhfad níos saibhre ag Kibana ó thaobh gnéithe de.

Buntáistí agus míbhuntáistí Loki

Ceann de na buntáistí ná go gcomhtháthaíonn Loki le Prometheus, agus mar sin faigheann muid méadracht agus foláirimh as an mbosca. Tá sé áisiúil logaí a bhailiú agus iad a stóráil ó Kubernetes Pods, toisc go bhfuil fionnachtain seirbhíse aige le hoidhreacht ó Prometheus agus go gceanglaíonn sé lipéid go huathoibríoch.

Is é an taobh thíos ná doiciméadú lag. Roinnt rudaí, mar shampla, na gnéithe agus cumais Promtail, fuair mé amach ach amháin sa phróiseas ag déanamh staidéir ar an gcód, fortunately tá sé foinse oscailte. Míbhuntáiste eile is ea cumas parsála lag. Mar shampla, ní féidir le Loki logaí illíne a pharsáil. Míbhuntáiste eile is ea gur teicneolaíocht réasúnta óg é Loki (bhí scaoileadh 1.0 i mí na Samhna 2019).

Conclúid

Is teicneolaíocht suimiúil 100% é Loki atá oiriúnach do thionscadail bheaga agus mheánmhéide, rud a ligeann duit go leor fadhbanna a réiteach maidir le comhiomlánú log, cuardach log, monatóireacht agus anailís logála.

Ní úsáidimid Loki in Badoo toisc go bhfuil cruach ELK againn a oireann dúinn agus atá rófhás le réitigh saincheaptha éagsúla thar na blianta. Maidir linne, tá an chonstaic ag cuardach trí logs. Le beagnach 100 GB de logs in aghaidh an lae, tá sé tábhachtach dúinn a bheith in ann teacht ar gach rud agus beagán níos mó agus é a dhéanamh go tapa. Chun cairteacha agus monatóireacht a dhéanamh, bainimid úsáid as réitigh eile atá in oiriúint dár riachtanais agus atá comhtháite lena chéile. Tá buntáistí inláimhsithe ag stoic Loki, ach ní thabharfaidh sé níos mó dúinn ná mar a bhí againn cheana féin, agus is cinnte nach mó na buntáistí a bhaineann leis ná costas na himirce.

Agus cé gur tháinig sé soiléir tar éis taighde nach féidir linn Loki a úsáid, tá súil againn go gcabhróidh an post seo leat i do rogha.

Tá an stór leis an gcód a úsáidtear san alt suite anseo.

Foinse: will.com

Add a comment