
Me Badoo's jĂ€lgime pidevalt uusi tehnoloogiaid ja hindame, kas nende kasutamine meie sĂŒsteemis on pĂ”hjendatud. Ăhe sellise uuringuga soovime jagada kogukonnaga. See on pĂŒhendatud Lokile â logide kogumise sĂŒsteemile.
Loki on lahendus logide salvestamiseks ja vaatamiseks, samuti pakub see paindlikku sĂŒsteemi logide analĂŒĂŒsimiseks ja andmete saatmiseks Prometheusesse. Mais ilmus jĂ€rgmine vĂ€rskendus, mida arendajad aktiivselt edendavad. Meid huvitas, mida Loki suudab, milliseid vĂ”imalusi see pakub ja kui hĂ€sti vĂ”ib see asendada ELK-i â tehnoloogiat, mida kasutame praegu.
Mis on Loki
Grafana Loki on komponentide kogum, mis moodustab tĂ€ieliku sĂŒsteemi logidega töötamiseks. Erinevalt teistest sarnastest sĂŒsteemidest pĂ”hinevad Lokis ideel indekseerida ainult logide metainformatsiooni â labels (nagu Prometheus), samas kui logid ise surutakse kokku eraldi chunk'idena.
,
Enne kui rÀÀgin Loki funktsioonidest, soovin selgitada, mida tÀhendab 'ainult metaandmete indekseerimise idee'. Vaatleme Loki lÀhenemist ja traditsioonilisi meetodeid nagu Elasticsearch, kasutades nÀitena nginx logirida:
172.19.0.4 - - [01/Juuni/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 suurtesse indeksitesse. Selle lĂ€henemise eeliseks on see, et keerulisi pĂ€ringuid saab kiiresti teostada, kuna peaaegu kĂ”ik andmed on indeksis. Kuid selle eest tuleb maksta: indeks muutub suureks, mis suurendab mĂ€lu nĂ”udmisi. LĂ”ppkokkuvĂ”ttes on logide tĂ€isteksti indeks vĂ”rreldav logide enda suurusega. Selleks, et kiiresti otsida, peab indeks olema mĂ€lus. Ja mida rohkem logisid on, seda kiiremini indeks suureneb ja seda rohkem mĂ€lu see vajab.
Loki lahendus nĂ”uab, et rea pĂ”hjal eraldataks ainult vajalikud andmed, mille vÀÀrtuste arv on vĂ€ike. Nii saame vĂ€ikese indeksi ja saame andmeid otsida, filtreerides neid aja ja indekseeritud vĂ€ljade jĂ€rgi ning skaneerides seejĂ€rel jÀÀkidest regulaaravaldiste vĂ”i alamstringide kaudu. Protsess ei tundu kĂ”ige kiirem, kuid Loki jagab pĂ€ringu mitmeks osaks ja tĂ€idab need paralleelselt, töötledes suurt hulka andmeid lĂŒhikese aja jooksul. Shardide ja nende paralleelsete pĂ€ringute arv on konfigureeritav; seega sĂ”ltub ajaĂŒhikus töödeldavate andmete hulk lineaarelt pakutud ressurssidest.
See kompromiss suure kiire indeksi ja vĂ€ikese indeksi vahel paralleelse tĂ€isotsimisega vĂ”imaldab Lokil hallata sĂŒsteemi kulusid. Seda saab paindlikult kohandada ja laiendada vastavalt vajadustele.
Loki-stek koosneb kolmest komponendist: Promtail, Loki ja Grafana. Promtail kogub logisid, töötleb neid ja saadab Loki-sse. Loki salvestab need. Grafana oskab kĂŒsida andmeid Loki-st ja neid kuvada. Ăldiselt saab Lokiât kasutada mitte ainult logide salvestamiseks ja nende jĂ€rgi otsimiseks. Kogu stek pakub suuri vĂ”imalusi saabuva info töötlemiseks ja analĂŒĂŒsimiseks, kasutades Prometheuse lĂ€henemist.
Installeerimise protsessi kirjeldus on saadaval .
Otsi logisid
Logides saab otsida spetsiaalses Grafana kasutajaliideses â Explorer. KĂŒsitavate andmete jaoks kasutatakse LogQL keelt, mis on vĂ€ga sarnane PromQL-ile, mida kasutatakse Prometheuses. PĂ”himĂ”tteliselt vĂ”ib seda vaadelda kui jaotatud grep'i.
Otsingu liides nÀeb vÀlja selline:

Iga pĂ€ring koosneb kahest osast: selector ja filter. Selector on otsimine indekseeritud metandmete (siltide) pĂ”hjal, mis on logidele omistatud, ja filter on otsingurea vĂ”i regulaarne vĂ€ljend, millega filtreeritakse sissekanded, mida mÀÀratleb selector. Antud nĂ€ites: Koorikute sises olev â selector, 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 selectorita, kuid silte saab teha nii ĂŒldiseks, kui soovite.
Selektor on key-value vÀÀrtused sulgudes. Saate kombinatsioonide abil luua selektoreid ja mÀÀrata erinevaid otsingu tingimusi, kasutades operaattoreid =, != vÔi regulaaravaldisi:
{instance=~"kafka-[23]",name!="kafka-dev"}
// Leiab logid, millel on instance'i silt, mille vÀÀrtuseks on kafka-2, kafka-3, ja vÀlistab dev Filter on tekst vÔi regulaaravaldis, mis filtreerib kÔik andmed, mis saadakse selektorist.
On vĂ”imalik saada ad-hoc- graafikuid saadud andmete kohta reĆŸiimis metrics. NĂ€iteks saab teada, kui sageli esineb nginx logides rida, mis sisaldab fraasi index:

Kogu vÔimaluste kirjeldus on saadaval dokumendis. .
Logide parsimine
Logide kogumiseks on mitu viisi:
- Kasutades Promtail'i, mis on standardne komponent logide kogumisel.
- Otseselt Docker-konteinerist, kasutades
- Kasutada Fluentd vÔi Fluent Bit, mis oskavad saata andmeid Loki. Erinevalt Promtail'ist on neil valmispakitud parsijad praktiliselt igasuguste logide jaoks ja nad suudavad hakkama saada ka multiline-logidega.
Tavaliselt kasutatakse parsimiseks Promtail'i. See teeb kolme asja:
- Leiab andmeallikad.
- Kinnitavad neile silte.
- Saadab andmed Loki.
Hetkel suudab Promtail lugeda logisid kohalikest failidest ja systemd journalist. See tuleb paigaldada igale masinale, millest logisid kogutakse.
Kubernetesega on olemas integreerimine: Promtail tuvastab automaatselt Kubernetes REST API kaudu klastriseisundi ja kogub logisid sÔlmelt, teenusest vÔi podist, riputades samal ajal sildid pÔhinedes Kubernetesest saadud metaandmetele (pod'i nimi, faili nimi jne).
Samuti saab silte riputada logiandmete pĂ”hjal Pipeline'i abil. Promtaili Pipeline vĂ”ib koosneda neljast tĂŒĂŒpi etappidest. Rohkem detaile â , mainin siin mĂ”ned nĂŒansid.
- Parsing stages. See on RegEx ja JSON etapp. Sellel etapil ekstraheerime andmed logidest nii nimetatud extracted map'i. Andmeid saab ekstraktida JSON-ist, kopeerides lihtsalt vajalikud vĂ€ljad extracted map'i, vĂ”i regulaarselt vĂ€ljendite (RegEx) kaudu, kus extracted map'is âmapitakseâ named groups. Extracted map on key-value salvestus, kus key on vĂ€lja nimi ja value on selle vÀÀrtus logidest.
- Transform stages. Sellel etapil on kaks valikut: transform, kus mÀÀrame transformatsiooni reeglid, ja source â andmeallikas transformatsiooniks extracted map'ist. Kui extracted map'is sellist vĂ€lja ei ole, siis see luuakse. Nii saab luua silte, mis ei pĂ”hine extracted map'il. Sellel etapil saame manipuleerida andmetega extracted map'is, kasutades piisavalt vĂ”imsat . Samuti tuleks meeles pidada, et extracted map laaditakse tĂ€ielikult parsimisel, mis vĂ”imaldab nĂ€iteks kontrollida vÀÀrtust: â{{if .tag}tag value exists{end}}â. Mall toetab tingimusi, tsĂŒkleid ja mĂ”ningaid stringi funktsioone, nagu Replace ja Trim.
- Action stages. Sellel etapil saab teha midagi vĂ€ljatrĂŒkkidega:
- Luua silt extracted data'st, mis indekseeritakse Loki.
- Muutke vĂ”i seadke logi sĂŒndmuse aeg.
- Muutke andmeid (logi tekst), mis saadetakse Loki.
- Looge mÔÔdikud.
- Filtering stages. Match etapp, kus saab kas suunata /dev/null-sse salvestusi, mida me ei vaja, vÔi suunata need edasisele töötlemisele.
NÀitan nÀite kaudu tavaliste nginx-logide töötlemise kohta, kuidas logisid Promtaili abil parssida.
Testimiseks kasutame nginx-proxy't, modifitseeritud dockeripilti nginx jwilder/nginx-proxy:alpine ja vĂ€ikest demonit, mis oskab endalt HTTP kaudu kĂŒsida. Demonil on seadistatud mitu lĂ”pp-punkti, millele ta vĂ”ib vastata erineva suuruse, erinevate HTTP staatuste ja erineva viivitusega.
Kogume logisid docker-konteineritest, mida saab leida teelt /var/lib/docker/containers//-json.log
docker-compose.yml failis seadistame Promtaili ja mÀÀrame tee konfigureerimise juurde:
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'sse tee logideni (konfiguratsioonis on olemas valik "docker", mis teeb sama ĂŒhe reaga, kuid see ei oleks nii selge):
scrape_configs:
- job_name: containers
static_configs:
labels:
job: containerlogs
__path__: /var/lib/docker/containers/*/*log # ainult linuxileKĂ€ivitades sellise konfiguratsiooni, satuvad Loki'sse logid kĂ”igist konteineritest. Selle vĂ€ltimiseks muudame testimise nginx seadeid docker-compose.yml â lisame logimise sildi vĂ€ljad:
proxy:
image: nginx.test.v3
//âŠ
logging:
driver: "json-file"
options:
tag: "{{.ImageName}}|{{.Name}}"Muudame promtail.yml ja seadistame Pipeline'i. Sisendiks on jÀrgmise vorminguga logid:
{"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'i etapp:
- json:
expressions:
stream: stream
attrs: attrs
tag: attrs.tagEkstraheerime tulenevatest JSON-vÀljadest stream, attrs, attrs.tag (kui need olemas) ja paneme need extracted map'i.
- regex:
expression: ^(?P([^|]+))|(?P([^|]+))$
source: "tag"Kui saime tag'i vÀlja panna extracted map'i, siis kasutame regex'i pildi ja konteineri nimede ekstraheerimiseks.
- labels:
image_name:
container_name:MÀÀrame sildid. Kui extracted data's leitakse vÔtmed image_name ja container_name, siis nende vÀÀrtused omistatakse vastavatele siltidele.
- match:
selector: '{job="docker",container_name="",image_name=""}'
action: dropKorraga viskame kÔik logid vÀlja, millel ei leidu mÀÀratud silte image_name ja container_name.
- match:
selector: '{image_name="nginx.promtail.test"}'
stages:
- json:
expressions:
row: logKÔigi logide puhul, kus image_name on nginx.promtail.test, ekstraktime algsest logist vÀlja vÀlja log ja paneme selle extracted kaardile vÔtmega row.
- regex:
# vÀlistame forego vÀrvid
expression: .+nginx.+|.+[0m(?P[a-z_.-]+) +(?P.+)
source: logrowPuhastame sisendi rea regulaaravaldistega ja ekstraheerime nginx virtuaalse hosti ja nginx logi rea.
- 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[^/?.]+).*$Uurime request_url-i. Regulaaravaldiste abil mÀÀrame pÀringu sihtkoha: staatilisele, fotodele, API-le ja salvestame extracted kaardile vastava vÔtme.
- template:
source: request_type
template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"Template'i tingimuste operaatorite abil kontrollime extracted map'is seadistatud vĂ€lju ja mÀÀrame request_type vĂ€ljale vajalikud vÀÀrtused: photo, static, API. MÀÀrame other, kui see ei Ă”nnestu. NĂŒĂŒd sisaldab request_type pĂ€ringu tĂŒĂŒpi.
- labels:
api_request:
virtual_host:
request_type:
status:Seame api_request, virtual_host, request_type ja staatuse (HTTP staatuse) vÀÀrtused vastavalt sellele, mis on Ônnestunud extracted map'i sisestada.
- output:
source: nginx_log_rowMuudame output'i. NĂŒĂŒd saadetakse Loki'sse puhastatud nginx-log extracted map'ist.

PÀrast antud konfiguratsiooni kÀivitamist vÔib nÀha, et igale kirjele on lisatud mÀrgid logi andmete pÔhjal.
Peab meeles pidama, et erinevate vÀÀrtustega (cardinality) mĂ€rkide ekstraheerimine vĂ”ib oluliselt aeglustada Loki toimimist. See tĂ€hendab, et nĂ€iteks user_id ei tohiks indeksisse panna. TĂ€iendavalt lugege sellest artiklist ââ. Kuid see ei tĂ€henda, et user_id pĂ”hjal ei saaks otsida ilma indeksiteta. Otsingul tuleks kasutada filtreid (andmete âgrepimiseâ kaudu), kusjuures indeks toimib identifikaatorina.
Logide visualiseerimine

Loki saab olla andmeallikaks Grafana diagrammidele, kasutades LogQL-i. Toetatud on jÀrgmised funktsioonid:
- rate â sĂŒndmuste arv sekundis;
- count over time â sĂŒndmuste arv mÀÀratud ajavahemikus.
Samuti on olemas agregatsioonifunktsioonid nagu Sum, Avg ja teised. Saame koostada piisavalt keerulisi diagramme, nÀiteks HTTP-veeremiste arvu diagrammi:

TavapĂ€rane andmeallikas Loki on funktsionaalsuses mĂ”nevĂ”rra piiratud vĂ”rreldes andmeallikaga Prometheus (nĂ€iteks ei saa muudada legendi), kuid Loki saab lisada allikana tĂŒĂŒbi Prometheus. Ma ei ole kindel, kas see on dokumenteeritud kĂ€itumine, aga arendajate vastuse pĂ”hjal ââ, nĂ€ib, et see on tĂ€iesti seaduslik ning Loki on tĂ€ielikult ĂŒhilduv PromQL-iga.
Lisame Loki andmeallikana tĂŒĂŒbi Prometheus ja tĂ€iendame URL-i /loki:

Ja saame koostada diagramme nagu siis, kui töötaksime Prometheus-i mÔÔdikute kallal:

Ma arvan, et funktsionaalsuse erinevus on ajutine ja arendajad parandavad selle tulevikus.

MÔÔdikud
Loki pakub vÔimalust ekstraktida numbrilisi mÔÔdikud logidest ja saata need Prometheusele. NÀiteks nginx logis sisaldub vastuse baitide arv ning teatud modifikatsiooniga standardformaadi logis ka aeg sekundites, mis kulus vastamiseks. Need andmed saab ekstraktida ja saata Prometheusele.
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 defineerida ja uuendada meetrikat, tuginedes extracted map andmetele. Need meetrikad ei saadeta Lokisse â need ilmuvad Promtaili /metrics lĂ”pp-punkti. Prometheus peab olema konfigureeritud nii, et saada andmeid, mis on saadud sellel etapil. Antud nĂ€ites, kui request_type= "api", kogume me histogrammi meetrikat. Sellise meetrikaga on mugav saada protsente. Staatika ja piltide jaoks kogume me byte'ide summa ja ridade arvu, kus me byte'e saime, et arvutada keskmine vÀÀrtus.
Rohkem teavet meetrikate kohta loe .
Avame pordi Promtailile:
promtail:
image: grafana/promtail:1.4.1
container_name: monitoring.promtail
expose:
- 9080
ports:
- "9080:9080"Veendume, et prefiksiga promtail_custom meetrikad on ilmunud:

Konfigureerime Prometheuse. Lisame promtaili töö:
- job_name: 'promtail'
scrape_interval: 10s
static_configs:
- targets: ['promtail:9080']Ja joonistame diagrammi:

Nii saab nÀiteks teada neli aeglastest pÀringut. Samuti saab nendele meetrikatele seadistada monitorimise.
Mastaapimine
Loki vĂ”ib töötada nii ĂŒksi (ĂŒksiku binaarsena) kui ka jagatuna (horisontaalselt skaleeritavana). Teises variandis vĂ”ib ta salvestada andmeid pilve, kusjuures plokid ja indeksid hoitakse eraldi. Versioonis 1.5 on vĂ”imalik salvestada ĂŒhte kohta, kuid seda ei soovitata veel tootmises kasutada.

Plokke saab salvestada S3 ĂŒhilduvatesse ladudesse, indeksite salvestamiseks on soovitatav kasutada horisontaalselt skaleeritavaid andmebaase nagu Cassandra, BigTable vĂ”i DynamoDB. Loki teised osad â Distributors (kirjutamiseks) ja Querier (pĂ€ringute jaoks) â on olekuta ja samuti skaleeritavad horisontaalselt.
Konverentsil DevOpsDays Vancouver 2019 tĂ”i ĂŒks osaleja Callum Styan vĂ€lja, et tema projekt on Loki abil kogunud petabaitide kaupa logisid, mille indeks on vĂ€hem kui 1% kogu suurusest: ââ.
Loki ja ELK vÔrdlus
Indeksi suurus
Indeksi saadud suuruse testimiseks vĂ”tsin logid Nginx konteinerist, mille jaoks seadistati ĂŒlaltoodud Pipeline. Logifail sisaldas 406 624 rida, kokku 109 MB. Logisid genereeriti tunni jooksul, umbes 100 kirjet sekundis.
NĂ€ide kahest reast logist:

ELK indekseerimise korral andis see indeksi suuruseks 30,3 MB:

Loki puhul oli see umbes 128 KB indeksit ja ligikaudu 3,8 MB andmeid plokkides. Tuleb mÀrkida, et logi oli kunstlikult genereeritud ning see ei erinenud suurest andmete mitmekesisusest. Lihtne gzip algse dockeri JSON-logi andmete peal andis 95,4% surumise, ja arvestades, et Loki sai ainult puhastatud nginx-logi, on 4 MB surumine mÔistetav. Loki mÀrgiste koguarv oli 35, mis selgitab vÀikest indeksi suurust. ELK logi oli samuti puhas. Seega surus Loki algandmed kokku 96% ja ELK 70%.
MĂ€lu tarbimine

Kui vĂ”rrelda kogu Prometheuse ja ELK steki, siis Loki âtarbibâ mitu korda vĂ€hem. On selge, et Go teenus tarbib vĂ€hem kui Java teenus, ja Elasticsearchi JVM Heap'i ja Loki eraldatud mĂ€lu suuruse vĂ”rdlemine pole korrektne, kuid siiski on mĂ€rkimisvÀÀrne, et Loki kasutab palju vĂ€hem mĂ€lu. Tema CPU eelis ei ole nii ilmselge, kuid see on samuti olemas.
Kiirus
Loki suudab logisid töötlemisel olla kiirem. Kiirus sĂ”ltub paljusid teguritest â nĂ€iteks logide tĂŒĂŒbist, meie töötlemise keerukusest, loogikast, diskist jne â aga see on kindlasti kĂ”rgem kui ELK-il (minu testides umbes kaks korda kiirem). Seda seletab asjaolu, et Loki salvestab indeksi vĂ€hem andmeid ja seega kulutab indekseerimisele vĂ€hem aega. Otsimise kiirus on seevastu vastupidine: Loki aeglustub mĂ€rgatavalt, kui andmed ĂŒletavad mitut gigabaiti, samas kui ELK-i otsimise kiirus ei sĂ”ltu andmete suurusest.
Otsi logisid
Loki on otsinguvĂ”imete osas ELK-le olulisel mÀÀral alla jÀÀnud. Grep regulaarsete vĂ€ljenditega on tĂ”hus, kuid jÀÀb alla tĂ€iskasvanud andmebaasile. Range-pĂ€ringute puudumine, aggregeerimine ainult siltide jĂ€rgi ja vĂ”imaluse puudumine otsida ilma siltideta â kĂ”ik need piiravad meid olulise teabe leidmisel Loki kaudu. See ei tĂ€henda, et Loki abil ei saa midagi leida, kuid see mÀÀratleb meie töövoo logidega, kus esmalt leiate probleemi Prometheuse graafikutelt ja seejĂ€rel otsite nende siltide pĂ”hjal logidest, mis juhtus.
Liides
Esiteks, see on ilus (vabandust, ma ei suutnud ennast tagasi hoida). Grafanal on silmale meeldiv liides, kuid Kibana on palju funktsionaalne.
Loki plussid ja miinused
Plusside seas vÔib mÀrkida, et Loki integreerub Prometheusega, seetÔttu saame mÔÔtmised ja hÀired valmis kujul. See on mugav logide kogumiseks ja salvestamiseks Kubernetes Podide juures, kuna tal on pÀrandina Prometheusest teenuse avastamine ja ta lisab automaatselt silte.
Miinusteks on nĂ”rk dokumentatsioon. MĂ”ningaid asju, nĂ€iteks Promtaili omadusi ja vĂ”imalusi, avastasin alles koodi uurimise kĂ€igus, Ă”nneks on see avatud koodiga. Veel ĂŒks miinus on nĂ”rgad tĂ”lgendamisvĂ”imalused. NĂ€iteks ei oska Loki tĂ”lgendada mitmerealisi logisid. Samuti vĂ”ib puudustena mĂ€rkida, et Loki on suhteliselt noor tehnoloogia (1.0 versioon ilmus novembris 2019).
KokkuvÔte
Loki on 100% huvitav tehnoloogia, mis sobib vĂ€ikestele ja keskmise suurusega projektidele, vĂ”imaldades lahendada mitmeid logide kogumise, logide otsimise, logide jĂ€lgimise ja analĂŒĂŒsi ĂŒlesandeid.
Me ei kasuta Loki't Badoo's, kuna meil on ELK-stack, mis vastab meie vajadustele ja on aastate jooksul saanud erinevate kohandatud lahenduste kogumiks. Meie jaoks on logide otsimine tĂ”eline vĂ€ljakutse. Peaaegu 100 GB loge pĂ€evas tĂ€hendab, et on oluline leida kĂ”ike ja veidi rohkem ning seda kiiresti. Graafikute koostamiseks ja jĂ€lgimiseks kasutame muid lahendusi, mis on kohandatud meie vajadustele ja omavahel integreeritud. Loki stack'il on omad plussid, kuid see ei paku meile rohkem, kui me juba omame, ning selle eelised ei kata ĂŒlemineku kulusid.
Ja kuigi uurimise kÀigus selgus, et me ei saa Loki't kasutada, loodame, et see postitus aitab teil valikut teha.
Artiklis kasutatud koodi hoidla asub .
Allikas: habr.com
