Kumusta, ang pangalan ko ay Eugene, isa akong pinuno ng pangkat ng B2B sa Citymobil. Ang isa sa mga gawain ng aming team ay ang suportahan ang mga integrasyon para sa pag-order ng taxi mula sa mga kasosyo, at upang matiyak ang isang matatag na serbisyo, dapat naming palaging maunawaan kung ano ang nangyayari sa aming mga microservice. At para dito kailangan mong patuloy na subaybayan ang mga log.
Sa Citymobil, ginagamit namin ang ELK stack (ElasticSearch, Logstash, Kibana) para magtrabaho sa mga log, at ang dami ng data na darating doon ay napakalaki. Ang paghahanap ng mga problema sa ganitong dami ng mga kahilingan na maaaring lumitaw pagkatapos ng pag-deploy ng bagong code ay medyo mahirap. At para sa kanilang visual identification, may Dashboard na seksyon si Kibana.
Mayroong ilang mga artikulo sa HabrΓ© na may mga halimbawa kung paano mag-set up ng ELK stack upang makatanggap at mag-imbak ng data, ngunit walang mga nauugnay na materyales sa paggawa ng Dashboard. Samakatuwid, gusto kong ipakita kung paano lumikha ng visual na representasyon ng data batay sa mga papasok na log sa Kibana.
pag-aayos
Para mas malinaw, gumawa ako ng Docker na imahe na may ELK at Filebeat. At inilagay sa isang lalagyan ang isang maliit
I-clone ang config repository docker-compose
at mga setting ng ELK, at ilunsad ito gamit ang command docker-compose up
. Sinasadyang hindi magdagdag ng susi -d
para makita ang progreso ng ELK stack.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Kung ang lahat ay na-configure nang tama, pagkatapos ay makakakita kami ng isang entry sa mga log (marahil hindi kaagad, ang proseso ng paglulunsad ng isang lalagyan na may buong stack ay maaaring tumagal ng ilang minuto):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Sa pamamagitan ng address localhost:5061
Dapat buksan ni Kibana.
Ang tanging bagay na kailangan naming i-configure ay lumikha ng isang Index Pattern para sa Kibana na may impormasyon tungkol sa kung anong data ang ipapakita. Para magawa ito, magsasagawa kami ng curl request o magsasagawa ng serye ng mga aksyon sa graphical na interface.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
Paglikha ng Index Pattern sa pamamagitan ng GUI
Upang i-configure, piliin ang seksyong Discover sa kaliwang menu, at pumunta sa pahina ng paglikha ng pattern ng Index.
Sa pamamagitan ng pag-click sa button na "Gumawa ng index pattern," mapupunta tayo sa pahina ng paglikha ng index. Sa field na "Pangalan ng index ng pattern," ilagay ang "logstash-*". Kung na-configure nang tama ang lahat, sa ibaba ng Kibana ay ipapakita ang mga index na nasa ilalim ng panuntunan.
Sa susunod na pahina, piliin ang key field na may timestamp, sa aming kaso ito ay @timestamp
.
Ilalabas nito ang pahina ng mga setting ng index, ngunit walang karagdagang aksyon ang kinakailangan mula sa amin sa ngayon.
Ngayon ay maaari tayong pumunta muli sa seksyong Discover, kung saan makikita natin ang mga log entries.
Tapalodo
Sa kaliwang menu, mag-click sa seksyon ng paggawa ng Dashboard at pumunta sa kaukulang pahina.
Mag-click sa "Gumawa ng bagong dashboard" at pumunta sa pahina para sa pagdaragdag ng mga bagay sa Dashboard.
Mag-click sa pindutang "Lumikha ng bago", at ipo-prompt ka ng system na piliin ang uri ng pagpapakita ng data. Ang Kibana ay may malaking bilang ng mga ito, ngunit titingnan natin ang paglikha ng isang graphical na representasyon ng "Vertical Bar" at isang tabular na "Data Table". Ang iba pang mga uri ng pagtatanghal ay na-configure sa katulad na paraan.
Ang ilang magagamit na mga bagay ay may label na B at E, na nangangahulugang ang format ay pang-eksperimento o nasa beta testing. Sa paglipas ng panahon, maaaring magbago o tuluyang mawala ang format sa Kibana.
patayong bar
Para sa halimbawa ng "Vertical Bar," gumawa tayo ng histogram ng ratio ng matagumpay at hindi matagumpay na mga status ng pagtugon ng aming serbisyo. Sa dulo ng mga setting, makuha namin ang sumusunod na graph:
Uuriin namin ang lahat ng kahilingan na may status ng pagtugon < 400 bilang matagumpay, at >= 400 bilang may problema.
Para gumawa ng chart na "Vertical Bar," kailangan naming pumili ng data source. Piliin ang Index Pattern na ginawa namin kanina.
Bilang default, lalabas ang isang solidong graph pagkatapos pumili ng data source. I-set up natin ito.
Sa block na "Mga Bucket," pindutin ang button na "Add", piliin ang "X-asis" at i-set up ang X axis. Itabi natin ang mga timestamp para sa pagtanggap ng mga entry sa log. Sa field na "Pagsasama-sama," piliin ang "Histogram ng Petsa", at sa "Field" piliin ang "@timestamp", na nagpapahiwatig ng field ng oras. Iwanan natin ang "Minimum interval" sa "Auto" na estado, at awtomatiko itong ia-adjust sa ating display.
Sa pamamagitan ng pag-click sa button na "I-update," makakakita kami ng graph na may bilang ng mga kahilingan bawat 30 segundo.
Ngayon ay i-set up natin ang mga column sa kahabaan ng Y-axis. Ngayon ay ipinapakita namin ang kabuuang bilang ng mga kahilingan sa napiling agwat ng oras.
Baguhin natin ang halaga ng "Pagsasama-sama" sa "Sum Bucket", na magbibigay-daan sa amin na pagsamahin ang data para sa matagumpay at hindi matagumpay na mga kahilingan. Sa Bucket -> Aggregation block, piliin ang aggregation ayon sa "Mga Filter" at itakda ang pag-filter ayon sa "statusCode >= 400". At sa field na "Custom label", ipinapahiwatig namin ang aming pangalan ng indicator para sa isang mas naiintindihan na pagpapakita sa alamat sa chart at sa pangkalahatang listahan.
Sa pamamagitan ng pag-click sa pindutang "I-update" sa ilalim ng bloke ng mga setting, makakakuha kami ng isang graph na may mga kahilingan sa problema.
Kung nag-click ka sa bilog sa tabi ng alamat, lilitaw ang isang window kung saan maaari mong baguhin ang kulay ng mga column.
Ngayon, magdagdag tayo ng data sa mga matagumpay na kahilingan sa chart. Sa seksyong "Mga Sukatan," i-click ang button na "Magdagdag" at piliin ang "Y-axis."
Sa ginawang sukatan, ginagawa namin ang parehong mga setting tulad ng para sa mga maling kahilingan. Sa filter lang namin tinukoy ang "statusCode < 400".
Sa pamamagitan ng pagpapalit ng kulay ng bagong column, nakakakuha kami ng display ng ratio ng mga may problema at matagumpay na mga kahilingan.
Sa pamamagitan ng pag-click sa button na "I-save" sa tuktok ng screen at pagtukoy ng pangalan, makikita natin ang unang chart sa Dashboard.
Table Data
Ngayon isaalang-alang ang tabular view na "Data Table". Gumawa tayo ng table na may listahan ng lahat ng URL na hiniling at ang bilang ng mga kahilingang iyon. Tulad ng halimbawa ng Vertical Bar, pipili muna kami ng data source.
Pagkatapos nito, ang isang talahanayan na may isang column ay ipapakita sa screen, na nagpapakita ng kabuuang bilang ng mga kahilingan para sa napiling agwat ng oras.
Papalitan lang namin ang block na "Mga Balde". I-click ang button na "Add" at piliin ang "Split rows".
Sa field na "Pagsasama-sama," piliin ang "Mga Tuntunin". At sa lumitaw na field na "Field" piliin ang "url.keyword".
Sa pamamagitan ng pagtukoy sa halaga ng "Url" sa field na "Custom na label" at pag-click sa "I-update," makukuha namin ang gustong talahanayan na may bilang ng mga kahilingan para sa bawat isa sa mga URL para sa napiling yugto ng panahon.
Sa itaas ng screen, i-click muli ang button na "I-save" at tukuyin ang pangalan ng talahanayan, halimbawa Mga Url. Bumalik tayo sa Dashboard at tingnan ang parehong mga view na ginawa.
Nagtatrabaho sa Dashboard
Kapag gumagawa ng Dashboard, itinakda lang namin ang mga pangunahing parameter ng view sa mga setting ng display object. Walang saysay na tukuyin ang data para sa mga filter sa mga bagay, halimbawa, "hanay ng petsa", "pag-filter ayon sa useragent", "pag-filter ayon sa bansa ng kahilingan", atbp. Ito ay mas maginhawa upang tukuyin ang nais na yugto ng panahon o itakda ang kinakailangang pag-filter sa panel ng query, na matatagpuan sa itaas ng mga bagay.
Ang mga filter na idinagdag sa panel na ito ay ilalapat sa buong Dashboard, at lahat ng mga display object ay muling itatayo alinsunod sa aktwal na na-filter na data.
Konklusyon
Ang Kibana ay isang makapangyarihang tool na nagbibigay-daan sa iyong mailarawan ang anumang data sa isang maginhawang paraan. Sinubukan kong ipakita ang setting ng dalawang pangunahing uri ng display. Ngunit ang iba pang mga uri ay naka-configure sa katulad na paraan. At ang kasaganaan ng mga setting na iniwan ko "sa likod ng mga eksena" ay magbibigay-daan sa iyong napaka-flexible na i-customize ang mga chart upang umangkop sa iyong mga pangangailangan.
Pinagmulan: www.habr.com