Loki ka soo ururinaya geedaha

Loki ka soo ururinaya geedaha

Anaga hadaan nahay Badoo waxaan si joogto ah ula soconaa tignoolajiyada cusub waxaanan qiimeyneynaa in aan ku isticmaalno nidaamkayaga iyo in kale. Waxaan rabnaa inaan mid ka mid ah daraasaddan la wadaagno bulshada. Waxay u heellan tahay Loki, nidaamka isku-darka log.

Loki waa xalka kaydinta iyo daawashada diiwaannada, iyo xidhmadani waxay sidoo kale bixisaa nidaam dabacsan oo lagu falanqeeyo iyaga oo xogta loogu diro Prometheus. Bishii Maajo, cusbooneysiin kale ayaa la sii daayay, kaas oo ay si firfircoon u dhiirrigeliyeen abuurayaashu. Waxaan xiiseyneynay waxa Loki sameyn karo, sifooyinka ay bixiso, iyo ilaa xadka ay u dhaqmi karto beddelka ELK, xirmada aan hadda isticmaalno.

Waa maxay Loki

Grafana Loki waa qayb ka mid ah qaybaha nidaamka qorista oo dhammaystiran. Si ka duwan nidaamyada kale ee la midka ah, Loki waxay ku saleysan tahay fikradda tilmaamayaasha kaliya ee metadata log - calaamadaha (sida Prometheus), iyo isku-buufinta logyada laftooda dhinac dhinac u kala qaybsan.

Bogga guriga, GitHub

Kahor intaanan u galin waxaad ku samayn karto Loki, waxaan rabaa inaan caddeeyo waxa aan ula jeedno "fikirka tusmaynta xogta badan." Aynu is barbar dhigno habka Loki iyo habka loo tilmaansado xalalka dhaqameed sida Elasticsearch, anagoo adeegsanayna tusaalaha xariiqda 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"

Nidaamyada dhaqameedku waxay kala saarayaan safka oo dhan, oo ay ku jiraan beero leh qiyam user_id iyo item_id gaar ah, oo wax walba ku kaydiyaan tusmooyin waaweyn. Faa'iidada habkan ayaa ah inaad si dhakhso ah u socodsiin karto weydiimaha adag, maadaama ku dhawaad ​​dhammaan xogta ay ku jiraan tusmada. Laakiin waa inaad tan ku bixisaa in tusmuhu uu weynaado, taas oo u tarjumaysa shuruudaha xusuusta. Natiijo ahaan, tusmada qoraalka-buuxa ee log-ga ayaa la barbardhigi karaa cabbirka iyo logyada laftooda. Si dhakhso ah loogu dhex baadho, tusmada waa in lagu shubaa xusuusta. Markasta oo ay bataan diiwaanka, tusmuhu si dhakhso ah ayuu u korayaa iyo in badan oo xusuusta ay isticmaasho.

Habka Loki wuxuu u baahan yahay in kaliya xogta lagama maarmaanka ah laga soo saaro xargaha, tirada qiyamka taas oo yar. Sidan ayaanu ku helaynaa tusmooyin yar oo waxa aanu ku baadhaynaa xogta anagoo ku kala shaandhayna wakhtiga iyo meelaha indexed-ka ah, ka dibna ku sawiran inta soo hadhay iyada oo la adeegsanayo tibaaxo joogto ah ama baadhitaan hoose. Nidaamku uma eka sida ugu dhaqsaha badan, laakiin Loki wuxuu u kala qaybiyaa codsiga qaybo badan oo wuxuu u fuliyaa si isku mid ah, oo ku shaqeeya qadar badan oo xog ah waqti gaaban. Tirada jeexjeexyada iyo codsiyada barbar socda ee ku jira waa la habeyn karaa; sidaas awgeed, cadadka xogta ee la farsamayn karo halbeegkii wakhtigu waxay ku xidhan tahay si toos ah cadadka agabka la bixiyay.

Is-dhaafsigan u dhexeeya tusmaynta degdegga ah ee weyn iyo tusmaynta xoogga xoogga yar ee isbarbar-dhigga ah ayaa u oggolaanaysa Loki inuu xakameeyo kharashka nidaamka. Si dabacsanaan leh ayaa loo habayn karaa loona ballaarin karaa hadba baahidaada.

Xidhmada Loki waxa ay ka kooban tahay saddex qaybood: Promtail, Loki, Grafana. Promtail waxa ay ururisaa diiwaannada, baartaa oo u dirtaa Loki. Loki ayaa ilaalinaya. Grafana waxay ka codsan kartaa xogta Loki oo ay tusi kartaa. Guud ahaan, Loki waxaa loo isticmaali karaa ma aha oo kaliya kaydinta logyada iyo raadinta iyaga. Xidhmada oo dhan waxay bixisaa fursado waaweyn oo lagu habeeyo laguna falanqeeyo xogta soo socota iyadoo la adeegsanayo habka Prometheus.
Sharaxaada habka rakibida ayaa la heli karaa halkan.

Log Search

Waxaad ka raadin kartaa logyada gudaha interface gaar ah Grafana β€” Explorer. Weydiimaha waxay adeegsadaan luqadda LogQL, oo ​​aad ugu eg PromQL-ga uu isticmaalo Prometheus. Mabda 'ahaan, waxaa loo malayn karaa inay tahay grep qaybsan.

Interface-ka raadinta ayaa u eg sidan:

Loki ka soo ururinaya geedaha

Codsiga laftiisa wuxuu ka kooban yahay laba qaybood: xulashada iyo filter. Selector waa raadinta iyadoo la adeegsanayo metadata la tusmeeyay (calaamadaha) kuwaas oo loo qoondeeyay diiwaanka, iyo filter waa xarig raadin ama regexp oo shaandheynaya diiwaanada uu qeexay dooriyuhu. Tusaalaha la bixiyay: Kaabadaha qalloocan waxaa jira doore, wax kasta oo ka dambeeya waa filter.

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

Sababtoo ah habka Loki u shaqeeyo, ma sameyn kartid codsiyo la'aanteed, laakiin calaamadaha waxaa loo samayn karaa si aan kala sooc lahayn.

Doorashadu waa furaha-qiimaha qiimaha xarkaha-laaban. Waxaad isku dari kartaa xulayaasha oo aad qeexi kartaa xaalado raadin oo kala duwan adiga oo isticmaalaya =, != hawlwadeenada ama tibaaxaha caadiga ah:

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

Filterku waa qoraal ama regexp oo shaandhayn doona dhammaan xogta uu helay doorashadu.

Waa suurtogal in la helo garaafyada ad-hoc ee ku salaysan xogta la helay ee qaabka cabbirka. Tusaale ahaan, waxaad ka heli kartaa inta jeer ee dhacdooyinka nginx logs ee gelitaan ka kooban xargaha tusaha:

Loki ka soo ururinaya geedaha

Sharaxaad buuxda oo ku saabsan sifooyinka ayaa laga heli karaa dukumeentiyada LogQL.

Log falanqaynta

Waxaa jira dhowr siyaabood oo loo ururiyo logyada:

  • Iyada oo la kaashanayo Promtail, waa qayb ka mid ah jaangooyooyinka ururinta logyada.
  • Si toos ah uga soo qaad weelka docker adigoo isticmaalaya Loki Docker Logging Dirawalka.
  • Isticmaal Fluentd ama Fluent Bit kaas oo xogta u diri kara Loki. Si ka duwan sida Promtail, waxay leeyihiin baarayaal diyaarsan oo ku dhow nooc kasta oo log ah waxayna sidoo kale xamili karaan logusyada badan.

Caadi ahaan Promtail waxaa loo isticmaalaa falanqaynta. Waxay qabataa saddex arrimood:

  • Hela xogta ilaha
  • Waxay ku dhejisaa calaamado iyaga.
  • Wuxuu u diraa xogta Loki

Hadda Promtail waxay akhrin kartaa diiwaannada faylalka maxalliga ah iyo joornaalka habaysan. Waa in lagu rakibaa mishiin kasta oo geedaha laga soo ururiyo.

Waxaa jira is dhex galka Kubernetes: Promtail wuxuu si toos ah u ogaanayaa xaalada kooxda iyadoo loo sii marayo Kubernetes REST API wuxuuna ka soo ururiyaa diiwaannada noodhka, adeegga ama boodhka, isla markiiba dhajinta calaamado ku salaysan xogta badan ee Kubernetes (magaca boodhka, magaca faylka, iwm.).

Waxa kale oo aad sudh-dhigi kartaa summadaha ku salaysan xogta log-ka adiga oo isticmaalaya Pipeline. Pipeline Promtail wuxuu ka koobnaan karaa afar nooc oo heerar ah. Faahfaahin dheeraad ah gudaha dukumeenti rasmi ah, Isla markiiba waxaan ogaan doonaa qaar ka mid ah nuucyada.

  1. Marxaladaha falanqaynta. Tani waa heerka RegEx iyo JSON. Marxaladdan, waxaan ka soo saarnaa xogta logyada waxa loogu yeero khariidadda la soo saaray. Waxaad ka soo saari kartaa JSON adiga oo si fudud u koobiyaya beeraha aan u baahanahay khariidadda la soo saaray, ama iyada oo loo marayo tibaaxaha caadiga ah (RegEx), halkaas oo kooxaha magaca leh ay "khariidad" ku geliyaan khariidadda la soo saaray. Khariidadda la soo saaray waa kaydinta qiimaha-furaha ah, halkaasoo furuhu yahay magaca goobta, qiimuhuna waa qiimihiisa laga soo bilaabo logyada.
  2. Beddelka marxaladaha. Marxaladani waxay leedahay laba ikhtiyaar: isbeddel, halkaas oo aan dejino xeerarka isbeddelka, iyo isha - isha xogta isbeddelka ee khariidadda la soo saaray. Haddii aysan jirin goobta noocaas ah ee khariidadda la soo saaray, markaa waa la abuuri doonaa. Markaa, waa suurtogal in la sameeyo calaamado aan ku salaysnayn khariidadda la soo saaray. Marxaladan, waxaan ku maamuli karnaa xogta ku jirta khariidadda la soo saaray anagoo adeegsanayna awood si cadaalad ah Golang Template. Intaa waxaa dheer, waa in aan xasuusannaa in khariidadda la soo saaray ay si buuxda u raran tahay inta lagu jiro falanqaynta, taas oo suurtogal ka dhigaysa, tusaale ahaan, in la hubiyo qiimaha ku jira: "{{if .tag} qiimaha tag ayaa jira{dhamaadka}}". Qaababku waxa uu taageeraa xaaladaha, wareegyada, iyo qaar ka mid ah hawlaha xargaha sida Beddelka iyo jar.
  3. Marxaladaha waxqabadka. Marxaladdan, waxaad wax ku samayn kartaa kuwa la soo saaray:
    • Ka samee calaamad xogta la soo saaray, taas oo ay tilmaami doonto Loki.
    • Ka beddel ama ka dhig wakhtiga dhacdada buugga
    • Beddel xogta (qoraalka log) ee aadi doona Loki.
    • Samee cabbir.
  4. Heerarka shaandhaynta. Marxaladda ciyaarta, halkaas oo aan u diri karno diiwaannada aanan u baahnayn in aan /dev/nullno, ama u dirno habayn dheeri ah.

Isticmaalka tusaalaha socodsiinta diiwaannada nginx ee caadiga ah, waxaan tusi doonaa sida aad u kala saari karto diiwaannada adigoo isticmaalaya Promtail.

Imtixaanka, aan soo qaadno nginx jwilder/nginx-proxy: image alpine iyo daemon yar oo naftiisa ku waydiin kara HTTP as nginx-proxy. Daemon-ku wuxuu leeyahay dhowr dhibcood oo dhammaad ah, kaas oo uu ku siin karo jawaabaha cabbirro kala duwan, oo leh xaalado HTTP oo kala duwan iyo dib u dhacyo kala duwan.

Waxaan ka soo ururin doonaa logyada weelasha docker, kuwaas oo laga heli karo wadada /var/lib/docker/containers/ / -json.log

Gudaha docker-compose.yml waxaan dejinay Promtail oo aan qeexnay dariiqa loo maro qaabeynta:

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

Ku dar dariiqa logyada promtail.yml (waxaa jira ikhtiyaar "docker" ah oo ku jira qaabeynta kaas oo ku sameeya isla hal sadar, laakiin ma noqon doonto mid cad):

scrape_configs:
 - job_name: containers

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

Marka qaabeyntan la furo, diiwaannada dhammaan weelasha waxaa loo diri doonaa Loki. Si taas looga fogaado, waxaan bedelnaa habaynta tijaabada nginx ee docker-compose.yml - ku dar galitaanka goobta sumadda:

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

Tafatir promtail.yml oo deji Pipeline. Logu waa sida soo socota:

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

Marxaladda dhuumaha:

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

Waxaan ka soo saarnay durdurka, attrs, attrs.tag fields (haddii ay jiraan) JSON soo socota oo aan gelino khariidadda la soo saaray.

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

Haddii ay suurtagal ahayd in la dhigo goobta tag ee khariidadda la soo saaray, ka dibna isticmaalaya regexp waxaan soo saareynaa magacyada sawirka iyo weelka.

 - labels:
     image_name:
     container_name:

Waxaan ku dhejineynaa calaamado. Haddii furayaasha image_name iyo container_name laga helo xogta la soo saaray, markaas qiyamkooda waxaa lagu meelayn doonaa sumadaha ku habboon.

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

Waxaan tuuraynaa dhammaan diiwaannada aan lahayn sumadaha image_name iyo weelka_name set.

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

Dhammaan qoraalada magacooda uu le'eg yahay nginx.promtail.test, waxaanu ka soo saarnay goobta log-galka isha oo aanu gelinaa khariidadda la soo saaray ee leh furaha safka.

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

Waxaan ku nadiifineynaa xariiqda gelinta iyadoo la adeegsanayo tibaaxo joogto ah oo aan ka saarno nginx martigeliyaha farsamada iyo khadka 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.]+)")?

Ku baar nginx log oo leh tibaaxo joogto ah.

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

Aynu kala saarno request_url. Iyada oo la kaashanayo regexp, waxaan go'aamineynaa ujeedada codsiga: si statics, sawirada, API oo aan dejino furaha u dhigma ee khariidadda la soo saaray.

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

Isticmaalka hawl wadeenada shuruudaha ku jira Template, waxaanu eegnaa meelaha lagu rakibay khariidadda la soo saaray waxaanu dejinaynaa qiyamka loo baahan yahay goobta codsiga_nooca: sawir, taagan, API. U qoondee mid kale haddii lagu guuldareysto. Hadda request_type waxa ku jira nooca codsiga.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

Waxaan dejinay sumadaha api_request, virtual_host, request_type iyo status (HTTP status) iyadoo ku saleysan waxaan ku guuleysanay inaan gelino khariidadda la soo saaray.

       - output:
           source: nginx_log_row

Beddel wax soo saarka Hadda diiwaanka nginx ee la nadiifiyay ee khariidadda la soo saaray wuxuu aadayaa Loki.

Loki ka soo ururinaya geedaha

Ka dib markaad socodsiiso qaabka sare, waxaad arki kartaa in gelitaan kasta lagu calaamadeeyay iyadoo lagu saleynayo xogta log.

Maskaxda ku hay in soo saarista sumadaha leh tiro badan oo qiyam ah (kardinity) ay si weyn hoos ugu dhigi karto Loki. Taasi waa, waa inaadan gelin tusmada, tusaale ahaan, user_id. Wax badan oo arrintan ku saabsan ka akhri maqaalkaSida calaamadaha Loki ay uga dhigi karaan weydiimaha log si degdeg ah oo sahlan" Laakiin tani macnaheedu maaha inaadan ku raadin karin user_id tusiyaal la'aan. Waa lagama maarmaan in la isticmaalo filtarrada marka la raadinayo ("qabso" sida ku cad xogta), iyo tusaha halkan wuxuu u shaqeeyaa sida aqoonsiga qulqulka.

Log muuqaalaynta

Loki ka soo ururinaya geedaha

Loki wuxuu u dhaqmi karaa ilaha xogta ee jaantusyada Grafana isagoo isticmaalaya LogQL. Tilmaamaha soo socda ayaa la taageeray:

  • heerka - tirada rikoodhada ilbiriqsi kasta;
  • xisaabi waqti ka dib - tirada diiwaanada ee xadka la siiyay.

Waxa kale oo jira hawlo isu-gudbineed Sum, Avg iyo kuwo kale. Waxaad dhisi kartaa garaafyo aad u adag, tusaale ahaan, garaaf tirada khaladaadka HTTP:

Loki ka soo ururinaya geedaha

Isha xogta asalka ah ee Loki ayaa xoogaa ka shaqaynaysa isha xogta Prometheus (tusaale ahaan, ma beddeli kartid halyeeyga), laakiin Loki waxa lagu xidhi karaa sida isha nooca Prometheus. Ma hubo in tani ay tahay habdhaqan la diiwaangeliyay, laakiin marka la eego jawaabta ka soo baxday horumariyeyaashaSida loo habeeyo Loki sida ilaha xogta Prometheus? Β· Arrinta #1222 Β· grafana/loki”, tusaale ahaan, waa sharci dhamaystiran Loki-na si buuxda ayay ula jaan qaadaysaa PromQL.

Ku dar Loki sida isha xogta oo leh nooca Prometheus oo ku dheji URL /loki:

Loki ka soo ururinaya geedaha

Waxaadna samayn kartaa garaafyo, sidii haddii aanu ku shaqaynaynay cabbirada Prometheus:

Loki ka soo ururinaya geedaha

Waxaan u maleynayaa in farqiga u shaqeynta uu yahay mid ku meel gaar ah oo horumariyayaashu ay hagaajin doonaan mustaqbalka.

Loki ka soo ururinaya geedaha

Metrics

Loki wuxuu bixiyaa awooda uu ku soo saaro cabbirada tirooyinka logyada una diro Prometheus. Tusaale ahaan, log nginx wuxuu ka kooban yahay tirada bytes jawaab celin kasta, iyo sidoo kale, oo leh wax ka beddel gaar ah qaabka log log-ga caadiga ah, wakhtiga ilbiriqsiyo gudahood ay ku qaadatay in laga jawaabo. Xogtan waa la soo saari karaa oo loo diri karaa Prometheus.

Kudar qayb kale 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

Doorashadu waxay kuu ogolaanaysaa inaad qeexdo oo aad cusboonaysiiso cabbirada ku salaysan xogta khariidada la soo saaray. Halbeegyadan looma dirin Loki - waxay ka muuqdaan barta Promtail/metrics. Prometheus waa in la habeeyaa si loo helo xogta la helay marxaladan. Tusaalaha kore, ee request_type = "api" waxaan aruurineynaa mitirka histogram. Qiyaasaha noocaan ah waxay ku habboon tahay in la helo boqolleyda. Marka loo eego sawirka taagan iyo sawirka, waxaanu ururinaynaa wadarta bytes iyo tirada safafka aan ku helnay bytes si loo xisaabiyo celceliska.

Ka akhri wax badan oo ku saabsan cabbirada halkan.

Ku fur dekedda Promtail:

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

Waxaan hubineynaa in cabbirada leh horgalaha promtail_custom uu soo muuqday:

Loki ka soo ururinaya geedaha

Dejinta Prometheus Ku dar xayeysiinta shaqada:

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

Oo waxaan sawirnay garaaf:

Loki ka soo ururinaya geedaha

Sidan ayaad ku ogaan kartaa, tusaale ahaan, afarta weydiimood ee ugu gaabiya. Waxa kale oo aad samayn kartaa la socodka cabbiradan.

Isku-dheellitirnaan

Loki waxa uu ku jiri karaa qaab laba-geesood ah iyo mid jeexan (qaab-horizontally-scalable). Xaaladda labaad, waxay kaydin kartaa xogta daruuraha, iyo jajabyada iyo tusmooyinka si gooni ah ayaa loo kaydiyaa. Nooca 1.5, awoodda lagu kaydiyo hal meel ayaa la hirgeliyaa, laakiin weli laguma talinayo in loo isticmaalo wax soo saarka.

Loki ka soo ururinaya geedaha

Jeexjeexyada waxaa lagu kaydin karaa kaydinta ku habboon S3, si loo kaydiyo tusmooyinka, isticmaal xog-ururin toosan oo la cabbiri karo: Cassandra, BigTable ama DynamoDB. Qaybaha kale ee Loki - Qaybiyeyaasha (qoraal ahaan) iyo Querier (su'aalaha) - waa bilaa waddan oo sidoo kale cabbirkoodu toosan yahay.

Shirka DevOpsDays Vancouver 2019, mid ka mid ah ka qaybgalayaasha Callum Styan ayaa ku dhawaaqay in Loki mashruuciisu uu leeyahay petabytes of logs oo leh index in ka yar 1% ee cabbirka guud: "Sidee Loki Isku Xidhaa Metrics iyo Logs - Oo Uu Ku Badbaadiyo Lacag".

Isbarbardhigga Loki iyo ELK

Cabbirka tusmada

Si loo tijaabiyo cabbirka tusmada ee ka soo baxay, waxaan ka soo qaatay qoraallada weelka nginx kaas oo Pipeline-ka sare loo habeeyey. Galka loggu waxa uu ka koobnaa 406 xariiq oo wadarta mug dhan 624 MB. Logyada ayaa la sameeyay saacad gudaheed, ku dhawaad ​​109 diiwaan ilbiriqsikii.

Tusaalaha laba sadar ee logga:

Loki ka soo ururinaya geedaha

Marka lagu tilmaamo ELK, tani waxay bixisay cabbirka 30,3 MB:

Loki ka soo ururinaya geedaha

Xaaladda Loki, tani waxay bixisay qiyaastii 128 KB ee index iyo qiyaastii 3,8 MB oo xog ah oo jajab ah. Waxaa xusid mudan in loggu uu ahaa mid si macmal ah loo sameeyay oo aanu ka muuqan xog badan oo kala duwan. Gzip fudud oo ku yaal diiwaanka asalka ah ee Docker JSON oo leh xog ayaa siisay cadaadis ah 95,4%, waxaana la siiyay in kaliya loggia nginx ee la nadiifiyay loo diray Loki lafteeda, riixitaanka 4 MB waa la fahmi karo. Tirada guud ee qiimaha gaarka ah ee calaamadaha Loki waxay ahaayeen 35, taas oo sharraxaysa cabbirka yar ee tusaha. Wixii ELK ah sidoo kale logu waa la nadiifiyay. Markaa, Loki waxa ay ku cadaadiday xogta asalka ah 96%, iyo ELK 70%.

Isticmaalka xusuusta

Loki ka soo ururinaya geedaha

Haddii aan isbarbardhigno dhammaan xirmooyinka Prometheus iyo ELK, markaa Loki "cuna" dhowr jeer ka yar. Waxaa cad in adeegga Go uu isticmaalo wax ka yar kan adeegga Java, marka la barbardhigo cabbirka Heap Elasticsearch JVM iyo xusuusta loo qoondeeyay Loki waa khalad, hase yeeshee, waxaa xusid mudan in Loki uu isticmaalo xusuusta aad u yar. Faa'iidada CPU ma aha mid iska cad, laakiin sidoo kale waa joogtaa.

Xawaaraha

Loki "wax cunaa" si degdeg ah buu u goostaa. Xawaaruhu waxay ku xiran yihiin arrimo badan - nooca lo'da, sida casriga ah ee aan u kala saarno, shabakad, disk, iwm. - laakiin hubaal waa ka sarreeyaa kan ELK (imtixaankayga - qiyaastii laba jeer). Tan waxaa lagu sharaxay xaqiiqda ah in Loki uu geliyo xog aad u yar tusmada iyo, sidaas awgeed, waqti yar ayuu ku bixiyaa tusmaynta. Xaaladdan oo kale, xaaladdu waxay u rogtay xawaaraha raadinta: Loki waxay si muuqata hoos ugu dhigtaa xogta ka weyn dhowr gigabytes, halka ELK, xawaaraha raadinta kuma xirna cabbirka xogta.

Log Search

Loki aad ayuu uga hooseeyaa ELK marka la eego awoodaha raadinta log. Grep oo leh tibaaxo joogto ah waa shay xooggan, laakiin way ka hoosaysaa xogta xogta dadka waaweyn. La'aanta weydiimaha kala duwan, isku-darka kaliya ee calaamadaha, awood la'aanta in la raadiyo calaamado la'aan - waxaas oo dhan waxay nagu xaddidayaan raadinta macluumaadka xiisaha Loki. Tani macnaheedu maaha in aan waxba la heli karin iyadoo la adeegsanayo Loki, laakiin waxay qeexaysaa qulqulka la shaqeynta logyada, marka ugu horeysa ee aad dhibaato ka hesho jaantusyada Prometheus, ka dibna ka raadi wixii ku dhacay diiwaannada adigoo isticmaalaya calaamadahan.

interface

Marka hore, way qurux badan tahay (waan ka xumahay, lama celin karo). Grafana waxay leedahay interface muuqaal fiican, laakiin Kibana aad buu u shaqeeyaa.

Faa'iidooyinka iyo khasaaraha Loki

Marka lagu daro, waxaa la ogaan karaa in Loki ay ku biirto Prometheus, siday u kala horreeyaan, waxaan helnaa cabbirro iyo digniin ka soo baxay sanduuqa. Way ku habboon tahay in la ururiyo lo'da oo lagu kaydiyo Kubernetes Pods, maadaama ay leedahay daah-fur adeeg oo laga dhaxlay Prometheus oo si toos ah ugu dhejiso sumadaha.

Of minuses - dukumeenti liidata. Waxyaabaha qaarkood, tusaale ahaan, sifooyinka iyo awoodaha Promtail, waxaan ogaaday kaliya habka barashada koodka, nasiib wanaag waa il furan. Khasaaro kale ayaa ah awoodaha falanqaynta oo daciif ah. Tusaale ahaan, Loki ma kala saari karo buugaagta khadadka badan. Khasaaro kale ayaa ah in Loki ay tahay tignoolajiyada yar yar (sii daynta 1.0 waxay ahayd Noofambar 2019).

gunaanad

Loki waa 100% tignoolajiyada xiisaha leh ee ku habboon mashaariicda yaryar iyo kuwa dhexdhexaadka ah, taas oo kuu ogolaanaysa inaad xalliso dhibaatooyin badan oo ah isku-darka log, raadinta log, kormeerka iyo falanqaynta diiwaannada.

Kuma isticmaalno Loki gudaha Badoo sababtoo ah waxaan haysanaa xirmo ELK ah oo nagu habboon oo ay ka buuxsameen xalal kala duwan oo caado ah sannadihii la soo dhaafay. Annaga, turunturooyinka ayaa ah raadinta geedaha. Iyada oo ku dhawaad ​​100 GB ee logs ah maalintii, waxaa muhiim noo ah inaan awoodno inaan helno wax kasta iyo in yar oo dheeraad ah oo aan si dhakhso ah u samayno. Shaxda iyo la socodka, waxaanu isticmaalnaa xalal kale oo ku haboon baahiyaheena oo isku dhafan midba midka kale. Xirmada Loki waxa ay leedahay faa'iidooyin la taaban karo, laakiin nama siin doonto wax ka badan inta aan haysano, waxaana hubaal ah in faa'iidooyinkeedu aanay ka miisaan badnaan doonin kharashka socdaalka.

In kasta oo cilmi-baaris kadib ay caddaatay inaanan isticmaali karin Loki, waxaan rajeyneynaa in boostadani ay kaa caawin doonto doorashadaada.

Kaydka leh koodka lagu isticmaalo maqaalku wuu yaalaa halkan.

Source: www.habr.com

Add a comment