{"id":32723,"date":"2019-10-31T21:48:35","date_gmt":"2019-10-31T18:48:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada\/"},"modified":"2019-10-31T21:48:35","modified_gmt":"2019-10-31T18:48:35","slug":"yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada","title":{"rendered":"Yuri Bushmelev \"Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve\" \u2014 interpretime t\u00eb raportit","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Loget jan\u00eb nj\u00eb pjes\u00eb e r\u00ebnd\u00ebsishme e sistemit q\u00eb lejon t\u00eb kuptohet n\u00ebse ai funksionon (ose jo) si\u00e7 pritej. N\u00eb kushte t\u00eb arkitektur\u00ebs mikrosh\u00ebrbimesh, puna me loget b\u00ebhet nj\u00eb disiplin\u00eb e ve\u00e7ant\u00eb e nj\u00eb olimpade speciale. Duhet t\u00eb zgjidhen nj\u00eb s\u00ebr\u00eb pyetjesh:<\/p>\n<p><\/p>\n<ul>\n<li>si t\u00eb shkruhen loget nga aplikacioni;<\/li>\n<li>ku t\u00eb shkruhen loget;<\/li>\n<li>si t\u00eb d\u00ebrgohen loget p\u00ebr ruajtje dhe p\u00ebrpunim;<\/li>\n<li>si t\u00eb p\u00ebrpunohen dhe t\u00eb ruhet loget.<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00ebrdorimi i teknologjive t\u00eb njohura t\u00eb kontejnerizimit shton nj\u00eb q\u00ebllim t\u00eb ri ndaj g\u00ebrvishjeve n\u00eb fush\u00ebn e zgjidhjes s\u00eb problemit.<\/p>\n<p><\/p>\n<p>\u041a\u0430\u043a \u0440\u0430\u0437 \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u042e\u0440\u0438\u044f \u0411\u0443\u0448\u043c\u0435\u043b\u0435\u0432\u0430 &#171;\u041a\u0430\u0440\u0442\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u043d\u0430 \u043f\u043e\u043b\u0435 \u0441\u0431\u043e\u0440\u0430 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043b\u043e\u0433\u043e\u0432&#187; <\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"NAeedJv-S3I\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/NAeedJv-S3I\/hqdefault.jpg\" alt=\"Luaj videon\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Kush \u00ebsht\u00eb interesuar, lutem shihni m\u00eb posht\u00eb.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>M\u00eb quajn\u00eb Yuri Bushmelev. Punoj n\u00eb Lazada. Sot do t\u00eb flas p\u00ebr m\u00ebnyr\u00ebn si i kemi b\u00ebr\u00eb loget tona, si i kemi mbledhur, dhe \u00e7far\u00eb shkruajm\u00eb atje. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/ece6053b1027ab3681022049ddcd79ea.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>From where are we? Who are we? Lazada is the number 1 online store in six Southeast Asian countries. All these countries are distributed among our data centers. We currently have a total of 4 data centers. Why is this important? Because certain solutions were determined by the fact that there is a very weak link between the centers. We have a microservices architecture. I was surprised to find that we already have 80 microservices. When I started the task with logs, there were only 20. Plus, there is a pretty large piece of PHP legacy that we also have to live with. All this generates more than 6 million messages per minute across the system as a whole. Next, I will show how we are trying to manage this and why it is so.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/0ba5fcee5064865e836cefd47c40d246.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>We have to live with these 6 million messages. What do we need to do with them? 6 million messages that need to:<\/p>\n<p><\/p>\n<ul>\n<li>send from the application<\/li>\n<li>receive for delivery<\/li>\n<li>deliver for analysis and storage.<\/li>\n<li>t\u00eb analizosh<\/li>\n<li>store somehow.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/a449062193c4b1757a61f5c92e270a74.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kur arritur n\u00eb tre milion mesazhe, kisha nj\u00eb pamje p\u00ebraf\u00ebrsisht t\u00eb till\u00eb. Sepse kemi filluar me ndonj\u00eb cent. \u00cbsht\u00eb e qart\u00eb q\u00eb aty shkruhen log\u00ebt e aplikacioneve. P\u00ebr shembull, nuk mund t\u00eb lidhem me baz\u00ebn e t\u00eb dh\u00ebnave, mund t\u00eb lidhem me baz\u00ebn e t\u00eb dh\u00ebnave, por nuk mund t\u00eb lexoj di\u00e7ka. Por p\u00ebrve\u00e7 k\u00ebsaj, \u00e7do mikrosh\u00ebrbim yn\u00eb shkruan gjithashtu nj\u00eb log akses. \u00c7do k\u00ebrkes\u00eb q\u00eb arrin n\u00eb mikrosh\u00ebrbim, bie n\u00eb log. Pse e b\u00ebjm\u00eb k\u00ebt\u00eb? Zhvilluesit duan t\u00eb ken\u00eb mund\u00ebsin\u00eb p\u00ebr t\u00eb ndjekur. N\u00eb \u00e7do log aksesi ka nj\u00eb fush\u00eb traceid, e cila m\u00eb pas nj\u00eb nd\u00ebrfaqe e ve\u00e7ant\u00eb e zhvillon t\u00eb gjith\u00eb k\u00ebt\u00eb zinxhir dhe tregon bukur gjurmimin. Gjurmimi tregon se si kaloi k\u00ebrkesa, dhe kjo ndihmon zhvilluesit tan\u00eb t\u00eb p\u00ebrballen m\u00eb shpejt me \u00e7do gj\u00eb t\u00eb pakuptuar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/e13a2d37ce57e894d023ad405a2b5200.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si t\u00eb jetojm\u00eb me k\u00ebt\u00eb? Tani do t\u00eb p\u00ebrmend n\u00eb p\u00ebrmbledhje nj\u00eb s\u00ebr\u00eb opsionesh \u2014 si \u00ebsht\u00eb zgjidhur kjo problematik\u00eb. Si t\u00eb zgjidhim problemin e mbledhjes, transferimit dhe ruajtjes s\u00eb log\u00ebve. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/60af5e5db804770295741995adb37d90.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si t\u00eb shkruajm\u00eb nga aplikacioni? \u00cbsht\u00eb e qart\u00eb q\u00eb ka m\u00ebnyra t\u00eb ndryshme. N\u00eb ve\u00e7anti, ka praktika m\u00eb t\u00eb mira, si\u00e7 na thon\u00eb shok\u00ebt e njohur. Ka shkoll\u00ebn e vjet\u00ebr n\u00eb dy variante, si\u00e7 na kan\u00eb treguar pleqt\u00eb. Ka edhe m\u00ebnyra t\u00eb tjera. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/deab57e4ac0472a8591c0fad9e9f2910.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me sjelljen e log\u00ebve \u00ebsht\u00eb nj\u00eb situat\u00eb e ngjashme. Ka pak zgjidhje p\u00ebr k\u00ebt\u00eb pjes\u00eb t\u00eb ve\u00e7ant\u00eb. Ka m\u00eb shum\u00eb tani, por akoma jo shum\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/8a6004aaeb931332983a975d0fa5c1d6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por me shp\u00ebrndarjen dhe analiz\u00ebn e m\u00ebvonshme \u2014 numri i variacioneve fillon t\u00eb shp\u00ebrthej\u00eb. Nuk do t\u00eb p\u00ebrshkruaj \u00e7do variant tani. Mendoj se variantet kryesore jan\u00eb t\u00eb njohura p\u00ebr t\u00eb gjith\u00eb ata q\u00eb jan\u00eb interesuar p\u00ebr tem\u00ebn.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/6a0b64c7e58bc59f56aaddd27112ec51.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Do t\u00eb tregoj se si e b\u00ebm\u00eb k\u00ebt\u00eb n\u00eb Lazada dhe si e filluam k\u00ebt\u00eb gjith\u00e7ka. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/20f3aa5ceea8b28733ce5399bc30f5b5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb vit m\u00eb par\u00eb erdha n\u00eb Lazada dhe m\u00eb d\u00ebrguan n\u00eb projektin p\u00ebr log\u00ebt. Ajo ishte pak si kjo. Logu nga aplikacioni shkruhej n\u00eb stdout dhe stderr. T\u00eb gjith\u00eb e b\u00ebn\u00eb sipas mod\u00ebs. Por m\u00eb pas zhvilluesit e hodh\u00ebn jasht\u00eb rrjedhave standarde, dhe t\u00eb tjer\u00ebt si specialist\u00ebt e infrastruktur\u00ebs do ta kuptonin ndonj\u00ebher\u00eb. Mes specialist\u00ebve t\u00eb infrastruktur\u00ebs dhe zhvilluesve ka gjithashtu publikues, t\u00eb cil\u00ebt than\u00eb: \u00abehe... mir\u00eb, le ta vendosim thjesht n\u00eb nj\u00eb skedar duke p\u00ebrdorur shell, dhe mbarojm\u00eb\u00bb. Dhe duke qen\u00eb se \u00e7do gj\u00eb ndodhte n\u00eb nj\u00eb kontejner, e vendos\u00ebn direkt n\u00eb kontejner, e mapuan brenda katalogut dhe e vendos\u00ebn atje. Mendoj se \u00ebsht\u00eb e qart\u00eb se \u00e7far\u00eb rezultoi nga kjo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/d92e02c18a4c683c9389321e4d5412df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00eb shohim pak m\u00eb larg. Si i d\u00ebrguam k\u00ebto loge. Diku dikush zgjodhi td-agent, i cili n\u00eb t\u00eb v\u00ebrtet\u00eb \u00ebsht\u00eb fluentd, por jo plot\u00ebsisht fluentd. Un\u00eb nuk e kuptova marr\u00ebdh\u00ebnien mes k\u00ebtyre dy projekteve, por duket se jan\u00eb p\u00ebr t\u00eb nj\u00ebjt\u00ebn gj\u00eb. Dhe ky fluentd, i shkruar n\u00eb Ruby, lexonte skedar\u00ebt e logeve dhe i analizonte ato n\u00eb JSON me disa regulat. M\u00eb pas i d\u00ebrgonte n\u00eb Kafka. Madje n\u00eb Kafka, p\u00ebr \u00e7do API kishim 4 tema t\u00eb ve\u00e7anta. Pse 4? Sepse kishte live, kishte staging, dhe sepse kishte stdout dhe stderr. Zhvilluesit i krijonin ato, nd\u00ebrsa infrastruktor\u00ebt duhej t'i krijonin n\u00eb Kafka. Madje, Kafka kontrollohej nga nj\u00eb departament tjet\u00ebr. Prandaj, duhej t\u00eb krijohej nj\u00eb bilet\u00eb p\u00ebr t\u00eb krijuar 4 tema p\u00ebr \u00e7do API atje. T\u00eb gjith\u00eb e harronin k\u00ebt\u00eb. Pra, n\u00eb p\u00ebrgjith\u00ebsi, ishte nj\u00eb kaos i madh. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/3130f9ebfda22713cffacf10db45ca89.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb b\u00ebm\u00eb m\u00eb pas me k\u00ebt\u00eb? Ne e d\u00ebrguam at\u00eb n\u00eb Kafka. M\u00eb pas, nga Kafka, gjysma e logeve shkonte n\u00eb Logstash. Gjysma tjet\u00ebr e logeve ndaheshin. Nj\u00eb pjes\u00eb shkonte n\u00eb nj\u00eb Graylog, nj\u00eb pjes\u00eb \u2013 n\u00eb Graylog tjet\u00ebr. N\u00eb fund, t\u00eb gjitha k\u00ebto shkonte n\u00eb nj\u00eb grup Elasticsearch. Dometh\u00ebn\u00eb, gjith\u00eb ky kaos p\u00ebrfundonte atje. K\u00ebshtu nuk \u00ebsht\u00eb e drejt\u00eb t\u00eb b\u00ebhet!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/98bf4811c102fc12fcd1114c25886b69.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja, k\u00ebshtu duket kur e shikon nga lart. Mos e b\u00ebni k\u00ebshtu! K\u00ebtu jan\u00eb t\u00eb sh\u00ebnuara menj\u00ebher\u00eb me numra vendet problematike. N\u00eb t\u00eb v\u00ebrtet\u00eb ka m\u00eb shum\u00eb, por 6 jan\u00eb ato q\u00eb jan\u00eb v\u00ebrtet problematike dhe me t\u00eb cilat duhet t\u00eb merret di\u00e7ka. P\u00ebr to do t\u00eb flas ve\u00e7mas tani. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/69f7682e6677bdda3068d6dea4db7732.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu (1,2,3) ne shkruajm\u00eb skedar\u00ebt dhe, p\u00ebr pasoj\u00eb, k\u00ebtu ka tri kurthe menj\u00ebher\u00eb. <\/p>\n<p><\/p>\n<p>E para (1) \u2014 \u00ebsht\u00eb se duhet ti shkruajm\u00eb diku. Nuk gjithmon\u00eb do t\u00eb doja t\u00eb jepja API-n\u00eb mund\u00ebsin\u00eb t\u00eb shkruaj\u00eb drejtp\u00ebrdrejt n\u00eb skedar. Preferohej q\u00eb API t\u00eb ishte e izoluar n\u00eb nj\u00eb kontejner, e m\u00eb e mira \u2013 t\u00eb ishte read-only. Un\u00eb jam administrator sistemesh, prandaj kam nj\u00eb perspektiv\u00eb pak m\u00eb ndryshe p\u00ebr k\u00ebto gj\u00ebra.<\/p>\n<p><\/p>\n<p>Momenti i dyt\u00eb (2.3) \u2014 na vijn\u00eb shum\u00eb k\u00ebrkesa n\u00eb API. API shkruan shum\u00eb t\u00eb dh\u00ebna n\u00eb skedar. Skedar\u00ebt rriten. Na duhen t'i rrotullojm\u00eb. Sepse p\u00ebrndryshe nuk do t\u00eb ket\u00eb disqe t\u00eb mjaftueshme. T\u00eb rrotullohen \u00ebsht\u00eb e komplikuar, sepse ato krijohen me nj\u00eb redirect p\u00ebrmes shell n\u00eb nj\u00eb katalog. Nuk mund ta rrotullojm\u00eb at\u00eb. Nuk mund t\u00eb k\u00ebrkosh nga aplikacioni q\u00eb t\u00eb riv\u00ebr\u00eb descriptor\u00ebt. Sepse zhvilluesit do t\u00eb t\u00eb shikojn\u00eb si budalla: \"Cilat descriptor\u00eb? Ne shkruajm\u00eb n\u00eb stdout\". Infrastrukturist\u00ebt b\u00ebn\u00eb copytruncate n\u00eb logrotate, q\u00eb thjesht krijon nj\u00eb kopje t\u00eb skedarit dhe trim originalin. Duke qen\u00eb se, nd\u00ebrmjet k\u00ebtyre proceseve t\u00eb kopjimit zakonisht mbaron hap\u00ebsira n\u00eb disk.<\/p>\n<p><\/p>\n<p>(4) Ne kemi pasur formate t\u00eb ndryshme n\u00eb API t\u00eb ndryshme. Ato paksa ndaheshin, por duhej t\u00eb shkruhej regexp i ndrysh\u00ebm. Pasiq\u00eb gjith\u00e7ka kjo administrohej nga Puppet, kishte nj\u00eb grup t\u00eb madh klasash me problemet e veta. P\u00ebr m\u00eb tep\u00ebr, td-agent shumic\u00ebn e koh\u00ebs mund t\u00eb konsumonte shum\u00eb memorie, t\u00eb ngadal\u00ebsohej, ose thjesht t\u00eb b\u00ebnte sikur po punonte dhe t\u00eb mos b\u00ebnte asgj\u00eb. Nga jasht\u00eb, p\u00ebr t\u00eb kuptuar q\u00eb ai nuk po b\u00ebnte asgj\u00eb ishte e pamundur. N\u00eb rastin m\u00eb t\u00eb mir\u00eb, ai do t\u00eb binte dhe dikush do ta ngrinte p\u00ebrs\u00ebri. Sakt\u00ebsisht, do t\u00eb vinte nj\u00eb alert dhe dikush do t\u00eb shkonte ta ngrinte me duar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/424cda2b60e9e5669b7ef2b34ca74e48.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>(6) Po t\u00eb gjitha, ky ishte elasticsearch. Sepse, ishte nj\u00eb version i vjet\u00ebr. Sepse, nuk kishim mjesht\u00ebr t\u00eb dedikuar n\u00eb at\u00eb koh\u00eb. Kishim log-e t\u00eb ndryshme, ku fushat mund t\u00eb p\u00ebrputheshin. Log-e t\u00eb ndryshme nga aplikacione t\u00eb ndryshme mund t\u00eb shkruheshin me emra t\u00eb nj\u00ebjt\u00eb fushe, por brenda mund t\u00eb kishte t\u00eb dh\u00ebna t\u00eb ndryshme. K\u00ebshtu q\u00eb, nj\u00eb log arrin me Integer n\u00eb fush\u00ebn, p\u00ebr shembull, nivel. Nj\u00eb log tjet\u00ebr arrin me String n\u00eb fush\u00ebn nivel. N\u00eb munges\u00eb t\u00eb nj\u00eb mapimi statik, ndodh nj\u00eb gj\u00eb e mrekullueshme. N\u00ebse pas rotacionit t\u00eb indeksit n\u00eb elasticsearch, ndjenja e par\u00eb \u00ebsht\u00eb nj\u00eb mesazh me nj\u00eb varg, at\u00ebher\u00eb ne jetojm\u00eb normalisht. Por n\u00ebse e para ka qen\u00eb me Integer, at\u00ebher\u00eb t\u00eb gjitha mesazhet q\u00eb vijojn\u00eb me String thjesht hidhen posht\u00eb. Sepse tipi i fush\u00ebs nuk p\u00ebrputhet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/bc869f827bed326792857113191bb028.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Filluam t\u00eb b\u00ebnim k\u00ebto pyetje. Vendos\u00ebm t\u00eb mos k\u00ebrkojm\u00eb fajtor\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/a071a4b38462f249339c988c35463639.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por kaq\u00eb di\u00e7ka duhet b\u00ebr\u00eb! Nj\u00eb fakt i qart\u00eb \u00ebsht\u00eb se duhet t\u00eb krijojm\u00eb standarde. Disa standarde kemi pasur tashm\u00eb. Disa i kemi krijuar m\u00eb von\u00eb. Fatmir\u00ebsisht, formati i nj\u00ebjt\u00eb i skedar\u00ebve t\u00eb logeve p\u00ebr t\u00eb gjith\u00eb API-t\u00eb ishte miratuar deri n\u00eb at\u00eb koh\u00eb. Ai \u00ebsht\u00eb p\u00ebrshkruar direkt n\u00eb standardet e nd\u00ebrveprimit t\u00eb sh\u00ebrbimeve. Prandaj, ata q\u00eb duan t\u00eb marrin loget duhet t'i shkruajn\u00eb ato n\u00eb k\u00ebt\u00eb format. N\u00ebse ndokush nuk i shkruan loget n\u00eb k\u00ebt\u00eb format, at\u00ebher\u00eb ne nuk garantojm\u00eb asgj\u00eb. <\/p>\n<p><\/p>\n<p>M\u00eb pas, do t\u00eb doja t\u00eb krijonim nj\u00eb standard t\u00eb vet\u00ebm p\u00ebr metodat e regjistrimit, d\u00ebrgimit dhe mbledhjes s\u00eb logeve. N\u00eb thelb, ku t'i shkruajm\u00eb dhe \u00e7far\u00eb t\u00eb p\u00ebrdorim p\u00ebr t'i d\u00ebrguar ato. Situata ideale \u00ebsht\u00eb kur n\u00eb projekte p\u00ebrdoret e nj\u00ebjta bibliotek\u00eb. K\u00ebshtu, ka nj\u00eb bibliotek\u00eb t\u00eb ve\u00e7ant\u00eb p\u00ebr regjistrimin n\u00eb Go, ka nj\u00eb bibliotek\u00eb t\u00eb ve\u00e7ant\u00eb p\u00ebr PHP. T\u00eb gjith\u00eb ata q\u00eb kemi \u2014 duhet t'i p\u00ebrdorin. M\u00eb aktualisht do t\u00eb thosha se p\u00ebr rreth 80% \u00ebsht\u00eb arritur. Por disa vazhdojn\u00eb t\u00eb han\u00eb kaktus.<\/p>\n<p><\/p>\n<p>Dhe atje (n\u00eb slajd) fillon t\u00eb shfaqet me v\u00ebshtir\u00ebsi \"SLA p\u00ebr dor\u00ebzimin e log\u00ebve\". Aktualisht nuk e kemi, por po punojm\u00eb p\u00ebr k\u00ebt\u00eb. Sepse \u00ebsht\u00eb shum\u00eb e dobishme kur infrastruktura thot\u00eb se n\u00ebse shkruani n\u00eb nj\u00eb format t\u00eb till\u00eb n\u00eb nj\u00eb vend t\u00eb till\u00eb dhe jo m\u00eb shum\u00eb se N mesazhe n\u00eb sekond\u00eb, at\u00ebher\u00eb me nj\u00eb ndihm\u00eb t\u00eb till\u00eb do ta dor\u00ebzojm\u00eb atje. Kjo largon shum\u00eb shqet\u00ebsime. N\u00ebse ka SLA, at\u00ebher\u00eb \u00ebsht\u00eb thjesht fantastike!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/a887aceac13135afe90bb5f5a5ec1d26.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si filluam t\u00eb zgjidhim problemin? Problemi kryesor ishte me td-agent. Nuk ishte e qart\u00eb se ku po shkonin log\u00ebt tan\u00eb. A po d\u00ebrgoheshin? A po grumbulloheshin? Ku ishin ata? Prandaj, hapi i par\u00eb ishte t\u00eb z\u00ebvend\u00ebsonim td-agent. Disa mund\u00ebsi p\u00ebr at\u00eb \u00e7far\u00eb t\u00eb vendosnim n\u00eb vend t\u00eb tij, shkurtimisht i kam skicuar k\u00ebtu.<\/p>\n<p><\/p>\n<p>Fluentd. S\u00eb pari, e kam hasur n\u00eb pun\u00ebn time t\u00eb m\u00ebparshme dhe atje shpesh kishte r\u00ebnie. S\u00eb dyti, \u00ebsht\u00eb e nj\u00ebjta gj\u00eb, vet\u00ebm q\u00eb n\u00eb profil. <\/p>\n<p><\/p>\n<p>Filebeat. \u00c7far\u00eb e b\u00ebri t\u00eb p\u00ebrshtatsh\u00ebm p\u00ebr ne? Sepse \u00ebsht\u00eb n\u00eb Go dhe ne kemi nj\u00eb eksperienc\u00eb t\u00eb madhe n\u00eb Go. Pra, n\u00eb rast se ndodhte ndonj\u00eb gj\u00eb, mund t\u00eb e modifikonim n\u00eb nj\u00eb m\u00ebnyr\u00eb p\u00ebr ne. Prandaj nuk e mor\u00ebm. Q\u00eb t\u00eb mos kishte asnj\u00eb tundim p\u00ebr ta riprogramuar p\u00ebr ne. <\/p>\n<p><\/p>\n<p>Nj\u00eb zgjidhje e qart\u00eb p\u00ebr administrat\u00ebn mbetet nj\u00eb s\u00ebr\u00eb sish log-esh n\u00eb nj\u00eb num\u00ebr t\u00eb till\u00eb (syslog-ng\/rsyslog\/nxlog).<\/p>\n<p><\/p>\n<p>Ose t\u00eb shkruash di\u00e7ka t\u00ebnde, por k\u00ebt\u00eb e hodh\u00ebm posht\u00eb, ashtu si dhe filebeat. N\u00ebse do t\u00eb shkruash di\u00e7ka, le t\u00eb jet\u00eb di\u00e7ka e dobishme p\u00ebr biznesin. P\u00ebr d\u00ebrgimin e log-eve \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb marr\u00ebsh di\u00e7ka t\u00eb gatshme.<\/p>\n<p><\/p>\n<p>Prandaj, zgjedhja faktikisht u reduktua n\u00eb zgjedhjen mes syslog-ng dhe rsyslog. U p\u00ebrkul\u00ebm drejt rsyslog thjesht sepse n\u00eb Puppet kishim klasa p\u00ebr rsyslog dhe nuk gjet\u00ebm ndonj\u00eb ndryshim t\u00eb qart\u00eb midis tyre. Atje \u00ebsht\u00eb syslog, k\u00ebtu \u00ebsht\u00eb syslog. Po, disa kan\u00eb dokumentacion m\u00eb t\u00eb keq, disa m\u00eb t\u00eb mir\u00eb. Nj\u00ebri e b\u00ebn k\u00ebt\u00eb, tjetri at\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/a88116711b547fa5b2b34daf72cc4220.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe pak p\u00ebr rsyslog. S\u00eb pari, \u00ebsht\u00eb i shk\u00eblqyer, sepse ka shum\u00eb module. Ka nj\u00eb RainerScript t\u00eb kuptuesh\u00ebm nga njer\u00ebzit (nj\u00eb gjuh\u00eb moderne konfigurimi). Nj\u00eb p\u00ebrfitim t\u00eb shk\u00eblqyer \u00ebsht\u00eb se mund\u00ebm ta simulonim sjelljen e td-agent me mjete t\u00eb zakonshme, dhe p\u00ebr aplikacionet nuk ka ndryshuar gjith\u00e7ka. Pra, ne e z\u00ebvend\u00ebsojm\u00eb td-agent me rsyslog, nd\u00ebrsa gjith\u00e7ka tjet\u00ebr mbetet e pandryshuar. Dhe menj\u00ebher\u00eb marrim nj\u00eb d\u00ebrges\u00eb funksionale. M\u00eb tej, mmnormalize \u00ebsht\u00eb nj\u00eb gj\u00eb e mrekullueshme n\u00eb rsyslog. Lejon t\u00eb parse log-et, por jo me Grok ose regexp. Kreon nj\u00eb tree sintaksor abstrakt. Parse log-et pak si\u00e7 nj\u00eb kompilator parse kodin burimor. Kjo lejon operimin shum\u00eb t\u00eb shpejt\u00eb, konsumon pak CPU dhe, gjithsesi, \u00ebsht\u00eb v\u00ebrtet nj\u00eb gj\u00eb shum\u00eb e shk\u00eblqyer. Ka nj\u00eb mori p\u00ebrfitimesh t\u00eb tjera. Nuk do t\u00eb ndalem n\u00eb to.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/ca811be9f9ff318fb8c8bbf3dc45a038.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rsyslog ka gjithashtu nj\u00eb mori disavantazhesh. Ato jan\u00eb p\u00ebraf\u00ebrsisht t\u00eb ngjashme me p\u00ebrfitimet. Problemet kryesore jan\u00eb se duhen ditur m\u00ebnyrat e p\u00ebrgatitjes, dhe duhet se\u00e7i versioni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/034f588e0834b1d4e4873d9c3dbd0873.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne vendos\u00ebm q\u00eb do t\u00eb shkruajm\u00eb log\u00ebt n\u00eb unix socket. Ashtu si\u00e7 nuk do t\u00eb p\u00ebrdorim \/dev\/log, sepse aty kemi nj\u00eb kaos nga log\u00ebt sistemor\u00eb, ku \u00ebsht\u00eb journald n\u00eb k\u00ebt\u00eb pipeline. Prandaj, le t\u00eb shkruajm\u00eb n\u00eb nj\u00eb socket t\u00eb personalizuar. Do ta lidhim me nj\u00eb set rregullash t\u00eb ve\u00e7anta. Nuk do t\u00eb lejojm\u00eb asgj\u00eb t\u00eb nd\u00ebrhyj\u00eb. Do t\u00eb jet\u00eb gjith\u00e7ka e qart\u00eb dhe e kuptueshme. K\u00ebshtu pra e b\u00ebm\u00eb. Katalogu me k\u00ebto socket \u00ebsht\u00eb standardizuar dhe kalon n\u00eb t\u00eb gjitha kontenier\u00ebt. Kontenier\u00ebt mund t\u00eb shohin socket-in q\u00eb iu nevojitet, ta hapin dhe t\u00eb shkruajn\u00eb n\u00eb t\u00eb. <\/p>\n<p><\/p>\n<p>Pse jo nj\u00eb skedar? Sepse t\u00eb gjith\u00eb kan\u00eb lexuar <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/280606\/\">artikullin mbi Badushk\u00ebn<\/a><\/noindex>, i cili p\u00ebrpiqej t\u00eb kalonte nj\u00eb skedar n\u00eb docker, dhe doli se pas ril\u00ebshimit t\u00eb rsyslog ndryshonte file descriptor, dhe docker e humbiste at\u00eb skedar. Ai mbante t\u00eb hapur di\u00e7ka tjet\u00ebr, por jo at\u00eb socket ku shkruhet. Ne vendos\u00ebm q\u00eb ta kalojm\u00eb k\u00ebt\u00eb problem dhe, p\u00ebrve\u00e7 k\u00ebsaj, t\u00eb kalojm\u00eb problemin e bllokimit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/78db15581a68ce16d11f5ebe7e6fe04e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rsyslog kryen veprimet e sh\u00ebnuara n\u00eb slajd dhe i d\u00ebrgon log\u00ebt ose n\u00eb relay ose n\u00eb Kafka. Kafka korrespondon me m\u00ebnyr\u00ebn e vjet\u00ebr. Relay \u2014 p\u00ebrpjekja ime p\u00ebr t\u00eb p\u00ebrdorur vet\u00ebm rsyslog p\u00ebr d\u00ebrgimin e log\u00ebve. Pa Message Queue, me mjetet standarde t\u00eb rsyslog. N\u00eb parim, kjo funksionon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/e61a25005ecbdc86d9de3215ee6fb97e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por\u00eb e r\u00ebnd\u00ebsishme \u00ebsht\u00eb se si t'i futim ato m\u00eb von\u00eb n\u00eb k\u00ebt\u00eb pjes\u00eb (Logstash\/Graylog\/ES). Kjo pjes\u00eb (rsyslog-rsyslog) p\u00ebrdoret midis qendrav\u00eb t\u00eb t\u00eb dh\u00ebnave. K\u00ebtu \u00ebsht\u00eb nj\u00eb lidhje e kompresuar TCP, e cila lejon kursimin e bandwidth-it dhe, p\u00ebr pasoj\u00eb, rrit mund\u00ebsin\u00eb q\u00eb t\u00eb marrim ndonj\u00eb regjistrim nga nj\u00eb qend\u00ebr e t\u00eb dh\u00ebnave tjet\u00ebr n\u00eb kushte kur kanali \u00ebsht\u00eb i ngarkuar. Sepse, kemi Indonezin\u00eb, ku gjith\u00e7ka \u00ebsht\u00eb keq. Aty ka nj\u00eb problem t\u00eb vazhduesh\u00ebm.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/7509ba360be2db4dec0c8679225d285f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne u menduam p\u00ebr se si ta monitorojm\u00eb n\u00eb fakt, me sa probabilitet regjistrimet q\u00eb i kemi sh\u00ebnuar nga aplikacioni arrijn\u00eb n\u00eb at\u00eb fund? Vendos\u00ebm t\u00eb krijojm\u00eb \u043c\u0435\u0442\u0440\u0438\u043a\u0438. Rsyslog ka modulin e vet p\u00ebr mbledhjen e statistikave, n\u00eb t\u00eb cilin ka disa num\u00ebrues. P\u00ebr shembull, mund t\u00eb tregoj\u00eb madh\u00ebsin\u00eb e radh\u00ebs, ose sa mesazhe kan\u00eb ardhur n\u00eb nj\u00eb veprim t\u00eb till\u00eb. Nga ato mund t\u00eb marrim di\u00e7ka. P\u00ebrve\u00e7 k\u00ebsaj, ka num\u00ebrues t\u00eb personalizuar q\u00eb mund t\u00eb konfigurohen, dhe ai do t'ju tregoj\u00eb, p\u00ebr shembull, numrin e mesazheve q\u00eb ka regjistruar nj\u00eb API t\u00eb caktuar. Pastaj, kam shkruar rsyslog_exporter n\u00eb Python, dhe e d\u00ebrguam gjith\u00e7ka n\u00eb Prometheus dhe nd\u00ebrtuam grafika. M\u00eb shum\u00eb do donim metricat e Graylog, por p\u00ebr momentin nuk kemi arritur t'i konfigurim.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/ef9bd61fc43e056b4a56240c85e7fd20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb probleme ke hasur? Problemet kan\u00eb lindur nga fakti se ne zbulonim (papritmas!) se API-t\u00eb tona Live d\u00ebrgojn\u00eb 50,000 mesazhe n\u00eb sekond\u00eb. Kjo \u00ebsht\u00eb vet\u00ebm p\u00ebr API-t\u00eb Live, pa t\u00eb staging. Nd\u00ebrsa Graylog na tregon vet\u00ebm 12,000 mesazhe n\u00eb sekond\u00eb. Dhe lind nj\u00eb pyetje e arsyeshme, ku jan\u00eb mbeturinat? Nga kjo arrit\u00ebm n\u00eb p\u00ebrfundimin se Graylog thjesht nuk po merr dot. I analizuam dhe, v\u00ebrtet, Graylog me Elasticsearch nuk po p\u00ebrballonin k\u00ebt\u00eb fluks.<\/p>\n<p><\/p>\n<p>Pastaj, zbulime t\u00eb tjera q\u00eb b\u00ebm\u00eb gjat\u00eb procesit.<\/p>\n<p><\/p>\n<p>Shkrimi n\u00eb soket \u00ebsht\u00eb bllokuar. Si ndodhi kjo? Kur p\u00ebrdorja rsyslog p\u00ebr d\u00ebrgim, n\u00eb nj\u00eb moment kanali yn\u00eb midis qendrave t\u00eb t\u00eb dh\u00ebnave d\u00ebshtoi. D\u00ebrgesa ndaloi n\u00eb nj\u00eb vend, d\u00ebrgesa ndaloi n\u00eb nj\u00eb vend tjet\u00ebr. T\u00eb gjitha k\u00ebto arrit\u00ebn tek makina me API, t\u00eb cilat shkruajn\u00eb n\u00eb soketin rsyslog. Aty u plot\u00ebsua radh\u00eb. Pastaj u plot\u00ebsua radh\u00eb p\u00ebr t\u00eb shkruar n\u00eb unix soket, i cili parazgjedhje ka 128 paketa. Dhe shkrimi i ardhsh\u00ebm n\u00eb aplikacion bllokohet. Kur shikuam n\u00eb bibliotek\u00ebn q\u00eb p\u00ebrdorim n\u00eb aplikacionet ton\u00eb n\u00eb Go, atje ishte shkruar q\u00eb shkrimi n\u00eb soket b\u00ebhet n\u00eb m\u00ebnyr\u00eb jo-bllokuese. Ne ishim t\u00eb sigurt q\u00eb asgj\u00eb nuk bllokohej. Sepse ne kishim lexuar <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/280606\/\">artikullin mbi Badushk\u00ebn<\/a><\/noindex>, q\u00eb shkroi p\u00ebr k\u00ebt\u00eb. Por ka nj\u00eb moment. Rreth k\u00ebtij thirrjeje kishte nj\u00eb cik\u00ebl t\u00eb pafund, ku vazhdimisht po p\u00ebrpiqeshim t\u00eb futnim mesazhin n\u00eb soket. K\u00ebt\u00eb nuk e v\u00ebm\u00eb re. Na duhej t\u00eb rishkruanim bibliotek\u00ebn. Q\u00eb at\u00ebher\u00eb ajo \u00ebsht\u00eb ndryshuar disa her\u00eb, por tani ne e kemi eliminuar bllokimin n\u00eb t\u00eb gjitha n\u00ebn sistemet. Prandaj, mund t\u00eb ndalojm\u00eb rsyslog-un dhe asgj\u00eb nuk do t\u00eb d\u00ebshtoj\u00eb.<\/p>\n<p><\/p>\n<p>Duhet t\u00eb monitorojm\u00eb madh\u00ebsin\u00eb e radh\u00ebve, q\u00eb ndihmon p\u00ebr t\u00eb mos shkelur n\u00eb k\u00ebto gracka. S\u00eb pari, ne mund t\u00eb monitorojm\u00eb kur fillojm\u00eb t\u00eb humbasim mesazhe. S\u00eb dyti, mund t\u00eb monitorojm\u00eb n\u00ebse kemi probleme me d\u00ebrgesat n\u00eb p\u00ebrgjith\u00ebsi.<\/p>\n<p><\/p>\n<p>Dhe nj\u00eb moment tjet\u00ebr i pak\u00ebndsh\u00ebm \u2014 amplifikimi i 10-fish n\u00eb arkitektur\u00ebn mikro-sh\u00ebrbimore \u00ebsht\u00eb shum\u00eb i leht\u00eb. Ne nuk kemi aq shum\u00eb k\u00ebrkesa hyr\u00ebse, por p\u00ebr shkak t\u00eb grafit, p\u00ebrmes t\u00eb cilit kalojn\u00eb k\u00ebto mesazhe m\u00eb tej, p\u00ebr shkak t\u00eb logjeve t\u00eb aksesit, ne realisht rrisim ngarkes\u00ebn e logeve p\u00ebraf\u00ebrsisht 10 her\u00eb. Fatkeq\u00ebsisht nuk e kam pasur koh\u00eb t\u00eb llogaris numrat e sakt\u00eb, por mikro-sh\u00ebrbimet \u2014 jan\u00eb t\u00eb till\u00eb. Duhet ta kemi k\u00ebt\u00eb parasysh. Pra, p\u00ebr momentin, n\u00ebn sistemi i mbledhjes s\u00eb logeve \u00ebsht\u00eb m\u00eb i ngarkuari n\u00eb Lazada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/d76c6d91613ff77c41b8985cee83218f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si duhet t\u00eb zgjidhni problemin e elasticsearch? N\u00ebse keni nevoj\u00eb p\u00ebr t\u00eb marr\u00eb shpejt log-et n\u00eb nj\u00eb vend, q\u00eb t\u00eb mos b\u00ebni sh\u00ebtitje n\u00ebp\u00ebr t\u00eb gjitha makinat dhe t\u00eb mos i mbledhni atje, p\u00ebrdorni nj\u00eb depo t\u00eb skedar\u00ebve. Kjo funksionon me siguri. Mund ta b\u00ebni nga \u00e7do server. Thjesht vendosni disqet atje dhe instaloni syslog. Pas k\u00ebsaj, do t\u00eb keni me siguri t\u00eb gjitha log-et n\u00eb nj\u00eb vend. M\u00eb pas, do t\u00eb jeni n\u00eb gjendje t\u00eb konfiguroheni me qet\u00ebsi p\u00ebr elasticsearch, graylog, di\u00e7ka tjet\u00ebr. Por do t\u00eb keni tashm\u00eb t\u00eb gjitha log-et, dhe madje, mund t\u2019i ruani sa mjafton kapaciteti i disqeve.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/571297f25de76958769f3a4b9bfbf5b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb momentin q\u00eb po flisja, skema kishte marr\u00eb pamjen e k\u00ebsaj. Ne praktikisht kemi ndaluar shkrimin n\u00eb skedar\u00eb. Tani, p\u00ebr momentin, do t\u00eb ndalojm\u00eb dhe mbeturinat. N\u00eb makinat lokale, ku jan\u00eb aktivizuar API-t\u00eb, ne do t\u00eb ndalojm\u00eb shkrimin n\u00eb skedar\u00eb. S\u00eb pari, ekziston nj\u00eb depo skedar\u00ebsh q\u00eb funksionon shum\u00eb mir\u00eb. S\u00eb dyti, n\u00eb k\u00ebto makina vazhdimisht po i mbaron hap\u00ebsira, dhe duhet ta monitorojm\u00eb vazhdimisht.<\/p>\n<p><\/p>\n<p>Kjo pjes\u00eb me Logstash dhe Graylog, v\u00ebrtet \u00ebsht\u00eb problematike. Pra, duhet ta heqim at\u00eb. Duhet t\u00eb zgjedhim vet\u00ebm nj\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/4a285577708aa1c55c16a72364fa8072.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne vendos\u00ebm t\u00eb heqim Logstash dhe Kibana. Kjo ndodhi sepse kemi nj\u00eb departament sigurie. Cila \u00ebsht\u00eb lidhja? Lidhja \u00ebsht\u00eb se Kibana pa X-Pack dhe pa Shield nuk lejon ndarjen e t\u00eb drejtave t\u00eb aksesit n\u00eb log-e. Prandaj zgjodh\u00ebm Graylog. Ai nuk m\u00eb p\u00eblqen, por funksionon. Blejm\u00eb harduer t\u00eb ri, vendosim aty nj\u00eb Graylog t\u00eb ri dhe transferojm\u00eb t\u00eb gjitha log-et me formate strikte n\u00eb nj\u00eb Graylog t\u00eb ve\u00e7ant\u00eb. Zgjidh\u00ebm problemin me lloje t\u00eb ndryshme t\u00eb t\u00eb nj\u00ebjtave fusha organizativisht.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/91b9fdada2648ae1caec05169b11926a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb p\u00ebrfshin n\u00eb t\u00eb v\u00ebrtet\u00eb Graylog i ri. Thjesht e regjistruam gjith\u00e7ka n\u00eb Docker. Mor\u00ebm shum\u00eb servera, vendos\u00ebm tre instance t\u00eb Kafka dhe 7 servera Graylog versioni 2.3 (sepse donim Elasticsearch versionin 5). Gjith\u00e7ka u ngrit n\u00eb RAID nga HDD. V\u00ebrejt\u00ebm nj\u00eb indeksim deri n\u00eb 100 mij\u00eb mesazhe n\u00eb sekond\u00eb. V\u00ebrejt\u00ebm nj\u00eb shif\u00ebr se 140 terabajt t\u00eb dh\u00ebnash n\u00eb jav\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/05f9b3c06739548f092bbe271bf8fc54.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe p\u00ebrs\u00ebri gabime! Na presin dy shfaqje. U transferuam me 6 milion mesazhe. Graylog-i yn\u00eb nuk po arrin t\u00eb p\u00ebrpunoj\u00eb. Duhet t\u00eb gjejm\u00eb p\u00ebrs\u00ebri nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb mbijetuar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/424aa2febc2fd903aabee4aeabb64010.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne kemi mbijetuar k\u00ebshtu. Shtuam edhe disa server\u00eb dhe SSD. Aktualisht jetojm\u00eb n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb. Tani jemi duke procesuar 160,000 mesazhe n\u00eb sekond\u00eb. Ende nuk kemi arritur kufirin, prandaj nuk dihet se sa do t\u00eb mund t\u00eb nxjerrim nga kjo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/17d84fa7de5403551e55f42345e62a1a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebto jan\u00eb planet tona p\u00ebr t\u00eb ardhmen. Nga to, ndoshta m\u00eb e r\u00ebnd\u00ebsishmja \u00ebsht\u00eb disponueshm\u00ebria e lart\u00eb. Aktualisht nuk e kemi at\u00eb. Disa makina jan\u00eb t\u00eb konfiguruara nj\u00ebsoj, por gjith\u00e7ka po kalon p\u00ebrmes nj\u00eb makine. Duhet t\u00eb kalojm\u00eb koh\u00eb p\u00ebr t\u00eb konfiguruar failover nd\u00ebrmjet tyre.<\/p>\n<p><\/p>\n<p>T\u00eb mbledhim metrike nga Graylog.<\/p>\n<p><\/p>\n<p>T\u00eb b\u00ebjm\u00eb rate limit q\u00eb nj\u00eb API e \u00e7mendur t\u00eb mos na shkat\u00ebrroj\u00eb bandwidth-in dhe gjith\u00e7ka tjet\u00ebr.<\/p>\n<p><\/p>\n<p>Dhe p\u00ebrfundimisht, t\u00eb n\u00ebnshkruajm\u00eb nj\u00eb SLA me zhvilluesit, q\u00eb ne mund t\u00eb sh\u00ebrbejm\u00eb deri n\u00eb k\u00ebt\u00eb mas\u00eb. N\u00ebse shkruani m\u00eb shum\u00eb, at\u00ebher\u00eb na vjen keq.<\/p>\n<p><\/p>\n<p>Dhe t\u00eb shkruajm\u00eb dokumentacion.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Yuri Bushmelev &quot;Harta e g\u00ebrvishjeve n\u00eb fush\u00ebn e mbledhjes dhe shp\u00ebrndarjes s\u00eb logeve&quot; \u2014 interpretime t\u00eb raportit\" src=\"\/wp-content\/uploads\/2019\/04\/4a78e2834d5877f8bf17d77a44000c22.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrmbledhje e shkurt\u00ebr e gjith\u00e7kaje q\u00eb kemi p\u00ebrjetuar. S\u00eb pari, standardet. S\u00eb dyti, syslog \u2014 tort\u00eb. S\u00eb treti, rsyslog funksionon pik\u00ebrisht ashtu si\u00e7 \u00ebsht\u00eb shkruar n\u00eb slajd. Tani le t\u00eb kalojm\u00eb te pyetjet.<\/p>\n<p><\/p>\n<p><strong>Pyetje<\/strong>.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Pse vendos\u00ebt t\u00eb mos merrni\u2026 (filebeat?)<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Duhet t\u00eb shkruajm\u00eb n\u00eb skedar. S'm\u00eb p\u00eblqeu aspak. Kur API juaj shkruan mij\u00ebra mesazhe n\u00eb sekond\u00eb, madje edhe n\u00ebse e rotuloni nj\u00eb her\u00eb n\u00eb or\u00eb, kjo s'\u00ebsht\u00eb akoma nj\u00eb zgjidhje. Mund t\u00eb shkruhet n\u00eb pipe. N\u00eb \u00e7far\u00ebdo q\u00eb m\u00eb pyet\u00ebn zhvilluesit: \u00ab\u00c7far\u00eb do ndodh\u00eb n\u00ebse procesi n\u00eb t\u00eb cilin shkruajm\u00eb bie?\u00bb Un\u00eb thjesht nuk gjeta \u00e7far\u00eb t'u p\u00ebrgjigjem dhe thash\u00eb: \u00abS'nuk do ta b\u00ebjm\u00eb ashtu\u00bb.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Pse nuk shkruani log-\u00ebt thjesht n\u00eb HDFS?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Ky \u00ebsht\u00eb hapi tjet\u00ebr. Ne e menduam k\u00ebt\u00eb n\u00eb fillim, por, tani p\u00ebr tani, p\u00ebr shkak t\u00eb munges\u00ebs s\u00eb burimeve p\u00ebr ta trajtuar, ai mbetet si zgjidhje afatgjat\u00eb.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Formati kolonor do t\u00eb ishte m\u00eb i p\u00ebrshtatsh\u00ebm.<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: \u042f \u0432\u0441\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e. \u041c\u044b &#171;\u0437\u0430&#187; \u043e\u0431\u0435\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438. <\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Ju shkruani n\u00eb rsyslog. Aty mund t\u00eb keni edhe TCP, edhe UDP. Por n\u00ebse p\u00ebrdorni UDP, si e garantoni dor\u00ebzimin?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Kant\u00f6het dy aspekte. E para, un\u00eb gjithmon\u00eb iu them t\u00eb gjith\u00ebve se ne nuk garantojm\u00eb d\u00ebrgimin e logeve. Sepse, kur zhvilluesit vijn\u00eb dhe thon\u00eb: \u201cPse nuk fillojm\u00eb t\u00eb shkruajm\u00eb t\u00eb dh\u00ebnat financiare atje, dhe ju do t'i ruani ato diku n\u00eb rast se ndodhin ndodhi,\u201d ne iu p\u00ebrgjigjemi: \u201cShk\u00eblqyesh\u00ebm! Le t\u00eb filloni t\u00eb bllokoni regjistrimin n\u00eb socket dhe ta b\u00ebni k\u00ebt\u00eb n\u00eb transaksione, p\u00ebr t\u00eb garantuar q\u00eb na e d\u00ebrgoni at\u00eb n\u00eb socket dhe t\u00eb siguroheni se ne e mor\u00ebm nga ana tjet\u00ebr.\u201d Dhe n\u00eb at\u00eb moment, t\u00eb gjith\u00eb e kuptojn\u00eb se nuk \u00ebsht\u00eb e nevojshme. Tani, n\u00ebse nuk \u00ebsht\u00eb e nevojshme, \u00e7far\u00eb pyetjesh kemi p\u00ebr ju? N\u00ebse nuk d\u00ebshironi t\u00eb garantoni regjistrimin n\u00eb socket, pse duhet t\u00eb garantojm\u00eb d\u00ebrgimin? Ne b\u00ebjm\u00eb p\u00ebrpjekje maksimale. Ne v\u00ebrtet p\u00ebrpiqemi t\u00eb d\u00ebrgojm\u00eb sa m\u00eb shum\u00eb dhe sa m\u00eb mir\u00eb, por ne nuk japim garanci 100%. K\u00ebshtu, mos shkruani atje t\u00eb dh\u00ebnat financiare. P\u00ebr k\u00ebt\u00eb ekzistojn\u00eb bazat e t\u00eb dh\u00ebnave me transaksione.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Kur API gjeneron nj\u00eb mesazh n\u00eb log dhe i kalon menaxhimin mikrosh\u00ebrbimeve, a keni hasur ndonj\u00ebher\u00eb me problemin q\u00eb mesazhet nga mikrosh\u00ebrbime t\u00eb ndryshme vijn\u00eb n\u00eb rend t\u00eb gabuar? Kjo shkakton konfuzion.<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: \u00cbsht\u00eb normale q\u00eb ato t\u00eb vijn\u00eb n\u00eb rend t\u00eb ndrysh\u00ebm. Duhet t\u00eb jemi t\u00eb gatsh\u00ebm p\u00ebr k\u00ebt\u00eb. Sepse \u00e7do d\u00ebrges\u00eb n\u00eb rrjet nuk garanton rendin, ose duhet t\u00eb shpenzoni burime specifike p\u00ebr k\u00ebt\u00eb. N\u00ebse marrim depozit\u00eb skedar\u00ebsh, \u00e7do API ruan logjet n\u00eb skedarin e saj. N\u00eb t\u00eb v\u00ebrtet\u00eb, atje rsyslog i rendit ato n\u00eb kataloge. \u00c7do API aty ka logjet e saj, ku mund t\u00eb shkoni dhe t\u00eb shihni, dhe m\u00eb pas sipas timestamp n\u00eb k\u00ebt\u00eb log mund t'i p\u00ebrputhni ato. N\u00ebse shkojn\u00eb t\u00eb shikojn\u00eb n\u00eb Graylog, atje ato do t\u00eb renditen sipas timestamp. Atje gjith\u00e7ka do t\u00eb jet\u00eb mir\u00eb.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Timestamp mund t\u00eb ndryshoj\u00eb n\u00eb milisekonda.<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Timestamp i gjeneron vet\u00eb API. Kjo, n\u00eb thelb, \u00ebsht\u00eb gjith\u00eb shaka. Ne kemi NTP. API gjeneron timestamp tashm\u00eb n\u00eb mesazhin e vet. Ai nuk shtohet nga rsyslog.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Nuk \u00ebsht\u00eb shum\u00eb e qart\u00eb nd\u00ebrveprimi midis qendrave t\u00eb t\u00eb dh\u00ebnave. Brenda qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave \u00ebsht\u00eb e qart\u00eb si u grumbulluan dhe u p\u00ebrpunuan logjet. Si ndodh nd\u00ebrveprimi midis qendrave t\u00eb t\u00eb dh\u00ebnave? Ose \u00e7do qend\u00ebr t\u00eb dh\u00ebnash jeton jet\u00ebn e saj?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Gati. \u00c7do vend ndodhet n\u00eb nj\u00eb data qend\u00ebr t\u00eb caktuar. Aktualisht nuk kemi nj\u00eb shp\u00ebrndarje, q\u00eb do t\u00eb thot\u00eb se nj\u00eb vend \u00ebsht\u00eb i vendosur n\u00eb data qendra t\u00eb ndryshme. Pra, nuk duhet t'i gruponi. Brenda \u00e7do qendre ka Log Relay. Ky \u00ebsht\u00eb nj\u00eb server Rsyslog. N\u00eb fakt, ka dy makina menaxher. Ato jan\u00eb t\u00eb konfigurara nj\u00ebsoj. Por aktualisht, vet\u00ebm nj\u00ebra prej tyre e merr trafikun. Ajo agregon t\u00eb gjitha log-et. Ka nj\u00eb rresht diskash p\u00ebr \u00e7do rast. Ajo kompreson log-et dhe i d\u00ebrgon n\u00eb data qendr\u00ebn qendrore (n\u00eb Singapor), ku m\u00eb pas ato d\u00ebrgohen n\u00eb Graylog. \u00c7do data qend\u00ebr ka nj\u00eb storage t\u00eb saj p\u00ebr skedar\u00eb. N\u00eb rast se humbasim lidhjen, ne i kemi t\u00eb gjitha log-et atje. Ato do t\u00eb mbeten aty. Ato do t\u00eb ruhen.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: N\u00eb situata t\u00eb paplanifikuara, a merrni log-et nga atje?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: A mund t\u00eb shkoni atje (n\u00eb storage-in p\u00ebr skedar\u00eb) dhe t\u00eb shikoni?<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: Si e monitoroni q\u00eb mos humbni log-et?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: N\u00eb t\u00eb v\u00ebrtet\u00eb i humbasim ata, dhe ne e monitorojm\u00eb k\u00ebt\u00eb. Monitorimi filloi nj\u00eb muaj m\u00eb par\u00eb. N\u00eb bibliotek\u00ebn q\u00eb p\u00ebrdor API-n\u00eb Go, ka metrika. Ajo di t\u00eb num\u00ebroj\u00eb sa her\u00eb nuk ka mundur t\u00eb shkruaj\u00eb n\u00eb socket. Atje aktualisht ka nj\u00eb heuristik\u00eb t\u00eb zgjuar. Ka nj\u00eb bufer. Ai p\u00ebrpiqet t\u00eb d\u00ebrgoj\u00eb mesazhin nga ai n\u00eb socket. N\u00ebse buferi mbushet, fillon t'i braktis\u00eb. Dhe num\u00ebron sa i ka braktisur. N\u00ebse fillojn\u00eb t\u00eb mbushen num\u00ebruesit aty, ne do ta dim\u00eb k\u00ebt\u00eb. Tani ata mb\u00ebrrijn\u00eb gjithashtu n\u00eb prometheus, dhe n\u00eb Grafana mund t\u00eb shihni grafikat. Mund t\u00eb konfigurohen njoftimet. Por tani nuk \u00ebsht\u00eb e qart\u00eb se kujt t'i d\u00ebrgohen ato.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: N\u00eb elasticsearch ruani log-et me rezervim. Sa replikat keni?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Nj\u00eb replik\u00eb.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: A \u00ebsht\u00eb k\u00ebt\u00eb vet\u00ebm nj\u00eb replik\u00eb?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Ky \u00ebsht\u00eb master dhe nj\u00eb replik\u00eb. T\u00eb dh\u00ebnat ruhet n\u00eb dy ekzemplar\u00eb.<\/p>\n<p><\/p>\n<p><strong>Pyetja<\/strong>: A e keni rregulluar ndonj\u00ebher\u00eb madh\u00ebsin\u00eb e buferit rsyslog? <\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Ne shkruajm\u00eb datagramet n\u00eb nj\u00eb socket t\u00eb personalizuar UNIX. Kjo na vendos menj\u00ebher\u00eb nj\u00eb kufizim prej 128 kilobajt\u00ebsh. Nuk mund t\u00eb shkruajm\u00eb m\u00eb shum\u00eb se kaq. E kemi p\u00ebrfshir\u00eb k\u00ebt\u00eb n\u00eb standard. Ata q\u00eb duan t\u00eb hyjn\u00eb n\u00eb magazinat, shkruajn\u00eb 128 kilobajt\u00eb. Bibliotekat, p\u00ebr m\u00eb tep\u00ebr, e presin, duke vendosur nj\u00eb flamur q\u00eb mesazhi \u00ebsht\u00eb prishur. N\u00eb standardin e vet t\u00eb mesazhit, ka nj\u00eb fush\u00eb speciale q\u00eb tregon n\u00ebse \u00ebsht\u00eb prishur gjat\u00eb shkruarjes apo jo. Pra, kemi mund\u00ebsin\u00eb t\u00eb ndjekim k\u00ebt\u00eb moment.<\/p>\n<p><\/p>\n<p><strong>Pyetje<\/strong>: A shkruani JSON t\u00eb prishur? <\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: JSON i prishur do t\u00eb hidhet ose gjat\u00eb relay-t, sepse paketa \u00ebsht\u00eb shum\u00eb e madhe. Ose do t\u00eb hidhet nga Graylog, sepse nuk mund t\u00eb parse-oj\u00eb JSON-in. Por ka nuansa q\u00eb duhet t\u00eb rregullohen, dhe ato n\u00eb shumic\u00ebn e rasteve lidhen me rsyslog-un. Kam plot\u00ebsuar disa \u00e7\u00ebshtje aty q\u00eb duhet t\u00eb punojm\u00eb ende mbi to.<\/p>\n<p><\/p>\n<p><strong>Pyetje<\/strong>: Pse Kafka? Keni provuar RabbitMQ? Nuk funksionon Graylog n\u00ebn k\u00ebto ngarkesa?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Ne kemi probleme me Graylog. Por Graylog \u00ebsht\u00eb nj\u00eb ndihm\u00eb. Ka v\u00ebrtet\u00eb probleme. \u00cbsht\u00eb nj\u00eb gj\u00eb e \u00e7uditshme. N\u00eb t\u00eb v\u00ebrtet\u00eb, nuk \u00ebsht\u00eb e nevojshme. Un\u00eb do t\u00eb preferoja t\u00eb shkruaja direkt nga rsyslog n\u00eb elasticsearch dhe m\u00eb pas t\u00eb shihja n\u00eb Kibana. Por duhet t\u00eb zgjidhim \u00e7\u00ebshtjen me sigurin\u00eb. Ky \u00ebsht\u00eb nj\u00eb opsion i mundsh\u00ebm p\u00ebr zhvillimin ton\u00eb, kur t\u00eb heqim Graylog dhe t\u00eb p\u00ebrdorim Kibana. Nuk do kishte asnj\u00eb kuptim t\u00eb p\u00ebrdorim Logstash. Sepse, mund t\u00eb b\u00ebj t\u00eb nj\u00ebjt\u00ebn gj\u00eb me rsyslog. Ai ka nj\u00eb modul p\u00ebr t\u00eb shkruar n\u00eb elasticsearch. Me Graylog po p\u00ebrpiqemi t\u00eb jetojm\u00eb. Madje e kemi b\u00ebr\u00eb edhe disa rregullime. Por ka ende hap\u00ebsir\u00eb p\u00ebr p\u00ebrmir\u00ebsime.<\/p>\n<p><\/p>\n<p>N\u00eb lidhje me Kafka. K\u00ebshtu ka ndodhur historikisht. Kur kam ardhur, ajo ishte tashm\u00eb aty dhe n\u00eb t\u00eb tashm\u00eb ishim duke shkruar loge. Ne thjesht ngrit\u00ebm klasterin ton\u00eb dhe u transferuam me loget. Ne e menaxhojm\u00eb at\u00eb, dim\u00eb si ndjehet. N\u00eb lidhje me RabbitMQ\u2026 nuk po na del mir\u00eb me RabbitMQ. Po na del mir\u00eb me RabbitMQ. E kemi n\u00eb prodhim, dhe kemi pasur probleme me t\u00eb. Tani, p\u00ebrpara shitjes, e pat\u00ebm p\u00ebrmir\u00ebsuar at\u00eb, dhe filloi t\u00eb funksiononte normalisht. Por deri at\u00ebher\u00eb nuk isha i gatsh\u00ebm ta nxirrja n\u00eb prodhim. Ka edhe nj\u00eb aspekt tjet\u00ebr. Graylog di t\u00eb lexoj\u00eb versionin AMQP 0.9, nd\u00ebrsa rsyslog di t\u00eb shkruaj\u00eb versionin AMQP 1.0. Dhe nuk ka asnj\u00eb zgjidhje q\u00eb mund t\u00eb b\u00ebj\u00eb t\u00eb dua. Ka ose nj\u00ebra ose tjetra. Prandaj p\u00ebr momentin vet\u00ebm Kafka. Por ka edhe nuanca t\u00eb veta. Sepse omkafka i atij versioni t\u00eb rsyslog, q\u00eb ne po p\u00ebrdorim, mund t\u00eb humbas\u00eb t\u00eb gjith\u00eb bufferin e mesazheve q\u00eb ka marr\u00eb nga rsyslog. Deri tani po pajtohemi me k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p><strong>Pyetje<\/strong>: A po p\u00ebrdorni Kafka sepse ajo ishte e juaja? Nuk p\u00ebrdoret p\u00ebr asnj\u00eb q\u00ebllim tjet\u00ebr?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Kafka, e cila \u00ebsht\u00eb p\u00ebrdorur nga ekipi i Shkenc\u00ebs s\u00eb t\u00eb Dh\u00ebnave. Ky \u00ebsht\u00eb nj\u00eb projekt krejt\u00ebsisht ndryshe, p\u00ebr t\u00eb cilin, fatkeq\u00ebsisht, nuk mund t\u00eb them asgj\u00eb. Nuk jam n\u00eb dijeni. Ajo ishte n\u00ebn menaxhimin e ekipit t\u00eb Shkenc\u00ebs s\u00eb t\u00eb Dh\u00ebnave. Kur nis\u00ebm log-et, vendos\u00ebm ta p\u00ebrdorim at\u00eb p\u00ebr t\u00eb mos instaluar edhe nj\u00eb tonit ton\u00ebn. Tani e kemi p\u00ebrdit\u00ebsuar Graylog, dhe kemi humbur kompatibilitetin, sepse ka nj\u00eb version t\u00eb vjet\u00ebr t\u00eb Kafka. Na duhej t\u00eb krijonim ton\u00ebn. Nj\u00ebher\u00ebsh, na u hoq\u00ebn k\u00ebto kat\u00ebr tema p\u00ebr \u00e7do API. Krijuam nj\u00eb tem\u00eb t\u00eb gjer\u00eb p\u00ebr t\u00eb gjith\u00eb live-in, nj\u00eb tem\u00eb t\u00eb gjer\u00eb p\u00ebr t\u00eb gjith\u00eb staging-un dhe thjesht e d\u00ebrgojm\u00eb gjith\u00e7ka atje. Graylog e mbledh gjith\u00e7ka paralelisht.<\/p>\n<p><\/p>\n<p><strong>Pyetje<\/strong>: Pse duhet ky magji me soket\u00ebt? A keni provuar t\u00eb p\u00ebrdorni log-drejtorin syslog p\u00ebr kontejner\u00ebt.<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: N\u00eb momentin kur ne po merreshim me k\u00ebt\u00eb \u00e7\u00ebshtje, marr\u00ebdh\u00ebniet tona me Docker ishin tendosura. Ishte Docker 1.0 ose 0.9. Docker vet\u00eb ishte i \u00e7uditsh\u00ebm. P\u00ebr m\u00eb tep\u00ebr, n\u00ebse duhej t\u00eb d\u00ebrgonim log-et\u2026 Kam nj\u00eb dyshim t\u00eb pa verifikuar se ai kalon t\u00eb gjitha log-et p\u00ebrmes tij, p\u00ebrmes demonit Docker. N\u00ebse nj\u00eb API \u00e7mendet, at\u00ebher\u00eb API-t\u00eb e tjera ngjiten n\u00eb faktin se nuk mund t\u00eb d\u00ebrgojn\u00eb stdout dhe stderr. Nuk e di se \u00e7far\u00eb do t\u00eb sjell\u00eb kjo. Kam nj\u00eb ndjenj\u00eb q\u00eb nuk duhet ta p\u00ebrdorim driver-in syslog t\u00eb Docker k\u00ebtu. Departamenti yn\u00eb p\u00ebr testimin funksional ka grupin e vet t\u00eb vog\u00ebl Graylog me log-e. Ata p\u00ebrdorin driver-at e log-eve t\u00eb Docker dhe duket se gjith\u00e7ka funksionon mir\u00eb atje. Por ata e shkruajn\u00eb GELF direkt n\u00eb Graylog. Kur ne po fillonim gjith\u00e7ka, na duhej t\u00eb funksiononte vet\u00ebm. Ndoshta m\u00eb von\u00eb, kur dikush t\u00eb vij\u00eb dhe t\u00eb thot\u00eb se kjo tashm\u00eb ka funksionuar normalisht p\u00ebr nj\u00ebqind vjet, do ta provojm\u00eb.<\/p>\n<p><\/p>\n<p><strong>Pyetje<\/strong>: Pse d\u00ebrgoni mes datacentrove me rsyslog? Pse jo me Kafka?<\/p>\n<p><\/p>\n<p><strong>P\u00ebrgjigja<\/strong>: Ne e b\u00ebjm\u00eb k\u00ebt\u00eb dhe at\u00eb n\u00eb t\u00eb v\u00ebrtet\u00eb. P\u00ebr dy arsye. N\u00ebse kanali \u00ebsht\u00eb krejt\u00ebsisht i d\u00ebmtuar, at\u00ebher\u00eb as log-et tona, madje edhe n\u00eb form\u00eb t\u00eb kompresuar, nuk kalojn\u00eb p\u00ebrmes tij. Por Kafka lejon q\u00eb ata thjesht t\u00eb humbasin gjat\u00eb procesit. Me k\u00ebt\u00eb metod\u00eb ne lirohemi nga ngjizja e k\u00ebtyre log-eve. Ne thjesht e p\u00ebrdorim Kafka drejtp\u00ebrdrejt n\u00eb k\u00ebt\u00eb rast. N\u00ebse kemi nj\u00eb kanal t\u00eb mir\u00eb dhe duam ta lirojm\u00eb at\u00eb, at\u00ebher\u00eb p\u00ebrdorim rsyslog-in e tyre. Por n\u00eb t\u00eb v\u00ebrtet\u00eb e mund ta konfigurojm\u00eb n\u00eb m\u00ebnyr\u00eb q\u00eb ai t\u00eb heq\u00eb automatikisht at\u00eb q\u00eb nuk kalon. N\u00eb k\u00ebt\u00eb moment, ne thjesht p\u00ebrdorim d\u00ebrgimin rsyslog drejtp\u00ebrdrejt ndonj\u00ebher\u00eb, ndonj\u00ebher\u00eb Kafka.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/450098\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041b\u043e\u0433\u0438 \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u043b\u0438\u0431\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442), \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f. \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b. \u041d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043a\u0443\u0447\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432: \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438; \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u043e\u0433\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438; \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043d\u044b\u043d\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24507,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32723","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041b\u043e\u0433\u0438 \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u043b\u0438\u0431\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442), \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f. \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b. \u041d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043a\u0443\u0447\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432: \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438; \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u043e\u0433\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438; \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043d\u044b\u043d\u0435\" \/>\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\/sq\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\u042e\u0440\u0438\u0439 \u0411\u0443\u0448\u043c\u0435\u043b\u0435\u0432 \u00ab\u041a\u0430\u0440\u0442\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u043d\u0430 \u043f\u043e\u043b\u0435 \u0441\u0431\u043e\u0440\u0430 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043b\u043e\u0433\u043e\u0432\u00bb \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041b\u043e\u0433\u0438 \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u043b\u0438\u0431\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442), \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f. \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b. \u041d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043a\u0443\u0447\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432: \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438; \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u043e\u0433\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438; \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043d\u044b\u043d\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada\" \/>\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=\"2019-10-31T18:48:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:35+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\udd47Juri Bushmelev \u00abHarta e grilave n\u00eb fush\u00ebn e mbledhjes dhe dor\u00ebzimit t\u00eb log\u00ebve\u00bb \u2014 shpjegimi i raportit | ProHoster","description":"Log-et jan\u00eb nj\u00eb pjes\u00eb e r\u00ebnd\u00ebsishme e sistemit q\u00eb lejon t\u00eb kuptojm\u00eb n\u00ebse ai punon (ose jo) si\u00e7 pritet. N\u00eb kushte t\u00eb arkitektur\u00ebs mikros\u00ebrvisore, puna me log-et b\u00ebhet nj\u00eb disiplin\u00eb e ve\u00e7ant\u00eb e olimpiad\u00ebs speciale. Duhet t\u00eb zgjidhen menj\u00ebher\u00eb nj\u00eb mori pyetjesh: si t\u00eb shkruhen log-et nga aplikacioni; ku t\u00eb shkruhen log-et; si t\u00eb d\u00ebrgohen log-et p\u00ebr ruajtje dhe p\u00ebrpunim; si t\u00eb p\u00ebrpunohen dhe ruhet log-\u00ebt. P\u00ebrdorimi i popullarizuar tani.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\u042e\u0440\u0438\u0439 \u0411\u0443\u0448\u043c\u0435\u043b\u0435\u0432 \u00ab\u041a\u0430\u0440\u0442\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u043d\u0430 \u043f\u043e\u043b\u0435 \u0441\u0431\u043e\u0440\u0430 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043b\u043e\u0433\u043e\u0432\u00bb \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 | ProHoster","og:description":"\u041b\u043e\u0433\u0438 \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u043b\u0438\u0431\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442), \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f. \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b. \u041d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043a\u0443\u0447\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432: \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438; \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u043e\u0433\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438; \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043d\u044b\u043d\u0435","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada","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":"2019-10-31T18:48:35+00:00","article:modified_time":"2019-10-31T18:48:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32723","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":"2026-01-21 12:16:55","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:53:25","updated":"2026-01-21 12:16:55","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=32723"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/24507"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=32723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=32723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=32723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}