Kusonkhanitsa zipika kuchokera ku Loki

Kusonkhanitsa zipika kuchokera ku Loki

Ife a Badoo nthawi zonse timayang'anira umisiri watsopano ndikuwunika ngati tingawagwiritse ntchito m'dongosolo lathu. Tikufuna kugawana nawo limodzi mwa maphunzirowa ndi anthu ammudzi. Imaperekedwa kwa Loki, dongosolo lophatikiza logi.

Loki ndi njira yothetsera kusungirako ndi kuwonera zipika, ndipo stack iyi imaperekanso njira yosinthika yowunikira ndikutumiza deta ku Prometheus. Mu Meyi, kusintha kwina kunatulutsidwa, komwe kumalimbikitsidwa kwambiri ndi omwe amapanga. Tidachita chidwi ndi zomwe Loki angachite, zomwe amapereka, komanso momwe angakhalire m'malo mwa ELK, stack yomwe timagwiritsa ntchito pano.

Loki ndi chiyani

Grafana Loki ndi gulu la magawo amtundu wathunthu wodula mitengo. Mosiyana ndi machitidwe ena ofanana, Loki amachokera ku lingaliro lolozera metadata ya chipika - zolemba (monga Prometheus), ndikukankhira zipikazo mbali ndi mbali kukhala zigawo zosiyana.

Tsamba la kunyumba, GitHub

Ndisanalowe zomwe mungachite ndi Loki, ndikufuna kufotokozera tanthauzo la "lingaliro lolozera metadata yokha". Tiyeni tifanizire njira ya Loki ndi njira yolondolera pamayankho achikhalidwe, monga Elasticsearch, pogwiritsa ntchito chitsanzo cha mzere kuchokera pa chipika cha 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"

Makina akale amagawa mzere wonsewo, kuphatikiza magawo okhala ndi ma user_id ndi item_id, ndikusunga chilichonse m'ma index akulu. Ubwino wa njirayi ndikuti mutha kuyendetsa mafunso ovuta mwachangu, popeza pafupifupi ma data onse ali mu index. Koma muyenera kulipira izi chifukwa indexyo imakhala yayikulu, yomwe imatanthawuza zofunika kukumbukira. Zotsatira zake, zolemba zonse za zipika zimafanana ndi kukula kwa zipika zomwezo. Kuti mufufuze mwachangu, indexyo iyenera kukwezedwa mu kukumbukira. Ndipo mitengo yochulukirachulukira, indexyo imakula mwachangu komanso kukumbukira komwe kumadya.

Njira ya Loki imafuna kuti deta yofunikira yokha ichotsedwe mu chingwe, chiwerengero cha makhalidwe omwe ndi ochepa. Mwanjira iyi timapeza kalozera kakang'ono ndipo tikhoza kusaka deta poyisefa ndi nthawi ndi magawo omwe ali ndi indexed, ndiyeno kusanthula zina zonse ndi mawu okhazikika kapena kufufuza kwazing'ono. Njirayi sikuwoneka yothamanga kwambiri, koma Loki amagawa pempholo m'magawo angapo ndikumakwaniritsa mofanana, ndikukonza deta yambiri mu nthawi yochepa. Chiwerengero cha shards ndi zopempha zofanana mwa izo ndi configurable; motero, kuchuluka kwa deta yomwe ingathe kukonzedwa pa nthawi imodzi imadalira motsatira kuchuluka kwa zinthu zomwe zaperekedwa.

Kugulitsa uku pakati pa index yayikulu yofulumira ndi index yaying'ono yofanana ndi brute-force kumapangitsa Loki kuwongolera mtengo wadongosolo. Itha kusinthidwa mosinthika ndikukulitsidwa malinga ndi zosowa zanu.

Loki stack ili ndi zigawo zitatu: Promtail, Loki, Grafana. Promtail imasonkhanitsa zipika, kuzikonza ndikuzitumiza ku Loki. Loki amawasunga. Ndipo Grafana akhoza kupempha deta kuchokera kwa Loki ndikuwonetsa. Mwambiri, Loki angagwiritsidwe ntchito osati kungosunga zipika ndikuzifufuza. Mundawu wonse umapereka mwayi wabwino wokonza ndi kusanthula deta yomwe ikubwera pogwiritsa ntchito njira ya Prometheus.
Kufotokozera za ndondomeko unsembe angapezeke apa.

Log Search

Mutha kufufuza zipika mu mawonekedwe apadera Grafana - Explorer. Mafunsowa amagwiritsa ntchito chilankhulo cha LogQL, chomwe ndi chofanana kwambiri ndi PromQL yomwe Prometheus amagwiritsa ntchito. M'malo mwake, itha kuganiziridwa ngati grep yogawidwa.

Mawonekedwe osakira amawoneka motere:

Kusonkhanitsa zipika kuchokera ku Loki

Funso lokha lili ndi magawo awiri: selector ndi fyuluta. Selector ndikusaka kwa metadata (malebulo) omwe amaperekedwa ku zipika, ndipo fyuluta ndi chingwe chosakira kapena regexp yomwe imasefa zolemba zomwe zafotokozedwa ndi wosankhayo. Muchitsanzo choperekedwa: M'mabulaketi opindika - chosankha, chilichonse pambuyo - fyuluta.

{image_name="nginx.promtail.test"} |= "index"

Chifukwa cha momwe Loki amagwirira ntchito, simungapemphe popanda chosankha, koma malembo amatha kupangidwa mwachisawawa.

Chosankha ndiye chinsinsi-mtengo wamtengo wapatali muzitsulo zopotanata. Mutha kuphatikiza osankha ndikutchula mikhalidwe yosiyanasiyana yosakira pogwiritsa ntchito =, != ogwiritsira ntchito kapena mawu okhazikika:

{instance=~"kafka-[23]",name!="kafka-dev"} 
// Найдёт Π»ΠΎΠ³ΠΈ с Π»Π΅ΠΉΠ±Π»ΠΎΠΌ instance, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ kafka-2, kafka-3, ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ dev 

Fyuluta ndi mawu kapena regexp yomwe idzasefa zonse zomwe zalandilidwa ndi wosankhayo.

Ndizotheka kupeza ma ad-hoc graphs kutengera zomwe zalandilidwa mumayendedwe a metrics. Mwachitsanzo, mutha kudziwa kuchuluka kwa zomwe zimachitika mu zipika za nginx za cholowa chomwe chili ndi chingwe cholozera:

Kusonkhanitsa zipika kuchokera ku Loki

Kufotokozera kwathunthu kwa zinthuzo kungapezeke muzolemba LogQL.

Kusanthula mitengo

Pali njira zingapo zosonkhanitsira zipika:

  • Mothandizidwa ndi Promtail, gawo lokhazikika la zotola zotola zipika.
  • Molunjika kuchokera pachidebe cha docker pogwiritsa ntchito Loki Docker Logging Driver.
  • Gwiritsani ntchito Fluentd kapena Fluent Bit yomwe imatha kutumiza deta ku Loki. Mosiyana ndi Promtail, ali ndi mapepala okonzeka okonzekera pafupifupi mtundu uliwonse wa chipika ndipo amatha kunyamula zipika zamitundu yambiri.

Nthawi zambiri Promtail imagwiritsidwa ntchito popanga. Imachita zinthu zitatu:

  • Amapeza magwero a data.
  • Gwirizanitsani zilembo kwa iwo.
  • Amatumiza deta ku Loki.

Pakadali pano Promtail imatha kuwerenga zipika kuchokera kumafayilo am'deralo komanso kuchokera ku systemd magazine. Iyenera kukhazikitsidwa pamakina aliwonse omwe zipika zimasonkhanitsidwa.

Pali kuphatikiza ndi Kubernetes: Promtail imadziwikiratu momwe gululi lilili kudzera pa Kubernetes REST API ndikusonkhanitsa zipika kuchokera ku node, service kapena pod, nthawi yomweyo kutumiza zilembo zochokera ku metadata kuchokera Kubernetes (dzina la pod, dzina lafayilo, ndi zina).

Mukhozanso kupachika zilembo kutengera deta kuchokera pa chipikacho pogwiritsa ntchito Pipeline. Pipeline Promtail ikhoza kukhala ndi mitundu inayi yamagawo. Zambiri - mu zolemba zovomerezeka, nthawi yomweyo ndiwona zina mwazinthu.

  1. Magawo owerengera. Ili ndiye gawo la RegEx ndi JSON. Panthawiyi, timachotsa deta kuchokera muzitsulo zomwe zimatchedwa mapu ochotsedwa. Mutha kuchotsa ku JSON pongotengera minda yomwe tikufuna pamapu ochotsedwa, kapena kudzera m'mawu okhazikika (RegEx), pomwe magulu otchulidwa "amajambulidwa" pamapu ochotsedwa. Mapu ochotsedwa ndi malo osungira chinsinsi, pomwe chinsinsi ndi dzina la munda, ndipo mtengo wake ndi mtengo wake kuchokera pazipika.
  2. Sinthani magawo. Gawoli lili ndi njira ziwiri: kusintha, komwe timayika malamulo osinthika, ndi gwero - gwero lachidziwitso cha kusintha kwa mapu ochotsedwa. Ngati palibe gawo loterolo pamapu ochotsedwa, ndiye kuti lidzapangidwa. Chifukwa chake, ndizotheka kupanga zilembo zomwe sizitengera mapu ochotsedwa. Pakadali pano, titha kusintha zomwe zili pamapu ochotsedwa pogwiritsa ntchito mphamvu yamphamvu golang template. Kuonjezera apo, tiyenera kukumbukira kuti mapu ochotsedwa amadzazidwa mokwanira panthawi yowerengera, zomwe zimapangitsa kuti zikhale zotheka, mwachitsanzo, kuyang'ana mtengo wake: "{{if .tag}tag value ilipo{end}}". Template imathandizira mikhalidwe, malupu, ndi zingwe zina monga Replace and Trim.
  3. Zochita. Munthawi imeneyi, mutha kuchitapo kanthu ndi zomwe zachotsedwa:
    • Pangani chizindikiro kuchokera pazomwe zachotsedwa, zomwe zidzalembedwe ndi Loki.
    • Sinthani kapena khazikitsani nthawi ya chochitika kuchokera pa chipikacho.
    • Sinthani deta (lolemba zolemba) zomwe zidzapite ku Loki.
    • Pangani ma metric.
  4. Magawo osefa. Gawo lamasewera, pomwe titha kutumiza zolemba zomwe sitifunikira ku /dev/null, kapena kuzitumiza kuti zipitirire.

Pogwiritsa ntchito chitsanzo cha kukonza zipika wamba za nginx, ndikuwonetsa momwe mungasinthire mitengo pogwiritsa ntchito Promtail.

Pakuyesa, tiyeni titenge chithunzi chosinthidwa cha nginx jwilder/nginx-proxy:alpine ngati nginx-proxy ndi daemon yaing'ono yomwe imatha kudzifunsa yokha kudzera pa HTTP. Daemon ili ndi malekezero angapo, komwe imatha kupereka mayankho amitundu yosiyanasiyana, okhala ndi ma HTTP osiyanasiyana komanso kuchedwa kosiyanasiyana.

Tidzasonkhanitsa zipika kuchokera muzotengera za docker, zomwe zitha kupezeka panjira /var/lib/docker/containers/ / -json.log

Mu docker-compose.yml timakhazikitsa Promtail ndikulongosola njira yopitira:

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'
 // ...

Onjezani njira yopita ku zipika ku promtail.yml (pali njira ya "docker" mu config yomwe imachita chimodzimodzi pamzere umodzi, koma sizingakhale zoonekeratu):

scrape_configs:
 - job_name: containers

   static_configs:
       labels:
         job: containerlogs
         __path__: /var/lib/docker/containers/*/*log  # for linux only

Kusintha uku kukayatsidwa, Loki alandila zipika kuchokera m'mabokosi onse. Kuti tipewe izi, timasintha makonda a test nginx mu docker-compose.yml - onjezani mitengo pagawo la tag:

proxy:
 image: nginx.test.v3
//…
 logging:
   driver: "json-file"
   options:
     tag: "{{.ImageName}}|{{.Name}}"

Sinthani promtail.yml ndikukhazikitsa Pipeline. Ma logs ndi awa:

{"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"}

magawo a mapaipi:

 - json:
     expressions:
       stream: stream
       attrs: attrs
       tag: attrs.tag

Timachotsa minda, attrs, attrs.tag (ngati ilipo) kuchokera ku JSON yomwe ikubwera ndikuyika pamapu ochotsedwa.

 - regex:
     expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
     source: "tag"

Ngati kunali kotheka kuyika gawo la tag pamapu ochotsedwa, ndiye pogwiritsa ntchito regexp timachotsa mayina azithunzi ndi chidebe.

 - labels:
     image_name:
     container_name:

Timagawa zilembo. Ngati makiyi image_name ndi container_name akupezeka mu data yochotsedwa, ndiye kuti ma values ​​​​aperekedwa ku zilembo zoyenera.

 - match:
     selector: '{job="docker",container_name="",image_name=""}'
     action: drop

Timataya zipika zonse zomwe zilibe zilembo image_name ndi container_name set.

  - match:
     selector: '{image_name="nginx.promtail.test"}'
     stages:
       - json:
           expressions:
             row: log

Pa zipika zonse zomwe image_name yake ndi yofanana ndi nginx.promtail.test, chotsani chipikacho kuchokera pachipika choyambira ndikuchiyika pamapu ochotsedwa ndi kiyi ya mzere.

  - regex:
         # suppress forego colors
         expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
         source: logrow

Timachotsa chingwe cholowetsamo ndi mawu okhazikika ndikutulutsa makina a nginx ndi mzere wa chipika wa 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.]+)")?

Sinthani chipika cha nginx ndi mawu okhazikika.

    - 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>[^/?.]+).*$

Sanjani request_url. Mothandizidwa ndi regexp, timazindikira cholinga cha pempho: ku statics, zithunzi, ku API ndikuyika kiyi yofananira pamapu ochotsedwa.

       - template:
           source: request_type
           template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"

Pogwiritsa ntchito operekera zovomerezeka mu Template, timayang'ana zomwe zayikidwa pamapu ochotsedwa ndikuyika zofunikira pagawo la request_type: chithunzi, static, API. Perekani zina ngati zalephera. Tsopano request_type ili ndi mtundu wa pempho.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

Timayika zilembo api_request, virtual_host, request_type ndi status (HTTP status) kutengera zomwe takwanitsa kuziyika pamapu ochotsedwa.

       - output:
           source: nginx_log_row

Sinthani zotuluka. Tsopano chipika choyeretsedwa cha nginx pamapu ochotsedwa chimapita ku Loki.

Kusonkhanitsa zipika kuchokera ku Loki

Mukatha kugwiritsa ntchito zomwe zili pamwambapa, mutha kuwona kuti cholowa chilichonse chimalembedwa kutengera zomwe zachokera pachilogi.

Kumbukirani kuti kuchotsa zilembo zokhala ndi zikhalidwe zambiri (makadinali) kumatha kuchepetsa kwambiri Loki. Ndiye kuti, simuyenera kuyika index, mwachitsanzo, user_id. Werengani zambiri za izi m'nkhaniyiMomwe zolemba mu Loki zingapangire kufunsa kwa log mwachangu komanso kosavuta". Koma izi sizikutanthauza kuti simungathe kusaka ndi user_id popanda indexes. Ndikofunikira kugwiritsa ntchito zosefera posaka ("kugwira" molingana ndi deta), ndipo index pano imakhala ngati chizindikiritso cha mtsinje.

Mawonekedwe a log

Kusonkhanitsa zipika kuchokera ku Loki

Loki amatha kukhala ngati gwero la data pama chart a Grafana pogwiritsa ntchito LogQL. Zotsatirazi zimathandizidwa:

  • mlingo - chiwerengero cha zolemba pamphindi;
  • kuwerengera m'kupita kwa nthawi - chiwerengero cha zolembera zomwe zaperekedwa.

Palinso ntchito zophatikizira Sum, Avg ndi ena. Mutha kupanga ma graph ovuta kwambiri, mwachitsanzo, chithunzi cha kuchuluka kwa zolakwika za HTTP:

Kusonkhanitsa zipika kuchokera ku Loki

Gwero lachidziwitso la Loki ndilochepa kwambiri kuposa gwero la deta la Prometheus (mwachitsanzo, simungasinthe nthano), koma Loki akhoza kulumikizidwa ngati mtundu wa Prometheus. Sindikutsimikiza ngati izi ndizomwe zalembedwa, koma kuweruza ndi mayankho ochokera kwa opanga "Momwe mungasinthire Loki ngati Prometheus datasource? Β· Nkhani #1222 Β· grafana/loki”, mwachitsanzo, ndizovomerezeka ndipo Loki imagwirizana kwathunthu ndi PromQL.

Onjezani Loki ngati gwero la data ndi mtundu wa Prometheus ndikuwonjezera URL / loki:

Kusonkhanitsa zipika kuchokera ku Loki

Ndipo mutha kupanga ma graph, ngati tikugwira ntchito ndi ma metrics ochokera ku Prometheus:

Kusonkhanitsa zipika kuchokera ku Loki

Ndikuganiza kuti kusiyana kwa magwiridwe antchito ndi kwakanthawi ndipo opanga adzakonza mtsogolo.

Kusonkhanitsa zipika kuchokera ku Loki

Metrics

Loki imapereka mwayi wochotsa ma metric manambala kuchokera pamitengo ndikutumiza ku Prometheus. Mwachitsanzo, chipika cha nginx chili ndi chiwerengero cha ma byte pa yankho lililonse, komanso, ndi kusintha kwina kwa mtundu wa chipika chokhazikika, nthawi ya masekondi yomwe idatenga kuyankha. Deta iyi ikhoza kuchotsedwa ndikutumizidwa ku Prometheus.

Onjezani gawo lina ku 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: inc

Kusankhaku kumakupatsani mwayi wofotokozera ndikusintha ma metrics kutengera zomwe zachokera pamapu ochotsedwa. Ma metrics awa samatumizidwa ku Loki - amawonekera kumapeto kwa Promtail /metrics. Prometheus iyenera kukhazikitsidwa kuti ilandire deta kuchokera pagawoli. Muchitsanzo chapamwambachi, pa request_type="api" timasonkhanitsa histogram metric. Ndi ma metric amtunduwu ndikosavuta kupeza ma percentiles. Pa ma statics ndi zithunzi, timasonkhanitsa kuchuluka kwa ma byte ndi kuchuluka kwa mizere yomwe tidalandira mabayiti kuti tiwerengere avareji.

Werengani zambiri za ma metrics apa.

Tsegulani doko pa Promtail:

promtail:
     image: grafana/promtail:1.4.1
     container_name: monitoring.promtail
     expose:
       - 9080
     ports:
       - "9080:9080"

Timaonetsetsa kuti ma metric okhala ndi promtail_custom prefix awoneka:

Kusonkhanitsa zipika kuchokera ku Loki

Kupanga Prometheus. Onjezani zantchito:

- job_name: 'promtail'
 scrape_interval: 10s
 static_configs:
   - targets: ['promtail:9080']

Ndipo jambulani graph:

Kusonkhanitsa zipika kuchokera ku Loki

Mwanjira iyi mutha kudziwa, mwachitsanzo, mafunso anayi ochedwa kwambiri. Mukhozanso kukonza zowunikira ma metric awa.

Kukulitsa

Loki imatha kukhala munjira zonse ziwiri zamabinala komanso sharded (njira yopingasa). Pachiwiri, imatha kusunga deta kumtambo, ndipo chunks ndi index zimasungidwa mosiyana. Mu mtundu 1.5, kuthekera kosunga pamalo amodzi kumayendetsedwa, koma sikunavomerezedwe kuti mugwiritse ntchito popanga.

Kusonkhanitsa zipika kuchokera ku Loki

Chunks amatha kusungidwa muzosungiramo zofananira ndi S3, ndipo nkhokwe zowongoka zitha kugwiritsidwa ntchito kusunga ma index: Cassandra, BigTable kapena DynamoDB. Magawo ena a Loki - Distributors (polemba) ndi Querier (pamafunso) - alibe malire komanso amakula mopingasa.

Pamsonkhano wa DevOpsDays Vancouver 2019, m'modzi mwa omwe adatenga nawo gawo Callum Styan adalengeza kuti ndi Loki polojekiti yake ili ndi ma petabytes amitengo yokhala ndi index yochepera 1% ya kukula kwake: "Momwe Loki Amagwirizanirana ndi Metrics ndi Logs - Ndipo Amakupulumutsirani Ndalama".

Kuyerekeza kwa Loki ndi ELK

Kukula kwa index

Kuti ndiyese kukula kwake kwa index, ndidatenga zipika kuchokera mu chidebe cha nginx chomwe Pipeline pamwambapa idakhazikitsidwa. Fayilo ya chipikacho inali ndi mizere 406 yokhala ndi 624 MB. Mitengo idapangidwa mkati mwa ola limodzi, pafupifupi zolemba 109 pamphindikati.

Chitsanzo cha mizere iwiri kuchokera pachipika:

Kusonkhanitsa zipika kuchokera ku Loki

Ikalembedwa ndi ELK, izi zidapereka kukula kwa index ya 30,3 MB:

Kusonkhanitsa zipika kuchokera ku Loki

Pankhani ya Loki, izi zidapereka pafupifupi 128 KB ya index ndi pafupifupi 3,8 MB ya data mu chunks. Ndikoyenera kudziwa kuti chipikacho chinapangidwa mwachisawawa ndipo sichinali ndi deta yambiri. Gzip yosavuta pa chipika choyambirira cha Docker JSON chokhala ndi deta chinapereka kupsinjika kwa 95,4%, ndikupatsidwa kuti chipika choyeretsedwa chokha cha nginx chinatumizidwa ku Loki mwiniwake, kukanikiza kwa 4 MB ndikomveka. Chiwerengero chonse chazinthu zapadera za zolemba za Loki zinali 35, zomwe zimafotokoza za kuchepa kwa index. Kwa ELK, chipikacho chinachotsedwanso. Chifukwa chake, Loki adapanikiza zoyambira ndi 96%, ndi ELK ndi 70%.

Kugwiritsa ntchito kukumbukira

Kusonkhanitsa zipika kuchokera ku Loki

Tikayerekeza mulu wonse wa Prometheus ndi ELK, ndiye Loki "amadya" kangapo zochepa. Zikuwonekeratu kuti ntchito ya Go imadya zochepa kuposa ntchito ya Java, ndikuyerekeza kukula kwa Heap Elasticsearch JVM ndi kukumbukira komwe kunaperekedwa kwa Loki ndikolakwika, komabe, ndikofunikira kudziwa kuti Loki amagwiritsa ntchito kukumbukira pang'ono. Ubwino wake wa CPU sizowoneka bwino, koma umapezekanso.

Kuthamanga

Loki "amawononga" mitengo mwachangu. Kuthamanga kumadalira zinthu zambiri - ndi mtundu wanji wa zipika, momwe timawafotokozera mozama, maukonde, litayamba, etc. - koma ndithudi apamwamba kuposa ELK (mu mayeso anga - pafupifupi kawiri). Izi zikufotokozedwa ndi mfundo yakuti Loki amaika deta yocheperako mu ndondomekoyi ndipo, motero, amathera nthawi yochepa pa indexing. Pankhaniyi, zinthu zimasinthidwa ndi liwiro losaka: Loki amachepetsa kwambiri pa data yayikulu kuposa ma gigabytes angapo, pomwe ELK, liwiro lofufuzira silidalira kukula kwa data.

Log Search

Loki ndiwotsika kwambiri kwa ELK potengera luso lakusaka. Grep yokhala ndi mawu okhazikika ndi chinthu champhamvu, koma ndiyotsika ku database yayikulu. Kusowa kwamafunso osiyanasiyana, kuphatikizika kokha ndi zilembo, kulephera kusaka popanda zilembo - zonsezi zimatilepheretsa kusaka zambiri za Loki. Izi sizikutanthauza kuti palibe chomwe chingapezeke pogwiritsa ntchito Loki, koma chimatanthawuza kuyenda kwa ntchito ndi zipika, pamene mukuyamba kupeza vuto pa ma chart a Prometheus, ndiyeno yang'anani zomwe zinachitika mu zipika pogwiritsa ntchito malemba awa.

mawonekedwe

Poyamba, ndizokongola (pepani, sizinathe kukana). Grafana ali ndi mawonekedwe owoneka bwino, koma Kibana ndiwothandiza kwambiri.

Loki zabwino ndi zoipa

Pazowonjezera, zitha kudziwika kuti Loki amaphatikizana ndi Prometheus, motsatana, timapeza ma metric ndikuchenjeza kuchokera m'bokosi. Ndiwosavuta kusonkhanitsa zipika ndikuzisunga ndi Kubernetes Pods, chifukwa ili ndi zomwe zapezeka kuchokera ku Prometheus ndipo zimangoyika zilembo.

Mwa minuses - zolembedwa zolakwika. Zinthu zina, monga mawonekedwe ndi kuthekera kwa Promtail, ndidapeza ndikungophunzira kachidindo, phindu lotseguka. Kuipa kwina ndi kufooka kwapang'onopang'ono. Mwachitsanzo, Loki sangathe kuyika zipika zamitundu yambiri. Komanso, zoyipazo zikuphatikizanso mfundo yoti Loki ndiukadaulo wachichepere (kutulutsa 1.0 kunali mu Novembala 2019).

Pomaliza

Loki ndi teknoloji yosangalatsa ya 100% yomwe ili yoyenera kumapulojekiti ang'onoang'ono ndi apakatikati, omwe amakulolani kuthetsa mavuto ambiri a log aggregation, kufufuza kwa log, kuyang'anira ndi kusanthula zipika.

Sitigwiritsa ntchito Loki ku Badoo, chifukwa tili ndi stack ya ELK yomwe imatikwanira ndipo yakhala yodzaza ndi mayankho osiyanasiyana pazaka zambiri. Kwa ife, chopunthwitsa ndicho kufufuza m’zipika. Ndi pafupifupi 100 GB ya zipika patsiku, ndikofunika kuti tithe kupeza chirichonse ndi pang'ono ndikuchita mwamsanga. Popanga ma chart ndi kuyang'anira, timagwiritsa ntchito njira zina zomwe zimagwirizana ndi zosowa zathu ndikuphatikizidwa wina ndi mnzake. Loki stack ili ndi zopindulitsa zowoneka, koma sizingatipatse zambiri kuposa zomwe tili nazo, ndipo phindu lake silidzaposa ndendende mtengo wakusamuka.

Ndipo ngakhale pambuyo pofufuza zidawonekeratu kuti sitingagwiritse ntchito Loki, tikukhulupirira kuti izi zikuthandizani posankha.

Malo osungira omwe ali ndi code yomwe yagwiritsidwa ntchito m'nkhaniyo ilipo apa.

Source: www.habr.com

Kuwonjezera ndemanga