{"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\/et\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada","title":{"rendered":"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Logid on olulised s\u00fcsteemi osad, mis aitavad m\u00f5ista, kas see t\u00f6\u00f6tab (v\u00f5i ei t\u00f6\u00f6ta) nagu oodatud. Mikroteenuste arhitektuuri tingimustes logide haldamine muutub eraldi distsipliiniks. Tuleb lahendada mitmed k\u00fcsimused:<\/p>\n<p><\/p>\n<ul>\n<li>kuidas kirjutada logisid rakendusest;<\/li>\n<li>kuhu logisid kirjutada;<\/li>\n<li>kuidas edastada logisid s\u00e4ilitamiseks ja t\u00f6\u00f6tlemiseks;<\/li>\n<li>kuidas logisid t\u00f6\u00f6delda ja s\u00e4ilitada.<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00e4nap\u00e4evaste konteineritehnoloogiate kasutamine lisab \u00fclesande lahendamiseks juurde uusi takistusi.<\/p>\n<p><\/p>\n<p>Just about this, the report by Yuri Bushmelev is titled \"The Rake Map in the Field of Log Collection and Delivery\". <\/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=\"M\u00e4ngi videot\" 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>Kellele see huvi pakub, palun lugege edasi.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Minu nimi on Yuri Bushmelev. T\u00f6\u00f6sklen Lazadas. T\u00e4na r\u00e4\u00e4gin sellest, kuidas me oma logisid koostame, kuidas me neid kogume ja mida me nende sisse kirjutame. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/ece6053b1027ab3681022049ddcd79ea.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kust me tuleme? Kes me oleme? Lazada on nr 1 veebipood kuues Kagu-Aasia riigis. K\u00f5ik need riigid on jaotatud meie andmekeskuste vahel. Praegu on meil kokku 4 andmekeskust. Miks see oluline on? Sest m\u00f5ned lahendused s\u00f5ltusid sellest, et andmekeskuste vahel on v\u00e4ga n\u00f5rk side. Meil on mikroteenuste arhitektuur. Olin \u00fcllatunud, et meil on juba 80 mikroteenust. Kui ma logide \u00fclesande ette v\u00f5tsin, oli neid vaid 20. Pluss on meil ka \u00fcsna suur t\u00fckk PHP p\u00e4rand, millega on samuti keeruline elada. K\u00f5ik see genereerib meile hetkel \u00fcle 6 miljoni s\u00f5numi minutis kogu s\u00fcsteemis. Edasi n\u00e4itan, kuidas me sellega toime tuleme ja miks see nii on.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/0ba5fcee5064865e836cefd47c40d246.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Selle 6 miljoni s\u00f5numiga tuleb kuidagi elada. Mida me peame nendega tegema? 6 miljonit s\u00f5numit, mille peame:<\/p>\n<p><\/p>\n<ul>\n<li>rakendusest edastama<\/li>\n<li>vastu v\u00f5tma<\/li>\n<li>anal\u00fc\u00fcsimiseks ja s\u00e4ilitamiseks edastama.<\/li>\n<li>anal\u00fc\u00fcsida<\/li>\n<li>mingil viisil s\u00e4ilitama.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/a449062193c4b1757a61f5c92e270a74.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui kolm miljonit s\u00f5numit ilmus, oli mul umbes sama n\u00e4gu. Sest alustasime mingitest sendidest. On selge, et sinna kirjutatakse rakenduse logisid. N\u00e4iteks, ei saanud andmebaasile \u00fchendust, sain andmebaasile \u00fchendust, kuid ei suutnud midagi lugeda. Kuid peale selle kirjutab iga meie mikroteenus ka access-logi. Iga p\u00e4ring, mis mikroteenusele saabub, salvestatakse logis. Miks me seda teeme? Arendajad soovivad omada j\u00e4lgimisv\u00f5imet. Igas access-logis on olemas field traceid, mille abil eriline liides loob k\u00f5igi seotud tegevuste ahela ja ilusasti kuvab j\u00e4lgimist. J\u00e4lgimine n\u00e4itab, kuidas p\u00e4ring kulges, ja see aitab meie arendajatel kiiremini tegeleda igasuguste m\u00e4\u00e4ratlemata probleemidega.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/e13a2d37ce57e894d023ad405a2b5200.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas sellega elada? Praegu r\u00e4\u00e4gin l\u00fchidalt v\u00f5imalustest \u2014 kuidas \u00fcldse seda probleemi lahendatakse. Kuidas lahendada logide kogumise, edastamise ja salvestamise \u00fclesanne. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/60af5e5db804770295741995adb37d90.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas rakendusest kirjutada? Selge, et on erinevaid viise. Eelk\u00f5ige on olemas parim praktika, nagu \u00fctlevad moodne seltskond. On olemas ka vana kool kahes variandis, nagu vanad emad r\u00e4\u00e4kisid. On ka teisi viise. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/deab57e4ac0472a8591c0fad9e9f2910.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Logide kogumisega on suhteliselt sama olukord. Selle konkreetse osa lahendamise variante ei ole nii palju. Need on juba rohkem, kuid ikka mitte nii palju. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/8a6004aaeb931332983a975d0fa5c1d6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid kohaletoimetamise ja sellele j\u00e4rgnevate anal\u00fc\u00fcsidega \u2014 variatsioonide arv hakkab plahvatama. Ma ei hakka praegu iga varianti kirjeldama. Arvan, et peamised variantid on tuttavad k\u00f5igile, kes on teemaga huvitatud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/6a0b64c7e58bc59f56aaddd27112ec51.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ma n\u00e4itan, kuidas me seda Lazadas tegime ja kuidas see k\u00f5ik algas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/20f3aa5ceea8b28733ce5399bc30f5b5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aasta tagasi tulin Lazasse ja mind suunati logide projekti. Seal oli umbes nii. Rakenduse logi kirjutati stdout-i ja stderr-i. K\u00f5ik tehti moodsalt. Kuid siis arendajad viskasid selle standardvoogudest v\u00e4lja ja infrastruktuuri spetsialistid peavad sellega kuidagi toime tulema. Infrastruktuuri spetsialistide ja arendajate vahel on veel v\u00e4ljaandjad, kes \u00fctlesid: \"eee\u2026 noh, okei, paneme need lihtsalt shelliga faili, ja k\u00f5ik\". Ja kuna k\u00f5ik see on konteineris, siis pakiti see otse konteineris, kaardistati sisse kataloog ja pandi see sinna. Arvan, et k\u00f5igile on enam-v\u00e4hem selge, mida sellest v\u00e4lja tuli.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/d92e02c18a4c683c9389321e4d5412df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadates pisut kaugemale, kuidas me neid logisid edastasime. Keegi valis td-agent'i, mis on tegelikult fluentd, kuid mitte p\u00e4ris fluentd. Ma ei saanud kunagi aru nende kahe projekti suhetest, kuid nad tundusid r\u00e4\u00e4vatavat samast asjast. See fluentd, kirjutatud Ruby keeles, luges logifailid, parseeris need JSON-iks mingite regulaaravaldiste j\u00e4rgi. Siis edastas need Kafka'sse. Ja Kafka-s oli iga API jaoks 4 erinevat teemat. Miks 4? Sest on live, on staging, ja kuna on stdout ja stderr. Arendajad genereerivad neid, kuid infrastruktuuri inimesed peavad need Kafka-s looma. Veelgi enam, Kafka'd kontrollis teine osakond. Seega tuli pilet luua, et nad loovad iga API jaoks 4 teemat. K\u00f5ik unustasid selle. Kokkuv\u00f5ttes oli verevaht ja segadus. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/3130f9ebfda22713cffacf10db45ca89.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mida me edasi selle k\u00f5ikimisega tegime? Me edastasime selle Kafka'sse. Edasi l\u00e4ks pool logidest Logstash'i. Teine pool jagunes. Osa l\u00e4ks \u00fchte Graylog'i, osa \u2013 teise Graylog'i. L\u00f5ppkokkuv\u00f5ttes j\u00f5udis see k\u00f5ik \u00fchte Elasticsearch'i klastrisse. See t\u00e4hendab, et kogu see segadus l\u00f5puks langes sinna. Nii ei peaks tegema!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/98bf4811c102fc12fcd1114c25886b69.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii see v\u00e4lja n\u00e4eb, kui vaadata kaugelt \u00fclevalt. Nii ei tohiks teha! Siin on numbritega kohe t\u00e4histatud probleemsed kohad. Neid on tegelikult rohkem, kuid 6 on t\u00f5eliselt probleemsed, millega peab midagi ette v\u00f5tma. Nendest r\u00e4\u00e4gin n\u00fc\u00fcd eraldi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/69f7682e6677bdda3068d6dea4db7732.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin (1,2,3) kirjutatakse meil failid ja vastavalt on siin kohe kolm takistust. <\/p>\n<p><\/p>\n<p>Esiteks (1) \u2014 me peame need kuhugi kirjutama. Ei oleks hea anda API-le v\u00f5imalust otse faili kirjutada. Soovitav oleks, et API oleks konteineris isoleeritud, ja veel parem \u2013 et see oleks read-only. Ma olen s\u00fcsteemihaldur, seega on mul natuke alternatiivne vaade nendele asjadele.<\/p>\n<p><\/p>\n<p>Teine punkt (2,3) - me saame palju p\u00e4ringuid API-sse. API kirjutab palju andmeid faili. Failid kasvavad. Me peame neid roteerima. Sest muidu ei j\u00e4tku diskiruumi. Roteerimine on halb, sest need on shell'i kaudu katalooge suunatud. Me ei saa seda kuidagi roteerida. Rakendusele ei saa \u00f6elda, et see avaks descriptor'id uuesti. Sest arendajad vaatavad su nagu lollile: \"Millised descriptor'id? Me kirjutame ju stdout'i\". Infrastruktuuri inimesed tegid logrotate'is copytruncate, mis teeb lihtsalt faili koopia ja k\u00e4rbib originaali. Seega, nende kopeerimisprotsesside vahel on tavaliselt diskiruumi puudus.<\/p>\n<p><\/p>\n<p>(4) Meil oli erinevaid formaate erinevates API-des. Need erinesid veidi, kuid regexp'e tuli kirjutada erinevaid. Kuna kogu see asi oli hallatav Puppet'i kaudu, siis seal oli suur hulk klasse oma probleemidega. Peale selle suutis td-agent suure osa ajast m\u00e4lu s\u00fc\u00fca, olla aeglane, ta v\u00f5is lihtsalt n\u00e4ida, et t\u00f6\u00f6tab, ja mitte midagi teha. V\u00e4ljastpoolt oli v\u00f5imatu m\u00f5ista, et ta ei tee midagi. Parimal juhul ta kukub kokku ja keegi t\u00f5stab ta hiljem uuesti \u00fcles. T\u00e4psemalt, tuleb alert ja keegi l\u00e4heb k\u00e4sitsi selle uuesti t\u00f6\u00f6sse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/424cda2b60e9e5669b7ef2b34ca74e48.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>(6) Ja k\u00f5ige hullem oli elasticsearch. Sest see oli vana versioon. Meil polnud sel hetkel eraldi master'e. Meil olid heterogeensed logid, millel v\u00e4ljad v\u00f5isid kattuda. Erinevad logid erinevatest rakendustest v\u00f5isid kirjutada sama v\u00e4lja nimedega, kuid andmed sees v\u00f5isid olla erinevad. N\u00e4iteks \u00fcks logi tuleb Integer'iga v\u00e4ljas, n\u00e4iteks level. Teine logi tuleb String'iga v\u00e4ljas level. Ilma staatilise mappimise puudumisel tekib selline suurep\u00e4rane olukord. Kui p\u00e4rast indeksite roteerimist elasticsearch'i saab esimene s\u00f5num String'iga, siis elame normaalselt. Aga kui esimesena tuleb Integer, siis k\u00f5ik j\u00e4rgnevad s\u00f5numid, mis tulevad String'iga, lihtsalt j\u00e4etakse k\u00f5rvale. Sest v\u00e4lja t\u00fc\u00fcp ei \u00fchti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/bc869f827bed326792857113191bb028.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me hakkasime endale neid k\u00fcsimusi esitama. Otsustasime, et ei hakka s\u00fc\u00fcdlasi otsima.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/a071a4b38462f249339c988c35463639.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aga midagi on t\u00f5esti vaja teha! Ilmselge on see, et peame kehtestama standardid. M\u00f5ned standardid olid meil juba olemas. M\u00f5ned kehtestasime pisut hiljem. \u00d5nneks olime selleks ajaks juba kinnitanud k\u00f5igi API-de jaoks \u00fchtse logide formaadi. See on kirjas teenuste koost\u00f6\u00f6standardites. J\u00e4relikult peavad need, kes soovivad logisid saada, kirjutama need just sellesse formaati. Kui keegi ei kirjuta logisid sellel kujul, siis me ei suuda midagi garanteerida. <\/p>\n<p><\/p>\n<p>Edasi, sooviks kehtestada \u00fchtse standardi logide kirjutamise, saatmise ja kogumise viiside jaoks. Nimelt, kuhu need kirjutada ja millega neid saata. Ideaalne olukord oleks see, kui projektides kasutatakse \u00fcht ja sama teeki. Meil on eraldi loggingi teek Go jaoks ja eraldi teek PHP jaoks. K\u00f5ik, kes meil on, peavad neid kasutama. Praeguseks v\u00f5iks \u00f6elda, et meil see \u00f5nnestub umbes 80%. Kuid m\u00f5ned j\u00e4tkavad kaktuste s\u00f6\u00f6mist.<\/p>\n<p><\/p>\n<p>Ja seal (slaidil) hakkab vaevu selguma \"SLA logide saatmiseks\". Seda veel ei ole, kuid me t\u00f6\u00f6tame selle kallal. Sest see on v\u00e4ga mugav, kui infrastruktuur \u00fctleb, et kui kirjutate sellises formaadis sellisesse kohta ja mitte enam kui N s\u00f5numit sekundis, siis me toimetame need t\u00f5en\u00e4osusega, et see j\u00f5uab sinna. See vabastab palju peavalu. Kui SLA on, siis on see lihtsalt suurep\u00e4rane!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/a887aceac13135afe90bb5f5a5ec1d26.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas me probleemi lahendama hakkasime? Peamine takistus oli td-agent. Ei olnud selge, kuhu meie logid j\u00e4\u00e4vad. Kas neid toimetatakse? Kas neid kogutakse? Kus nad \u00fcldse on? Seet\u00f5ttu otsustasime esimese asjana td-agenti asendada. L\u00fchidalt olen siin \u00fcles t\u00e4hendanud, mille vastu see asendada.<\/p>\n<p><\/p>\n<p>Fluentd. Esiteks olen ma sellega varasemal t\u00f6\u00f6kohal kokku puutunud ja sealgi kukkus see vahepeal kokku. Teiseks on see sama, ainult suunatud. <\/p>\n<p><\/p>\n<p>Filebeat. Miks see meie jaoks mugav oli? Sest see on kirjutatud Go keeles ja meil on Go osas suur ekspertiis. Seega, kui on vajadus, saame seda enda vajadustele kohandada. Seet\u00f5ttu me seda ei valinud. Et isegi ei tekiks kiusatust seda enda jaoks \u00fcmber kirjutama hakata. <\/p>\n<p><\/p>\n<p>Ilmselge lahendus s\u00fcsteemiadministraatori jaoks on igasugused sisselogid sellises koguses (syslog-ng\/rsyslog\/nxlog).<\/p>\n<p><\/p>\n<p>V\u00f5i kirjutada midagi enda, kuid selle me k\u00f5rvale j\u00e4tsime, samuti ka filebeat'i. Kui midagi kirjutada, siis on parem kirjutada midagi kasulikku \u00e4ri jaoks. Logide edastamiseks on parem v\u00f5tta midagi valmis.<\/p>\n<p><\/p>\n<p>Seet\u00f5ttu on valik tegelikult piiratud syslog-ng ja rsyslog vahel. Kaldusin rsyslogi poole, lihtsalt seet\u00f5ttu, et meil oli Puppetis juba rsyslogi jaoks klassid, ja ma ei leidnud nende vahel ilmset erinevust. Seal on syslog ja siin on syslog. Jah, kellelgi on dokumentatsioon halvem, kellelgi parem. \u00dcks oskab nii, aga teine \u2014 teisiti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/a88116711b547fa5b2b34daf72cc4220.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Veidi rsyslogist. Esiteks on see \u00e4ge, sest tal on palju mooduleid. Tal on arusaadav RainerScript (kaasaegne konfigureerimiskeel). Suurep\u00e4rane boonus on see, et me saime seda formaalselt simuleerida td-agent'i k\u00e4itumist, ja rakendustes ei muutunud midagi. See t\u00e4hendab, et me vahetame td-agent'i rsyslog'i vastu, ja k\u00f5ik muud asjad j\u00e4\u00e4vad samaks. Ja kohe saame t\u00f6\u00f6tava kohaletoimetamise. Edasi, mmnormalize \u2014 see on fantastiline asi rsyslogis. See v\u00f5imaldab logisid anal\u00fc\u00fcsida, kuid mitte Grok'i ja regexp'i abil. See loob abstraktse s\u00fcntaksipuude. See anal\u00fc\u00fcsib logisid umbes nagu kompilaator anal\u00fc\u00fcsib allikaid. See v\u00f5imaldab t\u00f6\u00f6tada v\u00e4ga kiiresti, tarvitama v\u00e4he CPU-d ja on t\u00f5eliselt \u00e4ge asi. Seal on palju muid boonuseid. Ma ei hakka neist r\u00e4\u00e4kima.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/ca811be9f9ff318fb8c8bbf3dc45a038.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rsyslogil on ka palju puudusi. Need on umbes samad, mis boonused. Peamised probleemid \u2014 tuleb osata seda ette valmistada ja tuleb valida \u00f5ige versioon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/034f588e0834b1d4e4873d9c3dbd0873.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Otsustasime, et kirjutame logid unix-soketisse. Esiteks mitte \/dev\/log, kuna seal on meil segadus s\u00fcsteemilogidest, seal on journald selles pipeline'is. Seet\u00f5ttu kirjutame kohandatud soketisse. Me \u00fchendame selle eraldi reeglikogumiga. Mitte midagi segada. K\u00f5ik on l\u00e4bipaistev ja arusaadav. Nii me tegelikult tegime. Kataloog nendega soketitega on standardiseeritud ja edastatakse k\u00f5ikidesse konteineritesse. Konteinerid saavad n\u00e4ha neile vajalikku soket, avada ja sinna kirjutada. <\/p>\n<p><\/p>\n<p>Miks mitte fail? Kuna k\u00f5ik lugesid <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/280606\/\">artiklit Badushka'st<\/a><\/noindex>, mis \u00fcritas edastada faili dockerisse, ja avastas, et p\u00e4rast rsyslogi taask\u00e4ivitamist muutub failide descriptor, ja docker kaotab selle faili. Ta hoiab lahti midagi muud, kuid enam mitte seda soket, kuhu kirjutatakse. Otsustasime, et saame selle probleemi ringiga \u00fcmber minna, ja samal ajal v\u00e4ltida lukustamise probleemi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/78db15581a68ce16d11f5ebe7e6fe04e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rsyslog teeb slaidil n\u00e4idatud toimingud ja saadab logid kas rel\u00e9esse v\u00f5i Kafka'sse. Kafka vastab vanale meetodile. Rel\u00e9 \u2014 \u00fcritasin kasutada puhtalt rsyslogi logide kohaletoimetamiseks. Ilma s\u00f5numij\u00e4rjekorrata, tavaliste rsyslogi vahenditega. \u00dcldiselt see t\u00f6\u00f6tab.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/e61a25005ecbdc86d9de3215ee6fb97e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid on n\u00fcansse selle osas, kuidas neid hiljem sellesse ossa (Logstash\/Graylog\/ES) paigutada. See osa (rsyslog-rsyslog) kasutatakse andakeskuste vahel. Siin on kompressitud tcp link, mis v\u00f5imaldab s\u00e4\u00e4sta ribalaiust ja seega suurendada t\u00f5en\u00e4osust, et saame m\u00f5ningaid logisid teiselt andakeskuselt olukordades, kus kanal on ummistunud. Kuna meil on Indoneesia, kus k\u00f5ik on halvasti. Seal on see pidev probleem.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/7509ba360be2db4dec0c8679225d285f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00f5tlesime, kuidas me saame j\u00e4lgida, kui t\u00f5en\u00e4oliselt j\u00f5uavad logid, mida oleme rakendusest salvestanud, teise otsa? Otsustasime luua metrikad. Rsyslogil on oma statistika kogumise moodul, kus on m\u00f5ned loendurid. N\u00e4iteks v\u00f5ib see n\u00e4idata Teile j\u00e4rjekorra suurust v\u00f5i palju s\u00f5numeid on tulnud mingisse tegevusse. Nendest saab midagi v\u00f5tta. Pluss, sellel on kohandatavad loendurid, mida saab seadistada, ja see n\u00e4itab n\u00e4iteks, kui palju s\u00f5numeid on salvestanud mingi API. Edasi, kirjutasin rsyslog_exporter'i Pythonis ja saatsime k\u00f5ik Prometheusesse ja koostasime graafikud. Graylogi metrikad oleksid olnud v\u00e4ga soovitavad, kuid seni pole me neid seadistanud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/ef9bd61fc43e056b4a56240c85e7fd20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Milliste probleemidega kokku puutusime? Probleemid tekkisid seet\u00f5ttu, et avastasime (\u00c4KKI!), et meie Live API saadab 50k s\u00f5numit sekundis. See on ainult Live API, ilma stagingita. Ja Graylog n\u00e4itab meile ainult 12 tuhat s\u00f5numit sekundis. Ja tekkis m\u00f5istlik k\u00fcsimus, kus siis \u00fclej\u00e4\u00e4nud on? Sellest t\u00f5stsime j\u00e4relduse, et Graylog lihtsalt ei suuda hakkama. Vaatasime ja t\u00f5epoolest, Graylog Elasticsearchiga ei suutnud seda voogu taluda.<\/p>\n<p><\/p>\n<p>Edasi, teised avastused, mille tegime protsessi k\u00e4igus.<\/p>\n<p><\/p>\n<p>Socket'i kirjutamine on blokeeritud. Kuidas see juhtus? Kui ma kasutasin rsyslogit kohaletoimetamiseks, siis mingil hetkel kukkus meil kanal andakeskuste vahel kokku. \u00dches kohas seisis kohaletoimetamine, teises kohas seisis kohaletoimetamine. K\u00f5ik see j\u00f5udis masinani koos API'ga, mis kirjutavad rsyslog socket'isse. Seal t\u00e4itis j\u00e4rjekord. Siis t\u00e4itus j\u00e4rjekord Unix socket'i kirjutamiseks, mis on vaikimisi 128 paketti. Ja j\u00e4rgmine write() rakenduses blokeerub. Kui me vaatasime Go rakendustes kasutatavat teeki, oli seal \u00f6eldud, et socket'isse kirjutamine toimub mitteblokeerivas re\u017eiimis. Olime kindlad, et midagi ei blokeeru. Sest me lugesime. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/280606\/\">artiklit Badushka'st<\/a><\/noindex>, mis sellest kirjutati. Aga on \u00fcks moment. Selle kutsumise \u00fcmber oli l\u00f5putu ts\u00fckkel, milles pidevalt ettev\u00f5teti proovida s\u00f5numit soketi panna. Seda me ei m\u00e4rganud. Ainus lahendus oli raamatukogu \u00fcmber kirjutamine. Sel ajal on see paar korda muutunud, kuid n\u00fc\u00fcd oleme eemaldanud k\u00f5ik lukud k\u00f5ikides alam\u00fcsteemides. Seet\u00f5ttu saab rsyslogi peatada ja midagi ei juhtu.<\/p>\n<p><\/p>\n<p>On vaja j\u00e4lgida j\u00e4rjekordade suurust, mis aitab v\u00e4ltida nende l\u00f5ksude sisse astumist. Esiteks, saame j\u00e4lgida, millal hakkame s\u00f5numeid kaotama. Teiseks, saame j\u00e4lgida, et meil on \u00fcldiselt probleemid kohaletoimetamisega.<\/p>\n<p><\/p>\n<p>Ja veel \u00fcks ebameeldiv moment \u2014 amplifikatsioon 10 korda mikroteenuste arhitektuuris \u2014 see on v\u00e4ga lihtne. Meil ei ole palju sissetulevaid p\u00e4ringuid, kuid nende s\u00f5numite edasiviimise t\u00f5ttu graafikus, access-logide t\u00f5ttu, t\u00f5stame me logide koormust tegelikult umbes k\u00fcmme korda. Kahjuks ei j\u00f5udnud ma t\u00e4psed numbrid v\u00e4lja arvutada, kuid mikroteenused \u2014 need ongi sellised. Seda tuleb silmas pidada. Tundub, et hetkel on logide kogumise alam\u00fcsteem Lazadas k\u00f5ige koormatud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/d76c6d91613ff77c41b8985cee83218f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas lahendada elasticsearchi probleem? Kui on vaja kiiresti saada logid \u00fchte kohta, et mitte joosta k\u00f5ikide masinate vahel ja neid sealt kokku koguda, kasutage failide salvestust. See t\u00f6\u00f6tab garanteeritult. Seda saab teha mistahes serverist. Tuleb lihtsalt sinna kettaid paigutada ja syslog paigaldada. P\u00e4rast seda on teil \u00fches kohas k\u00f5ik logid olemas. Edasi saab juba rahulikult seadistada elasticsearchi, graylogi, midagi muud. Kuid teil on juba k\u00f5ik logid ja lisaks saate neid hoida nii kaua, kui ketta mahtudest piisab.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/571297f25de76958769f3a4b9bfbf5b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Minu ettekande hetkel n\u00e4gi skeem v\u00e4lja selline. Faili ei kirjutanud me praktiliselt enam. Praegu toimetame t\u00f5en\u00e4oliselt viimased osad v\u00e4lja. Kohalikud masinad, millel API-d k\u00e4ivitatakse, enam failidesse ei kirjuta. Esiteks, on olemas failide salvestus, mis t\u00f6\u00f6tab v\u00e4ga h\u00e4sti. Teiseks, nendel masinatel l\u00f5peb pidevalt ruum, seda tuleb pidevalt j\u00e4lgida.<\/p>\n<p><\/p>\n<p>See osa Logstashi ja Graylogi kohta t\u00f5epoolest h\u00e4irib. Seet\u00f5ttu tuleb sellest vabaneda. Tuleb valida midagi \u00fchte.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/4a285577708aa1c55c16a72364fa8072.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oleme otsustanud loobuda Logstashist ja Kibanast. Kaheks, et meil on turbedo. Mis seos on? Seos on selles, et Kibana ilma X-Packi ja Shieldita ei v\u00f5imalda p\u00e4\u00e4s \u00f5igusi logidele. Seet\u00f5ttu valisime Graylogi. Seal on k\u00f5ik olemas. Ta mulle ei meeldi, aga ta t\u00f6\u00f6tab. Ostisime uut riistvara, installisime sinna v\u00e4rske Graylogi ja t\u00f5stsime k\u00f5ik logid rangete formaatidega eraldi Graylogi. Me lahendasime sama t\u00fc\u00fcpi v\u00e4ljade korralduse probleemi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/91b9fdada2648ae1caec05169b11926a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis siis uude Graylogi kuulub? Kirjutasime k\u00f5ik Dockerisse. V\u00f5tsime palju servereid, paigaldasime kolm Kafka instantsi, 7 serverit Graylog versiooniga 2.3 (sest tahtsime Elasticsearch versiooni 5). K\u00f5ik see t\u00f5steti HDD RAID-ide peale. N\u00e4gime indekseerimise kiirusena kuni 100 tuhat s\u00f5numit sekundis. N\u00e4gime numbrit, et 140 terabaiti andmeid n\u00e4dalas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/05f9b3c06739548f092bbe271bf8fc54.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja j\u00e4lle komistus! Meil on tulekul kaks m\u00fc\u00fcki. Meie suurus on \u00fcle 6 miljoni s\u00f5numi. Graylog ei suuda enam t\u00f6\u00f6tada. Peame kuidagi ellu j\u00e4\u00e4ma. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/424aa2febc2fd903aabee4aeabb64010.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00f5udsime ellu nii. Lisame veel paar serverit ja SSD-d. Hetkel elame sellisel moel. Praegu suudame juba t\u00f6\u00f6delda 160 tuhat s\u00f5numit sekundis. Me pole veel latti tabanud, seega pole selge, kui palju me sellest tegelikult v\u00e4lja saame. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/17d84fa7de5403551e55f42345e62a1a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sellised on meie tulevikuplaanid. Neist on t\u00f5en\u00e4oliselt k\u00f5ige olulisem k\u00f5rge saadavus. Meil seda veel pole. Mitmed masinad on seadistatud sama moodi, aga k\u00f5ik l\u00e4heb \u00fche masina kaudu. Peame kulutama aega, et seadistada vahepealset varundust nende vahel.<\/p>\n<p><\/p>\n<p>Koguda m\u00f5\u00f5dikud Graylogist.<\/p>\n<p><\/p>\n<p>K\u00e4ivitada kiiruspiirang, et \u00fcks hull API meilt ribalaiust ja k\u00f5ike muud ei tapaks.<\/p>\n<p><\/p>\n<p>Ja l\u00f5puks, kirjutada m\u00f5ni SLA arendajatega, et saame teenindada nii palju. Kui saadate rohkem, siis vabandust.<\/p>\n<p><\/p>\n<p>Ja kirjutada dokumentatsioon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Juri Bushmelev \u201eRake Map on Log Collection and Delivery Field\u201c \u2013 aruande t\u00f5lgendus\" src=\"\/wp-content\/uploads\/2019\/04\/4a78e2834d5877f8bf17d77a44000c22.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kokkuv\u00f5ttes, mida me oleme kogenud. Esiteks, standardid. Teiseks, syslog - kook. Kolmandaks, rsyslog t\u00f6\u00f6tab just nii, nagu slaidil \u00f6eldud. Ja liigume k\u00fcsimustele \u00fcle.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimused<\/strong>.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Miks siis ikkagi ei otsustanud v\u00f5tta... (filebeat?)<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Tuleb kirjutada faili. V\u00e4ga ei tahtnud. Kui sul on API, mis kirjutab tuhandeid s\u00f5numeid sekundis, siis isegi kui sa kord tunni jooksul keerad, pole see ikkagi variant. Sa saad kirjutada torusse. Mida arendajad mulle k\u00fcsisid: \"Ja mis juhtub, kui protsess, kuhu me kirjutame, kukub?\" Ma lihtsalt ei leidnud, mida vastata, ja \u00fctlesin: \"Noh, okei, \u00e4rme tee siis nii.\"<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Miks te ei kirjuta logisid lihtsalt HDFS-i?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: See on j\u00e4rgmine etapp. Me oleme selle \u00fcle m\u00f5elnud alguses, aga kuna praegu pole ressursse sellega tegeleda, j\u00e4\u00e4b see meie pikaajalisse lahendusse.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Veergude formaat oleks sobivam.<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: I understand everything. We are \"for\" it with both hands. <\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Te kirjutate rsyslog-i. Seal saab kasutada nii TCP-d kui ka UDP-d. Aga kui kasutate UDP-d, siis kuidas te garanteerite kohaletoimetamise?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: On kaks momenti. Esiteks, ma \u00fctlen kohe k\u00f5igile, et me ei garanteeri logide kohaletoimetamist. Sest kui arendajad tulevad ja \u00fctlevad: \u201eAga \u00e4kki hakkame sinna kirjutama finantsandmeid ja teie hoiustate need kuskile, juhuks kui midagi juhtub\u201d, siis me vastame neile \u201eSuurep\u00e4rane! Laske teil alustada soketisse kirjutamise blokkeerimist ja teha seda tehingutes, et me tagaksime, et te panete meile need soketti ja veenduge, et me saime need sealt.\u201d Ja selle hetkel ei ole kellelgi enam soovi seda teha. Kui ei ole soovi, siis millised on meie k\u00fcsimused? Kui te ei taha garanteerida kirjutamist soketti, siis miks peaksime meie garantii andma kohaletoimetamiseks? Me teeme parima pingutuse. Me t\u00f5esti p\u00fc\u00fcame kohaletoimetada nii palju ja nii h\u00e4sti kui v\u00f5imalik, kuid me ei anna 100% garantiisid. Seet\u00f5ttu \u00e4rge kirjutage sinna finantsandmeid. Selle jaoks on andmebaasid tehingutega.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Kui API genereerib m\u00f5ne teate logis ja edastab juhtimise mikroteenustele, siis kas te ei ole kokku puutunud probleemiga, et erinevatelt mikroteenustelt saavate teadete j\u00e4rjekord on vale? Selle t\u00f5ttu tekib segadus.<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: On normaalne, et nad tulevad erinevas j\u00e4rjekorras. Sellega tuleb valmis olla. Sest \u00fckski v\u00f5rgu kohaletoimetamine ei garanteeri j\u00e4rjekorda v\u00f5i tuleb sellele spetsiaalselt ressursse kulutada. Kui v\u00f5tta failihoiustused, siis iga API salvestab logid oma faili. Tegelikult jagab rsyslog need kataloogidesse. Igal API-l on seal oma logid, kuhu saab minna ja vaadata, ja siis timestampi p\u00f5hjal saab neid omavahel seostada. Kui nad otsivad Graylog-st, siis seal nad sorteeritakse timestampi j\u00e4rgi. Seal on k\u00f5ik h\u00e4sti.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Timestamp v\u00f5ib erineda millisekundite kaupa.<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Timestamp genereerib ise API. Selles ongi kogu asi. Meil on NTP. API genereerib timestampi juba ise s\u00f5numis. Seda ei lisa rsyslog.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Ei ole v\u00e4ga selge, kuidas and keskkonnad omavahel suhtlevad. Andmekeskuse sees on selge, kuidas logisid koguti ja t\u00f6\u00f6deldi. Kuidas toimub suhtlemine andmekeskuste vahel? Kas iga andmekeskus elab oma elu?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Peaaegu. Igal riigil on oma andmekeskus. Meil ei ole praegu jaotust, et sama riik oleks erinevates andmekeskustes. Seet\u00f5ttu ei pea neid \u00fchendama. Igas keskuses on Log Relay. See on Rsyslog server. Tegelikult on kaks haldust\u00f6\u00f6d masinat. Need on \u00fchetaoliselt seadistatud. Kuid hetkel l\u00e4heb liiklus l\u00e4bi ainult \u00fche neist. See kogub k\u00f5iki logisid. Sellel on ketta j\u00e4rjekord igaks juhuks. See tihendab logisid ja saadab need keskmisse andmekeskusesse (Singapur), kus need saadetakse edasi Graylogi. Ja igas andmekeskuses on oma failide salvestus. Juhul, kui \u00fchendus kaob, on meil k\u00f5ik logid seal. Need j\u00e4\u00e4vad sinna. Need salvestatakse.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Kas sa saad sealt ekstreemsetes olukordades logisid?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Saab minna sinna (failide salvestusse) ja vaadata.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Kuidas te j\u00e4lgite, et te ei kaota logisid?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Me tegelikult kaotame neid ja me j\u00e4lgime seda. J\u00e4lgimist alustati kuu aega tagasi. Raamatukogus, mida kasutab Go API, on m\u00f5\u00f5dikud. See oskab lugeda, mitu korda ta ei saanud socketisse kirjutada. Seal on hetkel nutikas heuristika. Seal on puhver. See proovib kirjutada sellest s\u00f5numit socketisse. Kui puhver t\u00e4itub, hakkab see neid loobuma. Ja loendab, kui palju ta on loobunud. Kui loendurid hakkavad t\u00e4ituma, saame sellest teada. Need saadetakse ka Prometheusesse, ja Grafanas saab vaadata graafikuid. Saate seadistada teateid. Kuid hetkel ei ole selge, kellele need saata.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Kas Elasticsearchis hoiate logisid koos varundamisega? Kui palju teil on koopiaid?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: \u00dcks koopiate.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: See on ainult \u00fcks koopia?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: See on master ja koopia. Andmed on hoitud kahes eksemplaris.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Oled sa kuidagi Rsyslogi puhvri suurust seadistanud? <\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Me kirjutame andmegramme kohandatud unix socketisse. See seab meile kohe piiranguks 128 kilobaiti. Me ei saa sinna rohkem kirjutada. Oleme selle standardisse kirja pannud. Kes tahab salvestustesse j\u00f5uda, need kirjutavad 128 kilobaiti. Raamatukogud k\u00e4rbivad, ja panevad lipu, et s\u00f5num on k\u00e4rbitud. Meie s\u00f5numi standardis on eriline v\u00e4li, mis n\u00e4itab, kas see on kirjutamise k\u00e4igus k\u00e4rbitud v\u00f5i mitte. Seega on meil v\u00f5imalik j\u00e4lgida ka seda hetke.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Kas kirjutate vigaseid JSON-e? <\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Vigane JSON j\u00e4etakse k\u00f5rvale kas relay ajal, sest pakett on liiga suur. V\u00f5i viskab Graylog selle k\u00f5rvale, sest ei suuda JSON-i parsida. Kuid siin on n\u00fcansse, mida tuleb fikseerida, ja need on enamikul juhtudel seotud rsyslog-iga. Olen juba esitanud seal mitu probleemi, millega tuleb veel t\u00f6\u00f6tada.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Miks Kafka? Kas olete proovinud RabbitMQ-d? Kas Graylog ei toimi selliste koormuste juures?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Meie jaoks ei toimi Graylog. Aga Graylog meie jaoks toimib. Sellega on t\u00f5eliselt probleeme. See on \u00fcsna eriline asi. Ja tegelikult pole seda vaja. Eelistaksin kirjutada rsyslogist otse Elasticsearchi ja vaadata siis Kibana't. Kuid peame sedalaadi k\u00fcsimuse turvaekspertidega klaarima. See on v\u00f5imalik variant meie arenguks, kui viskame Graylogi v\u00e4lja ja kasutame Kibana't. Logstash'i kasutamine pole m\u00f5tet. Sest ma saan sama asja teha rsyslogiga. Ja sellel on moodul Elasticsearchi kirjutamiseks. Graylogiga proovime kuidagi edasi elada. Oleme seda isegi natuke optimeerinud. Kuid seal on veel ruumi paranemiseks.<\/p>\n<p><\/p>\n<p>Kafkast. Ajalooliselt on see nii v\u00e4lja kujunenud. Kui ma tulin, oli see juba olemas ja logisid kirjutati sinna juba. Me lihtsalt t\u00f5ime oma klastrisse ja kolisime sinna logid. Me haldame seda, me teame, kuidas tal l\u00e4heb. RabbitMQ kohta... meil ei l\u00e4he RabbitMQ h\u00e4sti. Aga RabbitMQ meile sobib. Meil on see tootmises ja seal on olnud probleeme. Praegu me uuendasime seda enne kampaaniat ja see hakkas normaalselt t\u00f6\u00f6le. Aga enne seda ma ei olnud valmis seda tootmisesse laskma. On veel \u00fcks moment. Graylog oskab lugeda AMQP 0.9 versiooni, kuid rsyslog oskab kirjutada AMQP 1.0 versiooni. Ja ei ole \u00fchtegi lahendust, mis oskaks m\u00f5lemat. On kas \u00fcks v\u00f5i teine. Seega sellel hetkel ainult Kafka. Aga seal on ka omad n\u00fcansid. Kuna omkafka selle rsyslog versiooni puhul, mida me kasutame, v\u00f5ib kaotada kogu s\u00f5numite puhvri, mille ta rsyslogist v\u00e4lja v\u00f5ttis. Seni oleme sellega leppinud. <\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Kas te kasutate Kafkat, kuna see oli teil olemas? Kas seda kasutatakse veel millegi muu jaoks?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Kafkat, mis meil oli, kasutab Data Science'i meeskond. See on t\u00e4iesti eraldi projekt, millest ma, kahjuks, midagi rohkem ei tea. Ta oli Data Science'i meeskonna halduses. Kui logid s\u00fcsteemi toodi, otsustati seda kasutada, et mitte installida veel \u00fchte. N\u00fc\u00fcd, kui me oleme Graylogi uuendanud, kaotasime \u00fchilduvuse, kuna seal on vana Kafka versioon. Me pidime oma looma. Samuti saime lahti nendest neljast teema kohta iga API kohta. Me tegime \u00fche laia teema k\u00f5igi live'i jaoks, \u00fche laia teema k\u00f5igi stagingute jaoks ja lihtsalt saame sinna k\u00f5ik logid. Graylog korjab k\u00f5ike paralleelselt.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Miks on vajalik see soketiga tegelemine? Kas olete proovinud kasutada konteineritele log-draiverit syslog.<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Kui me selle k\u00fcsimusega tegelema hakkasime, olid meie suhted Dockeriga pingelised. Tookord oli see Docker 1.0 v\u00f5i 0.9. Docker ise oli kummaline. Teiseks, kui veel logisid ka sinna panna... Mul on kontrollimatu kahtlus, et ta laseb k\u00f5ik logid end l\u00e4bi, l\u00e4bi Docker daemon'i. Kui meil \u00fcks API n\u00e4ssu l\u00e4heb, siis teised API-d j\u00e4\u00e4vad kinni, kuna nad ei saa saata stdout ja stderr-i. Ma ei tea, kuhu see viib. Tunne \u00fctleb, et ei ole vaja syslog-draiverit Dockeris sellistes olukordades kasutada. Meie funktsionaalse testimise osakonnal on oma v\u00e4ike Graylog klaster logide jaoks. Nad kasutavad Docker'i log-draivereid ja seal tundub isegi k\u00f5ik toimivat h\u00e4sti. Kuid nad kirjutavad GELF-i kohe Graylogi. Tookord, kui me k\u00f5ike seda korraldasime, vajasime, et see lihtsalt t\u00f6\u00f6taks. V\u00f5ib-olla hiljem, kui keegi \u00fctleb, et see on sada aastat kenasti t\u00f6\u00f6tanud, siis proovime uuesti.<\/p>\n<p><\/p>\n<p><strong>K\u00fcsimus<\/strong>: Te teete andmekeskuste vahel kohaletoimetamist rsyslogi kaudu. Miks mitte Kafka kaudu?<\/p>\n<p><\/p>\n<p><strong>Vastus<\/strong>: Me teeme tegelikult nii \u00fcht kui teist. Kahes p\u00f5hjusest. Kui kanal on t\u00e4ielikult purustatud, siis ei p\u00e4\u00e4se meie logid isegi kokku surutud kujul sellest l\u00e4bi. Kafka v\u00f5imaldab neid protsessis lihtsalt kaotada. Selle meetodi abil vabaneme logide kinni j\u00e4\u00e4misest. Kui kasutame lihtsalt Kafka-d otse. Kui meie kanal on hea ja soovime seda vabastada, siis kasutame rsyslogi. Aga tegelikult v\u00f5ib selle seadistada nii, et ta ise viskab \u00e4ra, mis ei p\u00e4\u00e4se l\u00e4bi. Praeguseks kasutame m\u00f5nes kohas otse rsyslogi kohaletoimetamist, m\u00f5nes Kafka-d.<\/p>\n<p>Allikas: <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.1.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.\" \/>\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\/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.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\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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 \u201eRake'ide kaart logide kogumise ja kohaletoimetamise alal\u201d \u2014 ettekande t\u00f5lgendus | ProHoster","description":"Logid on s\u00fcsteemi oluline osa, mis v\u00f5imaldab m\u00f5ista, kas see t\u00f6\u00f6tab (v\u00f5i ei t\u00f6\u00f6ta) oodatult. Mikroteenuste arhitektuuri korral muutub logidega t\u00f6\u00f6tamine eraldi erialaks.","canonical_url":"https:\/\/prohoster.info\/et\/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":"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\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.","og:url":"https:\/\/prohoster.info\/et\/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\/et\/wp-json\/wp\/v2\/posts\/32723","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=32723"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/24507"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=32723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=32723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=32723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}