Heilsið, Khabrovítar! Í aðdraganda nýrrar innritunar á námskeiðið
Þessi grein er stutt kynning á Loka. Verkefni Loki
Aðalinnblástur Loka var
- nota merki til að geyma gögn
- lítil auðlindanotkun
Við munum snúa aftur að meginreglum Prometheus og gefa nokkur dæmi um notkun þess í tengslum við Kubernetes.
Nokkur orð um Prometheus
Til að skilja til hlítar hvernig Loki virkar er mikilvægt að taka skref til baka og skoða Prometheus aðeins aftur.
Eitt af sérkennum Prometheus er útdráttur mæligilda frá söfnunarstöðum (í gegnum útflytjendur) og vistun þeirra í TSDB (Time Series Data Base, tímaraðagagnagrunnur) að viðbættum lýsigögnum í formi merkimiða.
Af hverju þarftu það
Nýlega hefur Prometheus orðið raunverulegur staðall í heimi gáma og Kubernetes: uppsetning hans er mjög einföld og Kubernetes þyrping hefur upphaflega endapunkt fyrir Prometheus. Prometheus getur einnig dregið út mælikvarða úr forritum sem eru settir í gám á meðan viðhalda tilteknum merkimiðum. Þess vegna er eftirlit með forritum mjög auðvelt í framkvæmd.
Því miður er enn engin turnkey lausn fyrir annálastjórnun og þú verður að finna lausn fyrir sjálfan þig:
- stýrð skýjaþjónusta fyrir miðstýringu annála (AWS, Azure eða Google)
- eftirlitsþjónusta „eftirlit sem þjónusta“ (til dæmis Datadog)
- búa til þína eigin skráasafnsþjónustu.
Fyrir þriðja valmöguleikann hef ég venjulega notað Elasticsearch, þrátt fyrir að ég hafi ekki alltaf verið ánægður með það (sérstaklega þyngd hans og flókið uppsetning).
Loki var hannaður til að vera auðveldur í framkvæmd samkvæmt eftirfarandi reglum:
- vera auðvelt að byrja
- neyta fárra auðlinda
- vinna sjálfstætt án sérstaks viðhalds
- þjóna sem viðbót við Prometheus til að hjálpa við villurannsóknir
Hins vegar kemur þessi einfaldleiki á kostnað sumra málamiðlana. Eitt af því er að skrá innihaldið ekki. Þess vegna er textaleit ekki mjög skilvirk eða rík og gerir þér ekki kleift að halda tölfræði um innihald textans. En þar sem Loki vill vera grep jafngildi og viðbót við Prometheus, þá er þetta ekki ókostur.
Atviksrannsókn
Til að skilja betur hvers vegna Loki þarf ekki flokkun, skulum við fara aftur í atviksrannsóknaraðferðina sem Loki verktaki:
1 Alert → 2 Mælaborð → 3 Adhoc Query → 4 Log Aggregation → 5 Dreifð rakning → 6 Lagfæring!
(1 Viðvörun → 2 Mælaborð → 3 Adhoc fyrirspurn → 4 Logasamsöfnun → 5 Dreifð rakning → 6 Lagfæring!)
Hugmyndin er sú að við fáum einhvers konar viðvörun (Slack Notification, SMS, osfrv.) og eftir það:
- skoða mælaborð Grafana
- skoða þjónustumælingar (til dæmis í Prometheus)
- skoðaðu skráningarfærslur (til dæmis í Elasticsearch)
- kíktu kannski á dreifðar ummerki (Jaeger, Zipkin, osfrv.)
- og lagaðu að lokum upprunalega vandamálið.
Hér, þegar um er að ræða Grafana + Prometheus + Elasticsearch + Zipkin stafla, verður þú að nota fjögur mismunandi verkfæri. Til að spara tíma væri gaman að geta gert öll þessi skref með einu verkfæri: Grafana. Þess má geta að þessi nálgun við rannsóknir hefur verið innleidd í Grafana frá útgáfu 6. Þannig verður hægt að nálgast Prometheus gögn beint úr Grafana.
Explorer skjár skipt á milli Prometheus og Loka
Frá þessum skjá geturðu skoðað annála í Loki sem tengjast Prometheus mæligildum með því að nota klofna skjáhugtakið. Frá útgáfu 6.5 gerir Grafana þér kleift að flokka rakningarauðkennið í Loka færslum til að fylgja tenglum á uppáhalds dreifða rakningartólin þín (Jaeger).
Loki staðbundið próf
Auðveldasta leiðin til að prófa Loka á staðnum er að nota docker-compose. Docker-compose skráin er staðsett í Loki geymslunni. Þú getur fengið geymsluna með eftirfarandi skipun git
:
$ git clone https://github.com/grafana/loki.git
Þá þarftu að skipta yfir í framleiðsluskrána:
$ cd production
Eftir það geturðu fengið nýjustu Docker myndirnar:
$ docker-compose pull
Að lokum er Loki staflan ræstur með eftirfarandi skipun:
$ docker-compose up
Loki arkitektúr
Hér er smá skýringarmynd með Loka arkitektúr:
Loki arkitektúrreglur
Vefbiðlarinn keyrir forrit á þjóninum, Promtail safnar logs og sendir til Loka, vefbiðlarinn sendir líka lýsigögn til Loka. Loki safnar öllu saman og gefur til Grafana.
Loki hleypur. Til að skoða tiltæka íhluti skaltu keyra eftirfarandi skipun:
$ docker ps
Ef um er að ræða nýuppsettan Docker ætti skipunin að skila eftirfarandi niðurstöðu:
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
Við sjáum eftirfarandi þætti:
- Promtail: umboðsmaður sem ber ábyrgð á miðstýringu annála
- Grafana: hið fræga mælaborðsverkfæri
- Loki: miðstýringarpúki gagna
Sem hluti af klassískum innviðum (til dæmis byggt á sýndarvélum) verður að setja Promtail umboðsmanninn á hverja vél. Grafana og Loka er hægt að setja á sömu vél.
Dreifing á Kubernetes
Uppsetning Loki íhluta í Kubernetes verður sem hér segir:
- daemonSet til að senda Promtail umboðsmanninn á hverja vél í netþjónaklasanum
- Loki dreifing
- og sú síðasta er dreifing Grafana.
Sem betur fer er Loki fáanlegur sem Helm pakki, sem gerir það auðvelt að dreifa honum.
Uppsetning um Heml
Þú ættir nú þegar að hafa Heml uppsett. Það er hægt að hlaða niður úr GitHub geymslu verkefnisins. Það er sett upp með því að draga út skjalasafnið sem hentar arkitektúrnum þínum og bæta við stýrinu $PATH
.
Ath: útgáfa 3.0.0 af Helm var gefin út nýlega. Þar sem miklar breytingar hafa orðið á því er lesandanum bent á að bíða aðeins áður en byrjað er að nota það..
Bætir við heimild fyrir Helm
Fyrsta skrefið er að bæta við „loki“ geymslunni með eftirfarandi skipun:
$ helm add loki https://grafana.github.io/loki/charts
Eftir það geturðu leitað að pökkum sem heita „loki“:
$ helm search loki
Niðurstaða:
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...
Þessir pakkar hafa eftirfarandi eiginleika:
- pakki loki/loki passar aðeins við Loka þjóninn
- pakki loki/fluent-bit gerir þér kleift að dreifa DaemonSet með því að nota fluent-bin til að safna annálum í stað Promtail
- pakki loki/promtail inniheldur umboðsmann til að safna annálum
- pakki loki/loka-stafla, gerir þér kleift að senda Loki strax ásamt Promtail.
Að setja upp Loka
Til að dreifa Loki á Kubernetes skaltu keyra eftirfarandi skipun í „vöktun“ nafnrýminu:
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Til að vista á disk skaltu bæta við valkostinum --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Ath: ef þú vilt nota Grafana á sama tíma skaltu bæta við færibreytunni
--set grafana.enabled = true
Þegar þú keyrir þessa skipun ættirðu að fá eftirfarandi úttak:
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.
Þegar litið er á stöðu fræbelganna í „eftirlits“ nafnrýminu getum við séð að allt er notað:
$ kubectl -n monitoring get pods -l release=loki
Niðurstaða:
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
Allir beljur eru í gangi. Nú er kominn tími til að gera nokkrar prófanir!
Tengist Grafana
Til þess að tengjast Grafana undir Kubernetes þarftu að opna göng að belg þess. Eftirfarandi er skipunin til að opna gátt 3000 fyrir Grafana belg:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Annar mikilvægur punktur er þörfin á að endurheimta Grafana stjórnanda lykilorðið. Lykilorðið er haldið leyndu loki-grafana
á sviði .data.admin-user
í base64 sniði.
Til að endurheimta það þarftu að keyra eftirfarandi skipun:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Notaðu þetta lykilorð í tengslum við sjálfgefna stjórnandareikninginn (admin).
Skilgreining Loka gagnagjafa í Grafana
Fyrst af öllu, vertu viss um að Loki gagnagjafinn (Configuration / Datasource) sé búinn til.
Hér er dæmi:
Dæmi um uppsetningu gagnagjafa fyrir Loka
Með því að smella á „Test“ geturðu prófað tenginguna við Loka.
Gerir beiðnir til Loka
Farðu nú til Grafana og farðu í „Kanna“ hlutann. Þegar hann tekur á móti annálum frá gámum bætir Loki við lýsigögnum frá Kubernetes. Þannig verður hægt að skoða annála tiltekins gáms.
Til dæmis, til að velja promtail gámaskrár, geturðu notað eftirfarandi fyrirspurn: {container_name = "promtail"}
.
Ekki gleyma að velja Loki gagnagjafa hér líka.
Þessi fyrirspurn mun skila gámavirkni sem hér segir:
Niðurstaða fyrirspurnar í Grafana
Bætir við mælaborðið
Frá og með Grafana 6.4 er hægt að setja log upplýsingar beint á mælaborðið. Eftir það mun notandinn fljótt geta skipt á milli fjölda beiðna á síðunni sinni yfir í umsóknarspor.
Hér að neðan er dæmi um mælaborð sem útfærir þessa samspilun:
Dæmi um mælaborð með Prometheus mælingum og Loki logs
Framtíð Loka
Ég byrjaði að nota Loki aftur í maí/júní með útgáfu 0.1. Útgáfa 1 hefur þegar verið gefin út í dag, og jafnvel 1.1 og 1.2.
Það verður að viðurkennast að útgáfa 0.1 var ekki nógu stöðug. En 0.3 sýndi þegar raunveruleg merki um þroska og næstu útgáfur (0.4, síðan 1.0) styrktu aðeins þessa tilfinningu.
Eftir 1.0.0 getur enginn haft afsökun fyrir því að nota ekki þetta frábæra tól.
Frekari endurbætur ættu ekki að snúast um Loka, heldur samþættingu hans við hið frábæra Grafana. Raunar hefur Grafana 6.4 nú þegar góða samþættingu við mælaborð.
Grafana 6.5, sem kom út nýlega, bætir þessa samþættingu enn frekar með því að þekkja sjálfkrafa innihald annála á JSON sniði.
Myndbandið hér að neðan sýnir lítið dæmi um þetta kerfi:
Notkun Loka strengja sem gerðir eru í Grafana
Það verður mögulegt að nota eitt af JSON-reitunum, til dæmis til að:
- tenglar á utanaðkomandi tól
- skrá efnissíun
Til dæmis geturðu smellt á traceId til að fara í Zipkin eða Jaeger.
Eins og venjulega, hlökkum við til athugasemda þinna og bjóðum þér
Heimild: www.habr.com