Loki - fanangonana log mampiasa ny fomba Prometheus

Miarahaba, ry mponina ao Khabrovsk! Amin'ny ankabeazan'ny fanombohan'ny fisoratana anarana vaovao ho an'ny taranja "Fanazatra sy fitaovana DevOps" Nanomana fandikana lahatsoratra mahaliana ho anao izahay.

Ity lahatsoratra ity dia fampidirana fohy momba an'i Loki. Project Loki tohanan'i Grafana ary mikendry ny fanangonana logs (avy amin'ny server na container).

Ny tena aingam-panahy ho an'i Loki dia Prometheus miaraka amin'ny hevitra hampihatra ny fomba fiasany amin'ny fitantanana log:

  • mampiasa etikety hitahiry angona
  • fanjifana harena vitsy

Hiverenantsika ny fomba fiasan'i Prometheus ary hanome ohatra sasantsasany amin'ny fampiasana azy amin'ny tontolon'ny Kubernetes.

Teny vitsivitsy momba ny Prometheus

Mba hahatakarana tsara ny fomba fiasan'i Loki dia zava-dehibe ny mihemotra ary mitadidy kely momba ny Prometheus.

Ny iray amin'ireo mampiavaka ny Prometheus dia ny fitrandrahana metrika avy amin'ny toerana fanangonana (amin'ny alàlan'ny mpanondrana) ary mitahiry azy ireo ao amin'ny TSDB (Time Series Data Base), miaraka amin'ny fanampiana metadata amin'ny endrika etikety.

Nahoana no ilaina io?

Vao haingana, ny Prometheus dia lasa fenitra de facto eo amin'ny tontolon'ny kaontenera sy Kubernetes: tena tsotra ny fametrahana azy, ary ny cluster Kubernetes dia tonga miaraka amin'ny teboka teratany ho an'ny Prometheus. Ny Prometheus dia afaka maka metrika amin'ny fampiharana napetraka ao anaty fitoeran-javatra iray rehefa mitahiry marika manokana. Noho izany, ny fanaraha-maso ny fampiharana dia tena mora ampiharina.

Indrisy anefa fa tsy mbola misy vahaolana turnkey ho an'ny fitantanana log, ary tsy maintsy mitady vahaolana ho an'ny tenanao ianao:

  • serivisy rahona mitantana amin'ny fametrahana logs (AWS, Azure na Google)
  • serivisy fanaraha-maso "fanaraha-maso ho serivisy" (ohatra, Datadog)
  • mamorona serivisy fanangonana log anao manokana.

Ho an'ny safidy fahatelo dia nampiasa Elasticsearch mahazatra aho, na dia tsy faly tamin'izany foana aza aho (indrindra fa ny mavesatra sy ny fahasarotan'ny konfigurasi).

Loki dia natao hanatsorana ny fampiharana araka ireto fitsipika manaraka ireto:

  • ataovy tsotra ny manomboka
  • mandany vola kely
  • miasa tsy miankina tsy misy fikojakojana manokana
  • ampiasaina ho fanampin'ny Prometheus hanampy amin'ny fanadihadiana ny bibikely

Na izany aza, io fahatsorana io dia tonga amin'ny fandaniana ny marimaritra iraisana sasany. Ny iray amin'izy ireo dia ny tsy fanondroana ny atiny. Noho izany, ny fikarohana lahatsoratra dia tsy dia mahomby na manankarena ary tsy mamela ny antontan'isa momba ny votoatin'ny lahatsoratra. Saingy satria te ho mitovy amin'ny grep sy famenon'i Prometheus i Loki dia tsy fatiantoka izany.

Fanadihadiana tranga

Mba hahatakarana bebe kokoa ny antony tsy ilain'i Loki ny fanondroana dia andao hiverina amin'ny fomba fanadihadiana momba ny tranga izay nampiasain'ny mpamorona Loki:

Loki - fanangonana log mampiasa ny fomba Prometheus
1 Alert → 2 Dashboard → 3 Adhoc Query → 4 Log Aggregation → 5 Distributed Tracing → 6 Fix!
(1 Fampitandremana → 2 Dashboard → 3 Adhoc Query → 4 Log Aggregation → 5 Distributed Tracing → 6 Fixing!)

Ny hevitra dia ny mahazo karazana fanairana (Slack Notification, SMS, sns.) ary aorian'izany:

  • jereo ny dashboards Grafana
  • jereo ny metrika serivisy (ohatra, ao amin'ny Prometheus)
  • jereo ny fidirana amin'ny log (ohatra, ao amin'ny Elasticsearch)
  • jereo angamba ireo trace zaraina (Jaeger, Zipkin, sns.)
  • ary farany hamaha ny olana tany am-boalohany.

Eto, raha ny Grafana + Prometheus + Elasticsearch + Zipkin stack dia tsy maintsy mampiasa fitaovana efatra samihafa ianao. Mba hampihenana ny fotoana, dia tsara raha afaka manao ireo dingana rehetra ireo amin'ny fampiasana fitaovana iray: Grafana. Tsara ny manamarika fa ity fomba fikarohana ity dia nampiharina tao Grafana nanomboka tamin'ny version 6. Noho izany dia azo atao ny miditra mivantana amin'ny data Prometheus avy amin'ny Grafana.

Loki - fanangonana log mampiasa ny fomba Prometheus
Fizarana efijery eo amin'ny Prometheus sy Loki ny efijery Explorer

Avy amin'ity efijery ity ianao dia afaka mijery ny diarin'ny Loki mifandraika amin'ny metrika Prometheus amin'ny fampiasana ny foto-kevitra fisarahana. Hatramin'ny dikan-teny 6.5, Grafana dia mamela anao hamantatra ny id trace amin'ny fidirana amin'ny log Loki mba hanarahana rohy mankany amin'ny fitaovana fanaraha-maso nozaraina tianao indrindra (Jaeger).

Fitsapana Loki eo an-toerana

Ny fomba tsotra indrindra hitsapana an'i Loki eo an-toerana dia ny fampiasana docker-compose. Ny rakitra docker-compose dia hita ao amin'ny tahiry Loki. Azonao atao ny mahazo ny tahiry amin'ny fampiasana ity baiko manaraka ity git:

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

Avy eo dia mila mandeha any amin'ny lahatahiry famokarana ianao:

$ cd production

Aorian'izany dia azonao atao ny mahazo ny kinova farany amin'ny sary Docker:

$ docker-compose pull

Farany, ny stack Loki dia natomboka tamin'ny baiko manaraka:

$ docker-compose up

Loki architecture

Ity misy kisary kely misy ny maritrano Loki:

Loki - fanangonana log mampiasa ny fomba Prometheus
Loki Architecture Principles

Ny mpanjifa web dia mitantana fampiharana amin'ny mpizara, manangona logs ny Promtail ary mandefa azy ireo any Loki, mandefa metadata amin'i Loki koa ny mpanjifa web. Loki dia manangona ny zava-drehetra ary mampita izany any Grafana.
Natomboka i Loki. Raha hijery ireo singa misy dia araho ity baiko manaraka ity:

$ docker ps

Raha misy Docker vao tafapetraka, ny baiko dia tokony hamerina izao vokatra manaraka izao:

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

Hitantsika ireto singa manaraka ireto:

  • Promtail: mpandraharaha tompon'andraikitra amin'ny fametrahana ny logs
  • Grafana: fitaovana dashboard malaza
  • Loki: Data Centralization Daemon

Ao anatin'ny fotodrafitrasa mahazatra (ohatra, mifototra amin'ny milina virtoaly), ny mpandraharaha Promtail dia tsy maintsy apetraka amin'ny milina tsirairay. Grafana sy Loki dia azo apetraka amin'ny milina iray ihany.

Hiverina any amin'ny Kubernetes

Ny fametrahana singa Loki amin'ny Kubernetes dia ho toy izao manaraka izao:

  • daemonSet amin'ny fametrahana ny promtail agent amin'ny milina tsirairay ao amin'ny cluster server
  • Fametrahana Loki
  • ary ny farany dia ny fametrahana ny Grafana.

Soa ihany fa azo alaina ho fonosana Helm i Loki, izay manamora ny fametrahana azy.

Fametrahana amin'ny alalan'ny Heml

Tokony efa nametraka Heml ianao. Azo alaina ao amin'ny tahiry GitHub an'ny tetikasa izany. Izy io dia napetraka amin'ny alàlan'ny famongorana ny arisiva mifanaraka amin'ny maritranonao ary manampy ny familiana $PATH.

Fanamarihana: Navoaka vao haingana ny version 3.0.0 an'ny Helm. Koa satria nisy fiovana maro tamin'izany, dia manoro hevitra ny mpamaky mba hiandry kely alohan'ny hampiasana azy..

Manampy loharano ho an'ny Helm

Ny dingana voalohany dia ny manampy ny tahiry "loki" amin'ny fampiasana ity baiko manaraka ity:

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

Aorian'izany dia afaka mikaroka fonosana antsoina hoe "loki" ianao:

$ helm search loki

vokany:

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...

Ireto fonosana ireto dia manana ireto endri-javatra manaraka ireto:

  • fonosana loki/loky mifanandrify amin'ny mpizara Loki ihany
  • fonosana loki / fluent-bit mamela anao hametraka DaemonSet mampiasa fluent-bin mba hanangonana logs fa tsy Promtail
  • fonosana loki/promtail misy mpandraharaha fanangonana rakitra log
  • fonosana loki/loki-stack, mamela anao hametraka avy hatrany an'i Loki miaraka amin'ny Promtail.

Fametrahana Loki

Mba hametrahana an'i Loki amin'ny Kubernetes dia araho ity baiko manaraka ity amin'ny anaran'ny "fanaraha-maso":

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

Raha te-hitahiry amin'ny kapila, ampio ny parameter --set loki.persistence.enabled = true:

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

Fanamarihana: raha te hametraka Grafana miaraka amin'izay koa ianao dia ampio ny parameter --set grafana.enabled = true

Rehefa manatanteraka ity baiko ity ianao dia tokony hahazo ity vokatra manaraka ity:

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.

Raha jerena ny toetry ny pods amin'ny anaran'ny "fanaraha-maso", dia hitantsika fa miparitaka ny zava-drehetra:

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

vokany:

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

Mandeha daholo ny pods rehetra. Fotoana hanaovana fitiliana izao!

Mifandray amin'i Grafana

Raha te hifandray amin'i Grafana eo ambanin'ny Kubernetes ianao dia mila manokatra tonelina mankany amin'ny pod. Ity ambany ity ny baiko hanokatra port 3000 ho an'ny pod Grafana:

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

Hevi-dehibe iray hafa dia ny filàna ny famerenana ny tenimiafina mpitantana Grafana. Tazonina ho tsiambaratelo ny tenimiafina loki-grafana eny an-tsaha .data.admin-user amin'ny format base64.

Mba hamerenana azy dia mila manatanteraka ity baiko manaraka ity ianao:

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

Ampiasao ity tenimiafina ity miaraka amin'ny kaonty mpitantana default (admin).

Famaritana loharano angon-drakitra Loki amin'ny Grafana

Voalohany indrindra, ataovy azo antoka fa noforonina ny loharanom-baovao Loki (Configuration/Datasource).
Ity misy ohatra:

Loki - fanangonana log mampiasa ny fomba Prometheus
Ohatra amin'ny fametrahana loharano angona ho an'i Loki

Amin'ny fipihana ny "Test" dia azonao atao ny manamarina ny fifandraisana amin'i Loki.

Manao fangatahana amin'i Loki

Mankanesa any Grafana amin'ny fizarana "Hijery". Rehefa mandray logs avy amin'ny container i Loki dia manampy metadata avy amin'ny Kubernetes. Noho izany dia azo atao ny mijery ny diarin'ny kaontenera manokana.

Ohatra, raha hisafidianana ny diarin'ny container promtail dia azonao ampiasaina ity fanontaniana manaraka ity: {container_name = "promtail"}.
Eto koa dia tsarovy ny mifidy ny loharano angona Loki.

Ity fanontaniana ity dia hamerina hetsika fitahirizana toy izao manaraka izao:

Loki - fanangonana log mampiasa ny fomba Prometheus
Valin'ny fanontaniana ao Grafana

Ampio amin'ny dashboard

Manomboka amin'ny Grafana 6.4, azonao atao ny mametraka ny mombamomba ny log mivantana eo amin'ny dashboard. Aorian'izany, ny mpampiasa dia afaka mifamadika haingana eo amin'ny isan'ny fangatahana ao amin'ny tranokalany sy ny dian'ny fampiharana.

Ity ambany ity ny ohatra iray amin'ny dashboard izay mampihatra an'io fifandraisana io:

Loki - fanangonana log mampiasa ny fomba Prometheus
Santionany dashboard misy metrika Prometheus sy Loki logs

Ho avin'i Loki

Nanomboka nampiasa an'i Loki aho tamin'ny Mey/Jona niaraka tamin'ny version 0.1. Androany ny version 1, ary na ny 1.1 sy 1.2 aza dia efa navoaka.

Tsy maintsy ekena fa tsy milamina tsara ny version 0.1. Saingy ny 0.3 dia efa naneho tena famantarana ny fahamatorana, ary ny dikan-teny manaraka (0.4, avy eo 1.0) dia nanamafy izany fahatsapana izany.

Aorian'ny 1.0.0, tsy misy afaka manana fialan-tsiny tsy hampiasa ity fitaovana mahafinaritra ity.

Ny fanatsarana fanampiny dia tsy tokony ho momba an'i Loki, fa ny fampidirana azy amin'ny Grafana tena tsara. Raha ny marina, Grafana 6.4 dia efa manana fampidirana tsara amin'ny dashboards.

Grafana 6.5, izay navoaka vao haingana, dia manatsara bebe kokoa ity fampidirana ity amin'ny alàlan'ny fahafantarana ho azy ny votoatin'ny log amin'ny endrika JSON.

Ny lahatsary eto ambany dia mampiseho ohatra kely amin'ity mekanika ity:

Loki - fanangonana log mampiasa ny fomba Prometheus
Mampiasa tady Loki hita ao amin'ny Grafana

Azo atao ny mampiasa ny iray amin'ireo saha JSON, ohatra, ho an'ny:

  • rohy mankany amin'ny fitaovana ivelany
  • fanivanana ny votoatin'ny log

Ohatra, azonao atao ny manindry ny traceId raha handeha amin'ny Zipkin na Jaeger.

Toy ny mahazatra, manantena ny fanehoan-kevitrao izahay ary manasa anao misokatra webinar, izay hiresaka momba ny fivoaran'ny indostrian'ny DevOps nandritra ny taona 2019 ary hiresaka momba ny lalana mety ho fampandrosoana amin'ny taona 2020.

Source: www.habr.com