Salut, Khabrovites! B'antiċipazzjoni tal-bidu ta' reġistrazzjoni ġdida għall-kors
Dan l-artikolu huwa introduzzjoni qasira għal Loki. Proġett Loki
L-ispirazzjoni ewlenija għal Loki kienet
- tuża tikketti biex taħżen id-data
- konsum baxx tar-riżorsi
Se nerġgħu lura għall-prinċipji ta 'Prometheus u nagħtu xi eżempji tal-użu tiegħu fil-kuntest ta' Kubernetes.
Ftit kelmiet dwar Prometheus
Biex tifhem bis-sħiħ kif jaħdem Loki, huwa importanti li tieħu pass lura u terġa’ tara ftit lil Prometheus.
Waħda mill-karatteristiċi distintivi ta 'Prometheus hija l-estrazzjoni ta' metriċi minn punti ta 'ġbir (permezz ta' esportaturi) u l-ħażna tagħhom f'TSDB (Time Series Data Base, database ta 'serje ta' ħin) biż-żieda ta 'metadata fil-forma ta' tikketti.
Għaliex għandek bżonnha
Riċentement, Prometheus sar l-istandard de facto fid-dinja tal-kontenituri u Kubernetes: l-installazzjoni tiegħu hija sempliċi ħafna, u l-endpoint għal Prometheus huwa inizjalment preżenti fil-cluster Kubernetes. Prometheus jista 'wkoll jiġbed metriċi minn applikazzjonijiet skjerati f'kontenitur filwaqt li jżomm tikketti speċifiċi. Għalhekk, il-monitoraġġ tal-applikazzjoni huwa faċli ħafna biex jiġi implimentat.
Sfortunatament, għad m'hemm l-ebda soluzzjoni turnkey għall-ġestjoni taz-zkuk, u trid issib soluzzjoni għalik innifsek:
- servizz tal-cloud ġestit għaċ-ċentralizzazzjoni ta' zkuk (AWS, Azure jew Google)
- servizz ta' monitoraġġ "monitoraġġ bħala servizz" (per eżempju, Datadog)
- toħloq is-servizz ta' ġbir taz-zkuk tiegħek stess.
Għat-tielet għażla, tradizzjonalment użajt Elasticsearch, minkejja l-fatt li mhux dejjem kont kuntent biha (speċjalment it-toqol u l-kumplessità tas-setup tiegħu).
Loki kien iddisinjat biex ikun faċli biex jiġi implimentat skont il-prinċipji li ġejjin:
- tkun faċli biex tibda
- jikkunsmaw ftit riżorsi
- taħdem b'mod indipendenti mingħajr ebda manutenzjoni speċjali
- iservi bħala add-on għal Prometheus biex jgħin fl-investigazzjonijiet tal-bugs
Madankollu, din is-sempliċità tiġi għad-detriment ta 'xi kompromessi. Waħda minnhom hija li ma tindikax il-kontenut. Għalhekk, it-tfittxija tat-test mhijiex effiċjenti ħafna jew għanja u ma tippermettix li żżomm statistika dwar il-kontenut tat-test. Iżda peress li Loki jrid ikun l-ekwivalenti tal-grep u jikkumplimenta lil Prometheus, dan mhuwiex żvantaġġ.
Investigazzjoni ta' inċident
Biex tifhem aħjar għaliex Loki m'għandux bżonn indiċjar, ejja mmorru lura għall-metodu ta 'investigazzjoni ta' inċident użat mill-iżviluppaturi ta 'Loki:
1 Twissija → 2 Dashboard → 3 Mistoqsija Adhoc → 4 Aggregazzjoni ta' log → 5 Traċċar distribwit → 6 Waħħal!
(1 Twissija → 2 Dashboard → 3 Mistoqsija Adhoc → 4 Log Aggregation → 5 Traċċar Imqassam → 6 Waħħal!)
L-idea hija li jkollna xi tip ta 'twissija (Notifika Slack, SMS, eċċ.) u wara dan:
- ħares lejn dashboards Grafana
- Ħares lejn il-metriċi tas-servizz (per eżempju, fi Prometheus)
- Ħares lejn l-entrati fil-log (per eżempju, f'Elasticsearch)
- forsi agħti ħarsa lejn traċċi mqassma (Jaeger, Zipkin, eċċ.)
- u finalment tiffissa l-problema oriġinali.
Hawnhekk, fil-każ tal-munzell Grafana + Prometheus + Elasticsearch + Zipkin, ikollok tuża erba 'għodod differenti. Biex tiffranka l-ħin, ikun sabiħ li tkun tista’ tagħmel dawn il-passi kollha b’għodda waħda: Grafana. Ta 'min jinnota li dan l-approċċ għar-riċerka ġie implimentat fi Grafana mill-verżjoni 6. Għalhekk, isir possibbli li wieħed jaċċessa d-dejta ta' Prometheus direttament minn Grafana.
L-iskrin tal-Explorer maqsum bejn Prometheus u Loki
Minn dan l-iskrin, tista 'tara zkuk f'Loki relatati mal-metriċi ta' Prometheus billi tuża l-kunċett tal-iskrin maqsum. Mill-verżjoni 6.5, Grafana jippermettilek li teżamina l-id tat-traċċa fl-entrati tal-log Loki biex issegwi links għall-għodod ta' traċċar distribwiti favoriti tiegħek (Jaeger).
Test lokali ta' Loki
L-eħfef mod biex tittestja Loki lokalment huwa li tuża docker-compose. Il-fajl docker-compose jinsab fir-repożitorju Loki. Tista 'tikseb ir-repożitorju bil-kmand li ġej git
:
$ git clone https://github.com/grafana/loki.git
Imbagħad trid tibdel fid-direttorju tal-produzzjoni:
$ cd production
Wara dan, tista 'tikseb l-aħħar immaġini ta' Docker:
$ docker-compose pull
Fl-aħħarnett, il-munzell Loki jinbeda bil-kmand li ġej:
$ docker-compose up
arkitettura Loki
Hawnhekk hawn dijagramma żgħira bl-arkitettura Loki:
Prinċipji ta' l-Arkitettura ta' Loki
Il-klijent tal-web imexxi applikazzjonijiet fuq is-server, Promtail jiġbor zkuk u jibgħathom lil Loki, il-klijent tal-web jibgħat ukoll metadata lil Loki. Loki jgħaqqad kollox u jgħaddih lil Grafana.
Loki qed jaħdem. Biex tara l-komponenti disponibbli, mexxi l-kmand li ġej:
$ docker ps
Fil-każ ta' Docker li għadu kif ġie installat, il-kmand għandu jirritorna r-riżultat li ġej:
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
Aħna naraw il-komponenti li ġejjin:
- Promtail: aġent responsabbli għaċ-ċentralizzazzjoni taz-zkuk
- Grafana: l-għodda tad-dashboard famuża
- Loki: demon taċ-ċentralizzazzjoni tad-dejta
Bħala parti minn infrastruttura klassika (per eżempju, ibbażata fuq magni virtwali), l-aġent Promtail għandu jiġi skjerat fuq kull magna. Grafana u Loki jistgħu jiġu installati fuq l-istess magna.
Skjerament għal Kubernetes
L-installazzjoni tal-komponenti Loki f'Kubernetes se tkun kif ġej:
- daemonSet biex juża l-aġent Promtail fuq kull waħda mill-magni fil-cluster tas-server
- Skjerament ta' Loki
- u l-aħħar waħda hija l-iskjerament ta’ Grafana.
Fortunatament, Loki huwa disponibbli bħala pakkett Helm, li jagħmilha faċli biex jintuża.
Installazzjoni permezz ta' Heml
Diġà għandu jkollok Heml installat. Jista 'jitniżżel mir-repożitorju GitHub tal-proġett. Huwa installat billi jiġi estratt l-arkivju xieraq għall-arkitettura tiegħek u żżid it-tmun $PATH
.
Nota: il-verżjoni 3.0.0 ta' Helm ġiet rilaxxata reċentement. Peress li kien hemm ħafna bidliet għaliha, il-qarrej huwa avżat li jistenna ftit qabel jibda jużah..
Żieda tas-sors għal Helm
L-ewwel pass huwa li żżid ir-repożitorju "loki" bil-kmand li ġej:
$ helm add loki https://grafana.github.io/loki/charts
Wara dan, tista 'tfittex pakketti bl-isem "loki":
$ helm search loki
Riżultat:
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...
Dawn il-pakketti għandhom il-karatteristiċi li ġejjin:
- il-pakkett loki/loki jaqbel biss mas-server Loki
- il-pakkett loki/fluent-bit jippermettilek tuża DaemonSet billi tuża fluent-bin biex tiġbor zkuk minflok Promtail
- il-pakkett loki/promtail fih aġent tal-ġbir taz-zkuk
- il-pakkett loki/loki-munzell, jippermettilek li immedjatament tuża Loki flimkien ma 'Promtail.
Installazzjoni ta' Loki
Biex tuża Loki f'Kubernetes, mexxi l-kmand li ġej fl-ispazju tal-isem "monitoraġġ":
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Biex issalva fuq disk, żid l-għażla --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Nota: jekk trid tuża Grafana fl-istess ħin, imbagħad żid il-parametru
--set grafana.enabled = true
Meta tmexxi dan il-kmand, għandek tikseb l-output li ġej:
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.
Meta nħarsu lejn l-istat tal-imżiewed fl-ispazju tal-isem ta '"monitoraġġ", nistgħu naraw li kollox huwa skjerat:
$ kubectl -n monitoring get pods -l release=loki
Riżultat:
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
Il-miżwed kollha qed jaħdmu. Issa wasal iż-żmien li tagħmel xi testijiet!
Konnessjoni ma Grafana
Sabiex tikkonnettja ma' Grafana taħt Kubernetes, trid tiftaħ mina għall-pod tagħha. Dan li ġej huwa l-kmand biex tiftaħ il-port 3000 għal pod Grafana:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Punt importanti ieħor huwa l-ħtieġa li tirkupra l-password tal-amministratur Grafana. Il-password tinżamm sigrieta loki-grafana
fil-qasam .data.admin-user
fil-format base64.
Biex tirrestawraha, għandek bżonn tmexxi l-kmand li ġej:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Uża din il-password flimkien mal-kont tal-amministratur default (admin).
Definizzjoni tas-sors tad-dejta Loki fi Grafana
L-ewwelnett, kun żgur li s-sors tad-dejta Loki (Konfigurazzjoni / Sors tad-Data) jinħoloq.
Hawn hu eżempju:
Eżempju tat-twaqqif ta' sors ta' dejta għal Loki
Billi tikklikkja fuq "Test" tista' tittestja l-konnessjoni ma' Loki.
Jagħmel talbiet lil Loki
Issa mur Grafana u mur fit-taqsima "Esplora". Meta jirċievi zkuk minn kontenituri, Loki jżid metadejta minn Kubernetes. Għalhekk, isir possibbli li tara r-zkuk ta 'kontenitur speċifiku.
Pereżempju, biex tagħżel zkuk tal-kontenituri tal-promtail, tista' tuża l-mistoqsija li ġejja: {container_name = "promtail"}
.
Tinsiex tagħżel is-sors tad-dejta Loki hawnhekk ukoll.
Din il-mistoqsija tirritorna l-attività tal-kontejners kif ġej:
Riżultat tal-mistoqsija fi Grafana
Żieda mad-daxxbord
Nibda minn Grafana 6.4, huwa possibbli li titqiegħed l-informazzjoni tal-log direttament fuq id-dashboard. Wara dan, l-utent ikun jista 'malajr jaqleb bejn in-numru ta' talbiet fuq is-sit tiegħu għal traċċi ta 'applikazzjoni.
Hawn taħt hawn eżempju dashboard li jimplimenta din l-interazzjoni:
Dashboard tal-kampjun b'metriċi Prometheus u zkuk Loki
Il-futur ta 'Loki
Bdejt nuża Loki lura f'Mejju/Ġunju bil-verżjoni 0.1. Il-verżjoni 1 diġà ġiet rilaxxata llum, u anke 1.1 u 1.2.
Għandu jiġi ammess li l-verżjoni 0.1 ma kinitx stabbli biżżejjed. Iżda 0.3 diġà wera sinjali reali ta 'maturità, u l-verżjonijiet li jmiss (0.4, imbagħad 1.0) saħħew biss din l-impressjoni.
Wara 1.0.0, ħadd ma jista' jkollu skuża biex ma jużax din l-għodda mill-isbaħ.
Aktar titjib m'għandux ikun dwar Loki, iżda pjuttost l-integrazzjoni tiegħu mal-Grafana eċċellenti. Fil-fatt, Grafana 6.4 diġà għandu integrazzjoni tajba mad-dashboards.
Grafana 6.5, li ġie rilaxxat reċentement, ikompli jtejjeb din l-integrazzjoni billi jirrikonoxxi awtomatikament il-kontenut tar-zkuk fil-format JSON.
Il-video hawn taħt juri eżempju żgħir ta 'dan il-mekkaniżmu:
Bl-użu ta' kordi Loki mogħtija fi Grafana
Isir possibbli li tuża waħda mill-oqsma JSON, pereżempju, biex:
- links għal għodda esterna
- filtrazzjoni tal-kontenut tal-log
Pereżempju, tista' tikklikkja fuq traceId biex tmur għand Zipkin jew Jaeger.
Bħas-soltu, nistennew bil-ħerqa l-kummenti tiegħek u nistednuk
Sors: www.habr.com