{"id":93294,"date":"2020-09-05T07:42:58","date_gmt":"2020-09-05T05:42:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi"},"modified":"2020-09-05T07:42:58","modified_gmt":"2020-09-05T05:42:58","slug":"logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi","title":{"rendered":"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vaatame \u00fcle logimise alused Dockeris ja Kuberneteses, seej\u00e4rel k\u00e4sitleme kahte t\u00f6\u00f6riista, mida saab julgelt kasutada tootmises: Grafana Loki ja EFK (Elasticsearch + Fluent Bit + Kibana) komplekti.<\/p>\n<p><\/p>\n<p><em>Artikli sisu \u2014 v\u00e4ljaanne <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/nkmP0-EDb1A\">avatud loengust koolis \"Slerm\"<\/a><\/noindex>. Kui on soov ja eriti kui see on tootmisvajadus, on v\u00f5imalik l\u00e4bida t\u00e4iendav koolitus \u2014 registreeruge kursusele <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/Tinm9w\">Kuberneteses infrastruktuuri j\u00e4lgimise ja logimise kohta<\/a><\/noindex>.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/565b51e95f609556ad38b9d294ef3f2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"logirovanie-v-docker\">Logimine Dockeris<\/h2>\n<p><\/p>\n<p>Kuberneteses t\u00f6\u00f6tavad rakendused podides, kuid madalamal tasemel t\u00f6\u00f6tavad nad siiski tavaliselt Dockeris. Seet\u00f5ttu tuleb logimine seadistada nii, et koguda logisid konteineritest. Kuna konteinerid k\u00e4ivitab Docker, tuleb aru saada, kuidas logimine Dockeris toimib.<\/p>\n<p><\/p>\n<p>Loodan, et iga lugeja teab: rakenduse logid tuleb kirjutada stdout\/stderr, mitte konteineri sisse. Logid kogub Docker Daemon, ning see t\u00f6\u00f6tab just nende logidega, mis saadetakse stdout\/stderr. Lisaks toob logide salvestamine konteineri sisse endaga kaasa probleeme: konteiner paisub kasvava logi t\u00f5ttu (kuna konteineris pole t\u00f5en\u00e4oliselt Logrotate'i), ja Docker Daemon ei ole sellest logist teadlik.<\/p>\n<p><\/p>\n<p>Dockeril on mitmeid logide kogumise draivereid v\u00f5i pluginaid. Tasuta versioonis Docker Community Edition (CE) on logidraivereid v\u00e4hem kui kommertsversioonis Docker Enterprise Edition (EE).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/2b05602b54a9075f63713f72c7e74dfa.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Docker EE-d pole ma praktikas kunagi kasutanud: Southbridge'is p\u00fc\u00fcame kinni pidada avatud l\u00e4htekoodiga lahendustest ning enamikku Docker EE t\u00e4iendavaid funktsioone klientidele ei ole vajalik. <\/p>\n<p><\/p>\n<p>Docker CE logidraiverid:<\/p>\n<p><\/p>\n<p><strong>local<\/strong> \u2014 logide salvestamine Docker Daemoni sisemisse faili;<br \/>\n<strong>json-file<\/strong> \u2014 iga konteineri katalooge luuakse json-log;<br \/>\n<strong>journald<\/strong> \u2014 logide saatmine journald-ile.<\/p>\n<p><\/p>\n<p>Dockeris asuvad logimise seaded failis daemon.json. <\/p>\n<p><\/p>\n<p>V\u00e4ljas \"log-driver\" m\u00e4\u00e4ratakse plugin ja v\u00e4ljas \"log-opts\" \u2014 selle seadistused. \u00dclaltoodud n\u00e4ites on m\u00e4\u00e4ratud plugin \"json-file\", logi suuruse piirang \u2014 \"max-size\": \"10m\"; failide arvu piirang (ringluse seaded) \u2014 \"max-file\": \"3\"; samuti v\u00e4\u00e4rtused, mis logidele lisanduvad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/0b86671ee8d3d009da29ba66bc29d4eb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00f5ningaid logidraiveri seadistusi saab m\u00e4\u00e4rata k\u00e4surea utiliidi kaudu. See on mugav, kui \u00fchte konteinerit tuleb k\u00e4ivitada teise logidraiveriga. <\/p>\n<p><\/p>\n<p>Nii n\u00e4eb logimise skeem Dockeris v\u00e4lja:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/a45d8e3044780a5b7f20d83e14545d1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas skeem t\u00f6\u00f6tab: logi draiver, n\u00e4iteks json-file, loob faile. Logikogujad (Rsyslog, Fluentd, Logagent ja teised) koguvad need failid ja edastavad need salvestamiseks Elasticu, Sematexti v\u00f5i muudele salvestuskohtadele.<\/p>\n<p><\/p>\n<h2 id=\"osobennosti-logirovaniya-v-kubernetes\">Kubernetes'e logimise omadused<\/h2>\n<p><\/p>\n<p>Lihtsustatult n\u00e4eb logimise skeem Kubernetes'es v\u00e4lja j\u00e4rgmine: on pod, milles t\u00f6\u00f6tab konteiner, ja konteiner saadab logid stdout'i\/stderr'i. Seej\u00e4rel loob Docker faili ja salvestab logid, mida saab hiljem roteerida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/76e6fdbbb9f97851bfa95a7153d8c525.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaatame Kubernetes'e logimise omadusi.<\/p>\n<p><\/p>\n<p><strong>Salvesta logid deployments'ide vahel<\/strong>. See on kohustuslik tingimus \u00f5ige logimise seadistamiseks. Kui logisid ei salvestata juurutamiste vahel, siis uue rakenduse versiooni v\u00e4ljaandmisel kaovad eelmiste logid, samuti toob konteineri taask\u00e4ivitamine kaasa logide kadumise. Kubernetesel on v\u00f5ti &#8212;previous, mis v\u00f5imaldab vaadata rakenduse logisid enne viimast Pod'i taask\u00e4ivitamist, kuid mitte s\u00fcgavamalt.<\/p>\n<p><\/p>\n<p><strong>Koguda logisid k\u00f5igilt instantsidelt<\/strong>. Kui mikroteenuseid majutatakse pilves, vastutab s\u00fcsteemi \u00fcle Cloud Provider. Kui mikroteenused on enda riistvaral, siis peavad lisaks konteinerite logidele olema kogutud ka s\u00fcsteemi logid.<\/p>\n<p><\/p>\n<p>Varem ei olnud mugavaid t\u00f6\u00f6riistu logide kogumiseks nii s\u00fcsteemist kui mikroteenustest. Tavaliselt kogus \u00fcks t\u00f6\u00f6riist s\u00fcsteemi logisid (n\u00e4iteks Rsyslog), teine - logisid Dockerist (n\u00e4iteks journal-bit koos Docker'i logi draiveri seadistusega journald'ile). Prooviti kasutada journal-bit\u2019i, et koguda logisid nii konteineritest (Docker'i logi draiveris m\u00e4rkida, et logid peavad minema journald'isse) kui ka s\u00fcsteemist (CentOS 7-l on juba systemd ja journald). Lahendus on toimiv, kuid mitte ideaalne. Kui logisid on palju, hakkab journal-bit lagima ja s\u00f5numid kaovad.<\/p>\n<p><\/p>\n<p>Katsetamine j\u00e4tkus - ja leiti teine \u200b\u200bmeetod. CentOS 7-s dubleeritakse peamised s\u00fcsteemi logid (messages, audit, secure) var-log'ide kaudu failidena. Dockeris saab samuti seadistada logide salvestamise faile json. Seega saab CentOS 7 ja Docker'i faile koos koguda.<\/p>\n<p><\/p>\n<p>Aja jooksul muutus ELK Stack lahendus populaarseks. See on kombinatsioon mitmest t\u00f6\u00f6riistast: Elasticsearch, Logstash ja Kibana.<\/p>\n<p><\/p>\n<p>Elasticsearch salvestab konteinerite logid, Logstash kogub logisid instantsidelt, Kibana v\u00f5imaldab kokku saada logisid ja koostada nende p\u00f5hjal graafikuid. M\u00f5nda aega kasutati ELK Stack'i aktiivselt, kuid minu arvates j\u00f5uab selle aeg l\u00f5pule. R\u00e4\u00e4gin hiljem, miks.<\/p>\n<p><\/p>\n<p><strong>Lisa metaandmeid<\/strong>. Podid, rakendused, konteinerid v\u00f5ivad olla k\u00e4ivitatud igal pool. Veelgi enam, \u00fchel rakendusel v\u00f5ib olla mitu instantsi. Logid on salvestatud \u00fches formaadis, kuid me peame aru saama, milline replika on tegu, milline Pod seda kirjutab ja millises namespace'is see asub. Seet\u00f5ttu peab logidele lisama metainformatsiooni.<\/p>\n<p><\/p>\n<p><strong>Parsi logisid<\/strong>. L\u00f5bus on see, et logimis- ja j\u00e4relevalves\u00fcsteemi hoolduskulud v\u00f5ivad \u00fcletada peamise rakenduse kulud. Kui teid voolab k\u00fcmneid ja sadu tuhandeid logisid sekundis, tundub see loogiline, kuid siiski tuleb teada piir. \u00dcks viis selle piiri leidmiseks on logide parsimine. <\/p>\n<p><\/p>\n<p>Reeglina ei ole vajalik koguda ja salvestada k\u00f5iki logisid, tuleks salvestada ainult osa \u2014 n\u00e4iteks logid, mille staatus on 'warning' v\u00f5i 'error'. Kui r\u00e4\u00e4kida nginx'i v\u00f5i ingress-kontrollerite logidest, siis tuleks salvestada ainult need, mille staatus erineb 200-st. Kuid see pole universaalne soovitus: kui te ehitate mingil viisil anal\u00fc\u00fcsi nginx'i logide p\u00f5hjal, siis on ilmselgelt m\u00f5istlik neid koguda. <\/p>\n<p><\/p>\n<p>M\u00f5tlematult logide filtreerimist ei soovitata, sest filtreeritud andmed v\u00f5ivad mitte piisata normaalseks anal\u00fc\u00fcsiks. Teiselt poolt, v\u00f5ib olla, et anal\u00fc\u00fctika tuleks viia l\u00e4bi mitte logimise tasemel, vaid m\u00f5\u00f5tmete kogumise tasemel. Siis ei pea salvestama sadu tuhandeid ridu koodiga 200. \u00dcks l\u00e4henemisviis on saada teavet liiklusest ja vigadest ingress-kontrollerite m\u00f5\u00f5tmetest. <\/p>\n<p><\/p>\n<p>Kokkuv\u00f5ttes tuleb siin hoolikalt m\u00f5elda: mida te soovite salvestada ja kui kaua, sest muidu tekib olukord, kus logimis-s\u00fcsteem r\u00f6\u00f6vib ressursse rohkem kui peamine projekt.<\/p>\n<p><\/p>\n<p><strong>Praegu ei ole standardset lahendust logimise jaoks<\/strong>. Erinevalt j\u00e4relevalvest, kus on \u00fcks enimlevinud lahendus Prometheus, ei ole logimisel standardit. <\/p>\n<p><\/p>\n<p>K\u00e4esolevas loengus vaatame kahte t\u00f6\u00f6riista: \u00fcks populaarne ja teine \u2014 \u00fcha populaarsem. Lisaks neile on ka teisi, kuid sellest artiklist me neid ei puuduta.<\/p>\n<p><\/p>\n<p>Arvestades k\u00f5iki eelnevalt k\u00e4sitletud omadusi, v\u00f5ib logimist Kuberneteses n\u00fc\u00fcd kujutada sellise skeemina:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/81f4989c1fb7b1a4ac37524db76fd4e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e4\u00e4b konteineri logi, p\u00f6\u00f6ramine, kuid ilmub kogumise agent, mis kogub logid ja saadab need s\u00e4ilitamiseks (skeemil \u2014 Logging Backend). Agent t\u00f6\u00f6tab igas s\u00f5lmes ja tavaliselt on see k\u00e4ivitatud Kuberneteses.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd vaatame logimise t\u00f6\u00f6riistu.<\/p>\n<p><\/p>\n<h2 id=\"grafana-loki\">Grafana Loki<\/h2>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/oss\/loki\/\">Grafana Loki<\/a><\/noindex> on hiljuti ilmunud, kuid on juba saanud \u00fcsna tuntuks. Selle eelised: lihtne installatsioon, v\u00e4henenud ressursikasutus, ei vaja Elasticsearchi installimist, kuna salvestab andmeid TSDB-sse (aegade seeria andmebaas). Eelmisel artiklil kirjutasin, et sellises andmebaasis salvestab andmeid Prometheus, ja see on \u00fcks paljusid sarnaseid jooni kahe toote vahel. Arendajad isegi v\u00e4idavad, et Loki on \"Prometheus logimise maailmas.\"<\/p>\n<p><\/p>\n<p>V\u00e4ike k\u00f5rvalep\u00f5ige TSDB-st neile, kes ei ole lugenud <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/516748\/\">eelmist artiklit<\/a><\/noindex>: TSDB t\u00e4idab suurep\u00e4raselt suurte andmemahtude, ajaseeriate salvestamise \u00fclesande, kuid ei ole m\u00f5eldud pikaajaliseks salvestamiseks. Kui mingil p\u00f5hjusel peate logisid hoidma rohkem kui kaks n\u00e4dalat, on parem neid edastada teise andmebaasi.<\/p>\n<p><\/p>\n<p>Veel \u00fcks Loki eelis on see, et andmete visualiseerimiseks kasutatakse Grafanat. V\u00e4ga mugav: Grafanas vaatame monitoorimise andmeid ja seal samas, \u00fchendades Loki, vaatame logisid. Logide p\u00f5hjal saab luua grafiike.<\/p>\n<p><\/p>\n<p>Loki arhitektuur n\u00e4eb v\u00e4lja umbes nii: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/8e4ed48dbb84b7813b96728b9efddcec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kasutades DaemonSet-i, paigaldatakse k\u00f5ikidesse klastri serveritesse agent - Promtail v\u00f5i Fluent Bit. Agent kogub logisid. Loki v\u00f5tab need ja salvestab oma TSDB-sse. Logidele lisatakse kohe metainvormatsioon, mis on mugav: saab filtreerida Pods'ide, nimede, konteinerite ja isegi silte j\u00e4rgi.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/docs\/loki\/latest\/installation\/\">Loki installimise juhend<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Loki t\u00f6\u00f6tab tuttavas Grafana liideses. Lokil on isegi oma p\u00e4ringute keel, nimega LogQL - selle nimi ja s\u00fcntaks meenutavad PromQL-i Prometheuses. Loki liideses on p\u00e4ringute n\u00f5uanded, seega ei pea neid meeles pidama.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/docs\/loki\/latest\/logql\/\">Dokumentatsioon LogQL keele jaoks<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/acd3028fa181604be4523096d87e48cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Loki Grafana liideses<\/em><\/p>\n<p><\/p>\n<p>Filtreid kasutades on Lokis v\u00f5imalik leida koodid (\"400\", \"404\" ja muud); vaadata logisid kogu nodest; filtreerida v\u00e4lja k\u00f5ik logid, kus on s\u00f5na \"error\". Kui logile vajutada, avaneb kaardike kogu s\u00fcndmuse teabega.<\/p>\n<p><\/p>\n<p>Lokis on piisavalt t\u00f6\u00f6riistu, mis v\u00f5imaldavad vajalikud logid v\u00e4lja v\u00f5tta, kuigi ausalt \u00f6eldes v\u00f5iks neid tehniliselt olla rohkem. Praegu areneb Loki aktiivselt ja v\u00f5tab populaarsust. <\/p>\n<p><\/p>\n<h2 id=\"elastic--fluent-bit--kibana-efk-stack\">Elastic + Fluent Bit + Kibana (EFK stack)<\/h2>\n<p><\/p>\n<p>EFK stack on klassikalisem ja siiski mitte v\u00e4hem populaarne logimise t\u00f6\u00f6riist. <\/p>\n<p><\/p>\n<p>Artiklis mainitud ELK (Elasticsearch + Logstash + Kibana) on vananenud, kuna Logstash on ebaefektiivne ja ressursimahukas. Selle asemel on levinud kergem ja efektiivsem Fluentd, millele on hiljem lisandunud <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fluentbit.io\/manual\/about\/what-is-fluent-bit\">Fluent Bit<\/a><\/noindex> \u2014 veel kergem ja veel efektiivsem logikogumise agent. <\/p>\n<p><\/p>\n<p>Arendajate v\u00e4itel on Fluent Bit \u00fcle 100 korra efektiivsem kui Fluentd: \"seal, kus Fluentd tarbib 20 MB RAM-i, tarbib Fluent Bit 150 KB\" \u2014 otsekohene tsitaat dokumentatsioonist. Selle t\u00f5ttu on Fluent Bit'i kasutamine sagenenud.<\/p>\n<p><\/p>\n<p>Fluent Bit'il on v\u00e4hem v\u00f5imalusi kui Fluentd'l, kuid ta katab peamised vajadused, seet\u00f5ttu kasutame peamiselt Fluent Bit'i.<\/p>\n<p><\/p>\n<p>EFK stack t\u00f6\u00f6re\u017eiim: agent kogub logisid k\u00f5igist podidest (tavaliselt on see DaemonSet, mis t\u00f6\u00f6tab k\u00f5ikidel klastriserveritel) ja saadab need salvestusse (Elasticsearch, PostgreSQL v\u00f5i Kafka). Kibana \u00fchendub salvestusega ja t\u00f5mbab sealt kogu vajaliku teabe.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/cd5101637d30ab1e5f019fa424147023.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.elastic.co\/kibana\">Kibana<\/a><\/noindex> esitab teabe mugavas veebirakenduses. Seal on diagrammid, filtrid ja palju muud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/523a219739b6e7641694b240c61a15d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Logide p\u00f5hjal saab luua terveid juhtpaneele.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/21b580f8b4871bdda64692563f53303e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"vozmozhnosti-fluent-bit\">Fluent Bit'i v\u00f5imalused<\/h2>\n<p><\/p>\n<p>Kuna Fluent Bit'ist on tavaliselt v\u00e4hem kuulda kui Logstash'ist, vaatame seda veidi l\u00e4hemalt. Fluent Bit'it saab loogiliselt jagada 6 mooduliks, millele saab lisada pluginaid, mis laiendavad Fluent Bit'i funktsioone.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logimine Kubernetes: kuidas koguda, salvestada, anal\u00fc\u00fcsida ja t\u00f6\u00f6delda logisid\" src=\"\/wp-content\/uploads\/2020\/09\/f95a642aad7f5d291e05d8a17d1aaadc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Input moodul<\/strong> kogub logisid failidest, systemd teenustest ja isegi tcp-socket'ist (peab vaid m\u00e4\u00e4rama l\u00f5pp-punkti, ja Fluent Bit hakkab sinna liikuma). Neid v\u00f5imalusi on piisavalt, et logisid koguda nii s\u00fcsteemist kui ka konteineritest.<\/p>\n<p><\/p>\n<p>Tootmis keskkonnas kasutame k\u00f5ige sagedamini pluginaid <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/inputs\/tail\">tail<\/a><\/noindex> (seda saab suunata logifailide kausta) ja <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/inputs\/systemd\">systemd<\/a><\/noindex> (seda saab k\u00e4skida, millistest teenustest logisid koguda).<\/p>\n<p><\/p>\n<p><strong>Parser moodul<\/strong> viib logid \u00fchise vormingusse. Vaikimisi on Nginx'i logid rida. Plugina abil saab seda rida muuta JSON'iks: m\u00e4\u00e4rata v\u00e4ljad ja nende v\u00e4\u00e4rtused. JSON'iga on palju lihtsam t\u00f6\u00f6tada kui teksti logiga, kuna on olemas paindlikumad sorteerimisv\u00f5imalused.<\/p>\n<p><\/p>\n<p><strong>Filter moodul<\/strong>. Sellel tasemel j\u00e4etakse v\u00e4lja ebaolulised logid. N\u00e4iteks saadetakse s\u00e4ilitamiseks logid, millel on v\u00e4\u00e4rtus \"warning\" v\u00f5i kindlate siltidega. Valitud logid suunatakse puhvri.<\/p>\n<p><\/p>\n<p><strong>Buffer moodul<\/strong>. Fluent Bit'il on kaks t\u00fc\u00fcpi puhvrit: m\u00e4lu puhver ja ketaspuhver. Puhver on ajutine logide hoidla, mis on vajalik vigade v\u00f5i t\u00f5rgete korral. K\u00f5ik tahavad RAM-i pealt kokku hoida, seet\u00f5ttu valitakse tavaliselt ketaspuhver. Kuid tuleb arvestada, et enne ketaspuhvri kasutamist laaditakse logid ikkagi esmalt m\u00e4lu.<\/p>\n<p><\/p>\n<p><strong>Routing\/Output moodul<\/strong> sisaldab logide saatmise reegleid ja aadresse. Nagu juba mainitud, on logid v\u00f5imalik saata Elasticsearchi, PostgreSQLi v\u00f5i n\u00e4iteks Kafka'sse. <\/p>\n<p><\/p>\n<p>Huvitav on see, et logisid on v\u00f5imalik saata Fluent Bit'ist Fluentd'sse. Kuna esimene on kergema kaaluga ja v\u00e4hem funktsionaalne, saab l\u00e4bi selle koguda logisid ja saata need Fluentd'sse, kus neid saab t\u00e4nu t\u00e4iendavatele pluginatele edasi t\u00f6\u00f6delda ja saata salvestitesse.<\/p>\n<p><\/p>\n<blockquote><p>Kui plaanite kasutada Elasticsearchi\u2026<\/p>\n<p>L\u00f5petuseks kaks n\u00f5uannet neile, kes plaanivad kasutada Elasticsearchi logide salvestamiseks tootmisre\u017eiimis. <\/p>\n<ol>\n<li>Seadistage teavitused kasutades <noindex><a rel=\"nofollow\" href=\"https:\/\/elastalert.readthedocs.io\/en\/latest\/\">ElastAlert<\/a><\/noindex>. See programm eristab logide \u00fcldvoost olulisi s\u00f5numeid ja saadab neist teateid e-postile v\u00f5i muudele kanalitele. Kahjuks on hiljuti toimunud <em><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Yelp\/elastalert\/issues\/2911\">kurvade uudiste avaldamine, et projekt v\u00f5ib peagi l\u00f5petada oma tegevuse.<\/a><\/noindex><\/em>.<\/li>\n<li>Logide p\u00f6\u00f6ramine kasutades rakendust <noindex><a rel=\"nofollow\" href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/client\/curator\/5.8\/index.html\">Curator<\/a><\/noindex> v\u00f5i p\u00f6\u00f6rdudes Elasticsearchi API poole. Elastic teeb praegu tegelikult olulisi samme indeksite eluts\u00fckli haldamiseks ilma kolmandate osapoolte t\u00f6\u00f6riistade kasutamiseta. \u00dcldiselt ei ole m\u00f5istlik logisid pikka aega hoida: t\u00f5en\u00e4oliselt ei ole mingit logi vajalik kahe n\u00e4dala p\u00e4rast \u2014 kui see t\u00f5eliselt kriitiline on, siis saab see kahe n\u00e4dala jooksul kindlasti t\u00f6\u00f6deldud. \u00c4\u00e4rmisel juhul saab vanad logid arhiveerida ja saata pikaajalisse s\u00e4ilitamisse. Olen kuulnud erilogidest, mida seadus kohustab hoidma kuni 5 aastat. Isiklikult pole ma sellekohasega kokku puutunud, kuid ei seostaks ma sellist info tavaliste logidega, ning v\u00f5ib-olla s\u00e4ilitaksin neid isegi eraldi.<\/li>\n<\/ol>\n<p>\n<\/p><\/blockquote>\n<p>J\u00e4tkub&#8230;<\/p>\n<p><\/p>\n<p><em>Autor: Marsel Ibraev, sertifitseeritud Kubernetes administraator, praktiseeriv insener ettev\u00f5ttes <noindex><a rel=\"nofollow\" href=\"https:\/\/to.slurm.io\/TBhTzQ\">Southbridge<\/a><\/noindex>, esineja ja kursuste arendaja <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/Tinm9w\">Sl\u00fcrm<\/a><\/noindex>.<\/em><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/517636\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u044b \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Docker \u0438 Kubernetes, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Grafana Loki \u0438 \u0441\u0442\u0435\u043a EFK (Elasticsearch + Fluent Bit + Kibana). \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u0432\u044b\u0436\u0438\u043c\u043a\u0430 \u0438\u0437 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u043b\u0435\u043a\u0446\u0438\u0438 \u0448\u043a\u043e\u043b\u044b \u00ab\u0421\u043b\u0451\u0440\u043c\u00bb. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0438 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u2014 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043a\u0443\u0440\u0441 \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":93295,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-93294","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u044b \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Docker \u0438 Kubernetes, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Grafana Loki \u0438 \u0441\u0442\u0435\u043a EFK (Elasticsearch + Fluent Bit + Kibana)..\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: \u043a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c, \u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u044b \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Docker \u0438 Kubernetes, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Grafana Loki \u0438 \u0441\u0442\u0435\u043a EFK (Elasticsearch + Fluent Bit + Kibana)..\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-05T05:42:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-05T05:42:58+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Logimine Kuberneteses: kuidas koguda, salvestada, parsida ja t\u00f6\u00f6delda logisid | ProHoster","description":"Vaatame \u00fcle logimise alused Dockeris ja Kuberneteses ning seej\u00e4rel arutame kahte t\u00f6\u00f6riista, mida v\u00f5ib julgelt tootmisre\u017eiimis kasutada: Grafana Loki ja EFK (Elasticsearch + Fluent Bit + Kibana).","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: \u043a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c, \u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438 | ProHoster","og:description":"\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u044b \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Docker \u0438 Kubernetes, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Grafana Loki \u0438 \u0441\u0442\u0435\u043a EFK (Elasticsearch + Fluent Bit + Kibana)..","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/logirovanie-v-kubernetes-kak-sobirat-hranit-parsit-i-obrabatyvat-logi","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-05T05:42:58+00:00","article:modified_time":"2020-09-05T05:42:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"93294","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:50:29","updated":"2022-09-27 18:43:48","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/93294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=93294"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/93294\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/93295"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=93294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=93294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=93294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}