
Meie Badoo-s jĂ€lgime pidevalt uusimaid tehnoloogiaid ja hindame, kas neid tuleks meie sĂŒsteemis kasutada. Ăhe sellise uuringuga soovime jagada kogukonnaga. See on pĂŒhendatud Loki-le â logide koondamise sĂŒsteemile.
Loki on lahendus logide salvestamiseks ja vaatamiseks, samuti pakub see paindlikku sĂŒsteemi nende analĂŒĂŒsimiseks ja andmete eksportimiseks Prometheusesse. Mais ilmus uus vĂ€rskendus, mida loojad aktiivselt propageerivad. Meid huvitas, mida Loki suudab, milliseks vĂ”imalustega see pakub ja kuivĂ”rd see vĂ”ib olla alternatiiv ELK-ile â sellele tehnoloogiapakile, mida me praegu kasutame.
Mis on Loki?
Grafana Loki on komponentide kogum tĂ€isvÀÀrtuslikuks logidega töötamise sĂŒsteemiks. Erinevalt teistest sarnastest sĂŒsteemidest pĂ”hineb Loki ideel indekseerida ainult logide metaandmed â labels (nagu Prometheuses), samas kui logid ise pigistatakse alates eraldi chunkidesse.
,
Enne kui liigume edasi soovitud tegevuste kirjeldamise juurde Loki abil, tahaksin selgitada, mida mĂ”istetakse allpool âideena indekseerida ainult metaandmeidâ. VĂ”rdleme Loki lĂ€henemist traditsiooniliste lahenduste, nagu Elasticsearch, indekseerimise lĂ€henemisega, kasutades nĂ€itena nginx logi rida:
172.19.0.4 - - [01/Juun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"Traditsioonilised sĂŒsteemid parsivad rida tervikuna, sealhulgas vĂ€ljad, kus on palju unikaalseid vÀÀrtusi user_id ja item_id, ja salvestavad kĂ”ik suured indeksitesse. Selle lĂ€henemise eeliseks on see, et keerulisi pĂ€ringuid saab kiiresti teha, kuna peaaegu kĂ”ik andmed on indeksis. Kuid selle eest tuleb maksta sellega, et indeks kasvab suureks, mis toob kaasa mĂ€lu nĂ”udmised. LĂ”puks on logide tĂ€isteksti indeks vĂ”rreldav logide endaga. Kiireks otsimiseks peab indeks olema laaditud mĂ€llu. Ja mida rohkem logisid, seda kiiremini indeks suureneb ja seda rohkem mĂ€lu see tarbib.
Loki lĂ€henemine nĂ”uab, et stringist ekstraheeritaks ainult vajalikud andmed, mille vÀÀrtuste hulk on vĂ€ike. Nii saame vĂ€ikese indeksi ja saame andmeid otsida, filtreerides neid aja ja indekseerimise alusel ning seejĂ€rel skaneerides jĂ€relejÀÀnud regulaarsmĂ”istete vĂ”i alamstringside kaudu. Protsess vĂ”ib tunduda mitte kĂ”ige kiirem, kuid Loki jagab pĂ€ringu mitmeks osaks ja tĂ€idab need paralleelselt, töötledes lĂŒhikese aja jooksul suurt andmehulka. Sharide ja paralleelsete pĂ€ringute arv neis on konfigureeritav; seega sĂ”ltub aega, mille jooksul andmeid saab töödelda, otseselt pakutud ressurssidest.
See kompromiss suure kiire indeksi ja vĂ€ikese indeksi vahel, millel on paralleelne tĂ€ielik lĂ€bivaatamine, vĂ”imaldab Lokil kontrollida sĂŒsteemi kulusid. Seda saab paindlikult seadistada ja laiendada vastavalt vajadustele.
Loki piirkond koosneb kolmest komponendist: Promtail, Loki, Grafana. Promtail kogub logisid, töötleb neid ja saadab Loki. Loki salvestab need. Grafana suudab kĂŒsida andmeid Lokist ja neid kuvada. Ăldiselt saab Loki kasutada mitte ainult logide salvestamiseks ja nende otsimiseks. Kogu piirkond pakub suurt potentsiaali saabuvate andmete töötlemiseks ja analĂŒĂŒsimiseks, kasutades Prometheuse meetodit.
Installatsiooniprotsessi kirjeldust saab leida .
Logide otsimine
Logide otsimine on vĂ”imalik erilisel Grafana liidese â Explorer kaudu. PĂ€ringutes kasutatakse LogQL-i keelt, mis sarnaneb vĂ€ga PromQL-iga, mida kasutatakse Prometheuses. PĂ”himĂ”tteliselt saab seda kĂ€sitleda kui jaotatud grepâi.
Otsingu liides nÀeb vÀlja selline:

Igal pÀringul on kaks osa: selector ja filter. Selector on otsing indekseeritud metaandmete (siltide) alusel, mis on logidele mÀÀratud, ja filter on otsingurida vÔi regulaarne vÀljend, millega filtreeritakse need kirjed, mille mÀÀrab selektor. Antud nÀites: Kahe suure kaare sees on selektor, kÔik, mis jÀrgneb, on filter.
{image_name="nginx.promtail.test"} |= "index"Loki tööpĂ”himĂ”tte tĂ”ttu ei saa pĂ€ringuid teha ilma selektorita, kuid silte saab teha nii ĂŒldiseks kui soovite.
Selector on key-value vÀÀrtused suurte kaarte sees. Saate kombineerida valijaid ja seada erinevaid otsingu tingimusi, kasutades operaatorit =, != vÔi regulaarseid vÀljendeid:
{instance=~"kafka-[23]",name!="kafka-dev"}
// Leiab teadaolevate instance'ide logid, mis sisaldavad vÀÀrtusi kafka-2, kafka-3, ja vÀlistavad dev Filter on tekst vÔi regex, mis filtreerib kÔik andmed, mis on saadud valijatest.
On vĂ”imalik saada ad-hoc graafikuid saadud andmetest metrics reĆŸiimis. NĂ€iteks vĂ”ib teada saada, kui tihti ilmub nginx logides kirje, mis sisaldab stringi index:

TÀpse vÔimaluste kirjelduse leiate dokumentatsioonist .
Logide parsimine
Logide kogumiseks on mitu vÔimalust:
- Promtaili abil, mis on logide kogumise standardkomponent.
- Otseselt Docker konteinerist kasutades
- Kasutada Fluentd vÔi Fluent Bit, millel on vÔime saata andmeid Loki'sse. Erinevalt Promtailist on neil valmispakendatud parserid praktiliselt igasuguste logide jaoks ja nad saavad hakkama ka multiline logidega.
Tavaliselt kasutatakse parsimiseks Promtaili. See teeb kolme asja:
- Otsib andmeallikaid.
- Lisab neile labelid.
- Saab andmed Loki'sse.
Hetkel suudab Promtail lugeda logisid kohalikest failidest ja systemd journalist. See peab olema paigaldatud igasse masinasse, millest logisid kogutakse.
Kubernetes'e integreerimine: Promtail sai automaatselt Kubernetes REST API kaudu teavet klastri oleku kohta ja kogub logisid sÔlmedest, teenustest vÔi podidest, jaotades labelid metainfo pÔhjal Kubernetes'e andmetest (pod'i nimi, faili nimi jne).
Samuti on vĂ”imalik jaotada labelid logi andmete pĂ”hjal kasutades Pipeline'i. Promtail'i Pipeline vĂ”ib koosneda neljast tĂŒĂŒpi etapist. Ăksikasjalikumalt â , siin mainin mĂ”ned nĂŒansid.
- Parsimise etapid. See on RegEx ja JSON etapp. Sellel etapil ekstraktime andmed logidest nii nimetatud extracted map'i. Ekstraktimist on vĂ”imalik teha JSON'ist, kopeerides lihtsalt vajalikud vĂ€ljad extracted map'i, vĂ”i regulaaravaldite (RegEx) kaudu, kus extracted map'is âkaardistatakseâ nimetatud grupid. Extracted map on key-value salvestus, kus key on vĂ€lja nimi ja value on selle vÀÀrtus logidest.
- Transformatsiooni etapid. Sellel etapil on kaks vĂ”imalust: transform, kus mÀÀrame transformatsiooni reeglid, ja source â andmeallikas transformatsiooni jaoks extracted map'ist. Kui extracted map'is ei ole sellist vĂ€ljade, siis see luuakse. Seega on vĂ”imalik luua labelid, mis ei pĂ”hine extracted map'il. Selles etapis saame andmeid extracted map'is manipuleerida, kasutades piisavalt vĂ”imsat . Pealegi tuleb meeles pidada, et extracted map laaditakse tĂ€ielikult parsimise kĂ€igus, mis annab vĂ”imaluse nĂ€iteks vÀÀrtuse kontrollimiseks: â{{if .tag}tag value exists{end}}â. Mall toetab tingimusi, sildu ja mĂ”ningaid stringi funktsioone, nagu Replace ja Trim.
- Tegevuste etapid. Sel etapil saab midagi teha eraldatud andmetega:
- Loo silt extracted data'st, mida indekseeritakse Lokis.
- Muuda vĂ”i mÀÀra sĂŒndmuse aega logis.
- Muuda andmeid (logi sisu), mis saadetakse Lokisse.
- Loo mÔÔdikud.
- Filtreerimise etapid. Match etapp, kus saab kas saata /dev/null salvestusi, mida me ei vaja, vÔi suunata need edasiseks töötlemiseks.
NÀitan oma nÀo puhul, kuidas saab tavalisi nginx logisid Promtaili abil töödelda.
Katsetamiseks kasutame muutunud pilti nginx jwilder/nginx-proxy:alpine ja vĂ€ikest deemonit, mis oskab iseendalt HTTP kaudu kĂŒsida. Deemonil on mÀÀratud mitu lĂ”pp-punkti, mille kaudu ta saab vastata erineva suuruse, erinevate HTTP staatuste ja eri viivitustega.
Kogume logisid docker-konteineritest, mida leiame teelt /var/lib/docker/containers//-json.log
docker-compose.yml failis seadistame Promtaili ja mÀÀrame teed konfiguratsioonini:
promtail:
image: grafana/promtail:1.4.1
// ...
volumes:
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- promtail-data:/var/lib/promtail/positions
- ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
command:
- '-config.file=/etc/promtail/promtail.yml'
// ...
Lisame promtail.yml failis logide tee (konfiguratsioonis on valik "docker", mis teeb sama ĂŒhe rea kuid see ei oleks nii arusaadav):
scrape_configs:
- job_name: containers
static_configs:
labels:
job: containerlogs
__path__: /var/lib/docker/containers/*/*log # ainult Linuxi jaoksSelle konfiguratsiooni sisselĂŒlitamisel jĂ”uavad Loki'sse logid kĂ”ikidest konteineritest. Selle vĂ€ltimiseks muudame testimis-nginx seadeid docker-compose.yml failis â lisame logimise sildivĂ€lja:
proxy:
image: nginx.test.v3
//âŠ
logging:
driver: "json-file"
options:
tag: "{{.ImageName}}|{{.Name}}"Muudame promtail.yml ja seadistame Pipeline'i. Sisendiks on logid jÀrgmises vormis:
{"log":"u001b[0;33;1mnginx.1 | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] \"GET /api/index HTTP/1.1\" 200 0 \"-\" \"Stub_Bot/0.1\" \"0.096\"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1 | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] \"GET /200 HTTP/1.1\" 200 0 \"-\" \"Stub_Bot/0.1\" \"0.000\"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}Pipeline etapp:
- json:
expressions:
stream: stream
attrs: attrs
tag: attrs.tagEkstraktime sissetulevast JSON-st voodist stream, attrs, attrs.tag (kui need on olemas) ja paneme need eraldatud kaardile.
- regex:
expression: ^(?P([^|]+))|(?P([^|]+))$
source: "tag"Kui Ônnestub field tag eraldatud kaardile panna, kasutame regex'i, et eraldada pildi ja konteineri nimed.
- labels:
image_name:
container_name:MÀÀrame sildid. Kui eraldatud andmetes leitatakse vÔtmed image_name ja container_name, siis nende vÀÀrtused mÀÀratakse vastavatele siltidele.
- match:
selector: '{job="docker",container_name="",image_name=""}'
action: dropKustutame kÔik logid, millel ei ole leitud kehtivaid silte image_name ja container_name.
- match:
selector: '{image_name="nginx.promtail.test"}'
stages:
- json:
expressions:
row: logKÔikide logide puhul, mille image_name on nginx.promtail.test, ekstraktime algsest logist vÀlja vÀlja log ja paneme selle eraldatud kaardile vÔtmega row.
- regex:
# suppress forego colors
expression: .+nginx.+|.+[0m(?P[a-z_.-]+) +(?P.+)
source: logrowKohandame sisendstringi regulaaravaldistega ja ekstraktime nginx virtuaalse hosti ja nginx logirida.
- regex:
source: nginxlog
expression: ^(?P[w.]+) - (?P[^ ]*) [(?P[^ ]+).*] "(?P[^ ]*) (?P[^ ]*) (?P[^ ]*)" (?P[d]+) (?P[d]+) "(?P[^"]*)" "(?P[^"]*)"( "(?P[d.]+)")?Parsim nginx logi regulaaravaldistega.
- regex:
source: request_url
expression: ^.+.(?Pjpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
- regex:
source: request_url
expression: ^/photo/(?P[^/?.]+).*$
- regex:
source: request_url
expression: ^/api/(?P[^/?.]+).*$AnalĂŒĂŒsime request_url-i. Kasutades regex'i, mÀÀrame pĂ€ringu eesmĂ€rgi: staatika, fotod, API ja mÀÀrame eraldatud kaardile vastava vĂ”ti.
- template:
source: request_type
template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"Kasutades tingimuslikke operaatorid Template's, kontrollime eraldatud kaardi vĂ€ljad ja mÀÀrame vĂ€lja request_type vajalikud vÀÀrtused: photo, static, API. MÀÀrame other, kui ei Ă”nnestu. NĂŒĂŒd sisaldab request_type pĂ€ringu tĂŒĂŒpi.
- labels:
api_request:
virtual_host:
request_type:
status:MÀÀrame sildid api_request, virtual_host, request_type ja staatus (HTTP staatus) selle alusel, mis Ônnestus eraldatud kaardile panna.
- output:
source: nginx_log_rowMuudame vĂ€ljundit. NĂŒĂŒd saadetakse Loki'sse puhastatud nginx-logi eraldatud kaardilt.

PÀrast antud konfi kÀivitamist on nÀhtav, et igale kirjele on mÀÀratud sildid logist saadud andmete pÔhjal.
Oluline on meeles pidada, et suures koguses vÀÀrtustega (kardinaalsus) mÀrgiste vÀljavÔtmine vÔib oluliselt vÀhendada Loki tegevuse kiirus. Ehk teisisÔnu, ei tasu nÀiteks indekseerida user_id. Lisainfot selle kohta leiate artiklist "". Kuid see ei tÀhenda, et user_id peale indekseid ei saaks otsida. Otsingus tuleb kasutada filtreid (andmete "grepimine"), samas kui indeks toimib siinkohal voogude identifikaatorina.
Logide visualiseerimine

Loki saab olla andmeallikas Grafana diagrammide jaoks, kasutades LogQL. Toetatud funktsioonid on jÀrgmised:
- rate â kirjeid sekundis;
- count over time â kirjeid mÀÀratud ajavahemikus.
Lisaks on olemas agregatsioonifunktsioonid Sum, Avg ja teised. Saame luua suhteliselt keerulisi diagramme, nÀiteks HTTP-vea arvu diagrammi:

Standardsed andmeallikad Loki kohta on mĂ”nes mĂ”ttes piiratud vĂ”rreldes Prometheuse andmeallikaga (nĂ€iteks ei saa legendi muuta), kuid Loki saab ĂŒhendata Prometheuse tĂŒĂŒpi allikana. Ma ei ole kindel, kas see on dokumenteeritud kĂ€itumine, kuid arendajate vastuse pĂ”hjal "", on see tĂ€iesti seaduslik ning Loki on tĂ€ielikult ĂŒhilduv PromQL-iga.
Lisame Loki andmeallikana, mille tĂŒĂŒp on Prometheus ja tĂ€iendame URL-i /loki:

Ja saame luua diagramme nagu siis, kui töötaksime Prometheuse mÔÔtmistega:

Ma arvan, et funktsionaalsuse erinevused on ajutised ja arendajad parandavad seda tulevikus.

MÔÔtmised
Loki-s on saadaval vÔimalus numbriliste mÔÔtmiste vÀljavÔtmiseks logidest ja nende edastamiseks Prometheusesse. NÀiteks sisaldab nginx logis vastuse baitide arvu ning teatud variatsiooni isegi vastuseaja sekundeid. Need andmed saab vÀljavÔtta ja saata Prometheusesse.
Lisame promtail.yml faili veel ĂŒhe sektsiooni:
- match:
selector: '{request_type="api"}'
stages:
- metrics:
http_nginx_response_time:
type: Histogram
description: "vastuse aeg ms"
source: response_time
config:
buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
selector: '{request_type=~"static|photo"}'
stages:
- metrics:
http_nginx_response_bytes_sum:
type: Counter
description: "vastuse baitide summa"
source: bytes_out
config:
action: add
http_nginx_response_bytes_count:
type: Counter
description: "vastuse baitide arv"
source: bytes_out
config:
action: incValik vĂ”imaldab mÀÀrata ja uuendada mÔÔdikuid, mis pĂ”hinevad andmetel extracted map'ist. Need mÔÔdikud ei saadeta Lokisse â need ilmuvad Promtaili /metrics endpoint'is. Prometheusi tuleb konfigureerida nii, et see saaks anda andmeid, mis on saadud sellel etapil. Antud nĂ€ites kogume request_type=âapiâ puhul mÔÔdik-graafikuid. Sellega tĂŒĂŒbi mÔÔdikutega on mugav saada protsente. Statistika ja piltide jaoks kogume byte'ide summa ja ridade arvu, kus me byteâid saime, et arvutada keskmine vÀÀrtus.
Rohkem teavet mÔÔdikute kohta leiate siit .
Ava port Promtailis:
promtail:
image: grafana/promtail:1.4.1
container_name: monitoring.promtail
expose:
- 9080
ports:
- "9080:9080"Veendume, et mÔÔdikud, millel on eeskirja promtail_custom eel, on ilmnenud:

Seame ĂŒles Prometheusi. Lisame töö promtail:
- job_name: 'promtail'
scrape_interval: 10s
static_configs:
- targets: ['promtail:9080']Ja joonistame diagrammi:

Nii saab teada nĂ€iteks neli aeglasemat pĂ€ringut. Samuti saab nende mÔÔdikute jaoks seada ĂŒles jĂ€lgimise.
Mastaabis
Loki vĂ”ib olla kas ĂŒhebitine reĆŸiim (single binary mode) vĂ”i jaotatud (horizontally-scalable mode). Teises reas vĂ”ib ta salvestada andmeid pilve, samas, kui chunkid ja indeks hoitakse eraldi. Versioonis 1.5 on realiseeritud vĂ”imalus salvestada ĂŒhte kohta, kuid seda ei soovitata veel tootmises kasutada.

Chunk'e vĂ”ib salvestada S3-ĂŒhtse salvestusse, indeksite jaoks â kasutada horisontaalselt skaleeritavaid andmebaase: Cassandra, BigTable vĂ”i DynamoDB. Loki muud osad â Distributors (kirjutamiseks) ja Querier (pĂ€ringute jaoks) â on stateless ja samuti skaleeritavad horisontaalselt.
DevOpsDays Vancouver 2019 konverentsil ĂŒtles ĂŒks osaleja Callum Styan, et koos Lokiga on tema projekt saanud petabaite logisid, mille indeks on alla 1% kogusummast: ââ.
Loki ja ELK vÔrdlemine
Indeksi suurus
Saadud indeksisuuruse testimiseks vĂ”tsin logid nginx konteinerist, millele eelnevalt seati ĂŒles Pipeline. Logifail sisaldas 406 624 rida kogusummas 109 MB. Logisid genereeriti tunni jooksul, ligikaudu 100 kirje sekundis.
Kaks nÀidet logist:

ELK indekseerimise korral andis see indeksisuuruseks 30,3 MB:

Loki puhul oli see umbes 128 KB indeksit ja umbes 3,8 MB andmeid plokkides. Tasub mÀrkida, et logi oli kunstlikult genereeritud ja see ei erinenud suurest andmete mitmekesisusest. Lihtne gzip algse Dockeri JSON-logi andmetele andis 95,4% tihenduse, ja arvestades, et Loki'sse saadeti ainult puhastatud nginx-logi, on tihendamine 4 MB tasemele mÔistetav. Loki jaoks oli unikaalsete vÀÀrtuste koguhulk siltide osas 35, mis selgitab vÀikese indeksi suuruse. ELK-i logi puhastati samuti. Nii et Loki tihendas algandmeid 96% vÔrra, ELK aga 70% vÔrra.
MĂ€lu kasutamine

Kui vÔrrelda kogu Prometheuse ja ELK-i steeki, siis Loki 'tarbib' mitu korda vÀhem. On arusaadav, et Go-l pÔhinev teenus kasutab vÀhem ressursse kui Java-l pÔhinev teenus, ja JVM Heap Elasticsearch'i ja Loki eraldatud mÀlu suuruse vÔrdlemine ei ole korrektne, kuid tasub siiski mÀrkida, et Loki kasutab tÔeliselt vÀhem mÀlu. Tema eelis CPU osas ei ole nii ilmne, kuid on siiski olemas.
Kiirus
Loki 'neelab' logisid kiiremini. Kiirus sĂ”ltub paljuski erinevatest teguritest â millised on logid, kui keeruliselt me neid parsimme, vĂ”rk, kĂ”vaketas jne â kuid see on kindlasti kiirem kui ELK (minu testis umbes kaks korda). See tuleneb sellest, et Loki paneb indeksi palju vĂ€hem andmeid ja seega kulutab indekseerimisele vĂ€hem aega. Otsingu kiirus on aga vastupidine: Loki aeglustub mĂ€rkimisvÀÀrselt andmete puhul, mis ĂŒletavad mĂ”nda gigabaiti, ELK-i otsingukiirus ei sĂ”ltu aga andmete suurusest.
Logide otsimine
Loki jÀÀb oluliselt alla ELK-ile logide otsingu vĂ”imaluste poolest. Grep regulaarselt vĂ€ljendite tegemiseks on tugev tööriist, kuid see jÀÀb alla tĂ€ielikule andmebaasile. Vahemiku pĂ€ringute puudumine, agregatsioon ainult siltide alusel ja vĂ”imetus otsida ilma silte â kĂ”ik need piirangud takistavad meid otsimisel huvipakkuva teabe leidmisel Loki-s. See ei tĂ€henda, et Loki abil midagi ei saa leida, vaid mÀÀrab tööhĂ€da logidega, kus esmalt leid tĂ”rge Prometheuse graafikutelt ja seejĂ€rel nende siltide alusel otsitakse, mis logides juhtus.
Liides
Esiteks, see on ilus (vabandan, ei saanud ennast tagasi hoida). Grafana omab meeldivat liidest, kuid Kibana on palju funktsionaalsem.
Loki plussid ja miinused
Plusside on see, et Loki integreerub Prometheus'ega, seega saame mÔÔdikud ja hÀired kohe vÀlja. See on mugav logide kogumiseks ja nende salvestamiseks Kubernetes Podide juures, kuna see omab Prometheuselt pÀrit teenuste avastamise funktsiooni ja automaatselt lisab silte.
Miinustest - nĂ”rk dokumentatsioon. MĂ”ningaid asju, nĂ€iteks Promtaili omadusi ja vĂ”imalusi, avastasin alles koodi uurimise kĂ€igus, Ă”nneks on see avatud lĂ€htekoodiga. Veel ĂŒks miinus - nĂ”rgad parsimise vĂ”imalused. NĂ€iteks ei suuda Loki mitmerealisi logisid parseerida. Samuti on miinuseks see, et Loki on suhteliselt noor tehnoloogia (vabastamine 1.0 toimus novembris 2019).
KokkuvÔte
Loki on 100% huvitav tehnoloogia, mis sobib vĂ€ikestele ja keskmistele projektidele, vĂ”imaldades lahendada mitmeid logide agregatsiooni, nende otsingu, jĂ€lgimise ja analĂŒĂŒsi ĂŒlesandeid.
Me ei kasuta Loki-d Badoos, kuna meil on ELK-stack, mis meid rahuldab ja mis on aastate jooksul kogunud erinevaid kohandatud lahendusi. Meie jaoks on piduriks logide otsing. Peaaegu 100 GB logisid pÀevas on oluline, et suudaksime leida kÔik ja pisut rohkem ning teha seda kiiresti. Graafikute valmistamiseks ja jÀlgimiseks kasutame teisi lahendusi, mis on kohandatud meie vajadustele ja omavahel integreeritud. Loki stack'il on mÀrkimisvÀÀrsed eelised, kuid see ei paku meile rohkem kui meil juba olemas on, ja selle eelised ei kata migratsioonikulusid.
Ja kuigi uurimise jÀrel selgus, et me ei saa Loki-d kasutada, loodame, et see postitus aitab teid valiku tegemisel.
Artiklis kasutatud koodilehe hoidla asub .
Allikas: habr.com
