
F'Badoo, aħna kontinwament nissorveljaw teknoloġiji ġodda u nevalwaw jekk humiex ta' min jużahom fis-sistema tagħna. Nixtiequ naqsmu wieħed minn dawn l-istudji mal-komunità. Hija ddedikata għal Loki, sistema ta' aggregazzjoni ta' zkuk.
Loki huwa soluzzjoni għall-ħażna u l-wiri taz-zkuk, u dan il-munzell jipprovdi wkoll sistema flessibbli biex jiġu analizzati u tibgħat id-dejta lil Prometheus. F'Mejju, ġie rilaxxat aġġornament ieħor, li huwa promoss b'mod attiv mill-ħallieqa. Konna interessati x'jista' jagħmel Loki, liema kapaċitajiet jipprovdi, u sa liema punt jista' jaġixxi bħala alternattiva għal ELK, il-munzell li nużaw issa.
X'inhu Loki
Grafana Loki huwa sett ta 'komponenti għal sistema kompluta ta' ħidma biż-zkuk. B'differenza minn sistemi oħra simili, Loki huwa bbażat fuq l-idea li jiġu indiċjati biss metadata ta 'log - tikketti (l-istess bħal fil-Prometheus), u tikkompressa z-zkuk infushom f'biċċiet separati.
,
Qabel ma nidħlu f'dak li tista 'tagħmel ma' Loki, irrid niċċara x'nifhmu b' "l-idea li tiġi indiċjata biss metadejta." Ejja nqabblu l-approċċ Loki u l-approċċ għall-indiċjar f'soluzzjonijiet tradizzjonali bħal Elasticsearch, billi tuża l-eżempju ta 'linja mil-log nginx:
172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"Is-sistemi tradizzjonali jeżaminaw ir-ringiela kollha, inklużi oqsma b'numru kbir ta 'valuri uniċi user_id u item_id, u jaħżnu kollox f'indiċi kbar. Il-vantaġġ ta 'dan l-approċċ huwa li tista' tmexxi mistoqsijiet kumplessi malajr, peress li kważi d-dejta kollha tinsab fl-indiċi. Iżda dan jiġi bi spiża li l-indiċi jsir kbir, li jissarraf f'rekwiżiti ta 'memorja. Bħala riżultat, l-indiċi tal-ġurnal tat-test sħiħ huwa komparabbli fid-daqs maż-zkuk infushom. Sabiex tfittex malajr permezz tiegħu, l-indiċi għandu jitgħabba fil-memorja. U iktar ma jkun hemm zkuk, aktar ma jikber malajr l-indiċi u aktar ma jikkonsma memorja.
L-approċċ Loki jeħtieġ li d-dejta meħtieġa biss tiġi estratta minn string, li n-numru ta 'valuri tagħha huwa żgħir. B'dan il-mod niksbu indiċi żgħir u nistgħu nfittxu d-dejta billi niffiltrawha skont il-ħin u b'oqsma indiċjati, u mbagħad niskennjaw il-bqija b'espressjonijiet regolari jew tfittxija substring. Il-proċess ma jidhirx li huwa l-aktar mgħaġġel, iżda Loki jaqsam it-talba f'diversi partijiet u tesegwixxihom b'mod parallel, u jipproċessa ammont kbir ta 'dejta fi żmien qasir. In-numru ta 'shards u talbiet paralleli fihom huwa konfigurabbli; għalhekk, l-ammont ta' data li jista' jiġi pproċessat għal kull unità ta' żmien jiddependi b'mod lineari fuq l-ammont ta' riżorsi pprovduti.
Dan il-kompromess bejn indiċi kbir u veloċi u indiċi ta' forza bruta żgħira parallela jippermetti lil Loki jikkontrolla l-ispiża tas-sistema. Jista 'jiġi kkonfigurat u estiża b'mod flessibbli skont il-ħtiġijiet.
Il-munzell Loki jikkonsisti fi tliet komponenti: Promtail, Loki, Grafana. Promtail jiġbor zkuk, jipproċessahom u jibgħathom lil Loki. Loki jżommhom. U Grafana jista 'jitlob dejta mingħand Loki u juriha. B'mod ġenerali, Loki jista 'jintuża mhux biss għall-ħażna ta' zkuk u tiftix minnhom. Il-munzell kollu jipprovdi opportunitajiet kbar għall-ipproċessar u l-analiżi tad-dejta li tidħol bl-użu tal-mod Prometheus.
Tista 'tinstab deskrizzjoni tal-proċess ta' installazzjoni .
Fittex minn zkuk
Tista' tfittex ir-zkuk f'interface ta' Grafana speċjali - Explorer. Il-mistoqsijiet jużaw il-lingwa LogQL, li hija simili ħafna għall-PromQL użata fi Prometheus. Fil-prinċipju, jista 'jitqies bħala grep distribwit.
L-interface tat-tfittxija tidher bħal din:

It-talba nnifisha tikkonsisti f'żewġ partijiet: selettur u filtru. Selettur huwa tfittxija li juża metadejta indiċjata (tikketti) li huma assenjati għal zkuk, u filtru huwa string ta 'tfittxija jew regexp li jiffiltra r-rekords definiti mis-selettur. Fl-eżempju mogħti: Fi ċineg kaboċċi hemm selettur, kollox wara huwa filtru.
{image_name="nginx.promtail.test"} |= "index"Minħabba l-mod kif jaħdem Loki, ma tistax tagħmel mistoqsijiet mingħajr selettur, iżda t-tikketti jistgħu jsiru ġenerali kif tixtieq.
Selettur huwa valur ta' valur ewlieni f'ċingi kaboċċi. Tista' tgħaqqad is-seletturi u tispeċifika kundizzjonijiet ta' tfittxija differenti billi tuża l-operaturi =, != jew espressjonijiet regolari:
{instance=~"kafka-[23]",name!="kafka-dev"}
// Найдёт логи с лейблом instance, имеющие значение kafka-2, kafka-3, и исключит dev Filtru huwa test jew regexp li jiffiltra d-dejta kollha riċevuta mis-selettur.
Huwa possibbli li jinkisbu graffs ad hoc ibbażati fuq id-dejta riċevuta fil-modalità metrika. Pereżempju, tista 'ssir taf kemm-il darba entrata li fiha l-indiċi tal-istring tidher fil-logs nginx:

Deskrizzjoni sħiħa tal-kapaċitajiet tista 'tinstab fid-dokumentazzjoni .
Log parsing
Hemm diversi modi kif tiġbor zkuk:
- Bl-użu ta 'Promtail, komponent standard tal-munzell għall-ġbir taz-zkuk.
- Direttament mill-kontenitur docker bl-użu
- Uża Fluentd jew Fluent Bit, li tista 'tibgħat data lil Loki. B'differenza minn Promtail, għandhom parsers lesti għal kważi kull tip ta 'log u jistgħu wkoll jimmaniġġjaw zkuk b'ħafna linji.
Normalment Promtail jintuża għall-parsing. Jagħmel tliet affarijiet:
- Isib sorsi tad-dejta.
- Waħħal it-tikketti magħhom.
- Jibgħat data lil Loki.
Bħalissa Promtail jista' jaqra zkuk minn fajls lokali u minn systemd journal. Għandu jiġi installat fuq kull magna li minnha jinġabru zkuk.
Hemm integrazzjoni ma 'Kubernetes: Promtail awtomatikament, permezz tal-Kubernetes REST API, jirrikonoxxi l-istat tal-cluster u jiġbor zkuk minn node, servizz jew pod, immedjatament tpoġġi tikketti bbażati fuq metadata minn Kubernetes (isem tal-pod, isem tal-fajl, eċċ.) .
Tista' wkoll hang tikketti bbażati fuq dejta mir-reġistru billi tuża Pipeline. Pipeline Promtail jista 'jikkonsisti f'erba' tipi ta 'stadji. Aktar dettalji fi , Immedjatament ninnota xi sfumaturi.
- Stadji ta' parsing. Dan huwa l-istadju RegEx u JSON. F'dan l-istadju, aħna estratt dejta miz-zkuk fl-hekk imsejħa mappa estratta. Nistgħu niġbdu minn JSON billi sempliċement nikkupjaw l-oqsma li neħtieġu fil-mappa estratta, jew permezz ta 'espressjonijiet regolari (RegEx), fejn il-gruppi msemmija huma "mappjati" fil-mappa estratta. Il-mappa Estratt hija maħżen tal-valur ewlieni, fejn iċ-ċavetta hija l-isem tal-qasam, u l-valur huwa l-valur tagħha miċ-zkuk.
- Ittrasforma l-istadji. Dan l-istadju għandu żewġ għażliet: trasformazzjoni, fejn nissettjaw ir-regoli tat-trasformazzjoni, u sors - is-sors tad-dejta għat-trasformazzjoni mill-mappa estratta. Jekk ma jkunx hemm qasam bħal dan fil-mappa estratta, se tinħoloq. Dan il-mod huwa possibbli li jinħolqu tikketti li mhumiex ibbażati fuq il-mappa estratta. F'dan l-istadju nistgħu jimmanipulaw id-data fil-mappa estratta bl-użu ta 'pjuttost qawwija . Barra minn hekk, irridu niftakru li l-mappa estratta hija mgħobbija għal kollox waqt l-analiżi, li jagħmilha possibbli, pereżempju, li jiġi ċċekkjat il-valur fiha: "{{jekk .tag}jeżisti valur tat-tikketta{end}}". Template jappoġġja kundizzjonijiet, loops, u xi funzjonijiet string bħal Ibdel u Ittrimmja.
- Stadji ta' azzjoni. F'dan il-punt tista 'tagħmel xi ħaġa bil-kontenut estratt:
- Oħloq tikketta mid-dejta estratta, li tkun indiċjata minn Loki.
- Ibdel jew issettja l-ħin tal-avveniment mill-ġurnal.
- Ibdel id-dejta (test tal-log) li se tmur għal Loki.
- Oħloq metriċi.
- Stadji ta 'filtrazzjoni. L-istadju tal-partita, fejn nistgħu jew nibagħtu entrati li m'għandniex bżonn /dev/null jew nibgħatuhom għal aktar proċessar.
Bl-użu ta 'eżempju ta' pproċessar ta 'zkuk nginx regolari, ser nuri kif tista' tparsa zkuk billi tuża Promtail.
Għat-test, ejja nieħdu bħala nginx-proxy immaġini nginx modifikata jwilder/nginx-proxy:alpine u daemon żgħir li jista' jistaqsi lilu nnifsu permezz ta' HTTP. Id-daemon għandu diversi endpoints, li għalihom jista 'jipprovdi tweġibiet ta' daqsijiet differenti, bi status HTTP differenti u b'dewmien differenti.
Aħna se niġbru zkuk minn kontenituri docker, li jistgħu jinstabu tul il-mogħdija /var/lib/docker/containers/ / -json.log
F'docker-compose.yml aħna nikkonfiguraw Promtail u nispeċifikaw il-mogħdija għall-konfigurazzjoni:
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'
// ...
Żid il-mogħdija għar-zkuk għal promtail.yml (hemm għażla "docker" fil-konfigurazzjoni, li tagħmel l-istess ħaġa f'linja waħda, iżda ma tkunx daqshekk ċara):
scrape_configs:
- job_name: containers
static_configs:
labels:
job: containerlogs
__path__: /var/lib/docker/containers/*/*log # for linux onlyMeta din il-konfigurazzjoni tkun attivata, zkuk mill-kontenituri kollha jintbagħtu lil Loki. Biex nevitaw dan, aħna nibdlu s-settings tat-test nginx f'docker-compose.yml - żid qasam tat-tikketta tal-illoggjar:
proxy:
image: nginx.test.v3
//…
logging:
driver: "json-file"
options:
tag: "{{.ImageName}}|{{.Name}}"Editjar promtail.yml u twaqqaf Pipeline. L-input jinkludi zkuk tat-tip li ġej:
{"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"}Stadju tal-pipeline:
- json:
expressions:
stream: stream
attrs: attrs
tag: attrs.tagAħna estratt l-oqsma stream, attrs, attrs.tag (jekk jeżistu) mill-JSON deħlin u poġġihom fil-mappa estratta.
- regex:
expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
source: "tag"Jekk irnexxielna npoġġu l-qasam tat-tikketta fil-mappa estratta, allura bl-użu tar-reġexp aħna estratt l-ismijiet tal-immaġni u l-kontenitur.
- labels:
image_name:
container_name:Aħna jassenjaw tikketti. Jekk iċ-ċwievet image_name u container_name jinstabu fid-dejta estratta, allura l-valuri tagħhom jiġu assenjati lit-tikketti korrispondenti.
- match:
selector: '{job="docker",container_name="",image_name=""}'
action: dropNermu z-zkuk kollha li m'għandhomx it-tikketti installati isem_immaġni u isem_kontenitur.
- match:
selector: '{image_name="nginx.promtail.test"}'
stages:
- json:
expressions:
row: logGħaż-zkuk kollha li image_name tagħhom huwa nginx.promtail.test, iġbed il-qasam tar-reġistru mir-reġistru tas-sors u poġġih fil-mappa estratta biċ-ċavetta tal-filliera.
- regex:
# suppress forego colors
expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
source: logrowAħna niċċaraw il-linja tal-input b'espressjonijiet regolari u iġbed il-host virtwali nginx u l-linja log nginx.
- regex:
source: nginxlog
expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?Parse nginx log billi tuża espressjonijiet regolari.
- regex:
source: request_url
expression: ^.+.(?P<static_type>jpg|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<photo>[^/?.]+).*$
- regex:
source: request_url
expression: ^/api/(?P<api_request>[^/?.]+).*$Ejja parse request_url. Bl-użu regexp aħna niddeterminaw l-iskop tat-talba: għal data statika, għal ritratti, għal API u ssettja ċ-ċavetta korrispondenti fil-mappa estratta.
- template:
source: request_type
template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"Billi nużaw operaturi kondizzjonali f'Mudell, aħna niċċekkjaw l-oqsma installati fil-mappa estratta u nissettjaw il-valuri meħtieġa għall-qasam request_type: photo, static, API. Assenja ieħor jekk jonqos. request_type issa fih it-tip ta' talba.
- labels:
api_request:
virtual_host:
request_type:
status:Aħna waqqafna t-tikketti api_request, virtual_host, request_type u status (HTTP status) ibbażati fuq dak li rnexxielna npoġġu fil-mappa estratta.
- output:
source: nginx_log_rowBidla l-output. Issa l-log nginx imnaddaf mill-mappa estratta jmur għand Loki.

Wara li tħaddem il-konfigurazzjoni ta 'hawn fuq, tista' tara li kull entrata hija assenjata tikketti bbażati fuq dejta mir-reġistru.
Ħaġa waħda li wieħed iżomm f'moħħu huwa li l-irkupru ta 'tikketti b'numru kbir ta' valuri (kardinalità) jista 'jnaqqas b'mod sinifikanti Loki. Jiġifieri, m'għandekx tpoġġi, pereżempju, user_id fl-indiċi. Aqra aktar dwar dan fl-artiklu "" Iżda dan ma jfissirx li ma tistax tfittex minn user_id mingħajr indiċi. Ikollok bżonn tuża filtri meta tfittex (“qabbad” id-dejta), u l-indiċi hawn jaġixxi bħala identifikatur tal-fluss.
Viżwalizzazzjoni ta 'zkuk

Loki jista' jaġixxi bħala sors ta' dejta għal graffs Grafana bl-użu ta' LogQL. Il-karatteristiċi li ġejjin huma appoġġjati:
- rata — numru ta' rekords kull sekonda;
- għadd matul iż-żmien — in-numru ta’ rekords fil-medda speċifikata.
Hemm ukoll funzjonijiet ta 'aggregazzjoni Somma, Medja u oħrajn. Tista 'tibni graffs pjuttost kumplessi, pereżempju graff tan-numru ta' żbalji HTTP:

Is-sors tad-dejta standard Loki huwa kemmxejn imnaqqas fil-funzjonalità meta mqabbel mas-sors tad-dejta Prometheus (per eżempju, ma tistax tbiddel il-leġġenda), iżda Loki jista 'jkun konness bħala sors mat-tip Prometheus. M'inix ċert jekk din hijiex imġieba dokumentata, imma niġġudikaw mir-rispons tal-iżviluppaturi "”, pereżempju, huwa kompletament legali, u Loki huwa kompletament kompatibbli ma 'PromQL.
Żid Loki bħala sors tad-dejta bit-tip Prometheus u żid URL /loki:

U nistgħu nagħmlu graffs, bħallikieku qed naħdmu b'metriċi minn Prometheus:

Naħseb li d-diskrepanza fil-funzjonalità hija temporanja u l-iżviluppaturi se jikkoreġu dan fil-futur.

Metriċi
Loki jipprovdi l-abbiltà li jiġbed metriċi numeriċi minn zkuk u jibgħathom lil Prometheus. Pereżempju, il-log nginx fih in-numru ta 'bytes għal kull tweġiba, kif ukoll, b'ċerta modifika tal-format standard tal-log, il-ħin f'sekondi li ħadet biex tirrispondi. Din id-dejta tista’ tiġi estratta u mibgħuta lil Prometheus.
Żid taqsima oħra ma' promtail.yml:
- match:
selector: '{request_type="api"}'
stages:
- metrics:
http_nginx_response_time:
type: Histogram
description: "response time 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: "response bytes sum"
source: bytes_out
config:
action: add
http_nginx_response_bytes_count:
type: Counter
description: "response bytes count"
source: bytes_out
config:
action: incL-għażla tippermettilek tiddefinixxi u taġġorna metriċi bbażati fuq data mill-mappa estratta. Dawn il-metriċi ma jintbagħtux lil Loki - jidhru fl-endpoint Promtail/metrics. Prometheus għandu jiġi kkonfigurat biex jirċievi d-dejta riċevuta f'dan l-istadju. Fl-eżempju ta 'hawn fuq, għal request_type = "api" aħna niġbru metrika tal-istogramma. B'dan it-tip ta 'metriċi huwa konvenjenti li jinkisbu perċentili. Għal statiċi u ritratti, aħna niġbru s-somma ta 'bytes u n-numru ta' ringieli li fihom irċevejna bytes biex nikkalkulaw il-medja.
Aqra aktar dwar il-metriċi .
Iftaħ il-port fuq Promtail:
promtail:
image: grafana/promtail:1.4.1
container_name: monitoring.promtail
expose:
- 9080
ports:
- "9080:9080"Kun żgur li l-metriċi bil-prefiss promtail_custom jidhru:

It-twaqqif ta’ Prometheus. Żid promtail tax-xogħol:
- job_name: 'promtail'
scrape_interval: 10s
static_configs:
- targets: ['promtail:9080']U nfasslu graff:

B'dan il-mod tista 'ssir taf, pereżempju, l-erba' mistoqsijiet l-aktar bil-mod. Tista 'wkoll twaqqaf monitoraġġ għal dawn il-metriċi.
Skalar
Loki jista 'jkun jew f'modalità binarja waħda jew f'modalità sharded (modalità li tista' tiġi skalata orizzontalment). Fit-tieni każ, tista 'tiffranka d-dejta fis-sħaba, u l-biċċiet u l-indiċi huma maħżuna separatament. Il-verżjoni 1.5 tintroduċi l-abbiltà li taħżen f'post wieħed, iżda għadu mhux rakkomandat li tużaha fil-produzzjoni.

Il-biċċiet jistgħu jinħażnu f'ħażna kompatibbli ma 'S3, u databases li jistgħu jiġu skalati orizzontalment jistgħu jintużaw biex jaħżnu indiċi: Cassandra, BigTable jew DynamoDB. Partijiet oħra ta 'Loki - Distributuri (għall-kitba) u Querier (għall-mistoqsijiet) - huma mingħajr stat u wkoll skala orizzontalment.
Fil-konferenza DevOpsDays Vancouver 2019, wieħed mill-parteċipanti Callum Styan ħabbar li ma 'Loki il-proġett tiegħu għandu petabytes ta' zkuk b'indiċi ta 'inqas minn 1% tad-daqs totali: "".
Tqabbil ta 'Loki u ELK
Daqs tal-indiċi
Biex tittestja d-daqs ta 'l-indiċi li jirriżulta, ħadt zkuk mill-kontenitur nginx li għalih il-Pipeline ta' hawn fuq ġie kkonfigurat. Il-log file kien fih 406 linja b'volum totali ta' 624 MB. Logs ġew iġġenerati fi żmien siegħa, madwar 109 daħla kull sekonda.
Eżempju ta' żewġ linji mill-ġurnal:

Meta indiċjat minn ELK, dan ta daqs ta 'indiċi ta' 30,3 MB:

Fil-każ ta' Loki, dan irriżulta f'madwar 128 KB ta' indiċi u madwar 3,8 MB ta' dejta f'biċċiet. Ta 'min jinnota li l-ġurnal ġie ġġenerat artifiċjalment u ma kellux varjetà kbira ta' data. Gzip sempliċi fuq il-log Docker JSON oriġinali bid-dejta ta kompressjoni ta '95,4%, u meta jitqies il-fatt li l-log nginx imnaddaf biss intbagħat lil Loki innifsu, kompressjoni sa 4 MB tinftiehem. In-numru totali ta 'valuri uniċi għat-tikketti Loki kien 35, li jispjega d-daqs żgħir tal-indiċi. Għal ELK il-ġurnal ġie mnaddaf ukoll. Għalhekk, Loki kkompressat id-dejta oriġinali b'96%, u ELK b'70%.
Konsum tal-memorja

Jekk inqabblu l-munzell kollu ta 'Prometheus u ELK, allura Loki "jiekol" bosta drabi inqas. Huwa ċar li servizz Go jikkonsma inqas minn servizz Java, u t-tqabbil tad-daqs tal-JVM Heap Elasticsearch u l-memorja allokata għal Loki mhuwiex korrett, iżda madankollu ta 'min jinnota li Loki juża ħafna inqas memorja. Il-vantaġġ tas-CPU tiegħu mhuwiex daqshekk ovvju, iżda huwa wkoll preżenti.
Veloċità
Loki "jidħol" zkuk aktar malajr. Il-veloċità tiddependi fuq ħafna fatturi - x'tip ta 'zkuk huma, kif sofistikati aħna parse minnhom, in-netwerk, id-diska, eċċ - iżda hija definittivament ogħla minn dik ta' ELK (fit-test tiegħi - madwar darbtejn). Dan huwa spjegat mill-fatt li Loki ipoġġi ħafna inqas dejta fl-indiċi u, għaldaqstant, iqatta 'inqas ħin fuq l-indiċjar. Bil-veloċità tat-tfittxija, is-sitwazzjoni hija l-oppost: Loki jonqos b'mod notevoli fuq data akbar minn diversi gigabytes, filwaqt li l-veloċità tat-tfittxija ta 'ELK ma tiddependix mid-daqs tad-data.
Fittex minn zkuk
Loki huwa ferm inferjuri għal ELK f'termini ta 'kapaċitajiet ta' tfittxija ta 'log. Grep b'espressjonijiet regolari huwa qawwi, iżda huwa inferjuri għal database matura. In-nuqqas ta 'mistoqsijiet dwar il-firxa, l-aggregazzjoni biss minn tikketti, l-inkapaċità li tfittex mingħajr tikketti - dan kollu jillimitana fit-tfittxija għal informazzjoni ta' interess f'Loki. Dan ma jfissirx li xejn ma jista 'jinstab bl-użu ta' Loki, iżda jiddefinixxi l-fluss ta 'ħidma ma' zkuk meta l-ewwel issib problema fil-mapep Prometheus, u mbagħad uża dawn it-tikketti biex tfittex dak li ġara fil-zkuk.
Interface
L-ewwelnett, huwa sabiħ (skużani, ma setgħetx tirreżisti). Grafana għandha interface sabiħa, iżda Kibana hija ħafna aktar rikk fil-karatteristiċi.
Vantaġġi u liżvantaġġi ta 'Loki
Wieħed mill-vantaġġi huwa li Loki jintegra ma 'Prometheus, għalhekk inġibu metriċi u twissija barra mill-kaxxa. Huwa konvenjenti għall-ġbir taz-zkuk u l-ħażna tagħhom minn Kubernetes Pods, peress li għandha skoperta tas-servizz wiret minn Prometheus u awtomatikament tehmeż tikketti.
L-iżvantaġġ huwa dokumentazzjoni dgħajfa. Xi affarijiet, pereżempju, il-karatteristiċi u l-kapaċitajiet ta 'Promtail, skoprejt biss fil-proċess ta' studju tal-kodiċi, fortunatament huwa open-source. Żvantaġġ ieħor huwa kapaċitajiet ta 'parsing dgħajfa. Pereżempju, Loki ma jistax janalizza zkuk b'ħafna linji. Żvantaġġ ieħor huwa li Loki hija teknoloġija relattivament żgħira (il-ħruġ 1.0 kien f'Novembru 2019).
Konklużjoni
Loki hija teknoloġija 100% interessanti li hija adattata għal proġetti ta 'daqs żgħir u medju, li tippermettilek issolvi ħafna problemi ta' aggregazzjoni ta 'zkuk, tfittxija ta' zkuk, monitoraġġ u analiżi ta 'log.
Aħna ma nużawx Loki f'Badoo għax għandna munzell ta 'ELK li jixraq lilna u li kien imkabbar b'diversi soluzzjonijiet tad-dwana matul is-snin. Għalina, l-ostaklu huwa t-tiftix permezz taz-zkuk. Bi kważi 100 GB ta’ zkuk kuljum, huwa importanti għalina li nkunu nistgħu nsibu kollox u ftit aktar u nagħmluh malajr. Għall-iċċartjar u l-monitoraġġ, nużaw soluzzjonijiet oħra li huma mfassla għall-bżonnijiet tagħna u integrati ma 'xulxin. Il-munzell Loki għandu benefiċċji tanġibbli, iżda mhux se jagħtina aktar milli diġà għandna, u l-benefiċċji tiegħu żgur mhux se jegħlbu l-ispiża tal-migrazzjoni.
U għalkemm wara riċerka deher ċar li ma nistgħux nużaw Loki, nittamaw li din il-kariga tgħinek fl-għażla tiegħek.
Ir-repożitorju bil-kodiċi użat fl-artikolu jinsab .
Sors: www.habr.com
