Salamu, wakazi wa Khabrovsk! Katika mkesha wa kuanza kwa uandikishaji mpya wa kozi hiyo
Makala haya ni utangulizi mfupi wa Loki. Mradi wa Loki
Msukumo mkuu kwa Loki ulikuwa
- kutumia lebo kuhifadhi data
- matumizi ya rasilimali chache
Tutarejea jinsi Prometheus hufanya kazi na kutoa baadhi ya mifano ya matumizi yake katika muktadha wa Kubernetes.
Maneno machache kuhusu Prometheus
Ili kuelewa kikamilifu jinsi Loki hufanya kazi, ni muhimu kuchukua hatua nyuma na kukumbuka kidogo kuhusu Prometheus.
Mojawapo ya vipengele bainifu vya Prometheus ni uchimbaji wa vipimo kutoka sehemu za kukusanya (kupitia wauzaji bidhaa nje) na kuzihifadhi katika TSDB (Time Series Data Base), pamoja na kuongezwa kwa metadata katika mfumo wa lebo.
Kwa nini ni muhimu
Hivi majuzi, Prometheus imekuwa kiwango cha ukweli katika ulimwengu wa vyombo na Kubernetes: usakinishaji wake ni rahisi sana, na nguzo ya Kubernetes inakuja na mwisho wa asili wa Prometheus. Prometheus pia inaweza kutoa metriki kutoka kwa programu zilizotumwa kwenye kontena huku ikihifadhi lebo mahususi. Kwa hiyo, ufuatiliaji wa maombi ni rahisi sana kutekeleza.
Kwa bahati mbaya, bado hakuna suluhisho la ufunguo wa usimamizi wa logi, na lazima utafute suluhisho mwenyewe:
- huduma ya wingu inayosimamiwa kwa kuweka kumbukumbu kati (AWS, Azure au Google)
- huduma ya ufuatiliaji "ufuatiliaji kama huduma" (kwa mfano, Datadog)
- kuunda huduma yako ya kukusanya kumbukumbu.
Kwa chaguo la tatu, kwa jadi nilitumia Elasticsearch, licha ya ukweli kwamba sikuwa na furaha kila wakati (haswa uzito wake na ugumu wa usanidi).
Loki iliundwa ili kurahisisha utekelezaji kulingana na kanuni zifuatazo:
- kuwa rahisi kuanza
- hutumia rasilimali chache
- kazi kwa kujitegemea bila matengenezo yoyote maalum
- kutumika kama nyongeza kwa Prometheus kusaidia na uchunguzi wa mdudu
Walakini, unyenyekevu huu unakuja kwa gharama ya maelewano kadhaa. Moja wapo sio kuorodhesha yaliyomo. Kwa hiyo, utafutaji wa maandishi sio ufanisi sana au tajiri na hairuhusu takwimu juu ya maudhui ya maandishi. Lakini kwa kuwa Loki anataka kuwa sawa na grep na inayosaidia Prometheus, hii sio hasara.
Uchunguzi wa Tukio
Ili kuelewa vyema kwa nini Loki haitaji kuorodhesha, hebu turudi kwenye mbinu ya uchunguzi wa matukio ambayo wasanidi wa Loki walitumia:
Tahadhari 1 β Dashibodi 2 β Hoja 3 ya Adhoc β 4 Ukusanyaji wa Kumbukumbu β 5 Ufuatiliaji Uliosambazwa β 6 Rekebisha!
(Onyo 1 β Dashibodi 2 β Hoja 3 ya Adhoc β Mkusanyiko wa Kumbukumbu 4 β Ufuatiliaji 5 Uliosambazwa β 6 Urekebishaji!)
Wazo ni kwamba tunapokea aina fulani ya tahadhari (Arifa ya Uvivu, SMS, n.k.) na baada ya hapo:
- angalia dashibodi za Grafana
- angalia vipimo vya huduma (kwa mfano, katika Prometheus)
- angalia maingizo ya kumbukumbu (kwa mfano, katika Elasticsearch)
- labda uangalie athari zilizosambazwa (Jaeger, Zipkin, nk.)
- na hatimaye kurekebisha tatizo la awali.
Hapa, katika kesi ya Grafana + Prometheus + Elasticsearch + Zipkin stack, utakuwa na kutumia zana nne tofauti. Ili kupunguza muda, itakuwa nzuri kuweza kufanya hatua hizi zote kwa kutumia zana moja: Grafana. Ni vyema kutambua kwamba mbinu hii ya utafiti imetekelezwa katika Grafana tangu toleo la 6. Kwa hivyo, inakuwa inawezekana kupata data ya Prometheus moja kwa moja kutoka Grafana.
Skrini ya Explorer iligawanyika kati ya Prometheus na Loki
Kutoka skrini hii unaweza kuona kumbukumbu za Loki zinazohusiana na metriki za Prometheus kwa kutumia dhana ya skrini iliyogawanyika. Tangu toleo la 6.5, Grafana hukuruhusu kuchanganua kitambulisho cha ufuatiliaji katika maingizo ya kumbukumbu ya Loki ili kufuata viungo vya zana unazopenda za ufuatiliaji zilizosambazwa (Jaeger).
Mtihani wa Loki wa ndani
Njia rahisi ya kujaribu Loki ndani ya nchi ni kutumia docker-compose. Faili ya kutunga docker iko kwenye hazina ya Loki. Unaweza kupata hazina kwa kutumia amri ifuatayo git
:
$ git clone https://github.com/grafana/loki.git
Kisha unahitaji kwenda kwenye saraka ya uzalishaji:
$ cd production
Baada ya hii unaweza kupata toleo la hivi karibuni la picha za Docker:
$ docker-compose pull
Mwishowe, safu ya Loki inazinduliwa na amri ifuatayo:
$ docker-compose up
Usanifu wa Loki
Hapa kuna mchoro mdogo na usanifu wa Loki:
Kanuni za Usanifu wa Loki
Mteja wa wavuti huendesha programu kwenye seva, Promtail hukusanya kumbukumbu na kuzituma kwa Loki, mteja wa wavuti pia hutuma metadata kwa Loki. Loki anajumlisha kila kitu na kukisambaza hadi Grafana.
Loki imezinduliwa. Ili kuona vipengele vinavyopatikana, endesha amri ifuatayo:
$ docker ps
Kwa upande wa Docker iliyosanikishwa upya, amri inapaswa kurudisha matokeo yafuatayo:
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
Tunaona viungo vifuatavyo:
- Promtail: wakala anayehusika na kuweka kumbukumbu kati
- Grafana: zana maarufu ya dashibodi
- Loki: Data Centralization Daemon
Kama sehemu ya muundo msingi (kwa mfano, kulingana na mashine pepe), wakala wa Promtail lazima atumiwe kwenye kila mashine. Grafana na Loki zinaweza kusanikishwa kwenye mashine moja.
Kupelekwa kwa Kubernetes
Kufunga vipengele vya Loki kwenye Kubernetes itakuwa kama ifuatavyo:
- daemonSet ya kupeleka wakala wa Promtail kwenye kila mashine kwenye kundi la seva.
- Usambazaji Loki
- na ya mwisho ni kupelekwa kwa Grafana.
Kwa bahati nzuri, Loki inapatikana kama kifurushi cha Helm, na kuifanya iwe rahisi kusambaza.
Ufungaji kupitia Heml
Unapaswa kuwa tayari Heml imewekwa. Inaweza kupakuliwa kutoka kwa hazina ya mradi wa GitHub. Imesakinishwa kwa kufungua kumbukumbu inayolingana na usanifu wako na kuongeza usukani $PATH
.
Kumbuka: toleo la 3.0.0 la Helm lilitolewa hivi karibuni. Kwa kuwa kumekuwa na mabadiliko mengi kwake, msomaji anashauriwa kusubiri kidogo kabla ya kuitumia..
Inaongeza chanzo cha Helm
Hatua ya kwanza ni kuongeza hazina ya "loki" kwa kutumia amri ifuatayo:
$ helm add loki https://grafana.github.io/loki/charts
Baada ya hayo, unaweza kutafuta vifurushi vinavyoitwa "loki":
$ helm search loki
Matokeo:
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...
Vifurushi hivi vina sifa zifuatazo:
- mfuko loki/loki inalingana na seva ya Loki pekee
- mfuko loki/fasaha-kidogo hukuruhusu kupeleka DaemonSet kwa kutumia bin fasaha kukusanya kumbukumbu badala ya Promtail
- mfuko loki/promtail ina wakala wa kukusanya faili za kumbukumbu
- mfuko loki/loki-stack, hukuruhusu kusambaza Loki pamoja na Promtail mara moja.
Inasakinisha Loki
Ili kupeleka Loki kwa Kubernetes, endesha amri ifuatayo katika nafasi ya majina ya "kufuatilia":
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Ili kuhifadhi kwenye diski, ongeza kigezo --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Kumbuka: ikiwa unataka kupeleka Grafana kwa wakati mmoja, kisha ongeza parameter
--set grafana.enabled = true
Unapoendesha amri hii unapaswa kupata pato lifuatalo:
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.
Kuangalia hali ya maganda kwenye nafasi ya majina ya "kufuatilia", tunaweza kuona kuwa kila kitu kimetumwa:
$ kubectl -n monitoring get pods -l release=loki
Matokeo:
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
Maganda yote yanaendesha. Sasa ni wakati wa kufanya majaribio kadhaa!
Inaunganishwa na Grafana
Ili kuunganisha kwa Grafana chini ya Kubernetes, unahitaji kufungua handaki kwenye ganda lake. Ifuatayo ni amri ya kufungua bandari 3000 kwa ganda la Grafana:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Jambo lingine muhimu ni hitaji la kurejesha nenosiri la msimamizi wa Grafana. Nenosiri linawekwa siri loki-grafana
shambani .data.admin-user
katika muundo wa base64.
Ili kuirejesha, unahitaji kuendesha amri ifuatayo:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Tumia nenosiri hili kwa kushirikiana na akaunti ya msimamizi chaguo-msingi (admin).
Kufafanua chanzo cha data cha Loki huko Grafana
Kwanza kabisa, hakikisha kwamba chanzo cha data cha Loki kimeundwa (Usanidi/Chanzo cha Data).
Hapa ni mfano:
Mfano wa kusanidi chanzo cha data kwa Loki
Kwa kubofya "Jaribio" unaweza kuangalia muunganisho na Loki.
Kufanya maombi kwa Loki
Sasa nenda kwa Grafana hadi sehemu ya "Gundua". Wakati wa kupokea kumbukumbu kutoka kwa vyombo, Loki huongeza metadata kutoka Kubernetes. Kwa hivyo, inawezekana kutazama magogo ya chombo maalum.
Kwa mfano, ili kuchagua kumbukumbu za kontena za promtail, unaweza kutumia hoja ifuatayo: {container_name = "promtail"}
.
Hapa pia kumbuka kuchagua chanzo cha data cha Loki.
Hoja hii itarudisha shughuli ya kontena kama ifuatavyo:
Matokeo ya swali katika Grafana
Ongeza kwenye dashibodi
Kuanzia na Grafana 6.4, unaweza kuweka maelezo ya kumbukumbu moja kwa moja kwenye dashibodi. Baada ya hayo, mtumiaji ataweza kubadili haraka kati ya idadi ya maombi kwenye tovuti yake na athari za maombi.
Ifuatayo ni mfano wa dashibodi inayotekelezea mwingiliano huu:
Sampuli ya dashibodi iliyo na vipimo vya Prometheus na kumbukumbu za Loki
Mustakabali wa Loki
Nilianza kutumia Loki nyuma mnamo Mei/Juni na toleo la 0.1. Leo toleo la 1, na hata 1.1 na 1.2 tayari zimetolewa.
Ni lazima ikubalike kuwa toleo la 0.1 halikuwa thabiti vya kutosha. Lakini 0.3 tayari ilionyesha dalili halisi za ukomavu, na matoleo yaliyofuata (0.4, kisha 1.0) yaliimarisha tu hisia hii.
Baada ya 1.0.0, hakuna mtu anayeweza kuwa na udhuru wa kutotumia zana hii nzuri.
Uboreshaji zaidi haupaswi kuwa juu ya Loki, lakini ujumuishaji wake na Grafana bora. Kwa kweli, Grafana 6.4 tayari ina ushirikiano mzuri na dashibodi.
Grafana 6.5, ambayo ilitolewa hivi majuzi, inaboresha zaidi muunganisho huu kwa kutambua kiotomatiki maudhui ya kumbukumbu katika umbizo la JSON.
Video hapa chini inaonyesha mfano mdogo wa utaratibu huu:
Kutumia kamba za Loki zilizofichuliwa huko Grafana
Inawezekana kutumia moja ya uwanja wa JSON, kwa mfano, kwa:
- viungo kwa zana ya nje
- kuchuja yaliyomo kwenye kumbukumbu
Kwa mfano, unaweza kubofya traceId kwenda Zipkin au Jaeger.
Kama kawaida, tunatarajia maoni yako na kukualika
Chanzo: mapenzi.com