Agur, Khabrovskeko bizilagunak! Ikastarorako matrikula berri baten hasieraren bezperan
Artikulu hau Lokiren sarrera labur bat da. Loki proiektua
Lokiren inspirazio nagusia izan zen
- etiketak erabiliz datuak gordetzeko
- baliabide gutxiren kontsumoa
Prometheus-ek funtzionatzen duen modura itzuliko gara eta Kubernetes-en testuinguruan erabileraren adibide batzuk emango ditugu.
Prometeori buruzko hitz batzuk
Loki-k nola funtzionatzen duen ondo ulertzeko, garrantzitsua da pauso bat atzera egitea eta Prometheus-i buruz pixka bat gogoratzea.
Prometheus-en ezaugarri bereizgarrietako bat bilketa puntuetatik (esportatzaileen bidez) neurketak ateratzea eta TSDB (Time Series Data Base) biltegiratzea da, metadatuak etiketa moduan gehituta.
Zergatik da beharrezkoa
Duela gutxi, Prometheus de facto estandar bihurtu da edukiontzien eta Kubernetesen munduan: bere instalazioa oso erraza da, eta Kubernetes klusterrak Prometheus-en ama-puntu natibo batekin dator. Prometheus-ek edukiontzi batean inplementatutako aplikazioetatik neurketak ere atera ditzake etiketa zehatzak gordetzen dituen bitartean. Hori dela eta, aplikazioen jarraipena oso erraza da inplementatzen.
Zoritxarrez, oraindik ez dago erregistroen kudeaketarako giltza eskuan irtenbiderik, eta zuk zeuk aurkitu behar duzu irtenbide bat:
- erregistroak zentralizatzeko kudeatutako hodeiko zerbitzua (AWS, Azure edo Google)
- jarraipen-zerbitzua "monitorizazioa zerbitzu gisa" (adibidez, Datadog)
- zure erregistro-bilketa zerbitzua sortzea.
Hirugarren aukerarako, tradizionalki Elasticsearch erabiltzen nuen, beti ez nintzen pozik egon arren (batez ere bere astuntasuna eta konfigurazioaren konplexutasuna).
Loki inplementazioa errazteko diseinatu zen, printzipio hauen arabera:
- erraza izan hasteko
- baliabide gutxi kontsumitu
- modu independentean lan egin behar da mantentze berezirik gabe
- Prometheus-en gehigarri gisa balio du akatsen ikerketetan laguntzeko
Hala ere, sinpletasun hori zenbait konpromisoren kontura dator. Horietako bat edukia ez indexatzea da. Beraz, testu-bilaketa ez da oso eraginkorra edo aberatsa eta ez du onartzen testuaren edukiari buruzko estatistikak. Baina Lokik grep-en baliokidea eta Prometheus-en osagarria izan nahi duenez, hori ez da desabantaila.
Gorabeheren Ikerketa
Loki-k zergatik ez duen indexatu behar hobeto ulertzeko, itzul gaitezen Loki-ren garatzaileek erabili zuten gertakariak ikertzeko metodora:
1 Alerta → 2 Panela → 3 Adhoc Kontsulta → 4 Erregistroen agregazioa → 5 Banatutako jarraipena → 6 Konpondu!
(1 Abisu → 2 Arbel → 3 Adhoc Kontsulta → 4 Erregistroen agregazioa → 5 Banatutako jarraipena → 6 Konponketa!)
Ideia da nolabaiteko alerta bat jasotzea (Slack jakinarazpena, SMSa, etab.) eta ondoren:
- begiratu Grafana aginte-panelei
- begiratu zerbitzu-neurriak (adibidez, Prometheus-en)
- begiratu erregistroko sarrerak (adibidez, Elasticsearch-en)
- agian, begiratu banatutako arrastoei (Jaeger, Zipkin, etab.)
- eta, azkenik, jatorrizko arazoa konpontzea.
Hemen, Grafana + Prometheus + Elasticsearch + Zipkin pilaren kasuan, lau tresna ezberdin erabili beharko dituzu. Denbora murrizteko, ondo legoke urrats hauek guztiak tresna bakarra erabiliz egin ahal izatea: Grafana. Azpimarratzekoa da ikerketaren ikuspegi hau Grafanan inplementatu dela 6. bertsiotik. Horrela, Prometheus-en datuak zuzenean Grafanatik atzitzea posible bihurtzen da.
Explorer pantaila Prometheus eta Lokiren artean banatuta
Pantaila honetatik Prometheus-en neurketekin erlazionatutako Loki erregistroak ikus ditzakezu pantaila zatituaren kontzeptua erabiliz. 6.5 bertsioaz geroztik, Grafana-k Loki erregistroko sarreretan traza-id-a analizatzeko aukera ematen dizu, zure banatutako trazatze-tresn gogokoetarako estekak jarraitzeko (Jaeger).
Tokiko Loki proba
Loki lokalean probatzeko modurik errazena docker-compose erabiltzea da. Docker-compose fitxategia Loki biltegian dago. Biltegia lor dezakezu komando hau erabiliz git
:
$ git clone https://github.com/grafana/loki.git
Ondoren, produkzio direktoriora joan behar duzu:
$ cd production
Horren ondoren, Docker irudien azken bertsioa lor dezakezu:
$ docker-compose pull
Azkenik, Loki pila abiarazten da komando honekin:
$ docker-compose up
Loki arkitektura
Hona hemen Loki arkitekturaren diagrama txiki bat:
Loki Arkitektura Printzipioak
Web bezeroak zerbitzarian aplikazioak exekutatzen ditu, Promtail-ek erregistroak biltzen ditu eta Loki-ra bidaltzen ditu, web-bezeroak metadatuak Loki-ra ere bidaltzen ditu. Lokik dena batu eta Grafanari transmititzen dio.
Loki abian da. Eskuragarri dauden osagaiak ikusteko, exekutatu komando hau:
$ docker ps
Instalatutako Docker berri baten kasuan, komandoak emaitza hau itzuli beharko luke:
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
Osagai hauek ikusten ditugu:
- Promtail: erregistroak zentralizatzeaz arduratzen den agentea
- Grafana: aginte-tresna ospetsua
- Loki: Datuak zentralizatzeko deabrua
Azpiegitura klasiko baten zati gisa (adibidez, makina birtualetan oinarrituta), Promtail agentea makina bakoitzean zabaldu behar da. Grafana eta Loki makina berean instala daitezke.
Kubernetes-en hedapena
Loki osagaiak Kubernetesen instalatzea honako hau izango da:
- daemonSet Promtail agentea zerbitzari-klusterreko makina bakoitzean zabaltzeko
- Hedapena Loki
- eta azkena Grafanaren hedapena da.
Zorionez, Loki Helm pakete gisa dago eskuragarri, errazago zabaltzea.
Instalazioa Heml bidez
Dagoeneko Heml instalatuta izan beharko zenuke. Proiektuaren GitHub biltegitik deskargatu daiteke. Zure arkitekturari dagokion artxiboa deskonprimituz eta Helm gehituz instalatzen da $PATH
.
Oharra: Helm-en 3.0.0 bertsioa duela gutxi kaleratu zen. Aldaketa asko egon direnez, irakurleari pixka bat itxarotea gomendatzen zaio erabili aurretik..
Helm-erako iturri bat gehitzea
Lehenengo urratsa "loki" biltegia gehitzea da komando hau erabiliz:
$ helm add loki https://grafana.github.io/loki/charts
Horren ondoren, "loki" izeneko paketeak bilatu ditzakezu:
$ helm search loki
Emaitza:
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...
Pakete hauek ezaugarri hauek dituzte:
- pakete loki/loki Loki zerbitzariarekin bat dator soilik
- pakete loki/fluent-bit Fluent-bin erabiliz DaemonSet bat zabaltzeko aukera ematen dizu Promtail-en ordez erregistroak biltzeko
- pakete loki/promtail erregistro-fitxategiak biltzeko agente bat dauka
- pakete loki/loki-pila, Promtail-ekin Loki berehala zabaltzeko aukera ematen dizu.
Loki instalatzen
Loki Kubernetes-en zabaltzeko, exekutatu komando hau "monitorizazio" izen-eremuan:
$ helm upgrade --install loki loki/loki-stack --namespace monitoring
Diskoan gordetzeko, gehitu parametroa --set loki.persistence.enabled = true:
$ helm upgrade --install loki loki/loki-stack
--namespace monitoring
--set loki.persistence.enabled=true
Oharra: Grafana aldi berean zabaldu nahi baduzu, gehitu parametroa
--set grafana.enabled = true
Komando hau exekutatzen duzunean irteera hau lortu beharko zenuke:
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.
"Monitorizazio" izen-espazioko poden egoera ikusita, dena zabalduta dagoela ikus dezakegu:
$ kubectl -n monitoring get pods -l release=loki
Emaitza:
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
Pod guztiak martxan daude. Orain proba batzuk egiteko garaia da!
Grafanarekin konektatzen
Kubernetes-en Grafana-ra konektatzeko, tunel bat ireki behar duzu bere ontzira. Jarraian, Grafana pod-erako 3000 ataka irekitzeko komandoa dago:
$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80
Beste puntu garrantzitsu bat Grafana administratzailearen pasahitza berreskuratu beharra da. Pasahitza isilpean gordetzen da loki-grafana
eremuan .data.admin-user
base64 formatuan.
Berrezartzeko, komando hau exekutatu behar duzu:
$ kubectl -n monitoring get secret loki-grafana
--template '{{index .data "admin-password" | base64decode}}'; echo
Erabili pasahitz hau administratzaile-kontu lehenetsiarekin (admin) batera.
Loki datu-iturburu bat definitzea Grafanan
Lehenik eta behin, ziurtatu Loki datu-iturburua sortu dela (Konfigurazioa/Datu iturria).
Hemen duzu adibide bat:
Lokirako datu-iturburu bat konfiguratzeko adibidea
"Proba" sakatuz Lokirekin konexioa egiaztatu dezakezu.
Lokiri eskaerak eginez
Orain joan Grafana-ra "Arakatu" atalera. Edukiontzietako erregistroak jasotzean, Loki-k Kubernetes-en metadatuak gehitzen ditu. Horrela, edukiontzi jakin baten erregistroak ikustea posible egiten da.
Adibidez, promtail edukiontzien erregistroak hautatzeko, kontsulta hau erabil dezakezu: {container_name = "promtail"}
.
Hemen ere gogoratu Loki datu-iturburua hautatzea.
Kontsulta honek edukiontzien jarduera honela itzuliko du:
Kontsulta emaitza Grafanan
Gehitu panelean
Grafana 6.4-tik hasita, erregistro-informazioa zuzenean jar dezakezu aginte-panelean. Horren ondoren, erabiltzaileak azkar aldatzeko aukera izango du bere webguneko eskaera kopuruaren eta aplikazioen arrastoen artean.
Jarraian, elkarrekintza hau inplementatzen duen aginte-panel baten adibidea dago:
Aginte-panelaren adibidea Prometheus-en neurketekin eta Loki erregistroekin
Lokiren etorkizuna
Loki erabiltzen hasi nintzen maiatzean/ekainean 0.1 bertsioarekin. Gaur 1 bertsioa, eta baita 1.1 eta 1.2 ere dagoeneko kaleratu dira.
Onartu behar da 0.1 bertsioa ez zela nahikoa egonkorra. Baina 0.3-k jada heldutasun-seinaleak erakusten zituen, eta ondorengo bertsioek (0.4, gero 1.0) inpresio hori indartu besterik ez zuten egin.
1.0.0 ondoren, inork ezin du tresna zoragarri hau ez erabiltzeko aitzakiarik izan.
Hobekuntza gehiago ez dira Lokiri buruzkoak izan behar, Grafana bikainarekin duen integrazioa baizik. Izan ere, Grafana 6.4-k dagoeneko integrazio ona du aginte-panelekin.
Duela gutxi kaleratu zen Grafana 6.5-ek integrazio hori are gehiago hobetzen du, JSON formatuan erregistro-edukia automatikoki ezagutuz.
Beheko bideoak mekanismo honen adibide txiki bat erakusten du:
Grafanan agerian dauden Loki kateak erabiliz
JSON eremuetako bat erabiltzea posible da, adibidez:
- kanpoko tresnarako estekak
- erregistroaren edukia iragaztea
Adibidez, traceId-en klik egin dezakezu Zipkin edo Jaeger-era joateko.
Ohi bezala, zuen iruzkinak espero ditugu eta gonbidatzen zaituztegu
Iturria: www.habr.com