A’ cruinneachadh chlàran bho Loki

A’ cruinneachadh chlàran bho Loki

Tha sinne aig Badoo an-còmhnaidh a’ cumail sùil air teicneòlasan ùra agus a’ measadh am bu chòir dhuinn an cleachdadh san t-siostam againn no nach bu chòir. Tha sinn airson aon de na sgrùdaidhean sin a cho-roinn leis a’ choimhearsnachd. Tha e coisrigte do Loki, siostam cruinneachaidh logaichean.

Tha Loki na fhuasgladh airson logaichean a stòradh agus fhaicinn, agus tha an stac seo cuideachd a’ toirt seachad siostam sùbailte airson an sgrùdadh agus dàta a chuir gu Prometheus. Anns a 'Chèitean, chaidh ùrachadh eile fhoillseachadh, a tha air a bhrosnachadh gu gnìomhach leis an luchd-cruthachaidh. Bha ùidh againn anns na nì Loki, dè na feartan a bheir e seachad, agus gu dè an ìre as urrainn dha a bhith mar roghainn eile an àite ELK, a’ chruach a bhios sinn a’ cleachdadh a-nis.

Dè th' ann an Loki

Tha Grafana Loki na sheata de cho-phàirtean airson siostam logaidh iomlan. Eu-coltach ri siostaman eile den aon seòrsa, tha Loki stèidhichte air a’ bheachd a bhith a’ clàr-amais a-mhàin meata-dàta log - bileagan (dìreach mar ann am Prometheus), agus a’ teannachadh nan logaichean iad fhèin taobh ri taobh gu pìosan fa leth.

Duilleag dachaigh, GitHub

Mus tèid thu a-steach gu tuairisgeul air dè as urrainn dhut a dhèanamh le Loki, tha mi airson soilleireachadh dè a tha air a chiallachadh le “a’ bheachd a bhith a ’clàrachadh meata-dàta a-mhàin”. Dèanamaid coimeas eadar dòigh-obrach Loki agus an dòigh clàrachaidh ann am fuasglaidhean traidiseanta, leithid Elasticsearch, a’ cleachdadh eisimpleir loidhne bho 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"

Bidh siostaman traidiseanta a’ parsadh an t-sreath gu lèir, a’ toirt a-steach raointean le mòran luachan user_id agus item_id gun samhail, agus a’ stòradh a h-uile càil ann an clàran-amais mòra. Is e buannachd an dòigh-obrach seo gun urrainn dhut ceistean iom-fhillte a ruith gu sgiobalta, leis gu bheil cha mhòr a h-uile dàta sa chlàr-amais. Ach feumaidh tu pàigheadh ​​​​airson seo leis gu bheil an clàr-amais a ’fàs mòr, a tha ag eadar-theangachadh gu riatanasan cuimhne. Mar thoradh air an sin, tha clàr-amais làn-theacsa nan logaichean coimeasach ann am meud ris na logaichean fhèin. Gus sgrùdadh a dhèanamh gu sgiobalta troimhe, feumar an clàr-amais a luchdachadh gu cuimhne. Agus mar as motha de logaichean, is ann as luaithe a bhios an clàr-amais ag àrdachadh agus mar as motha de chuimhne a bhios e ag ithe.

Tha dòigh-obrach Loki ag iarraidh nach tèid ach an dàta riatanach a thoirt a-mach às an t-sreang, agus tha an àireamh de luachan beag. San dòigh seo gheibh sinn clàr-amais beag agus is urrainn dhuinn an dàta a sgrùdadh le bhith ga shìoladh a rèir ùine agus raointean clàr-amais, agus an uairsin a’ sganadh a’ chòrr le abairtean cunbhalach no fo-sreang rannsachaidh. Chan eil coltas gu bheil am pròiseas as luaithe, ach bidh Loki a 'roinn an iarrtais ann an grunn phàirtean agus gan cur an gnìomh aig an aon àm, a' giullachd mòran dàta ann an ùine ghoirid. Tha an àireamh de shards agus iarrtasan co-shìnte annta comasach a rèiteachadh; mar sin, tha an ìre de dhàta a dh’fhaodar a phròiseasadh a rèir aonad ùine an urra gu sreathach ris na tha de ghoireasan air a thoirt seachad.

Tha a’ mhalairt seo eadar clàr-amais mòr luath agus clàr-amais beag feachd brùideil a’ leigeil le Loki smachd a chumail air cosgais an t-siostaim. Faodar a rèiteachadh gu sùbailte agus a leudachadh a rèir do fheumalachdan.

Tha trì pàirtean ann an stac Loki: Promtail, Loki, Grafana. Bidh Promtail a’ cruinneachadh chlàran, gan giullachd agus gan cur gu Loki. Bidh Loki gan cumail. Agus faodaidh Grafana dàta iarraidh bho Loki agus a shealltainn. San fharsaingeachd, faodar Loki a chleachdadh chan ann a-mhàin airson logaichean a stòradh agus a sgrùdadh troimhe. Tha an stac gu lèir a’ toirt deagh chothroman airson a bhith a’ giullachd agus a’ mion-sgrùdadh dàta a tha a’ tighinn a-steach a’ cleachdadh dòigh Prometheus.
Gheibhear tuairisgeul air a’ phròiseas stàlaidh an seo.

Rannsachadh Log

Faodaidh tu na logaichean a sgrùdadh ann an eadar-aghaidh sònraichte Grafana - Explorer. Bidh na ceistean a’ cleachdadh cànan LogQL, a tha glè choltach ris an PromQL a chleachd Prometheus. Ann am prionnsapal, faodar smaoineachadh air mar grep sgaoilte.

Tha an eadar-aghaidh sgrùdaidh a’ coimhead mar seo:

A’ cruinneachadh chlàran bho Loki

Tha dà phàirt anns a’ cheist fhèin: roghnaichear agus sìoltachan. Is e sgrùdadh le meata-dàta clàr-amais (bileagan) a tha air an sònrachadh dha na logaichean a th’ ann an Selector, agus tha sìoltachan na shreang sgrùdaidh no regexp a shìoladh a-mach na clàran a tha an neach-taghaidh a’ mìneachadh. Anns an eisimpleir a chaidh a thoirt seachad: Ann an camagan lùbach - an roghnaichear, a h-uile càil às deidh sin - an criathrag.

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

Air sgàth an dòigh anns a bheil Loki ag obair, chan urrainn dhut iarrtasan a dhèanamh às aonais neach-taghaidh, ach faodar bileagan a dhèanamh gu neo-riaghailteach.

Is e an roghnaiche prìomh luach an luach ann am braces lùbach. 'S urrainn dhut taghadairean a chur còmhla agus diofar shuidheachaidhean rannsachaidh a shònrachadh a' cleachdadh =, != oibrichean no abairtean cunbhalach:

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

Is e teacsa no regexp a th’ ann an criathrag a shìoladh a-mach an dàta gu lèir a gheibh an roghnaichear.

Tha e comasach grafaichean ad-hoc fhaighinn stèidhichte air an dàta a fhuaireadh sa mhodh meatrach. Mar eisimpleir, gheibh thu a-mach dè cho tric ‘s a tha tachartas ann an logaichean nginx de inntrig anns a bheil an t-sreath clàr-amais:

A’ cruinneachadh chlàran bho Loki

Gheibhear làn chunntas air na feartan anns na sgrìobhainnean LogQL.

Parsadh log

Tha grunn dhòighean ann airson logaichean a chruinneachadh:

  • Le cuideachadh bho Promtail, pàirt àbhaisteach den chruach airson logaichean a chruinneachadh.
  • Dìreach bhon docker container a 'cleachdadh Dràibhear clàraidh Loki Docker.
  • Cleachd Fileanta no Fluent Bit as urrainn dàta a chuir gu Loki. Eu-coltach ri Promtail, tha parsairean deiseil aca airson cha mhòr seòrsa sam bith de log agus is urrainn dhaibh logaichean ioma-loidhne a làimhseachadh cuideachd.

Mar as trice bidh Promtail air a chleachdadh airson parsadh. Bidh e a’ dèanamh trì rudan:

  • Lorg stòran dàta.
  • Ceangail bileagan riutha.
  • A’ cur dàta gu Loki.

An-dràsta faodaidh Promtail logaichean a leughadh bho fhaidhlichean ionadail agus bho iris systemd. Feumaidh e a bhith air a chuir a-steach air gach inneal às a bheil na logaichean air an cruinneachadh.

Tha amalachadh le Kubernetes: Bidh Promtail gu fèin-obrachail a’ faighinn a-mach staid a’ chnuasaich tro Kubernetes REST API agus a’ cruinneachadh logaichean bho nód, seirbheis no pod, a’ postadh sa bhad bileagan stèidhichte air meata-dàta bho Kubernetes (ainm pod, ainm faidhle, msaa).

Faodaidh tu cuideachd bileagan a chrochadh stèidhichte air dàta bhon log a’ cleachdadh Pipeline. Faodaidh Pìob-loidhne Promtail a bhith ann an ceithir seòrsaichean ìrean. Tuilleadh mion-fhiosrachaidh - a-steach sgrìobhainnean oifigeil, Bheir mi fa-near sa bhad cuid de na nuances.

  1. Ìrean parsaidh. Is e seo an ìre de RegEx agus JSON. Aig an ìre seo, bidh sinn a’ tarraing dàta bho na logaichean a-steach don mhapa ris an canar a chaidh a tharraing. Faodaidh tu tarraing a-mach à JSON le bhith dìreach a’ dèanamh lethbhreac de na raointean a dh’ fheumas sinn a-steach don mhapa a chaidh a thoirt a-mach, no tro abairtean cunbhalach (RegEx), far a bheil buidhnean ainmichte air am “mapadh” a-steach don mhapa a chaidh a thoirt a-mach. Tha mapa air a thoirt a-mach na stòradh prìomh luach, far a bheil an iuchair ainm an raoin, agus is e luach a luach bho na logaichean.
  2. Atharraich ìrean. Tha dà roghainn aig an ìre seo: cruth-atharrachadh, far an do shuidhich sinn na riaghailtean cruth-atharrachaidh, agus an tùs - an stòr dàta airson cruth-atharrachadh bhon mhapa a chaidh a thoirt a-mach. Mura h-eil raon mar sin air a’ mhapa a chaidh a thoirt a-mach, thèid a chruthachadh. Mar sin, tha e comasach bileagan a chruthachadh nach eil stèidhichte air a’ mhapa a chaidh a thoirt a-mach. Aig an ìre seo, is urrainn dhuinn an dàta sa mhapa a chaidh a thoirt a-mach a làimhseachadh le bhith a’ cleachdadh inneal meadhanach cumhachdach teamplaid golang. A bharrachd air an sin, feumaidh sinn cuimhneachadh gu bheil am mapa a chaidh a thoirt a-mach làn luchdaichte aig àm parsadh, a tha ga dhèanamh comasach, mar eisimpleir, sgrùdadh a dhèanamh air an luach a tha ann: “{{ ma tha luach taga .tag ann{end}}”. Bidh an teamplaid a’ toirt taic do shuidheachaidhean, lùban, agus cuid de ghnìomhan sreang leithid Replace and Trim.
  3. Ìrean gnìomh. Aig an ìre seo, faodaidh tu rudeigin a dhèanamh leis na chaidh a thoirt a-mach:
    • Cruthaich bileag bhon dàta a chaidh a thoirt a-mach, a thèid a chlàradh le Loki.
    • Atharraich no suidhich ùine an tachartais bhon log.
    • Atharraich an dàta (teacsa log) a thèid gu Loki.
    • Cruthaich slatan-tomhais.
  4. Ìrean sìolaidh. An ìre maidsidh, far an urrainn dhuinn an dàrna cuid clàran a chuir nach fheum sinn / dev/null, no an cur airson tuilleadh giollachd.

A’ cleachdadh an eisimpleir de bhith a’ giullachd logaichean nginx àbhaisteach, seallaidh mi mar as urrainn dhut logaichean a pharsadh a’ cleachdadh Promtail.

Airson an deuchainn, gabhamaid nginx jwilder / nginx-proxy atharraichte: ìomhaigh alpach agus deamhan beag as urrainn ceasnachadh fhèin tro HTTP mar nginx-proxy. Tha grunn phuingean crìochnachaidh aig an daemon, ris an urrainn dha freagairtean de dhiofar mheudan a thoirt seachad, le diofar inbhean HTTP agus le dàil eadar-dhealaichte.

Cruinnichidh sinn logaichean bho shoithichean docker, a lorgar air an t-slighe /var/lib/docker/containers/ / -json.log

Ann an docker-compose.yml stèidhich sinn Promtail agus sònraich sinn an t-slighe chun config:

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 t-slighe gu na logaichean gu promtail.yml (tha roghainn "docker" anns an rèiteachadh a nì an aon rud ann an aon loidhne, ach cha bhiodh e cho follaiseach):

scrape_configs:
 - job_name: containers

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

Nuair a bhios an rèiteachadh seo air a chomasachadh, gheibh Loki logaichean bho gach soitheach. Gus seo a sheachnadh, bidh sinn ag atharrachadh roghainnean an test nginx ann an docker-compose.yml - cuir logadh ris an raon taga:

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

Deasaich promtail.yml agus stèidhich Pipeline. Tha na clàran mar 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"}

ìrean loidhne-phìoban:

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

Bidh sinn a 'toirt a-mach na raointean sruth, attrs, attrs.tag (ma tha sin ann) bhon JSON a tha a' tighinn a-steach agus cuiridh sinn iad a-steach don mhapa a chaidh a thoirt a-mach.

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

Nam biodh e comasach an raon tagaichean a chuir air a’ mhapa a chaidh a thoirt a-mach, an uairsin a’ cleachdadh an regexp bheir sinn a-mach ainmean na h-ìomhaigh agus an t-soitheach.

 - labels:
     image_name:
     container_name:

Bidh sinn a 'sònrachadh bileagan. Ma lorgar na h-iuchraichean image_name agus container_name anns an dàta a chaidh a thoirt a-mach, thèid na luachan aca a shònrachadh dha na bileagan iomchaidh.

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

Tilgidh sinn air falbh a h-uile loga aig nach eil labels image_name agus container_name set.

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

Airson a h-uile loga aig a bheil image_name co-ionann ri nginx.promtail.test, bheir sinn a-mach an raon log bhon log stòr agus cuiridh sinn e anns a’ mhapa a chaidh a thoirt a-mach leis an iuchair loidhne.

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

Bidh sinn a ’glanadh an t-sreang cuir a-steach le abairtean cunbhalach agus a’ tarraing a-mach an aoigheachd brìgheil nginx agus loidhne log 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.]+)")?

Parse log nginx le abairtean cunbhalach.

    - 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>[^/?.]+).*$

Parse request_url. Le cuideachadh bho regexp, bidh sinn a’ dearbhadh adhbhar an iarrtais: gu stats, gu dealbhan, gu API agus suidhichidh sinn an iuchair fhreagarrach air a’ mhapa a chaidh a thoirt a-mach.

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

A’ cleachdadh gnìomhaichean cumhach ann an Teamplaid, bheir sinn sùil air na raointean stàlaichte sa mhapa a chaidh a thoirt a-mach agus suidhichidh sinn na luachan riatanach airson an raon request_type: dealbh, statach, API. Sònraich fear eile ma dh’ fhàillig e. A-nis tha an seòrsa iarrtas ann an request_type.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

Shuidhich sinn na bileagan api_request, virtual_host, request_type agus inbhe (inbhe HTTP) stèidhichte air na chaidh againn air a chuir sa mhapa a chaidh a thoirt a-mach.

       - output:
           source: nginx_log_row

Atharraich toradh. A-nis tha an log nginx glanaidh bhon mhapa a chaidh a thoirt a-mach a’ dol gu Loki.

A’ cruinneachadh chlàran bho Loki

Às deidh dhut an rèiteachadh gu h-àrd a ruith, chì thu gu bheil gach inntrigeadh air a chomharrachadh stèidhichte air dàta bhon log.

Cumaibh cuimhne gum faod toirt a-mach bileagan le àireamh mhòr de luachan (cardinality) slaodadh sìos gu mòr air Loki. Is e sin, cha bu chòir dhut an clàr-amais a chuir a-steach, mar eisimpleir, user_id. Leugh tuilleadh mu dheidhinn seo san artaigilMar as urrainn do bhileagan ann an Loki ceistean log a dhèanamh nas luaithe agus nas fhasa". Ach chan eil seo a’ ciallachadh nach urrainn dhut rannsachadh le user_id às aonais clàran-amais. Feumar sìoltachain a chleachdadh nuair a thathar a’ sgrùdadh (“gabh” a rèir an dàta), agus tha an clàr-amais an seo ag obair mar aithnichear sruth.

Lèirsinn log

A’ cruinneachadh chlàran bho Loki

Faodaidh Loki a bhith na stòr dàta airson clàran Grafana a’ cleachdadh LogQL. Tha na feartan a leanas a’ faighinn taic:

  • ìre - an àireamh de chlàran gach dàrna;
  • cunntadh thar ùine - an àireamh de chlàran anns an raon a chaidh a thoirt seachad.

Tha gnìomhan cruinneachaidh ann cuideachd Sum, Avg agus feadhainn eile. Faodaidh tu grafaichean gu math iom-fhillte a thogail, mar eisimpleir, graf den àireamh de mhearachdan HTTP:

A’ cruinneachadh chlàran bho Loki

Tha stòr dàta bunaiteach Loki beagan nas gnìomhaiche na stòr dàta Prometheus (mar eisimpleir, chan urrainn dhut an uirsgeul atharrachadh), ach faodar Loki a cheangal mar stòr seòrsa Prometheus. Chan eil mi cinnteach an e giùlan clàraichte a tha seo, ach a’ breithneachadh le freagairt an luchd-leasachaidh “Mar a chuireas tu Loki air dòigh mar stòr-dàta Prometheus? · Iris #1222 · grafana/loki”, mar eisimpleir, tha e gu tur laghail agus tha Loki gu tur co-chòrdail ri PromQL.

Cuir Loki ris mar stòr dàta leis an t-seòrsa Prometheus agus cuir URL / loki ris:

A’ cruinneachadh chlàran bho Loki

Agus faodaidh tu grafaichean a dhèanamh, mar gum biodh sinn ag obair le metrics bho Prometheus:

A’ cruinneachadh chlàran bho Loki

Tha mi a’ smaoineachadh gu bheil an eadar-dhealachadh ann an gnìomhachd sealach agus socraichidh an luchd-leasachaidh e san àm ri teachd.

A’ cruinneachadh chlàran bho Loki

Meatrics

Tha Loki a’ toirt seachad comas tomhasan àireamhach a thoirt a-mach à logaichean agus an cur gu Prometheus. Mar eisimpleir, tha an àireamh de bytes gach freagairt ann an log nginx, agus cuideachd, le atharrachadh sònraichte air an cruth log àbhaisteach, an ùine ann an diogan a thug e airson freagairt. Faodar an dàta seo a thoirt a-mach agus a chuir gu Prometheus.

Cuir earrann eile ri 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

Leigidh an roghainn leat metrics a mhìneachadh agus ùrachadh stèidhichte air dàta bhon mhapa a chaidh a thoirt a-mach. Chan eil na meatrach sin air an cur gu Loki - tha iad a’ nochdadh anns a’ cheann-uidhe Promtail/metrics. Feumaidh Prometheus a bhith air a rèiteachadh gus dàta fhaighinn bhon ìre seo. Anns an eisimpleir gu h-àrd, airson request_type = "api" cruinnichidh sinn meatrach histogram. Leis an t-seòrsa meatrach seo tha e goireasach ceudadan fhaighinn. Airson staitichean agus dealbhan, bidh sinn a’ cruinneachadh suim bytes agus an àireamh de shreathan anns an d’ fhuair sinn bytes gus a’ chuibheasachd obrachadh a-mach.

Leugh tuilleadh mu mheatairean an seo.

Fosgail port air Promtail:

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

Nì sinn cinnteach gu bheil na meatrach leis an ro-leasachan promtail_custom air nochdadh:

A’ cruinneachadh chlàran bho Loki

Prometheus a stèidheachadh. Cuir sanas obrach ris:

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

Agus tarraing graf:

A’ cruinneachadh chlàran bho Loki

San dòigh seo gheibh thu a-mach, mar eisimpleir, na ceithir ceistean as slaodaiche. Faodaidh tu cuideachd sgrùdadh a rèiteachadh airson na meatrach sin.

Sgèileadh

Faodaidh Loki a bhith an dà chuid ann am modh binary singilte agus air a sharded (modh a ghabhas scalladh gu còmhnard). Anns an dàrna cùis, faodaidh e dàta a shàbhaladh don sgòth, agus tha na pìosan agus an clàr-amais air an stòradh air leth. Ann an dreach 1.5, tha an comas air stòradh ann an aon àite air a chur an gnìomh, ach chan eilear a 'moladh a chleachdadh ann an riochdachadh.

A’ cruinneachadh chlàran bho Loki

Faodar cnapan a stòradh ann an stòradh co-chosmhail ri S3, airson clàran-amais a stòradh, cleachd stòran-dàta a ghabhas scalladh gu còmhnard: Cassandra, BigTable no DynamoDB. Tha pàirtean eile de Loki - Luchd-cuairteachaidh (airson sgrìobhadh) agus Querier (airson ceistean) - gun stàit agus cuideachd sgèile gu còmhnard.

Aig co-labhairt DevOpsDays Vancouver 2019, dh’ainmich aon de na com-pàirtichean Callum Styan gu bheil petabytes de logaichean aig a’ phròiseact aige le Loki le clàr-amais nas lugha na 1% den mheud iomlan: “Mar a tha Loki a’ ceangal mheatrics agus logaichean - agus a’ sàbhaladh airgead dhut".

Dèan coimeas eadar Loki agus ELK

Meud clàr-amais

Gus deuchainn a dhèanamh air meud an clàr-amais a thàinig às, thug mi logaichean bhon ghobhar nginx airson an deach an loidhne-phìoban gu h-àrd a rèiteachadh. Anns an fhaidhle log bha 406 loidhnichean le meud iomlan de 624 MB. Chaidh logaichean a chruthachadh taobh a-staigh uair a thìde, timcheall air 109 clàr gach diog.

Eisimpleir de dhà loidhne bhon log:

A’ cruinneachadh chlàran bho Loki

Nuair a chaidh a chlàr-amais le ELK, thug seo meud clàr-amais de 30,3 MB:

A’ cruinneachadh chlàran bho Loki

A thaobh Loki, thug seo timcheall air 128 KB de chlàr-amais agus timcheall air 3,8 MB de dhàta ann am pìosan. Is fhiach a bhith mothachail gun deach an log a chruthachadh gu saor-thoileach agus nach robh measgachadh farsaing de dhàta ann. Thug gzip sìmplidh air log tùsail Docker JSON le dàta teannachadh de 95,4%, agus leis nach deach ach an log nginx glanaidh a chuir gu Loki fhèin, tha an teannachadh gu 4 MB furasta a thuigsinn. B ’e an àireamh iomlan de luachan sònraichte airson bileagan Loki 35, a tha a’ mìneachadh meud beag a ’chlàr-amais. Airson ELK, chaidh an log a ghlanadh cuideachd. Mar sin, dhlùthaich Loki an dàta tùsail le 96%, agus ELK le 70%.

Caitheamh cuimhne

A’ cruinneachadh chlàran bho Loki

Ma nì sinn coimeas eadar a’ chruach iomlan de Prometheus agus ELK, bidh Loki “ag ithe” grunn thursan nas lugha. Tha e soilleir gu bheil an t-seirbheis Go ag ithe nas lugha na seirbheis Java, agus tha coimeas eadar meud an Heap Elasticsearch JVM agus an cuimhne a chaidh a shònrachadh airson Loki ceàrr, ach a dh’ aindeoin sin, is fhiach a bhith mothachail gu bheil Loki a’ cleachdadh mòran nas lugha de chuimhne. Chan eil a bhuannachd CPU cho follaiseach, ach tha e an làthair cuideachd.

Astar

Bidh Loki “devours” a’ logadh nas luaithe. Tha an astar an urra ri mòran fhactaran - dè an seòrsa logaichean, dè cho math ‘s a bhios sinn gan parsadh, lìonra, diosc, msaa - ach gu cinnteach tha e nas àirde na ìre ELK (anns an deuchainn agam - timcheall air dà uair). Tha seo air a mhìneachadh leis gu bheil Loki a 'cur mòran nas lugha de dhàta a-steach don chlàr-amais agus, mar sin, a' caitheamh nas lugha de ùine air clàr-amais. Anns a ’chùis seo, tha an suidheachadh air a thionndadh air ais leis an astar sgrùdaidh: tha Loki gu follaiseach a’ slaodadh sìos air dàta nas motha na beagan gigabytes, agus airson ELK, chan eil astar an sgrùdaidh an urra ri meud an dàta.

Rannsachadh Log

Tha Loki gu math nas ìsle na ELK a thaobh comasan sgrùdaidh log. Tha grep le abairtean cunbhalach na rud làidir, ach tha e nas ìsle na stòr-dàta inbheach. Tha dìth cheistean raon, cruinneachadh a-mhàin le bileagan, an neo-chomas rannsachadh gun bhileagan - tha seo uile gar cuingealachadh ann a bhith a 'lorg fiosrachadh inntinneach ann an Loki. Chan eil seo a’ ciallachadh nach fhaighear dad a’ cleachdadh Loki, ach tha e a’ mìneachadh an t-sruth obrach le logaichean, nuair a lorgas tu duilgheadas an toiseach air na clàran Prometheus, agus an uairsin coimhead airson na thachair anns na logaichean a’ cleachdadh na bileagan sin.

eadar-aghaidh

An toiseach, tha e brèagha (duilich, cha b’ urrainn dha seasamh). Tha eadar-aghaidh snog aig Grafana, ach tha Kibana tòrr nas gnìomhaiche.

Loki buannachdan agus eas-bhuannachdan

De na buannachdan, faodar a thoirt fa-near gu bheil Loki a ’ceangal ri Prometheus, fa leth, bidh sinn a’ faighinn metrics agus rabhadh a-mach às a ’bhogsa. Tha e goireasach logaichean a chruinneachadh agus an stòradh le Kubernetes Pods, leis gu bheil lorg seirbheis air a shealbhachadh bho Prometheus agus gu fèin-ghluasadach a ’ceangal bhileagan.

De na minuses - droch sgrìobhainnean. Nithean, leithid feartan agus comasan Promtail, lorg mi a-mhàin ann am pròiseas sgrùdadh a 'chòd, buannachd open source. Is e ana-cothrom eile na comasan paraidh lag. Mar eisimpleir, chan urrainn dha Loki logaichean ioma-loidhne a pharsadh. Cuideachd, tha na h-eas-bhuannachdan a’ toirt a-steach gur e teicneòlas an ìre mhath òg a th’ ann an Loki (bha sgaoileadh 1.0 san t-Samhain 2019).

co-dhùnadh

Tha Loki na theicneòlas inntinneach 100% a tha freagarrach airson pròiseactan beaga is meadhanach, a ’toirt cothrom dhut fuasgladh fhaighinn air mòran dhuilgheadasan co-chruinneachadh logaichean, sgrùdadh logaichean, sgrùdadh agus sgrùdadh logaichean.

Cha bhith sinn a’ cleachdadh Loki aig Badoo, oir tha stac ELK againn a tha iomchaidh dhuinn agus a tha air a bhith ro mhòr le diofar fhuasglaidhean àbhaisteach thar nam bliadhnaichean. Dhuinne, is e an lorg anns na logaichean an cnap-starra. Le faisg air 100 GB de logaichean gach latha, tha e cudromach gum bi e comasach dhuinn a h-uile càil a lorg agus beagan a bharrachd agus a dhèanamh gu sgiobalta. Airson clàradh agus sgrùdadh, bidh sinn a’ cleachdadh fhuasglaidhean eile a tha air an dealbhadh a rèir ar feumalachdan agus air am filleadh a-steach le chèile. Tha buannachdan susbainteach aig stac Loki, ach cha toir e barrachd dhuinn na tha againn, agus cha bhi na buannachdan aige dìreach nas àirde na cosgais imrich.

Agus ged a dh’ fhàs e soilleir às deidh rannsachadh nach urrainn dhuinn Loki a chleachdadh, tha sinn an dòchas gun cuidich an dreuchd seo thu le bhith a’ taghadh.

Tha an stòr leis a’ chòd a chaidh a chleachdadh san artaigil suidhichte an seo.

Source: www.habr.com

Cuir beachd ann