Silav, Xabrovî! Li hêviya destpêkirina qeydek nû ya ji bo qursê
Ev gotar ji bo Loki danasîna kurt e. Projeya Loki
Îlhama sereke ji bo Loki bû
- bikaranîna etîketan ji bo hilanîna daneyan
- mezaxtina çavkaniyê kêm
Em ê vegerin ser prensîbên Prometheus û çend nimûneyên karanîna wê di çarçoveya Kubernetes de bidin.
Çend gotin li ser Prometheus
Ji bo ku hûn bi tevahî fêm bikin ka Loki çawa dixebite, girîng e ku hûn gav paşde bavêjin û hinekî Prometheus ji nû ve bigerin.
Yek ji taybetmendiyên cuda yên Prometheus derxistina metrîkan ji nuqteyên berhevkirinê (bi rêya îxrackaran) û hilanîna wan di TSDB (Bingeha Daneyên Rêzeya Demê, databasa rêzikên demê) de bi lêzêdekirina metadata di forma etîketan de ye.
Çima hûn hewce ne
Di van demên dawî de, Prometheus di cîhana konteyneran û Kubernetes de bûye standarda de facto: sazkirina wê pir hêsan e, û komek Kubernetes di destpêkê de ji bo Prometheus xalek dawî heye. Prometheus di heman demê de ku etîketên taybetî diparêze dikare metrîkan ji serîlêdanên ku di konteynerê de hatine bicîh kirin jî derxe. Ji ber vê yekê, çavdêriya serîlêdanê pir hêsan e ku bicîh bikin.
Mixabin, hîn jî ji bo rêveberiya têketinê çareseriyek kilît tune, û divê hûn ji xwe re çareseriyek bibînin:
- karûbarê cloudê ya birêvebir ji bo têketinên navendî (AWS, Azure an Google)
- karûbarê çavdêriyê "çavdêrî wekî karûbar" (mînak, Datadog)
- afirandina karûbarê berhevkirina têketinê ya xwe.
Ji bo vebijarka sêyemîn, min bi kevneşopî Elasticsearch bikar aniye, tevî vê yekê ku ez her gav jê dilxweş nebûm (bi taybetî giranî û tevliheviya wê ya sazkirinê).
Loki hate sêwirandin ku li gorî prensîbên jêrîn hêsan were bicîh kirin:
- destpêkirina hêsan be
- çend çavkaniyan dixwe
- serbixwe bêyî lênêrînek taybetî bixebitin
- ji Prometheus re wekî pêvekek xizmet bike da ku di vekolînên xeletiyan de bibe alîkar
Lêbelê, ev sadebûn li ser hesabê hin lihevhatinan tê. Yek ji wan ne îndeksa naverokê ye. Ji ber vê yekê, lêgerîna nivîsê ne pir bikêr an dewlemend e û nahêle ku hûn statîstîkên naveroka nivîsê biparêzin. Lê ji ber ku Loki dixwaze bibe hevreha û temamkerê Prometheus, ev ne kêmasiyek e.
Lêkolîna bûyerê
Ji bo ku em çêtir fam bikin ka çima Loki hewcedariya indexkirinê nake, em vegerin ser rêbaza lêpirsîna bûyerê ku ji hêla pêşdebirên Loki ve hatî bikar anîn:
1 Hişyar → 2 Dashboard → 3 Lêpirsîna Adhoc → 4 Kombûna Têketinê → 5 Şopandina Belavkirî → 6 Rast bikin!
(1 Hişyarî → 2 Dashboard → 3 Lêpirsîna Adhoc → 4 Kombûna Têketinê → 5 Şopandina Belavkirî → 6 Rastkirin!)
Fikir ev e ku em celebek hişyariyê bistînin (Slack Notification, SMS, hwd.) û piştî wê:
- li dashboardên Grafana binêrin
- li metrîkên karûbarê binêrin (mînak, di Prometheus de)
- li têketinên têketinê binêre (mînak, di Elasticsearch de)
- dibe ku li şopên belavbûyî binêre (Jaeger, Zipkin, hwd.)
- û di dawiyê de pirsgirêka bingehîn çareser bikin.
Li vir, di doza Grafana + Prometheus + Elasticsearch + Zipkin stack de, hûn neçar in ku çar amûrên cûda bikar bînin. Ji bo ku dem xilas bike, dê xweş be ku meriv van gavan bi yek amûrek bike: Grafana. Hêjayî gotinê ye ku ev nêzîkatiya lêkolînê ji guhertoya 6-an vir ve di Grafana de hatî bicîh kirin. Bi vî rengî, meriv dikare rasterast ji Grafana bigihîje daneyên Prometheus.
Ekrana Explorer di navbera Prometheus û Loki de parçe dibe
Ji vê ekranê, hûn dikarin têketinên li Loki-yê yên ku bi metrîkên Prometheus ve girêdayî ne bi karanîna têgîna dîmendera dabeşkirî bibînin. Ji guhertoya 6.5-ê ve, Grafana dihêle hûn di navnîşên têketinê yên Loki de nasnameya şopê parsek bikin da ku li pey girêdanên amûrên şopandina belavbûyî yên bijare (Jaeger) bişopînin.
Testa herêmî ya Loki
Rêya herî hêsan a ceribandina Loki li herêmî karanîna docker-compose ye. Pelê docker-compose di depoya Loki de ye. Hûn dikarin bi fermana jêrîn depoyê bistînin git
:
$ git clone https://github.com/grafana/loki.git
Dûv re hûn hewce ne ku pelrêça hilberînê biguhezînin:
$ cd production
Piştî wê, hûn dikarin wêneyên herî dawî yên Docker bistînin:
$ docker-compose pull
Di dawiyê de, stack Loki bi fermana jêrîn dest pê dike:
$ docker-compose up
mîmariya Loki
Li vir diagramek piçûk bi mîmariya Loki re heye:
Prensîbên Mîmariya Loki
Muwekîlê webê serîlêdanan li ser serverê dimeşîne, Promtail têketin berhev dike û ji Loki re dişîne, xerîdar jî metadata ji Loki re dişîne. Loki her tiştî kom dike û digihîne Grafana.
Loki direve. Ji bo dîtina pêkhateyên berdest, emrê jêrîn bimeşînin:
$ docker ps
Di doza Dockerek nû ya sazkirî de, divê emrê encama jêrîn vegerîne:
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
Em pêkhateyên jêrîn dibînin:
- Promtail: nûnerê ku ji bo navendîkirina têketin berpirsiyar e
- Grafana: Amûra dashboardê ya navdar
- Loki: Daemon navendîkirina daneyê
Wekî beşek ji binesaziyek klasîk (mînak, li ser bingeha makîneyên virtual), pêdivî ye ku nûnerê Promtail li ser her makîneyê were bicîh kirin. Grafana û Loki dikarin li ser heman makîneyê werin saz kirin.
Dabeşkirina Kubernetes
Sazkirina pêkhateyên Loki li Kubernetes dê wiha be:
- daemonSet da ku nûnerê Promtail li ser her yek ji makîneyên di koma serverê de bicîh bike
- Loki Deployment
- û ya dawî jî bicihkirina Grafana ye.
Xwezî, Loki wekî pakêtek Helm peyda dibe, ku ew bi kar tîne hêsan dike.
Sazkirin bi rêya Heml
Divê hûn jixwe Heml sazkirî bin. Ew dikare ji depoya GitHub ya projeyê were dakêşandin. Ew bi derxistina arşîva minasib ji bo mîmariya we û lê zêdekirina helmê tê saz kirin $PATH
.
Têbînî: guhertoya 3.0.0 ya Helm vê dawiyê hat berdan. Ji ber ku gelek guhertin di wê de hene, ji xwendevan re tê pêşniyar kirin ku berî ku dest bi karanîna wê bike hinekî li bendê bimîne..
Zêdekirina çavkaniyê ji bo Helm
Gava yekem ev e ku meriv depoya "loki" bi fermana jêrîn zêde bike:
$ helm add loki https://grafana.github.io/loki/charts
Piştî wê, hûn dikarin li pakêtên bi navê "loki" bigerin:
$ helm search loki
Encam:
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...
Van pakêtan taybetmendiyên jêrîn hene:
- pakêtê loki/loki tenê bi servera Loki re hevber dike
- pakêtê loki/fluent-bit destûrê dide te ku DaemonSet bi karanîna fluent-bin bikar bîne da ku li şûna Promtail têketin berhev bike
- pakêtê loki/promtail agent berhevkirina têketinê dihewîne
- pakêtê loki / loki-stack, destûrê dide te ku hûn tavilê Loki bi Promtail re bi cih bikin.
Sazkirina Loki
Ji bo ku Loki li Kubernetes bicîh bikin, emrê jêrîn li cîhê navê "şopandinê" bimeşînin:
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Ji bo tomarkirina dîskê, vebijarkê lê zêde bike --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Têbînî: Heke hûn dixwazin di heman demê de Grafana bicîh bikin, wê hingê pîvanê lê zêde bikin
--set grafana.enabled = true
Dema ku hûn vê fermanê dimeşînin, divê hûn hilberîna jêrîn bistînin:
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.
Dema ku em li rewşa pelan di nav qada navên "şopandinê" de mêze bikin, em dikarin bibînin ku her tişt tête bicîh kirin:
$ kubectl -n monitoring get pods -l release=loki
Encam:
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
Hemî pez dimeşin. Niha dem hatiye ku hin ceribandinan bikin!
Girêdana bi Grafana
Ji bo ku hûn di bin Kubernetes de bi Grafana ve girêbidin, hûn hewce ne ku tunelekek berbi wê vekin. Li jêr fermana vekirina port 3000 ji bo Grafana pod heye:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Xalek din a girîng hewcedariya vegerandina şîfreya rêveberê Grafana ye. Şîfre veşartî ye loki-grafana
li zeviyê .data.admin-user
di formata base64 de.
Ji bo vegerandina wê, hûn hewce ne ku emrê jêrîn bimeşînin:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Vê şîfreyê bi hesabê rêveberê xwerû (admin) re bi hev re bikar bînin.
Danasîna çavkaniya daneya Loki li Grafana
Berî her tiştî, pê ewle bine ku çavkaniya daneya Loki (Vesazkirin / Çavkaniya daneyê) hatiye afirandin.
Li vir mînakek e:
Mînakek sazkirina çavkaniyek daneyê ji bo Loki
Bi tikandina li ser "Test" hûn dikarin girêdana bi Loki re biceribînin.
Daxwazan ji Loki re dikin
Naha biçin Grafana û biçin beşa "Explore". Dema ku têketin ji konteyneran werdigire, Loki metadata ji Kubernetes zêde dike. Bi vî rengî, dîtina têketinên konteynirek taybetî gengaz dibe.
Mînakî, ji bo hilbijartina têketinên konteynerê promtail, hûn dikarin pirsa jêrîn bikar bînin: {container_name = "promtail"}
.
Ji bîr nekin ku li vir jî çavkaniya daneya Loki hilbijêrin.
Ev pirs dê çalakiya konteynerê wiha vegerîne:
Encama lêpirsînê li Grafana
Zêdekirina li dashboard
Bi Grafana 6.4-ê dest pê dike, gengaz e ku meriv agahdariya têketinê rasterast li ser dashboardê bixe. Piştî wê, bikarhêner dê bikaribe zû di navbera hejmara daxwazên li ser malpera xwe de ji şopên serîlêdanê veguherîne.
Li jêr tabloyek mînakek heye ku vê pêwendiyê bicîh tîne:
Bi metrîkên Prometheus û têketinên Loki re tabloya nimûne
Pêşeroja Loki
Min di Gulan/Hezîranê de bi guhertoya 0.1-ê dest bi karanîna Loki kir. Guhertoya 1 îro îro derketiye, û heta 1.1 û 1.2.
Divê were pejirandin ku guhertoya 0.1 bi têra xwe aram nebû. Lê 0.3 jixwe nîşanên rastîn ên mezinbûnê nîşan da, û guhertoyên paşîn (0.4, paşê 1.0) tenê vê bandorê xurt kirin.
Piştî 1.0.0, kes nikare hincetek hebe ku vê amûra ecêb bikar neyne.
Pêşveçûnên din divê ne li ser Loki bin, lê ji bilî yekbûna wê bi Grafana-ya hêja re. Bi rastî, Grafana 6.4 jixwe bi dashboardan re entegrasyonek baş heye.
Grafana 6.5, ku di van demên dawî de hate berdan, vê entegrasyonê bi xweber naskirina naveroka têketinên di formata JSON de bêtir çêtir dike.
Vîdyoya jêrîn mînakek piçûk a vê mekanîzmayê nîşan dide:
Bikaranîna rêzikên Loki yên ku di Grafana de hatine pêşkêş kirin
Mînakî, meriv dikare yek ji qadên JSON bikar bîne, mînakî:
- girêdanên amûrek derveyî
- fîlterkirina naveroka têketinê
Mînakî, hûn dikarin li ser traceId bikirtînin da ku biçin Zipkin an Jaeger.
Wekî her car, em li benda şîroveyên we ne û we vedixwînin
Source: www.habr.com