Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus

Fàilte, luchd-còmhnaidh Khabrovsk! Air an oidhche ro thoiseach clàradh ùr airson a’ chùrsa "Cleachdaidhean agus innealan DevOps" Tha sinn air eadar-theangachadh de stuth inntinneach ullachadh dhut.

Tha an artaigil seo na ro-ràdh goirid mu Loki. Pròiseact Loki le taic bho Grafana agus tha e ag amas air cruinneachadh meadhanaichte de logaichean (bho luchd-frithealaidh no soithichean).

B 'e am prìomh bhrosnachadh airson Loki Prometheus leis a’ bheachd a bhith a’ cleachdadh a dhòighean-obrach airson riaghladh logaichean:

  • cleachdadh leubail airson dàta a stòradh
  • caitheamh beagan ghoireasan

Tillidh sinn gu mar a tha Prometheus ag obair agus bheir sinn seachad eisimpleirean air a chleachdadh ann an co-theacsa Kubernetes.

Beagan fhaclan mu Prometheus

Gus làn thuigse fhaighinn air mar a tha Loki ag obair, tha e cudromach ceum air ais a ghabhail agus beagan cuimhne a chumail air Prometheus.

Is e aon de na feartan sònraichte aig Prometheus a bhith a’ toirt a-mach meatrach bho àiteachan cruinneachaidh (tro às-mhalairt) agus gan stòradh ann an TSDB (Stòr Dàta Sreath Ùine), le meata-dàta ann an cruth bhileagan.

Carson a tha feum agad air

O chionn ghoirid, tha Prometheus air a thighinn gu bhith na inbhe de facto ann an saoghal soithichean agus Kubernetes: tha an stàladh gu math sìmplidh, agus tha cruinneachadh Kubernetes a ’tighinn le àite crìochnachaidh dùthchasach airson Prometheus. Faodaidh Prometheus cuideachd meatrach a thoirt a-mach à tagraidhean a tha air an cleachdadh ann an soitheach fhad ‘s a tha iad a’ stòradh bileagan sònraichte. Mar sin, tha sgrùdadh tagraidh gu math furasta a bhuileachadh.

Gu mì-fhortanach, chan eil fuasgladh turnkey ann fhathast airson riaghladh logaichean, agus feumaidh tu fuasgladh a lorg dhut fhèin:

  • seirbheis sgòth air a riaghladh airson logaichean a mheadhanachadh (AWS, Azure no Google)
  • seirbheis sgrùdaidh “cumail sùil mar sheirbheis” (mar eisimpleir, Datadog)
  • cruthaich an t-seirbheis cruinneachadh log agad fhèin.

Airson an treas roghainn, chleachd mi Elasticsearch gu traidiseanta, a dh ’aindeoin nach robh mi an-còmhnaidh toilichte leis (gu sònraichte cho trom agus cho iom-fhillte’ sa bha an rèiteachadh).

Chaidh Loki a dhealbhadh gus buileachadh a dhèanamh nas sìmplidhe a rèir nam prionnsapalan a leanas:

  • bi sìmplidh airson tòiseachadh
  • glè bheag de ghoireasan ithe
  • ag obair gu neo-eisimeileach às aonais cumail suas sònraichte sam bith
  • a bhith na chuideachadh do Prometheus gus cuideachadh le rannsachaidhean air bugaichean

Ach, thig an sìmplidh seo gu cosgais cuid de cho-rèiteachaidhean. Is e aon dhiubh gun a bhith a’ clàradh an t-susbaint. Mar sin, chan eil sgrùdadh teacsa gu math èifeachdach no beairteach agus chan eil e a’ ceadachadh staitistig air susbaint an teacsa. Ach leis gu bheil Loki ag iarraidh a bhith co-ionann ri grep agus taic ri Prometheus, chan e ana-cothrom a tha seo.

Rannsachadh Tachartas

Gus tuigse nas fheàrr fhaighinn air carson nach eil feum aig Loki air clàr-amais, rachamaid air ais chun dòigh sgrùdaidh tachartais a chleachd luchd-leasachaidh Loki:

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
1 Alert → 2 Dashboard → 3 Adhoc Ceist → 4 Log Aggregation → 5 Distribution Tracing → 6 Fix!
(1 Rabhadh → 2 Dashboard → 3 Adhoc Ceist → 4 Log Aggregation → 5 Distribution Tracing → 6 Fixing!)

Is e am beachd gum faigh sinn rabhadh de sheòrsa air choreigin (Fios Slack, SMS, msaa) agus às deidh sin:

  • thoir sùil air deas-bhòrd Grafana
  • thoir sùil air tomhasan seirbheis (mar eisimpleir, ann am Prometheus)
  • thoir sùil air inntrigidhean log (mar eisimpleir, ann an Elasticsearch)
  • is dòcha gun toir thu sùil air lorgan sgaoilte (Jaeger, Zipkin, msaa.)
  • agus mu dheireadh a 'fuasgladh na duilgheadas tùsail.

An seo, a thaobh stac Grafana + Prometheus + Elasticsearch + Zipkin, feumaidh tu ceithir innealan eadar-dhealaichte a chleachdadh. Gus ùine a lughdachadh, bhiodh e math a bhith comasach air na ceumannan sin uile a choileanadh le bhith a’ cleachdadh aon inneal: Grafana. Is fhiach a bhith mothachail gu bheil an dòigh-obrach seo airson rannsachadh air a bhith air a bhuileachadh ann an Grafana bho dhreach 6. Mar sin, bidh e comasach faighinn gu dàta Prometheus gu dìreach bho Grafana.

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
Sgrion Explorer air a sgaradh eadar Prometheus agus Loki

Bhon sgrion seo chì thu logaichean Loki co-cheangailte ri metrics Prometheus a’ cleachdadh bun-bheachd sgrion roinnte. Bho dhreach 6.5, leigidh Grafana leat an id lorg a pharsadh ann an inntrigidhean log Loki gus ceanglaichean a leantainn gu na h-innealan lorg sgaoilte as fheàrr leat (Jaeger).

Deuchainn ionadail Loki

Is e an dòigh as fhasa air Loki a dhearbhadh gu h-ionadail a bhith a’ cleachdadh docker-compose. Tha am faidhle docker-compose suidhichte ann an stòr Loki. Gheibh thu an stòr leis an àithne a leanas git:

$ git clone https://github.com/grafana/loki.git

An uairsin feumaidh tu a dhol chun eòlaire riochdachaidh:

$ cd production

Às deidh seo gheibh thu an dreach as ùire de dhealbhan Docker:

$ docker-compose pull

Mu dheireadh, thèid an Loki stack a chuir air bhog leis an òrdugh a leanas:

$ docker-compose up

Loki ailtireachd

Seo diagram beag le ailtireachd Loki:

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
Prionnsabalan ailtireachd Loki

Bidh an neach-dèiligidh lìn a’ ruith thagraidhean air an fhrithealaiche, bidh Promtail a’ cruinneachadh logaichean agus gan cur gu Loki, bidh an neach-dèiligidh lìn cuideachd a’ cur meata-dàta gu Loki. Bidh Loki a’ cruinneachadh a h-uile càil agus ga chuir gu Grafana.
Tha Loki air a chuir air bhog. Gus na pàirtean a tha rim faighinn fhaicinn, ruith an àithne a leanas:

$ docker ps

Ann an cùis Docker a tha air ùr-shuidheachadh, bu chòir don àithne an toradh a leanas a thilleadh:

IMAGE               PORTS                  NAMES
grafana/promtail:                          production_promtail_1
grafana/grafana: m  0.0.0.0:3000->3000/tcp production_grafana_1
grafana/loki: late  80/tcp,0.0.0.0:3100... production_loki_1

Chì sinn na co-phàirtean a leanas:

  • Promtail: àidseant le uallach airson meadhanachadh logaichean
  • Grafana: inneal deas-bhòrd ainmeil
  • Loki: Daemon meadhanachadh dàta

Mar phàirt de bhun-structar clasaigeach (mar eisimpleir, stèidhichte air innealan brìgheil), feumar an neach-ionaid Promtail a chuir a-steach air gach inneal. Faodar Grafana agus Loki a chuir a-steach air an aon inneal.

Gluasad gu Kubernetes

Bidh stàladh co-phàirtean Loki air Kubernetes mar a leanas:

  • daemonSet airson an àidseant Promtail a chuir a-steach air gach inneal ann am buidheann an fhrithealaiche
  • Cleachdadh Loki
  • agus is e an tè mu dheireadh cleachdadh Grafana.

Gu fortanach, tha Loki ri fhaighinn mar phasgan Helm, ga dhèanamh furasta a chleachdadh.

Stàladh tro Heml

Bu chòir dhut Heml a chuir a-steach mu thràth. Faodar a luchdachadh sìos bho stòr GitHub a’ phròiseict. Tha e air a chuir a-steach le bhith a’ dì-phapadh an tasglann a fhreagras air an ailtireachd agad agus a’ cur stiùir ris $PATH.

Note: dreach 3.0.0 de Helm fhoillseachadh o chionn ghoirid. Leis gu bheil mòran atharrachaidhean air a bhith ann, thathas a’ comhairleachadh don leughadair feitheamh beagan mus cleachd thu e..

A’ cur ri stòr airson Helm

Is e a’ chiad cheum an stòr “loki” a chur ris a’ cleachdadh an àithne a leanas:

$ helm add loki https://grafana.github.io/loki/charts

Às deidh seo, faodaidh tu pacaidean leis an ainm “loki” a lorg:

$ helm search loki

Toradh:

loki/loki       0.17.2 v0.4.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.19.1 v0.4.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.0.2  v0.0.1 Uses fluent-bit Loki go plugin for...
loki/promtail   0.13.1 v0.4.0 Responsible for gathering logs and...

Tha na feartan a leanas aig na pacaidean sin:

  • пакет loki/loki a’ maidseadh frithealaiche Loki a-mhàin
  • пакет loki/fluent-bit a’ leigeil leat DaemonSet a chleachdadh le bhith a’ cleachdadh bin fileanta gus logaichean a chruinneachadh an àite Promtail
  • пакет loki/promtail tha àidseant cruinneachadh faidhle log ann
  • пакет loki/loki-stack, a’ leigeil leat Loki a chuir a-steach sa bhad còmhla ri Promtail.

A stàladh Loki

Gus Loki a chuir gu Kubernetes, ruith an àithne a leanas anns an ainm “sgrùdadh”:

$ helm upgrade --install loki loki/loki-stack --namespace monitoring

Gus sàbhaladh air diosc, cuir am paramadair ris --set loki.persistence.enabled = true:

$ helm upgrade --install loki loki/loki-stack 
              --namespace monitoring 
              --set loki.persistence.enabled=true

Note: ma tha thu airson Grafana a chuir a-steach aig an aon àm, cuir am paramadair ris --set grafana.enabled = true

Nuair a ruitheas tu an àithne seo bu chòir dhut an toradh a leanas fhaighinn:

LAST DEPLOYED: Tue Nov 19 15:56:54 2019
NAMESPACE: monitoring
STATUS: DEPLOYED
RESOURCES:
==> v1/ClusterRole
NAME AGE
loki-promtail-clusterrole 189d
…
NOTES:
The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.
See <a href="http://docs.grafana.org/features/datasources/loki/">http://docs.grafana.org/features/datasources/loki/</a> for more details.

A 'coimhead air staid nam pods anns an ainm "cumail sùil", chì sinn gu bheil a h-uile càil air a chleachdadh:

$ kubectl -n monitoring get pods -l release=loki

Toradh:

NAME                 READY  STATUS   RESTARTS  AGE
loki-0               1/1    Running  0         147m
loki-promtail-9zjvc  1/1    Running  0         3h25m
loki-promtail-f6brf  1/1    Running  0         11h
loki-promtail-hdcj7  1/1    Running  0         3h23m
loki-promtail-jbqhc  1/1    Running  0         11h
loki-promtail-mj642  1/1    Running  0         62m
loki-promtail-nm64g  1/1    Running  0         24m

Tha na pods uile a’ ruith. A-nis tha an t-àm ann beagan deuchainnean a dhèanamh!

A 'ceangal ri Grafana

Gus ceangal ri Grafana fo Kubernetes, feumaidh tu tunail fhosgladh don pod aige. Gu h-ìosal tha an àithne airson port 3000 fhosgladh airson pod Grafana:

$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80

Is e puing cudromach eile an fheum air facal-faire rianadair Grafana fhaighinn air ais. Tha am facal-faire air a chumail dìomhair loki-grafana ann an raon .data.admin-user ann an cruth base64.

Gus a thoirt air ais, feumaidh tu an òrdugh a leanas a ruith:

$ kubectl -n monitoring get secret loki-grafana 
 --template '{{index .data "admin-password" | base64decode}}'; echo

Cleachd am facal-faire seo an co-bhonn ris a’ chunntas rianadair bunaiteach (rianaire).

A’ mìneachadh stòr dàta Loki ann an Grafana

An toiseach, dèan cinnteach gu bheil an stòr dàta Loki air a chruthachadh (Configuration / Datasource).
Seo eisimpleir:

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
Eisimpleir de bhith a’ stèidheachadh stòr dàta airson Loki

Le bhith a’ briogadh air “Test” faodaidh tu sgrùdadh a dhèanamh air a’ cheangal le Loki.

A’ dèanamh iarrtasan gu Loki

A-nis rachaibh gu Grafana chun roinn “Rannsaich”. Nuair a gheibh e logaichean bho shoithichean, bidh Loki a’ cur meata-dàta bho Kubernetes. Mar sin, bidh e comasach sùil a thoirt air logaichean soitheach sònraichte.

Mar eisimpleir, gus na logaichean promtail container a thaghadh, faodaidh tu an ceist a leanas a chleachdadh: {container_name = "promtail"}.
An seo cuideachd cuimhnich gun tagh thu stòr dàta Loki.

Tillidh a’ cheist seo gnìomhachd container mar a leanas:

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
Toradh ceist ann an Grafana

Cuir ris an deas-bhòrd

A’ tòiseachadh le Grafana 6.4, faodaidh tu fiosrachadh log a chuir gu dìreach air an deas-bhòrd. Às deidh seo, bidh e comasach don neach-cleachdaidh gluasad gu sgiobalta eadar an àireamh de dh ’iarrtasan air an làrach aige agus lorgan tagraidh.

Gu h-ìosal tha eisimpleir de bhòrd-stiùiridh a chuireas an eadar-obrachadh seo an gnìomh:

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
Sampall deas-bhòrd le metrics Prometheus agus logaichean Loki

Loki san àm ri teachd a

Thòisich mi a’ cleachdadh Loki air ais sa Chèitean/Ògmhios le dreach 0.1. An-diugh tha dreach 1, agus eadhon 1.1 agus 1.2 air an leigeil ma sgaoil mu thràth.

Feumar aideachadh nach robh dreach 0.1 seasmhach gu leòr. Ach sheall 0.3 mar-thà fìor shoidhnichean aibidh, agus cha do neartaich dreachan às deidh sin (0.4, an uairsin 1.0) ach am beachd seo.

Às deidh 1.0.0, chan urrainn leisgeul sam bith a bhith aig duine gun a bhith a’ cleachdadh an inneal iongantach seo.

Cha bu chòir tuilleadh leasachaidhean a bhith mu dheidhinn Loki, ach an aonachadh leis an Grafana sàr-mhath. Gu dearbh, tha amalachadh math aig Grafana 6.4 le clàran-làimhe.

Bidh Grafana 6.5, a chaidh fhoillseachadh o chionn ghoirid, ag adhartachadh an aonachadh seo le bhith ag aithneachadh susbaint log ann an cruth JSON gu fèin-ghluasadach.

Tha a’ bhidio gu h-ìosal a’ sealltainn eisimpleir bheag den uidheamachd seo:

Loki - cruinneachadh log a 'cleachdadh dòigh-obrach Prometheus
A’ cleachdadh loidhnichean Loki fosgailte ann an Grafana

Bidh e comasach aon de na raointean JSON a chleachdadh, mar eisimpleir, airson:

  • ceanglaichean gu inneal taobh a-muigh
  • a’ sìoladh susbaint an loga

Mar eisimpleir, faodaidh tu briogadh air traceId gus a dhol gu Zipkin no Jaeger.

Mar as àbhaist, tha sinn a’ coimhead air adhart ri do bheachdan agus a’ toirt cuireadh dhut webinar fosgailte, far am bruidhnidh sinn mu mar a leasaich gnìomhachas DevOps ann an 2019 agus bruidhnidh sinn air slighean leasachaidh a dh’ fhaodadh a bhith ann airson 2020.

Source: www.habr.com