Na-anakọta ndekọ sitere na Loki

Na-anakọta ndekọ sitere na Loki

Na Badoo, anyị na-enyocha teknụzụ ọhụrụ mgbe niile ma nyochaa ma ha bara uru iji na sistemụ anyị. Ọ ga-amasị anyị ịkọrọ ndị obodo otu n'ime ọmụmụ ihe ndị a. A raara ya nye Loki, usoro nchịkọta log.

Loki bụ ihe ngwọta maka ịchekwa na ịlele ndekọ, na nchịkọta a na-enyekwa usoro mgbanwe maka nyochaa ha na iziga data na Prometheus. Na Mee, ewepụtara mmelite ọzọ, nke ndị okike na-akwalite nke ọma. Anyị nwere mmasị na ihe Loki nwere ike ime, ike ndị ọ na-enye, yana ruo n'ókè ọ nwere ike ime dị ka ihe ọzọ na ELK, nchịkọta anyị na-eji ugbu a.

Gịnị bụ Loki

Grafana Loki bụ ihe mejupụtara maka sistemụ zuru oke maka ịrụ ọrụ na ndekọ. N'adịghị ka usoro ndị ọzọ yiri ya, Loki dabere n'echiche nke ịkọwapụta naanị log metadata - akara (otu dị na Prometheus), na ịpịkọta ndekọ onwe ha n'ime iberibe dị iche iche.

Ibe akwukwo, GitHub

Tupu anyị abanye n'ihe ị nwere ike iji Loki mee, achọrọ m ịkọwa ihe "echiche nke ịkọwapụta naanị metadata" pụtara. Ka anyị tulee usoro Loki na ụzọ ị ga-esi indexing na ngwọta ọdịnala dịka Elasticsearch, na-eji ihe atụ nke ahịrị sitere na 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"

Usoro ọdịnala na-atụgharị ahịrị ahụ dum, gụnyere mpaghara nwere ọnụ ọgụgụ buru ibu nke njirimara user_id na item_id pụrụ iche, ma chekwaa ihe niile na nnukwu ndeksi. Uru nke usoro a bụ na ị nwere ike ịgba ọsọ ajụjụ mgbagwoju anya ngwa ngwa, ebe ọ bụ na ihe fọrọ nke nta ka ọ bụrụ data niile dị na ndeksi. Ma nke a na-abịa na ọnụ ahịa na index na-aghọ nnukwu, nke sụgharịrị n'ime ihe nchekwa chọrọ. N'ihi ya, ndepụta ndekọ ederede zuru oke na nha na ndekọ ndekọ onwe ha. Ka ịchọọ ngwa ngwa site na ya, a ga-ebunye ndeksi n'ime ebe nchekwa. Na ọtụtụ ndekọ, ka index na-eto ngwa ngwa na ihe ncheta ọ na-eri.

Usoro Loki chọrọ ka ewepụtara naanị data dị mkpa na eriri, ọnụ ọgụgụ nke ụkpụrụ ya pere mpe. N'ụzọ dị otú a, anyị na-enweta obere index ma nwee ike ịchọ data ahụ site na nzacha ya site na oge na site na mpaghara indexed, wee nyochaa nke ọzọ site na iji okwu mgbe niile ma ọ bụ nchọ substring. Usoro ahụ adịghị ka nke kachasị ọsọ, mana Loki kewara arịrịọ ahụ n'ọtụtụ akụkụ wee mee ya n'otu oge, na-edozi nnukwu data na obere oge. Ọnụ ọgụgụ nke shards na arịrịọ ndị yiri ya na ha nwere ike ịhazi; ya mere, ọnụọgụ data enwere ike ịhazi kwa nkeji oge na-adabere n'ahịrị na ọnụọgụ ego enyere.

Azụmahịa a n'etiti nnukwu, ngwa ngwa ngwa ngwa na obere ihe nrịbama ike na-eme ka Loki na-achịkwa ego nke usoro ahụ. Enwere ike ịhazi ya n'ụzọ dị mfe ma gbasaa dịka mkpa siri dị.

Nchịkọta Loki nwere ihe atọ: Promtail, Loki, Grafana. Promtail na-anakọta ndekọ, hazie ha ma ziga ya na Loki. Loki na-echekwa ha. Na Grafana nwere ike ịrịọ data sitere na Loki wee gosipụta ya. Na mkpokọta, enwere ike iji Loki ọ bụghị naanị maka ịchekwa ndekọ na ịchọ site na ha. Nchịkọta dum na-enye ohere dị ukwuu maka nhazi na nyochaa data na-abata site na iji ụzọ Prometheus.
Enwere ike ịchọta nkọwa nke usoro ntinye ebe a.

Chọọ site na ndekọ

Ị nwere ike ịchọ ndekọ ahụ na interface Grafana pụrụ iche - Explorer. Ajuju a na-eji asụsụ LogQL, nke yikwara PromQL ejiri na Prometheus. Na ụkpụrụ, enwere ike iche ya dị ka grep ekesa.

Ihe nchọta ọchụchọ dị ka nke a:

Na-anakọta ndekọ sitere na Loki

Arịrịọ n'onwe ya nwere akụkụ abụọ: selector na filter. Selector bụ ọchụchọ na-eji metadata indexed (akara ngosi) nke e kenyere na ndekọ, na nzacha bụ eriri ọchụchọ ma ọ bụ regexp nke na-enyocha ndekọ nke onye ahọpụtara kọwara. N'ọmụmaatụ enyere: N'ime ihe nkwado na-agbagọ, enwere onye nhọpụta, ihe niile na-esote bụ nzacha.

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

N'ihi ụzọ Loki si arụ ọrụ, ịgaghị enwe ike ịme ajụjụ na-enweghị onye na-ahọpụta ya, mana enwere ike ịme akara n'ozuzu dịka ịchọrọ.

Onye nhọpụta bụ uru igodo-uru na ihe nkwado mgbako. Ị nwere ike ijikọta ndị na-ahọpụta ma kọwaa ọnọdụ ọchụchọ dị iche iche site na iji ndị ọrụ =, != ma ọ bụ okwu oge niile:

{instance=~"kafka-[23]",name!="kafka-dev"} 
// Найдёт логи с лейблом instance, имеющие значение kafka-2, kafka-3, и исключит dev 

Ihe nzacha bụ ederede ma ọ bụ regexp nke ga-enyocha data niile nke onye ahọpụtara natara.

Ọ ga-ekwe omume ịnweta eserese ad-hoc dabere na data enwetara na ụdị metrik. Dịka ọmụmaatụ, ị nwere ike ịchọpụta ugboro ole ntinye nwere eriri eriri na-apụta na ndekọ nginx:

Na-anakọta ndekọ sitere na Loki

Enwere ike ịchọta nkọwa zuru oke nke ikike na akwụkwọ LogQL.

Ntụle ndekọ

Enwere ụzọ dị iche iche isi nakọta ndekọ:

  • Iji Promtail, ọkọlọtọ akụrụngwa nke tojupụtara maka ịnakọta ndekọ.
  • ozugbo site na akpa docker na-eji Loki Docker ọkwọ ụgbọ ala.
  • Jiri Fluentd ma ọ bụ Fluent Bit, nke nwere ike izipu data na Loki. N'adịghị ka Promtail, ha nwere parsers emebere maka ihe fọrọ nke nta ka ọ bụrụ ụdị log ọ bụla ma nwee ike ijikwa ndekọ multiline.

A na-ejikarị Promtail eme nyocha. Ọ na-eme ihe atọ:

  • Na-achọta isi mmalite data.
  • Na-agbakwụnye akara na ha.
  • Na-eziga data na Loki.

Ugbu a Promtail nwere ike ịgụ ndekọ sitere na faịlụ mpaghara yana akwụkwọ akụkọ sistemụ. A ghaghị itinye ya na igwe ọ bụla nke a na-anakọta ndekọ.

Enwere njikọ na Kubernetes: Promtail na-akpaghị aka, site na Kubernetes REST API, na-amata steeti ụyọkọ ahụ ma na-anakọta ndekọ site na ọnụ, ọrụ ma ọ bụ pọd, na-ebipụta aha ozugbo dabere na metadata sitere na Kubernetes (aha pod, aha faịlụ, wdg.) .

Ị nwekwara ike kpọgidere akara dabere na data sitere na ndekọ site na iji Pipeline. Pipeline Promtail nwere ike ịnwe ụdị ọkwa anọ. Nkọwa ndị ọzọ na akwụkwọ ikike, Aga m achọpụta ozugbo ụfọdụ nuances.

  1. Ntụle nkebi. Nke a bụ usoro RegEx na JSON. N'oge a, anyị na-ewepụ data na ndekọ n'ime ihe a na-akpọ maapụ amịpụtara. Anyị nwere ike wepụ na JSON site na iṅomi naanị ubi ndị anyị chọrọ na maapụ e wepụtapụtara, ma ọ bụ site n'okwu ọnụ (RegEx), ebe a na-edepụta otu ndị aha ya bụ "maapụ" na maapụ ahụ ewepụtara. Map ahụ ewepụtara bụ ụlọ ahịa igodo-uru, ebe igodo bụ aha ubi ahụ, uru bụ uru ya site na ndekọ.
  2. Gbanwee usoro. Ogbo a nwere nhọrọ abụọ: mgbanwe, ebe anyị na-edobe iwu mgbanwe, na isi mmalite - isi iyi data maka mgbanwe site na map ewepụtara. Ọ bụrụ na enweghị mpaghara dị otú ahụ na maapụ ewepụtara, a ga-emepụta ya. N'ụzọ dị otú a, ọ ga-ekwe omume ịmepụta akara na-adabereghị na maapụ ewepụtara. N'oge a, anyị nwere ike iji ike dị ike na-emegharị data dị na maapụ ahụ ewepụtara Template Golang. Tụkwasị na nke ahụ, anyị ga-echeta na a na-ebufe maapụ ahụ amịpụtara kpamkpam n'oge nyocha, nke na-eme ka o kwe omume, dịka ọmụmaatụ, ịlele uru dị na ya: "{{if .tag}tag value exists{end}}". Template na-akwado ọnọdụ, loops, na ụfọdụ ọrụ eriri dị ka Dochie na Kpaa.
  3. Usoro ihe omume. N'ebe a, ị nwere ike iji ọdịnaya ewepụtara mee ihe:
    • Mepụta akara sitere na data ewepụtara, nke Loki ga-edepụta aha ya.
    • Gbanwee ma ọ bụ tọọ oge mmemme site na ndekọ.
    • Gbanwee data (ederede ndekọ) nke ga-aga na Loki.
    • Mepụta metrik.
  4. Nzacha nkebi. Oge egwuregwu, ebe anyị nwere ike izipu ndenye na anyị achọghị / dev / null ma ọ bụ zipu ha maka nhazi ọzọ.

N'iji ihe atụ nke nhazi ndekọ nginx oge niile, m ga-egosi otu ị nwere ike isi nyochaa ndekọ site na iji Promtail.

Maka ule ahụ, ka anyị were dị ka nginx-proxy ihe oyiyi nginx gbanwetụrụ jwilder/nginx-proxy:alpine na obere daemon nke nwere ike ịjụ onwe ya site na HTTP. Daemon nwere ọtụtụ njedebe njedebe, nke ọ nwere ike ịnye nzaghachi nke nha dị iche iche, yana ọkwa HTTP dị iche iche yana oge dị iche iche.

Anyị ga-anakọta ndekọ site na arịa docker, nke enwere ike ịchọta n'okporo ụzọ /var/lib/docker/containers/ / -json.log

Na docker-compose.yml anyị na-ahazi Promtail wee kọwaa ụzọ na nhazi:

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

Tinye ụzọ na ndekọ na promtail.yml (enwere nhọrọ "docker" na nhazi, nke na-eme otu ihe ahụ n'otu ahịrị, mana ọ gaghị adị mfe):

scrape_configs:
 - job_name: containers

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

Mgbe agbanyere nhazi a, a ga-eziga ndekọ sitere na arịa niile na Loki. Iji zere nke a, anyị na-agbanwe ntọala nke ule nginx na docker-compose.yml - tinye oghere mkpado:

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

Na-edezi promtail.yml na ịhazi Pipeline. Ntinye ahụ gụnyere ndekọ nke ụdị ndị a:

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

Ọkwa ọkpọkọ:

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

Anyị na-ewepụ iyi nke ubi, attrs, attrs.tag (ọ bụrụ na ha dị) site na JSON na-abata wee tinye ha na maapụ ewepụtara.

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

Ọ bụrụ na anyị jisiri ike tinye mpaghara mkpado na maapụ ewepụtara, wee jiri regexp wepụ aha onyonyo na akpa.

 - labels:
     image_name:
     container_name:

Anyị na-ekenye akara. Ọ bụrụ na a na-ahụ igodo_name na container_name na data ewepụtara, a ga-ekenye ụkpụrụ ha na akara ndị kwekọrọ.

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

Anyị na-atụfu ndekọ niile na-enweghị akara aha arụnyere image_name na container_name.

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

Maka ndekọ ọ bụla aha njirimara ha bụ nginx.promtail.test, wepụ ebe ndekọ ahụ na ndekọ isi mmalite wee tinye ya na maapụ ahụ ewepụtara na igodo ahịrị.

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

Anyị na-eji okwu ọnụ na-ekpochapụ ahịrị ntinye ahụ wee wepụ nginx virtual host na akara 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.]+)")?

Wepụ ndekọ nginx site na iji okwu oge niile.

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

Ka anyị tugharia request_url. Iji regexp anyị na-ekpebi ebumnuche nke arịrịọ: ka data static, foto, API wee tọọ igodo kwekọrọ na maapụ ewepụtara.

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

N'iji ndị na-ahụ maka ọnọdụ ọnọdụ na Template, anyị na-elele mpaghara arụnyere na maapụ ewepụtara wee tọọ ụkpụrụ achọrọ maka ubi ụdị arịrịọ: foto, static, API. Kenye ndị ọzọ ma ọ bụrụ na ọ daa. request_type nwere ugbu a ụdị arịrịọ.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

Anyị debere akara api_request, virtual_host, request_type na ọkwa (ọnọdụ HTTP) dabere na ihe anyị jisiri ike tinye na maapụ ewepụtara.

       - output:
           source: nginx_log_row

Gbanwee mmepụta. Ugbu a ndekọ nginx a kpochara na maapụ ewepụtara na-aga Loki.

Na-anakọta ndekọ sitere na Loki

Mgbe ịmechara nhazi ahụ dị n'elu, ị nwere ike ịhụ na ntinye aha ọ bụla na-ekenye akara dabere na data sitere na log.

Otu ihe ị ga-eburu n'uche bụ na iweghachite akara nwere ọnụ ọgụgụ dị ukwuu nke ụkpụrụ (kadinality) nwere ike belata Loki. Ya bụ, ị gaghị etinye, dịka ọmụmaatụ, user_id na ndeksi. Gụkwuo banyere nke a n'akwụkwọ akụkọ "Kedu ka akara na Loki nwere ike isi mee ka ajụjụ ndekọ ọsọ ọsọ na dị mfe" Mana nke a apụtaghị na ị nweghị ike ịchọ site user_id na-enweghị index. Ịkwesịrị iji ihe nzacha mgbe ị na-achọ ("jide" data), na ndeksi ebe a na-arụ ọrụ dị ka ihe nchọpụta iyi.

Ịhụ ihe ndekọ

Na-anakọta ndekọ sitere na Loki

Loki nwere ike rụọ ọrụ dị ka isi iyi data maka eserese Grafana site na iji LogQL. A na-akwado atụmatụ ndị a:

  • ọnụego - ọnụ ọgụgụ nke ndekọ kwa nkeji;
  • gụọ oge - ọnụ ọgụgụ nke ndekọ na nso nso a kapịrị ọnụ.

Enwekwara ọrụ nchịkọta Sum, Avg na ndị ọzọ. Ị nwere ike wuo eserese dị mgbagwoju anya, dịka ọmụmaatụ eserese nke ọnụọgụ HTTP:

Na-anakọta ndekọ sitere na Loki

A na-ebelata isi iyi data ọkọlọtọ Loki na arụmọrụ ma e jiri ya tụnyere isi iyi data Prometheus (dịka ọmụmaatụ, ị nweghị ike ịgbanwe akụkọ ahụ), mana enwere ike ijikọ Loki dị ka isi iyi nwere ụdị Prometheus. Ejighị m n'aka ma nke a bụ omume edepụtara, mana ikpe site na nzaghachi ndị nrụpụta "Otu esi ahazi Loki ka ọ bụrụ isi iyi data Prometheus? · Okwu #1222 · grafana/loki”, dịka ọmụmaatụ, bụ iwu zuru oke, yana Loki dakọtara na PromQL.

Tinye Loki dị ka isi iyi data nwere ụdị Prometheus wee tinye URL / loki:

Na-anakọta ndekọ sitere na Loki

Ma anyị nwere ike ịme eserese, dị ka a ga-asị na anyị na-arụ ọrụ na metrik sitere na Prometheus:

Na-anakọta ndekọ sitere na Loki

Echere m na ọdịiche dị na arụmọrụ bụ nwa oge na ndị mmepe ga-edozi nke a n'ọdịnihu.

Na-anakọta ndekọ sitere na Loki

Metrics

Loki na-enye ikike iwepụta metrik ọnụọgụ na ndekọ wee ziga ha na Prometheus. Dịka ọmụmaatụ, log nginx nwere ọnụọgụ bytes kwa nzaghachi, yana, yana mgbanwe ụfọdụ nke usoro ndekọ ọkọlọtọ, oge n'ime sekọnd ọ were ịzaghachi. Enwere ike wepụta data a ma ziga ya na Prometheus.

Tinye ngalaba ọzọ na 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

Nhọrọ ahụ na-enye gị ohere ịkọwapụta na melite metrik dabere na data sitere na maapụ ewepụtara. Anaghị ezipụ metrik ndị a na Loki - ha na-apụta na njedebe Promtail/metrics. Ekwesịrị ịhazi Prometheus ka ọ nweta data enwetara n'oge a. N'ihe atụ dị n'elu, maka request_type="api" anyị na-anakọta metrik histogram. Site na ụdị metrik a, ọ dị mfe ịnweta percentiles. Maka static na foto, anyị na-anakọta nchikota bytes na ọnụọgụ nke ahịrị ndị anyị nwetara sitetes iji gbakọọ nkezi.

Gụkwuo maka metrik ebe a.

Mepee ọdụ ụgbọ mmiri na Promtail:

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

Gbaa mbọ hụ na metrik nwere prefix promtail_custom pụtara:

Na-anakọta ndekọ sitere na Loki

Ịtọlite ​​​​Prometheus. Tinye mgbasa ozi ọrụ:

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

Ma anyị na-ese eserese:

Na-anakọta ndekọ sitere na Loki

N'ụzọ dị otú a, ị nwere ike chọpụta, dịka ọmụmaatụ, ajụjụ anọ dị nwayọọ. Ị nwekwara ike ịhazi nlekota maka metrik ndị a.

Ịtụle

Loki nwere ike ịbụ n'otu ọnọdụ ọnụọgụ abụọ ma ọ bụ n'ụdị sharded (ọnọdụ nwere ike ịka mma). N'okwu nke abụọ, ọ nwere ike ịchekwa data na igwe ojii, a na-echekwa chunks na index iche iche. Ụdị 1.5 na-ewebata ikike ịchekwa n'otu ebe, mana akwadobeghị iji ya na mmepụta.

Na-anakọta ndekọ sitere na Loki

Enwere ike ịchekwa chunks na nchekwa dakọtara na S3, yana nchekwa data nwere ike ịgbatị kwụ ọtọ, enwere ike iji chekwaa ndeksi: Cassandra, BigTable ma ọ bụ DynamoDB. Akụkụ ndị ọzọ nke Loki - Ndị na-ekesa (maka ide) na Querier (maka ajụjụ) - enweghị obodo yana nha nha n'usoro.

Na ogbako DevOpsDays Vancouver 2019, otu n'ime ndị sonyere Callum Styan kwupụtara na ya na Loki ọrụ ya nwere petabytes nke ndekọ nwere ndeksi na-erughị 1% nke mkpokọta: "Kedu ka Loki si ejikọta metrik na ndekọ - ma chekwaa gị ego".

Ntụle nke Loki na ELK

Nha ndeksi

Iji nwalee nha index nke ga-esi na ya pụta, ewepụtara m ndekọ sitere na akpa nginx nke ahaziri Pipeline dị n'elu. Faịlụ ndekọ ahụ nwere ahịrị 406 nwere mkpokọta olu nke 624 MB. Emepụtara ndekọ n'ime otu elekere, ihe dị ka ntinye 109 kwa nkeji.

Ọmụmaatụ nke ahịrị abụọ sitere na log:

Na-anakọta ndekọ sitere na Loki

Mgbe ELK depụtara ya, nke a nyere nha index nke 30,3 MB:

Na-anakọta ndekọ sitere na Loki

N'ihe banyere Loki, nke a rụpụtara ihe dịka 128 KB nke ndeksi yana ihe dịka 3,8 MB nke data na chunks. Okwesiri iburu n'uche na a na-emepụta log ahụ n'onwe ya na enweghị nnukwu data dị iche iche. Gzip dị mfe na ndekọ mbụ Docker JSON nwere data nyere mkpakọ nke 95,4%, na-eburu n'uche na ọ bụ naanị nginx log ka ezigara Loki n'onwe ya, mkpakọ ruru 4 MB bụ ihe kwere nghọta. Ọnụ ọgụgụ nke ụkpụrụ pụrụ iche maka akara Loki bụ 35, nke na-akọwa obere nha nke ndeksi. Maka ELK ehichapụkwa ndekọ ahụ. Ya mere, Loki chịkọtara data mbụ site na 96%, yana ELK site na 70%.

Oriri ebe nchekwa

Na-anakọta ndekọ sitere na Loki

Ọ bụrụ na anyị atụnyere mkpokọta Prometheus na ELK, mgbe ahụ Loki "na-eri" ọtụtụ ugboro obere. O doro anya na ọrụ Go na-eri ihe na-erughị ọrụ Java, ma atụnyere nha JVM Heap Elasticsearch na ebe nchekwa ekenyere Loki ezighi ezi, mana n'agbanyeghị, ọ dị mma ịmara na Loki na-eji obere ebe nchekwa. Uru CPU ya abụghị ihe doro anya, mana ọ dịkwa ugbu a.

Ngwa ọsọ

Loki “na-eri” ndekọ ngwa ngwa. Ọsọ ọsọ na-adabere n'ọtụtụ ihe - ụdị ndekọ dị, otú ọkaibe anyị si dị na ịkọwapụta ha, netwọkụ, diski, wdg - ma ọ dị elu karịa ELK (na ule m - ihe dị ka okpukpu abụọ). A kọwara nke a site n'eziokwu ahụ bụ na Loki na-etinye data dị ntakịrị n'ime index na, ya mere, na-etinye obere oge na ntinye aha. Site na ọsọ ọchụchọ, ọnọdụ ahụ dị iche: Loki na-achọpụta na ọ na-agbada na data buru ibu karịa ọtụtụ gigabytes, ebe ọsọ ọchụchọ ELK adabereghị na nha data ahụ.

Chọọ site na ndekọ

Loki dị ala karịa ELK n'ihe gbasara ike ọchụchọ log. Grep na okwu oge niile dị ike, mana ọ dị ala na nchekwa data tozuru oke. Enweghị ajụjụ dị nso, nchịkọta naanị site na akara, enweghị ike ịchọ na-enweghị akara - ihe a niile na-egbochi anyị ịchọ ozi nke mmasị na Loki. Nke a apụtaghị na ọ dịghị ihe a ga-achọta site na iji Loki, ma ọ na-akọwa usoro nke na-arụ ọrụ na ndekọ mgbe mbụ ịchọta nsogbu na chaatị Prometheus, wee jiri akara ndị a chọọ ihe mere na ndekọ.

interface

Nke mbụ, ọ mara mma (ndo, enweghị ike iguzogide). Grafana nwere interface mara mma, mana Kibana bara ụba nke ukwuu.

Uru na ọghọm dị na Loki

Otu n'ime uru bụ na Loki jikọtara ya na Prometheus, yabụ anyị na-enweta metrics na ịdọ aka ná ntị na igbe ahụ. Ọ dị mma maka ịnakọta ndekọ na ịchekwa ya na Kubernetes Pods, ebe ọ nwere nchọpụta ọrụ ketara n'aka Prometheus ma na-etinye akara na-akpaghị aka.

Akụkụ dị ala bụ akwụkwọ na-adịghị ike. Ihe ụfọdụ, dịka ọmụmaatụ, njirimara na ike nke Promtail, achọpụtara m naanị na usoro ịmụ koodu ahụ, ọ dabara nke ọma na ọ bụ isi mmalite. Ọdịmma ọzọ bụ ike ntule adịghị ike. Dịka ọmụmaatụ, Loki enweghị ike ịtụgharị ndekọ ndekọ aha ọtụtụ. Ihe ọghọm ọzọ bụ na Loki bụ teknụzụ na-eto eto (mwepụta 1.0 bụ na Nọvemba 2019).

nkwubi

Loki bụ teknụzụ na-adọrọ mmasị 100% nke dabara maka obere ọrụ obere na ọkara, na-enye gị ohere idozi ọtụtụ nsogbu nke nchịkọta ndekọ, nyocha ndekọ, nyocha na nyocha ndekọ.

Anyị anaghị eji Loki na Badoo n'ihi na anyị nwere nchịkọta ELK dabara anyị na nke ejirila usoro omenala dị iche iche tojuru etoju kemgbe ọtụtụ afọ. Maka anyị, ihe ịsụ ngọngọ na-achọ site na ndekọ. N'ihe fọrọ nke nta ka ọ bụrụ 100 GB nke ndekọ kwa ụbọchị, ọ dị mkpa ka anyị nwee ike ịchọta ihe niile na ntakịrị ihe ma mee ya ngwa ngwa. Maka nhazi na nlekota oru, anyị na-eji ihe ngwọta ndị ọzọ emebere maka mkpa anyị ma jikọta ya na ibe anyị. Ihe ngwugwu Loki nwere uru a na-ahụ anya, mana ọ gaghị enye anyị karịa ka anyị nweburu, yana uru ya agaghị akarị ọnụ ahịa njem.

Na agbanyeghị na nyochachara ọ bịara doo anya na anyị enweghị ike iji Loki, anyị nwere olileanya na post a ga-enyere gị aka na nhọrọ gị.

Ebe nchekwa ahụ nwere koodu ejiri n'ime akụkọ dị ebe a.

isi: www.habr.com

Tinye a comment