Noțiuni introductive cu Grafana Loki
Publicat: 2021-05-01Să învățăm elementele fundamentale ale Grafana Loki, un sistem de agregare a jurnalelor multi-locatari.
Într-un mediu de producție, timpul de nefuncționare este inacceptabil. Poate duce la o pierdere masivă a veniturilor și reputației afacerii. Dar dacă aveți un sistem adecvat de înregistrare și monitorizare, veți ști cum să depanați astfel de scenarii, care duc la timpi de nefuncționare.
Ajută la economisirea costurilor și la identificarea problemelor care ar putea apărea în viitor.
În zilele noastre, orice dimensiune a unei organizații folosește principiile și instrumentele DevOps. Containerele și Kubernetes sunt cele mai populare. Iar monitorizarea unui astfel de sistem se face foarte eficient cu Prometheus. Dar acolo unde Prometheus rămâne în urmă este partea de tăiere. Nu oferă un sistem centralizat de înregistrare și aici intervine Loki.
Ce este Grafana Loki?
Grafana Loki este un sistem de agregare a jurnalelor multi-locatari început de Grafana în 2018 și lansat sub licența Apache 2.0. Acest sistem a fost dezvoltat inspirându-se de la Prometeu. Este utilizat în principal cu furnizorii de cloud și cu instrumente precum Prometheus și Grafana.
Loki este similar cu stiva ELK/EFK, dar este mai ușor de configurat și de operat cu funcționalități mai bune. Loki nu indexează conținutul jurnalului, ci mai degrabă indexează marcaje temporale și un set de etichete pentru un flux de jurnal. Face indicele mai mic, ceea ce simplifică operațiunile și în cele din urmă scade costul.
Beneficiile Loki
Mai jos sunt beneficiile utilizării Loki în stiva dvs.:
- Prin indexarea doar a metadatelor, Loki este foarte rentabil. Rularea indicilor pentru procesarea textului complet necesită instanțe RAM mai mari, care sunt foarte costisitoare. Stocarea jurnalelor pe un magazin de obiecte precum S3 îl face, de asemenea, foarte ieftin.
- Acceptă multi-chiriașie prin utilizarea tenantID, astfel încât chiriașii își au datele stocate separat.
- Puteți rula Loki local pentru operațiuni la scară mică sau îl puteți scala cu ușurință pe orizontală pentru operațiuni la scară mare.
- Utilizează stilul dinamo pentru a asigura consistența cvorumului pentru operațiunile de citire și scriere.
- Este configurat implicit să aibă 3 replici ale jurnalelor pentru a face față riscului de blocare a procesului și de ieșiri bruște în cazul în care jurnalele se pierd. Da, ar implica unele cheltuieli suplimentare, dar nu atât de mare, integritatea datelor este mai critică.
- Ușor de conectat cu instrumente populare precum Kubernetes, Prometheus și vizualizare în Grafana.
Arhitectura Loki

Arhitectura Loki are trei componente – Promtail , Loki și Grafana .
Promtail este un agent care trebuie instalat pe fiecare nod care rulează aplicațiile sau serviciile dvs. Responsabilitatea principală a lui Promtail este să descopere ținta, să atașeze etichetele fluxurilor lo care vin de la pod-uri și să împingă acele jurnale către instanțele Loki. Agentul promtail urmărește jurnalele din sistemul de fișiere local și împinge jurnalele către serverul central al lui Loki. După aceasta, puteți interoga înapoi jurnalele folosind Grafana.
Cazuri de utilizare Loki
Mai jos sunt cazurile de utilizare populare pentru utilizarea unui sistem de înregistrare precum Loki.
- Business Intelligence: Acesta este un caz de utilizare veșnic verde, crearea de informații utile din datele din jurnal poate fi întotdeauna foarte utilă. Loki vă poate ajuta la înțelegerea datelor din jurnal și vă poate face capabil să creați noi strategii pentru creșterea afacerii. De exemplu, prin datele de jurnal ale unei organizații, vă poate ajuta să cunoașteți ratele de conversie dintr-un canal de publicitate.
- Monitorizare: Prometheus este folosit foarte mult în industrie pentru monitorizare. Dar puteți identifica o mulțime de lucruri monitorizându-vă jurnalele cu instrumente precum Loki. Vă poate ajuta să monitorizați ratele de eroare de pe site-ul dvs., parcurgând jurnalele și trimiteți alerte odată ce pragul este depășit.
- Depanare și depanare: Loki poate ajuta echipa DevOps cu câteva răspunsuri rapide, cum ar fi când s-a prăbușit aplicația, motivul blocării, ultima stare înainte de a se prăbuși etc.
- Securitate cibernetică: În ultimii câțiva ani, atacurile cibernetice asupra portalurilor de comerț electronic au crescut exponențial. Cu ajutorul Loki, puteți verifica jurnalele pentru a identifica orice amenințare sau problemă sau activitate rău intenționată care se întâmplă în sistemul organizației dvs. Dacă hack-ul a avut succes, Loki ar putea fi totuși de ajutor pentru echipa de criminalistică pentru a înțelege în detaliu ce a avut loc în sistem. Îi va ajuta să urmărească hackeri.
- Conformitate: Pentru a respecta reglementările industriei, organizațiile trebuie să-și păstreze jurnalele de audit timp de până la 7 ani. Autoritățile locale pot audita jurnalele oricând. Loki vă poate stoca jurnalele de audit în siguranță.
Instalarea Loki și Promtail
Să aflăm rapid cum să instalăm și să vizualizăm jurnalele pe Grafana. În această demonstrație, voi folosi configurația generică care va elimina jurnalele din /var/log/*log
Accesați pagina Lansări Loki, derulați în jos la Active, aici veți găsi mai multe pachete Loki și Promtail. Descărcați pachetul Loki în funcție de sistemul pe care îl utilizați. Nu descărcați pachete cli sau canary Loki. Descărc loki-linux-amd64.zip și promtail-linux-amd64.zip pentru sistemul meu Ubuntu.
După ce descărcarea se termină, extrageți fișierele Loki și Promtail și puneți-le într-un singur director.
[email protected]:~$ mkdir loki [email protected]:~$ mv loki-linux-amd64 promtail-linux-amd64 loki [email protected]:~$ cd loki/ [email protected]:~/loki$ ls loki-linux-amd64 promtail-linux-amd64Acum, descărcați fișierul de configurare generic pentru Loki și Promtail.
[email protected]:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml --2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1832 (1.8K) [text/plain] Saving to: 'loki-local-config.yaml' loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s 2021-04-30 12:00:51 (16.6 MB/s) - 'loki-local-config.yaml' saved [1832/1832] [email protected]:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml --2021-04-30 12:05:07-- https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml Resolving github.com (github.com)... 13.234.210.38 Connecting to github.com (github.com)|13.234.210.38|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'promtail-local-config.yaml' promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s in 0.002s 2021-04-30 12:05:08 (66.8 MB/s) - 'promtail-local-config.yaml' saved [111779] [email protected]:~/loki$ ls loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yamlPentru a porni Loki, rulați comanda de mai jos cu fișierul de configurare Loki. Aceasta va porni Loki și va afișa jurnalele Loki în terminal.

[email protected]:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses" level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode" level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory" level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables" level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"Pentru a porni Promtail, rulați comanda de mai jos cu fișierul de configurare Promtail. Promtail este necesar pentru a introduce jurnalele în Loki.
[email protected]:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses" level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}" level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}" ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}" level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"Vizualizați Log folosind Loki și Grafana
Grafana oferă suport încorporat pentru Loki. Loki este deja prezent în sursele de date ale Grafana.
Pasul 1: Accesați Configurații Grafana și faceți clic pe „Surse de date”.

Pasul 2: în Surse de date, puteți căuta sursa după nume sau tip.

Pasul 3: Căutați după numele Loki. Puteți vedea că această sursă de date este deja prezentă în Grafana. Faceți clic pe Selectați.

Pasul 4: Introduceți numele pe care doriți să-l dați sursei de date și introduceți http://localhost:3100 (schimbați-l la IP-ul serverului dacă Loki rulează pe un alt server decât Grafana) în adresa URL deoarece am pornit Loki pe port 3100.

Faceți clic pe butonul Testați și salvați din partea de jos. Dacă ați configurat corect Loki, veți primi mesajul de mai jos afișat într-o casetă verde.

Pasul 5: Faceți clic pe fila Explorare din partea stângă. Selectați Loki din meniul derulant al selecției sursei de date. Acum, aș dori să vizualizez activitatea buștenilor Grafana. Pentru a face acest lucru, trebuie să adăugați interogarea {filename="/var/log/grafana/grafana.log”} în Browserul de jurnal. Barele verzi de mai jos sunt intrări ale evenimentelor din fișierul jurnal.

Puteți selecta intervalul de timp pentru care doriți să apară vizualizarea pe tabloul de bord și puteți seta și intervalul de reîmprospătare al interogării, după care interogarea va rula din nou. Pentru a vedea mai multe detalii despre jurnal, derulați în jos și faceți clic pe una dintre intrările de jurnal, aceasta va oferi tot felul de informații legate de jurnal.

Arată frumos, nu-i așa?
Deci, asta a fost totul despre a începe. Vă sfătuiesc cu tărie să urmăriți în continuare videoclipul webinar de mai jos, care explică observabilitatea cu Loki.
Concluzie
Un sistem distribuit este compus din multe aplicații sau microservicii, fiecare având tone de jurnale. Veți avea nevoie de o modalitate rentabilă de a colecta buștenii, de a le depozita și apoi de a le folosi. Loki este o soluție perfectă pentru astfel de cazuri. De fapt, puteți reduce cu aproximativ 75% din costurile de înregistrare și monitorizare prin integrarea Loki în mediul dumneavoastră de producție.
Loki este disponibil și prin Grafana Cloud, ar fi bine să-l încercați dacă nu doriți să treceți prin procesul de instalare.
În continuare, cunoașteți Grafana Tempo.
