Cyfarchion, Khabrovites! Gan ragweld dechrau ymrestriad newydd ar gyfer y cwrs
Mae'r erthygl hon yn gyflwyniad byr i Loki. Prosiect Loki
Y prif ysbrydoliaeth i Loki oedd
- defnyddio labeli i storio data
- defnydd isel o adnoddau
Byddwn yn dychwelyd at egwyddorion Prometheus ac yn rhoi rhai enghreifftiau o'i ddefnydd yng nghyd-destun Kubernetes.
Ychydig eiriau am Prometheus
Er mwyn deall yn iawn sut mae Loki yn gweithio, mae'n bwysig cymryd cam yn ôl ac ailymweld â Prometheus ychydig.
Un o nodweddion gwahaniaethol Prometheus yw echdynnu metrigau o fannau casglu (trwy allforwyr) a'u storio mewn TSDB (Cronfa Ddata Cyfres Amser, cronfa ddata cyfres amser) gan ychwanegu metadata ar ffurf labeli.
Pam ydych chi ei angen
Yn ddiweddar, mae Prometheus wedi dod yn safon de facto ym myd cynwysyddion a Kubernetes: mae ei osod yn syml iawn, ac mae gan glwstwr Kubernetes ddiweddbwynt i Prometheus i ddechrau. Gall Prometheus hefyd dynnu metrigau o gymwysiadau a ddefnyddir mewn cynhwysydd tra'n cynnal labeli penodol. Felly, mae monitro ceisiadau yn hawdd iawn i'w weithredu.
Yn anffodus, nid oes ateb un contractwr o hyd ar gyfer rheoli logiau, ac mae'n rhaid i chi ddod o hyd i ateb i chi'ch hun:
- gwasanaeth cwmwl a reolir ar gyfer canoli logiau (AWS, Azure neu Google)
- gwasanaeth monitro "monitro fel gwasanaeth" (er enghraifft, Datadog)
- creu eich gwasanaeth casglu logiau eich hun.
Ar gyfer y trydydd opsiwn, rwyf wedi defnyddio Elasticsearch yn draddodiadol, er gwaethaf y ffaith nad oeddwn bob amser yn hapus ag ef (yn enwedig ei drymder a chymhlethdod y setup).
Dyluniwyd Loki i fod yn hawdd ei weithredu yn unol â'r egwyddorion canlynol:
- fod yn hawdd i ddechrau
- defnyddio ychydig o adnoddau
- gweithio'n annibynnol heb unrhyw waith cynnal a chadw arbennig
- gwasanaethu fel ychwanegiad i Prometheus i helpu gydag ymchwiliadau chwilod
Fodd bynnag, daw'r symlrwydd hwn ar draul rhai cyfaddawdau. Un ohonynt yw peidio â mynegeio'r cynnwys. Felly, nid yw chwilio testun yn effeithlon nac yn gyfoethog iawn ac nid yw'n caniatáu ichi gadw ystadegau ar gynnwys y testun. Ond gan fod Loki eisiau bod yn cyfateb i grep ac yn ategu Prometheus, nid yw hyn yn anfantais.
Ymchwiliad i ddigwyddiad
Er mwyn deall yn well pam nad oes angen mynegeio ar Loki, gadewch i ni fynd yn ôl at y dull ymchwilio i ddigwyddiadau a ddefnyddir gan ddatblygwyr Loki:
1 Rhybudd → 2 Dangosfwrdd → 3 Ymholiad Adhoc → 4 Log Agregu → 5 Olrhain Dosbarthedig → 6 Trwsio!
(1 Rhybudd → 2 Dangosfwrdd → 3 Ymholiad Adhoc → 4 Log Agregu → 5 Olrhain Wedi'i Ddosbarthu → 6 Trwsio!)
Y syniad yw ein bod yn cael rhyw fath o rybudd (Hysbysiad Slack, SMS, ac ati) ac ar ôl hynny:
- edrychwch ar ddangosfyrddau Grafana
- edrych ar fetrigau gwasanaeth (er enghraifft, yn Prometheus)
- edrych ar gofnodion log (er enghraifft, yn Elasticsearch)
- efallai edrychwch ar olion gwasgaredig (Jaeger, Zipkin, ac ati)
- ac yn olaf trwsio'r broblem wreiddiol.
Yma, yn achos stac Grafana + Prometheus + Elasticsearch + Zipkin, bydd yn rhaid i chi ddefnyddio pedwar teclyn gwahanol. Er mwyn arbed amser, byddai'n braf gallu gwneud yr holl gamau hyn gydag un offeryn: Grafana. Mae'n werth nodi bod y dull hwn o ymchwilio wedi'i roi ar waith yn Grafana ers fersiwn 6. Felly, mae'n dod yn bosibl cyrchu data Prometheus yn uniongyrchol o Grafana.
Sgrin Explorer wedi'i hollti rhwng Prometheus a Loki
O'r sgrin hon, gallwch weld logiau yn Loki yn ymwneud â metrigau Prometheus gan ddefnyddio'r cysyniad sgrin hollt. Ers fersiwn 6.5, mae Grafana yn caniatáu ichi ddosrannu'r ID olrhain mewn cofnodion log Loki i ddilyn dolenni i'ch hoff offer olrhain dosbarthedig (Jaeger).
Prawf lleol Loki
Y ffordd hawsaf o brofi Loki yn lleol yw defnyddio docker-compose. Mae'r ffeil docker-compose wedi'i lleoli yn ystorfa Loki. Gallwch chi gael yr ystorfa gyda'r gorchymyn canlynol git
:
$ git clone https://github.com/grafana/loki.git
Yna mae angen i chi newid i'r cyfeiriadur cynhyrchu:
$ cd production
Ar ôl hynny, gallwch chi gael y delweddau Docker diweddaraf:
$ docker-compose pull
Yn olaf, mae'r pentwr Loki yn cael ei gychwyn gyda'r gorchymyn canlynol:
$ docker-compose up
pensaernïaeth Loki
Dyma ddiagram bach gyda phensaernïaeth Loki:
Egwyddorion Pensaernïaeth Loki
Mae'r cleient gwe yn rhedeg ceisiadau ar y gweinydd, mae Promtail yn casglu logiau ac yn eu hanfon at Loki, mae'r cleient gwe hefyd yn anfon metadata i Loki. Mae Loki yn agregu popeth ac yn ei drosglwyddo i Grafana.
Mae Loki yn rhedeg. I weld y cydrannau sydd ar gael, rhedeg y gorchymyn canlynol:
$ docker ps
Yn achos Dociwr newydd ei osod, dylai'r gorchymyn ddychwelyd yr allbwn canlynol:
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
Rydym yn gweld y cydrannau canlynol:
- Promtail: asiant sy'n gyfrifol am ganoli logiau
- Grafana: yr offeryn dangosfwrdd enwog
- Loki: daemon canoli data
Fel rhan o seilwaith clasurol (er enghraifft, yn seiliedig ar beiriannau rhithwir), rhaid defnyddio asiant Promtail ar bob peiriant. Gellir gosod Grafana a Loki ar yr un peiriant.
Anfon i Kubernetes
Bydd gosod cydrannau Loki yn Kubernetes fel a ganlyn:
- daemonSet i ddefnyddio'r asiant Promtail ar bob un o'r peiriannau yn y clwstwr gweinydd
- Defnydd Loki
- a'r olaf yw defodiad Grafana.
Yn ffodus, mae Loki ar gael fel pecyn Helm, gan ei gwneud hi'n hawdd ei ddefnyddio.
Gosod trwy Heml
Dylech fod wedi gosod Heml eisoes. Gellir ei lawrlwytho o ystorfa GitHub y prosiect. Fe'i gosodir trwy echdynnu'r archif sy'n briodol i'ch pensaernïaeth ac ychwanegu llyw ato $PATH
.
Nodyn: rhyddhawyd fersiwn 3.0.0 o Helm yn ddiweddar. Gan fod llawer o newidiadau wedi bod ynddo, cynghorir y darllenydd i aros ychydig cyn dechrau ei ddefnyddio..
Ychwanegu ffynhonnell ar gyfer Helm
Y cam cyntaf yw ychwanegu'r ystorfa "loki" gyda'r gorchymyn canlynol:
$ helm add loki https://grafana.github.io/loki/charts
Ar ôl hynny, gallwch chwilio am becynnau o'r enw “loki”:
$ helm search loki
Canlyniad:
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...
Mae gan y pecynnau hyn y nodweddion canlynol:
- y pecyn loki/loki yn cyfateb i'r gweinydd Loki yn unig
- y pecyn loki/did rhugl yn caniatáu i chi ddefnyddio DaemonSet gan ddefnyddio fluent-bin i gasglu logiau yn lle Promtail
- y pecyn loki/promtail yn cynnwys asiant casglu boncyffion
- y pecyn loki/loki-stack, yn eich galluogi i ddefnyddio Loki ar unwaith ynghyd â Promtail.
Gosod Loki
I ddefnyddio Loki i Kubernetes, rhedeg y gorchymyn canlynol yn y gofod enw “monitro”:
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
I arbed ar ddisg, ychwanegwch yr opsiwn --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Nodyn: os ydych chi am ddefnyddio Grafana ar yr un pryd, yna ychwanegwch y paramedr
--set grafana.enabled = true
Pan fyddwch chi'n rhedeg y gorchymyn hwn, dylech gael yr allbwn canlynol:
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.
Wrth edrych ar gyflwr y codennau yn y gofod enwau “monitro”, gallwn weld bod popeth yn cael ei ddefnyddio:
$ kubectl -n monitoring get pods -l release=loki
Canlyniad:
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
Mae pob cod yn rhedeg. Nawr mae'n bryd gwneud rhai profion!
Cysylltu â Grafana
Er mwyn cysylltu â Grafana o dan Kubernetes, mae angen ichi agor twnnel i'w goden. Yn dilyn mae'r gorchymyn i agor porthladd 3000 ar gyfer pod Grafana:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Pwynt pwysig arall yw'r angen i adennill cyfrinair gweinyddwr Grafana. Cedwir y cyfrinair yn gyfrinachol loki-grafana
yn y maes .data.admin-user
mewn fformat base64.
Er mwyn ei adfer, mae angen i chi redeg y gorchymyn canlynol:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Defnyddiwch y cyfrinair hwn ar y cyd â'r cyfrif gweinyddwr rhagosodedig (gweinyddwr).
Diffiniad ffynhonnell ddata Loki yn Grafana
Yn gyntaf oll, gwnewch yn siŵr bod ffynhonnell ddata Loki (Configuration / Datasource) yn cael ei chreu.
Dyma enghraifft:
Enghraifft o sefydlu ffynhonnell ddata ar gyfer Loki
Trwy glicio ar “Test” gallwch chi brofi'r cysylltiad â Loki.
Gwneud ceisiadau i Loki
Nawr ewch i Grafana ac ewch i'r adran “Archwilio”. Wrth dderbyn logiau o gynwysyddion, mae Loki yn ychwanegu metadata o Kubernetes. Felly, mae'n bosibl gweld logiau cynhwysydd penodol.
Er enghraifft, i ddewis logiau cynhwysydd promtail, gallwch ddefnyddio'r ymholiad canlynol: {container_name = "promtail"}
.
Peidiwch ag anghofio dewis ffynhonnell ddata Loki yma hefyd.
Bydd yr ymholiad hwn yn dychwelyd gweithgaredd cynhwysydd fel a ganlyn:
Canlyniad ymholiad yn Grafana
Ychwanegu at y dangosfwrdd
Gan ddechrau gyda Grafana 6.4, mae'n bosibl rhoi gwybodaeth log yn uniongyrchol ar y dangosfwrdd. Ar ôl hynny, bydd y defnyddiwr yn gallu newid yn gyflym rhwng nifer y ceisiadau ar ei wefan i olion cais.
Isod mae dangosfwrdd enghreifftiol sy'n gweithredu'r rhyngweithiad hwn:
Dangosfwrdd enghreifftiol gyda metrigau Prometheus a logiau Loki
Dyfodol Loki
Dechreuais ddefnyddio Loki yn ôl ym mis Mai / Mehefin gyda fersiwn 0.1. Mae fersiwn 1 eisoes wedi'i rhyddhau heddiw, a hyd yn oed 1.1 a 1.2.
Rhaid cyfaddef nad oedd fersiwn 0.1 yn ddigon sefydlog. Ond roedd 0.3 eisoes yn dangos arwyddion gwirioneddol o aeddfedrwydd, ac roedd y fersiynau nesaf (0.4, yna 1.0) yn atgyfnerthu'r argraff hon yn unig.
Ar ôl 1.0.0, ni all neb gael esgus i beidio â defnyddio'r offeryn gwych hwn.
Ni ddylai gwelliannau pellach ymwneud â Loki, ond yn hytrach ei integreiddio â'r Grafana rhagorol. Mewn gwirionedd, mae Grafana 6.4 eisoes wedi integreiddio'n dda â dangosfyrddau.
Mae Grafana 6.5, a ryddhawyd yn ddiweddar, yn gwella'r integreiddio hwn ymhellach trwy gydnabod cynnwys logiau yn fformat JSON yn awtomatig.
Mae'r fideo isod yn dangos enghraifft fach o'r mecanwaith hwn:
Gan ddefnyddio tannau Loki wedi'u rendro yn Grafana
Mae'n dod yn bosibl defnyddio un o'r meysydd JSON, er enghraifft, i:
- dolenni i declyn allanol
- hidlo cynnwys log
Er enghraifft, gallwch glicio ar traceId i fynd i Zipkin neu Jaeger.
Yn ôl yr arfer, edrychwn ymlaen at eich sylwadau a'ch gwahodd i
Ffynhonnell: hab.com