Masiku ano, ndizosatheka kulingalira pulojekiti yochokera Kubernetes popanda stack ya ELK, yomwe imasunga zipika za mapulogalamu onse ndi zigawo zamagulu a gululo. Pazochita zathu, timagwiritsa ntchito stack ya EFK yokhala ndi Fluentd m'malo mwa Logstash.
Fluentd ndi wosonkhanitsa zipika zamakono, wapadziko lonse lapansi yemwe akuchulukirachulukira kutchuka ndipo walowa nawo Cloud Native Computing Foundation, ndichifukwa chake vector yake yachitukuko imayang'ana kugwiritsidwa ntchito molumikizana ndi Kubernetes.
Chowonadi chogwiritsa ntchito Fluentd m'malo mwa Logstash sichisintha mawonekedwe a pulogalamuyo, komabe, Fluentd imadziwika ndi mawonekedwe ake enieni chifukwa cha kusinthasintha kwake.
Mwachitsanzo, pamene tidayamba kugwiritsa ntchito EFK mu ntchito yotanganidwa kwambiri yodula mitengo, tinayang'anizana ndi mfundo yakuti ku Kibana mauthenga ena adawonetsedwa mobwerezabwereza kangapo. M'nkhaniyi tikuuzani chifukwa chake chodabwitsachi chikuchitika komanso momwe tingathetsere vutoli.
Vuto la kubwereza zikalata
M'mapulojekiti athu, Fluentd imayikidwa ngati DaemonSet (yokhazikitsidwa yokha pagawo lililonse la gulu la Kubernetes) ndikuyang'anira zipika za stdout mu /var/log/containers. Pambuyo posonkhanitsa ndi kukonza, zipika zamtundu wa JSON zimatumizidwa ku ElasticSearch, zokwezedwa m'magulumagulu kapena mawonekedwe odziyimira pawokha, kutengera kukula kwa polojekitiyo komanso zofunikira pakugwirira ntchito komanso kulekerera zolakwika. Kibana amagwiritsidwa ntchito ngati mawonekedwe owonetsera.
Tikamagwiritsa ntchito Fluentd yokhala ndi pulogalamu yowonjezera yotulutsa, tidakumana ndi zolembedwa zina mu ElasticSearch zinali ndi zomwezo ndipo zimasiyana ndi chizindikiritso. Mutha kutsimikizira kuti uku ndikubwereza uthenga pogwiritsa ntchito chipika cha Nginx mwachitsanzo. Mu fayilo ya chipika, uthengawu ulipo mukope limodzi:
Chosungiracho chikasiya kusefukira ndipo uthenga wokhawokha ukakhala wosakwanira, mukhoza kuyamba kuonjezera request_timeout parameter. Komabe, ngati muyika mtengo wake ku masekondi opitilira 20, machenjezo otsatirawa ayamba kuwonekera muzolemba za Fluentd:
2020-01-21 09:55:33 +0000 [warn]: [test-dev] buffer flush took longer time than slow_flush_log_threshold: elapsed_time=20.85753920301795 slow_flush_log_threshold=20.0 plugin_id="postgresql-dev"
Uthengawu sukhudza kagwiritsidwe ntchito ka makina mwanjira ina iliyonse ndipo zikutanthauza kuti nthawi yotulutsa buffer idatenga nthawi yayitali kuposa yomwe idakhazikitsidwa ndi slow_flush_log_threshold parameter. Izi ndikuchotsa zolakwika ndipo timazigwiritsa ntchito posankha mtengo wa request_timeout parameter.
Algorithm yosankha generalized ndi motere:
Khazikitsani request_timeout pamtengo wotsimikizika kukhala wokulirapo kuposa kufunikira (mazana amasekondi). Pakukhazikitsa, mulingo waukulu pakukhazikitsa koyenera kwa parameter iyi kudzakhala kuzimiririka kwa machenjezo chifukwa chosowa nthawi.
Yembekezerani mauthenga opitilira pang'onopang'ono_flush_log_threshold. Chenjezo la m'munda wa elapsed_time liwonetsa nthawi yeniyeni yomwe buffer idachotsedwa.