{"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\/hu\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada","title":{"rendered":"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A napl\u00f3k a rendszer fontos r\u00e9sz\u00e9t k\u00e9pezik, lehet\u0151v\u00e9 t\u00e9ve, hogy meg\u00e9rts\u00fck, m\u0171k\u00f6dik-e (vagy sem) az elv\u00e1r\u00e1soknak megfelel\u0151en. A mikroszerv\u00edz architekt\u00fara k\u00f6r\u00fclm\u00e9nyei k\u00f6z\u00f6tt a napl\u00f3k kezel\u00e9se k\u00fcl\u00f6n diszcipl\u00edn\u00e1v\u00e1 v\u00e1lik, amely k\u00fcl\u00f6n\u00f6s kih\u00edv\u00e1sok el\u00e9 \u00e1ll\u00edt minket.<\/p>\n<p><\/p>\n<ul>\n<li>hogyan \u00edrjunk napl\u00f3kat az alkalmaz\u00e1sb\u00f3l;<\/li>\n<li>hov\u00e1 \u00edrjunk napl\u00f3kat;<\/li>\n<li>hogyan sz\u00e1ll\u00edtsuk a napl\u00f3kat t\u00e1rol\u00e1sra \u00e9s feldolgoz\u00e1sra;<\/li>\n<li>hogyan dolgozzuk fel \u00e9s t\u00e1roljuk a napl\u00f3kat.<\/li>\n<\/ul>\n<p><\/p>\n<p>A korszer\u0171 kont\u00e9neriz\u00e1ci\u00f3s technol\u00f3gi\u00e1k alkalmaz\u00e1sa m\u00e9g t\u00f6bb neh\u00e9zs\u00e9get jelent a megold\u00e1s keres\u00e9s\u00e9ben.<\/p>\n<p><\/p>\n<p>Err\u0151l sz\u00f3l Yuri Bushmelev el\u0151ad\u00e1s\u00e1nak a c\u00edme: \u201eA kapar\u00f3 t\u00e9rk\u00e9p a logok gy\u0171jt\u00e9s\u00e9nek \u00e9s sz\u00e1ll\u00edt\u00e1s\u00e1nak ter\u00fclet\u00e9n\u201d <\/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=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" 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>Akiket \u00e9rdekel, azokat k\u00e9rem, hogy tartsanak velem.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>A nevem Yuri Bushmelev. A Lazad\u00e1n\u00e1l dolgozom. Ma arr\u00f3l fogok besz\u00e9lni, hogyan k\u00e9sz\u00edtj\u00fck el a napl\u00f3inkat, hogyan gy\u0171jtj\u00fck \u0151ket, \u00e9s mit \u00edrunk bel\u00e9j\u00fck. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/ece6053b1027ab3681022049ddcd79ea.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Honnan j\u00f6v\u00fcnk? Kik vagyunk? A Lazada a legnagyobb online bolt a D\u00e9lkelet-\u00c1zsia hat orsz\u00e1g\u00e1ban. Ezek az orsz\u00e1gok adatk\u00f6zpontokra vannak elosztva. Jelenleg n\u00e9gy adatk\u00f6zpontunk van. Mi\u00e9rt fontos ez? Mert n\u00e9h\u00e1ny megold\u00e1sunkat az indokolta, hogy az adatk\u00f6zpontok k\u00f6z\u00f6tt gyenge kapcsolatok vannak. Mikroszerv\u00edz architekt\u00far\u00e1nk van, \u00e9s meglepetten tapasztaltam, hogy m\u00e1r 80 mikroszerviz\u00fcnk van. Amikor elkezdtem a napl\u00f3kkal foglalkozni, csak 20 volt bel\u0151l\u00fck. Ezen k\u00edv\u00fcl van el\u00e9g sok r\u00e9gi PHP k\u00f3dunk, amivel szint\u00e9n foglalkozni kell. Mindez jelenleg t\u00f6bb mint 6 milli\u00f3 \u00fczenetet gener\u00e1l percenk\u00e9nt az eg\u00e9sz rendszerben. Most megmutatom, hogyan \u00e9l\u00fcnk ezzel egy\u00fctt, \u00e9s mi\u00e9rt fontos ez.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/0ba5fcee5064865e836cefd47c40d246.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezekkel a 6 milli\u00f3 \u00fczenettel valahogy \u00e9ln\u00fcnk kell. Mit kell tenn\u00fcnk vel\u00fck? 6 milli\u00f3 \u00fczenetet kell:<\/p>\n<p><\/p>\n<ul>\n<li>el k\u00fcldeni az alkalmaz\u00e1sb\u00f3l<\/li>\n<li>\u00e1tvenni a sz\u00e1ll\u00edt\u00e1shoz<\/li>\n<li>sz\u00e1ll\u00edtani az elemz\u00e9shez \u00e9s t\u00e1rol\u00e1shoz.<\/li>\n<li>elemezni<\/li>\n<li>valahogy t\u00e1rolni.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/a449062193c4b1757a61f5c92e270a74.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Amikor h\u00e1rommilli\u00f3 \u00fczenet j\u00f6tt l\u00e9tre, k\u00f6r\u00fclbel\u00fcl \u00edgy n\u00e9ztem ki. Mert n\u00e9h\u00e1ny fill\u00e9rrel kezdt\u00fcnk. Nyilv\u00e1nval\u00f3, hogy erre alkalmaz\u00e1si napl\u00f3kat \u00edrnak. P\u00e9ld\u00e1ul nem tudott csatlakozni az adatb\u00e1zishoz, csatlakozott az adatb\u00e1zishoz, de nem tudott valamit olvasni. De ezen k\u00edv\u00fcl minden mikroszolg\u00e1ltat\u00e1sunk \u00edr egy access-napl\u00f3t is. Minden egyes k\u00e9r\u00e9s, ami a mikroszolg\u00e1ltat\u00e1shoz \u00e9rkezik, beker\u00fcl a napl\u00f3ba. Mi\u00e9rt csin\u00e1ljuk ezt? A fejleszt\u0151k szeretn\u00e9k nyomon k\u00f6vetni az esem\u00e9nyeket. Minden access-napl\u00f3ban van egy traceid mez\u0151, amellyel egy speci\u00e1lis interf\u00e9sz visszafejti az \u00f6sszes l\u00e1ncot, \u00e9s sz\u00e9pen megjelen\u00edti a trace-t. A trace mutatja, hogyan zajlott a k\u00e9r\u00e9s, \u00e9s ez seg\u00edt a fejleszt\u0151inknek gyorsabban megbirk\u00f3zni a fura dolgokkal.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/e13a2d37ce57e894d023ad405a2b5200.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan \u00e9lj\u00fcnk ezzel? Most di\u00f3h\u00e9jban elmondom az opci\u00f3k mez\u0151j\u00e9t \u2013 hogyan oldj\u00e1k meg egy\u00e1ltal\u00e1n ezt a probl\u00e9m\u00e1t. Hogyan lehet megoldani a napl\u00f3k gy\u0171jt\u00e9s\u00e9nek, tov\u00e1bb\u00edt\u00e1s\u00e1nak \u00e9s t\u00e1rol\u00e1s\u00e1nak feladat\u00e1t. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/60af5e5db804770295741995adb37d90.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan \u00edrjunk az alkalmaz\u00e1sb\u00f3l? Nyilv\u00e1nval\u00f3, hogy k\u00fcl\u00f6nb\u00f6z\u0151 m\u00f3dszerek l\u00e9teznek. K\u00fcl\u00f6n\u00f6sen l\u00e9tezik best practice, ahogy a divatos ismer\u0151s\u00f6k mondj\u00e1k. Van old school, k\u00e9tf\u00e9le v\u00e1ltozatban, ahogy a nagyap\u00e1k mes\u00e9lt\u00e9k. Vannak m\u00e1s m\u00f3dszerek is. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/deab57e4ac0472a8591c0fad9e9f2910.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A napl\u00f3k gy\u0171jt\u00e9s\u00e9vel k\u00f6r\u00fclbel\u00fcl hasonl\u00f3 a helyzet. Ennek a konkr\u00e9t r\u00e9sz\u00e9nek a megold\u00e1si lehet\u0151s\u00e9gei nem t\u00fal sokan vannak. T\u00f6bb van m\u00e1r, de m\u00e9g nem t\u00fal sok. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/8a6004aaeb931332983a975d0fa5c1d6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De a sz\u00e1ll\u00edt\u00e1ssal \u00e9s a tov\u00e1bbi elemz\u00e9ssel kapcsolatban \u2013 a vari\u00e1ci\u00f3k sz\u00e1ma kezd elszabadulni. Most nem fogom r\u00e9szletezni minden lehet\u0151s\u00e9get. Azt hiszem, az alapvet\u0151 opci\u00f3k mindenki sz\u00e1m\u00e1ra ismertek, aki \u00e9rdekl\u0151d\u00f6tt a t\u00e9ma ir\u00e1nt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/6a0b64c7e58bc59f56aaddd27112ec51.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Megmutatom, hogyan csin\u00e1ltuk ezt a Lazad\u00e1n\u00e1l, \u00e9s hogy val\u00f3j\u00e1ban hogyan indult az eg\u00e9sz. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/20f3aa5ceea8b28733ce5399bc30f5b5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Egy \u00e9vvel ezel\u0151tt \u00e9rkeztem a Lazad\u00e1hoz, \u00e9s elk\u00fcldtek egy projektre, ami a napl\u00f3kkal foglalkozott. K\u00f6r\u00fclbel\u00fcl \u00edgy n\u00e9zett ki. A napl\u00f3 az alkalmaz\u00e1sb\u00f3l stdout-ra \u00e9s stderr-re \u00edr\u00f3dott. Minden divatosan k\u00e9sz\u00fclt. De azt\u00e1n a fejleszt\u0151k kisz\u00f3rt\u00e1k a standard folyamokb\u00f3l, \u00e9s azt mondt\u00e1k, hogy majd az infrastrukt\u00fara-specialist\u00e1k kezelik. Az infrastrukt\u00fara-specialist\u00e1k \u00e9s a fejleszt\u0151k k\u00f6z\u00f6tt m\u00e9g voltak kiad\u00e1s\u00e9rt felel\u0151s\u00f6k, akik azt mondt\u00e1k: \u201e\u00f6\u00f6\u00f6\u2026 h\u00e1t j\u00f3, dobtuk \u0151ket csak sim\u00e1n egy f\u00e1jlba shell-el, \u00e9s k\u00e9sz\u201d. Mivel ez mind kont\u00e9nerben volt, ez\u00e9rt k\u00f6zvetlen\u00fcl a kont\u00e9nerben z\u00e1rt\u00e1k be, \u00e1tmapelt\u00e9k bels\u0151 mapp\u00e1t, \u00e9s oda tett\u00e9k. Azt gondolom, hogy mindenkinek k\u00f6r\u00fclbel\u00fcl nyilv\u00e1nval\u00f3, hogy mi lett bel\u0151le.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/d92e02c18a4c683c9389321e4d5412df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9zz\u00fck meg egy kicsit t\u00e1volabbr\u00f3l. Hogyan sz\u00e1ll\u00edtottuk ezeket a napl\u00f3kat. Valaki a td-agentet v\u00e1lasztotta, ami val\u00f3j\u00e1ban a fluentd, de nem teljesen fluentd. Soha nem \u00e9rtettem meg e k\u00e9t projekt viszony\u00e1t, de \u00fagy t\u0171nik, egy \u00e9s ugyanaz. A Rubyban \u00edrt fluentd a napl\u00f3f\u00e1jlokat olvasta, JSON-ba parse-olta \u0151ket valamilyen regul\u00e1ris kifejez\u00e9sek alapj\u00e1n. Azt\u00e1n elk\u00fcldte \u0151ket a Kafka-ba. R\u00e1ad\u00e1sul a Kafka-ban minden API-hoz n\u00e9gy k\u00fcl\u00f6nb\u00f6z\u0151 topikunk volt. Mi\u00e9rt n\u00e9gy? Mert van \u00e9l\u0151 (live), van teszt (staging), \u00e9s mert van stdout \u00e9s stderr. A fejleszt\u0151k szapor\u00edtj\u00e1k \u0151ket, az infrastrukt\u00far\u00e1\u00e9rt felel\u0151s\u00f6knek pedig l\u00e9tre kell hozniuk \u0151ket a Kafka-ban. R\u00e1ad\u00e1sul a Kafka-t egy m\u00e1sik oszt\u00e1ly ir\u00e1ny\u00edtotta. Ez\u00e9rt jegyet kellett nyitni, hogy \u0151k l\u00e9trehozz\u00e1k ott a n\u00e9gy topikot minden API-ra. Mindenki elfelejtette ezt. \u00c1ltal\u00e1ban t\u00f6k k\u00e1osz volt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/3130f9ebfda22713cffacf10db45ca89.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit csin\u00e1ltunk ezut\u00e1n? Ezt elk\u00fcldt\u00fck a Kafk\u00e1ba. A Kafk\u00e1b\u00f3l a napl\u00f3k fele a Logstash-be ment. A napl\u00f3k m\u00e1sik fele megoszlott. Egy r\u00e9sze az egyik Graylogba, a m\u00e1sik egy m\u00e1sik Graylogba ment. V\u00e9g\u00fcl ez az eg\u00e9sz egy Elasticsearch klaszterbe ker\u00fclt. Teh\u00e1t az eg\u00e9sz ez a k\u00e1osz v\u00e9g\u00fcl oda esett. Ezt nem \u00edgy kell csin\u00e1lni!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/98bf4811c102fc12fcd1114c25886b69.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cdgy n\u00e9z ki, ha t\u00e1volr\u00f3l fel\u00fclr\u0151l n\u00e9zz\u00fck. Ezt ne csin\u00e1ld! Itt sz\u00e1mokkal azonnal meg vannak jel\u00f6lve a probl\u00e9m\u00e1s helyek. Val\u00f3j\u00e1ban t\u00f6bb van, de 6 k\u00f6zvetlen\u00fcl probl\u00e9m\u00e1s, amivel valamit kell csin\u00e1lni. Ezekr\u0151l most k\u00fcl\u00f6n mes\u00e9lek. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/69f7682e6677bdda3068d6dea4db7732.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt (1,2,3) f\u00e1jlokat \u00edrunk \u00e9s ennek megfelel\u0151en itt azonnal h\u00e1rom csapda van. <\/p>\n<p><\/p>\n<p>Az els\u0151 (1) az, hogy valahova \u00edrniuk kell. Nem mindig szeretn\u00e9nk hagyni, hogy az API k\u00f6zvetlen\u00fcl f\u00e1jlba \u00edrjon. Jobb, ha az API egy kont\u00e9nerben van izol\u00e1lva, \u00e9s m\u00e9g jobb, ha csak olvashat\u00f3 (read-only). \u00c9n rendszergazda vagyok, ez\u00e9rt egy kicsit alternat\u00edvabban l\u00e1tom ezeket a dolgokat.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik pont (2,3) \u2014 sok k\u00e9r\u00e9s \u00e9rkezik az API-nkba. Az API sok adatot \u00edr egy f\u00e1jlba. A f\u00e1jlok n\u00f6vekednek. \u0150ket rot\u00e1lnunk kell. Mert k\u00fcl\u00f6nben nem lesz el\u00e9g lemezter\u00fclet. Rot\u00e1lni \u0151ket neh\u00e9z, mert \u00e1tir\u00e1ny\u00edt\u00e1ssal k\u00e9sz\u00fclnek shellen kereszt\u00fcl a k\u00f6nyvt\u00e1rban. Nem tudjuk rot\u00e1lni. Nem lehet megmondani az alkalmaz\u00e1snak, hogy nyissa meg \u00fajra a le\u00edr\u00f3kat. Mert a fejleszt\u0151k \u00fagy n\u00e9znek r\u00e1d, mint egy bolondra: \"Milyen le\u00edr\u00f3kr\u00f3l besz\u00e9lsz? Mi a stdout-ba \u00edrunk.\" Az infrastrukt\u00fara csapat l\u00e9trehozta a copytruncate funkci\u00f3t a logrotate-ban, ami egyszer\u0171en m\u00e1solatot k\u00e9sz\u00edt a f\u00e1jlr\u00f3l \u00e9s \u00e1trendezi az eredetit. Ennek megfelel\u0151en, a m\u00e1sol\u00e1s k\u00f6zben \u00e1ltal\u00e1ban elfogy a lemezter\u00fclet.<\/p>\n<p><\/p>\n<p>(4) K\u00fcl\u00f6nb\u00f6z\u0151 form\u00e1tumok voltak k\u00fcl\u00f6nb\u00f6z\u0151 API-inkban. Kicsit elt\u00e9rtek egym\u00e1st\u00f3l, de k\u00fcl\u00f6nb\u00f6z\u0151 regexp-eket kellett \u00edrni. Mivel ezt az eg\u00e9szet a Puppet ir\u00e1ny\u00edtotta, ott volt egy nagy csom\u00f3 oszt\u00e1ly saj\u00e1t bogaraival. Plusz a td-agent a legt\u00f6bb id\u0151t mem\u00f3ri\u00e1t ehettett, akadozhatott, \u00e9s csak \u00fagy tehetett, mintha m\u0171k\u00f6dne, de val\u00f3j\u00e1ban semmit sem csin\u00e1lt. K\u00edv\u00fclr\u0151l lehetetlen volt meg\u00e9rteni, hogy nem csin\u00e1l semmit. A legjobb esetben \u00f6sszeomlott, \u00e9s valaki majd fel\u00e9leszti. Pontosabban, \u00e9rkezett egy figyelmeztet\u00e9s, \u00e9s valaki majd manu\u00e1lisan \u00fajraind\u00edtja. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/424cda2b60e9e5669b7ef2b34ca74e48.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>(6) \u00c9s a legrosszabb pont az elasticsearch volt. Mert ez egy r\u00e9gi verzi\u00f3 volt. Mert ebben az id\u0151ben nem voltak dedik\u00e1lt mesterek. K\u00fcl\u00f6nb\u00f6z\u0151 napl\u00f3ink voltak, ahol a mez\u0151k \u00e1tfed\u00e9sben lehettek. K\u00fcl\u00f6nb\u00f6z\u0151 alkalmaz\u00e1sok napl\u00f3i azonos mez\u0151nevekkel \u00edr\u00f3dtak, de bel\u00fcl k\u00fcl\u00f6nb\u00f6z\u0151 adatokkal. Teh\u00e1t, egy napl\u00f3 p\u00e9ld\u00e1ul Integer-t kap a level mez\u0151be. Egy m\u00e1sik napl\u00f3 Stringet kap a level mez\u0151be. Statikus t\u00e9rk\u00e9pez\u00e9s n\u00e9lk\u00fcl egy csod\u00e1latos probl\u00e9ma sz\u00fcletik. Ha az elasticsearch index rot\u00e1l\u00e1sa ut\u00e1n az els\u0151 \u00fczenet Stringgel \u00e9rkezett, akkor rendben vagyunk. De ha az els\u0151 Integer-rel \u00e9rkezett, akkor minden k\u00f6vetkez\u0151 \u00fczenet, amely Stringgel \u00e9rkezett, egyszer\u0171en el lesz vetve. Mert a mez\u0151 t\u00edpusa nem egyezik.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/bc869f827bed326792857113191bb028.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kezdt\u00fcnk foglalkozni ezekkel a k\u00e9rd\u00e9sekkel. \u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy nem keres\u00fcnk b\u0171nbakokat.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/a071a4b38462f249339c988c35463639.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Valamit tenn\u00fcnk kell! Nyilv\u00e1nval\u00f3 dolog, hogy szabv\u00e1nyokat kell bevezetni. N\u00e9h\u00e1ny szabv\u00e1nyunk m\u00e1r volt. N\u00e9h\u00e1nyat k\u00e9s\u0151bb vezett\u00fcnk be. Szerencs\u00e9re a logok egys\u00e9ges form\u00e1tum\u00e1t minden API sz\u00e1m\u00e1ra m\u00e1r annak idej\u00e9n j\u00f3v\u00e1hagyt\u00e1k. Ez benne van a szolg\u00e1ltat\u00e1sok k\u00f6z\u00f6tti egy\u00fcttm\u0171k\u00f6d\u00e9s szabv\u00e1nyaiban. Teh\u00e1t, aki logokat akar kapni, annak ebben a form\u00e1tumban kell \u00edrnia \u0151ket. Ha valaki nem \u00edr logokat ebben a form\u00e1tumban, akkor nem garant\u00e1lunk semmit. <\/p>\n<p><\/p>\n<p>Ezut\u00e1n szeretn\u00e9nk bevezetni egy egys\u00e9ges szabv\u00e1nyt a logok \u00edr\u00e1s\u00e1nak, sz\u00e1ll\u00edt\u00e1s\u00e1nak \u00e9s gy\u0171jt\u00e9s\u00e9nek m\u00f3djaira. Tulajdonk\u00e9ppen arr\u00f3l van sz\u00f3, hova \u00edrjuk \u0151ket, \u00e9s mivel sz\u00e1ll\u00edtjuk. Az ide\u00e1lis helyzet az, amikor a projektekben ugyanazt a k\u00f6nyvt\u00e1rat haszn\u00e1lj\u00e1k. Van egy k\u00fcl\u00f6n logol\u00e1si k\u00f6nyvt\u00e1r a Go-hoz, van egy k\u00fcl\u00f6n k\u00f6nyvt\u00e1r a PHP-hoz. Akik n\u00e1lunk vannak \u2013 mindenkinek ezt kell haszn\u00e1lnia. Jelenleg azt mondan\u00e1m, hogy ennek 80%-\u00e1t teljes\u00edtj\u00fck. De n\u00e9h\u00e1nyan tov\u00e1bbra is kaktuszokat esznek.<\/p>\n<p><\/p>\n<p>\u00c9s ott (a di\u00e1n) alig-alig kezd megjelenni a \u201elogok sz\u00e1ll\u00edt\u00e1s\u00e1ra vonatkoz\u00f3 SLA\u201d. M\u00e9g nincs, de dolgozunk rajta. Mert nagyon k\u00e9nyelmes, amikor az infrastrukt\u00fara azt mondja, hogy ha ilyen form\u00e1tumban \u00edrsz egy adott helyre, \u00e9s nem t\u00f6bb N \u00fczenetet m\u00e1sodpercenk\u00e9nt, akkor ezt egy bizonyos val\u00f3sz\u00edn\u0171s\u00e9ggel odajuttatjuk. Ez rengeteg fejf\u00e1j\u00e1st megk\u00f6nny\u00edt. Ha van SLA, az nagyszer\u0171!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/a887aceac13135afe90bb5f5a5ec1d26.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan kezdt\u00fck el megoldani a probl\u00e9m\u00e1t? A f\u0151 probl\u00e9ma a td-agent volt. Nem volt vil\u00e1gos, hov\u00e1 t\u0171nnek a logok. Meg\u00e9rkeznek? Gy\u0171jt\u0151dnek? Hol vannak egy\u00e1ltal\u00e1n? Ez\u00e9rt az els\u0151 l\u00e9p\u00e9s az volt, hogy a td-agentet cser\u00e9lj\u00fck le. R\u00f6viden \u00f6sszefoglalva, itt n\u00e9h\u00e1ny lehet\u0151s\u00e9g van, amire lecser\u00e9lhetj\u00fck.<\/p>\n<p><\/p>\n<p>Fluentd. El\u0151sz\u00f6r is, m\u00e1r tal\u00e1lkoztam vele kor\u00e1bbi munkahelyemen, \u00e9s ott is id\u0151nk\u00e9nt le\u00e1llt. M\u00e1sodszor, ez is ugyanaz, csak m\u00e1s ir\u00e1nyb\u00f3l. <\/p>\n<p><\/p>\n<p>Filebeat. Mivel volt k\u00e9nyelmes sz\u00e1munkra? Az\u00e9rt, mert Go nyelven k\u00e9sz\u00fclt, nek\u00fcnk pedig nagy tapasztalatunk van a Go-ban. Teh\u00e1t ha sz\u00fcks\u00e9g van r\u00e1, valami m\u00f3don \u00e1t tudtuk \u00edrni. Ez\u00e9rt nem v\u00e1lasztottuk. Hogy m\u00e9g csak k\u00eds\u00e9rt\u00e9st se \u00e9rezz\u00fcnk, hogy elkezdj\u00fck \u00e1tdolgozni magunknak. <\/p>\n<p><\/p>\n<p>Nyilv\u00e1nval\u00f3 megold\u00e1s a rendszergazd\u00e1k sz\u00e1m\u00e1ra a k\u00fcl\u00f6nb\u00f6z\u0151 rendszernapl\u00f3k (syslog-ng\/rsyslog\/nxlog) ilyen mennyis\u00e9gben.<\/p>\n<p><\/p>\n<p>Vagy \u00edrni valamit saj\u00e1t kez\u0171leg, de ezt elvetett\u00fck, ak\u00e1rcsak a filebeatot. Ha valamit \u00edrni, akkor ink\u00e1bb valami hasznosat az \u00fczlet sz\u00e1m\u00e1ra. A logok sz\u00e1ll\u00edt\u00e1s\u00e1hoz jobb, ha valami k\u00e9sz megold\u00e1st vesz\u00fcnk.<\/p>\n<p><\/p>\n<p>\u00cdgy a v\u00e1laszt\u00e1s l\u00e9nyeg\u00e9ben az syslog-ng \u00e9s az rsyslog k\u00f6z\u00f6tti v\u00e1laszt\u00e1sra sz\u0171k\u00fclt. Az rsyslog mellett d\u00f6nt\u00f6ttem, egyszer\u0171en az\u00e9rt, mert a Puppet-ben m\u00e1r voltak az rsyslog-hoz oszt\u00e1lyaink, \u00e9s nem tal\u00e1ltam nyilv\u00e1nval\u00f3 k\u00fcl\u00f6nbs\u00e9get a kett\u0151 k\u00f6z\u00f6tt. Itt is syslog, ott is syslog. Igen, valakinek a dokument\u00e1ci\u00f3ja rosszabb, valakinek jobb. Az egyik \u00edgy tud, a m\u00e1sik pedig \u00fagy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/a88116711b547fa5b2b34daf72cc4220.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s egy kicsit az rsyslog-r\u00f3l. El\u0151sz\u00f6r is, klassz, mert sok modulja van. Az ember sz\u00e1m\u00e1ra \u00e9rthet\u0151 RainerScript-j\u00e9vel (modern konfigur\u00e1ci\u00f3s nyelv) rendelkezik. Nagy el\u0151ny, hogy a be\u00e9p\u00edtett eszk\u00f6z\u00f6kkel szimul\u00e1lni tudtuk a td-agent viselked\u00e9s\u00e9t, \u00e9s az alkalmaz\u00e1sok sz\u00e1m\u00e1ra semmi nem v\u00e1ltozott. Teh\u00e1t, a td-agent-et \u00e1tv\u00e1ltottuk rsyslog-ra, m\u00edg minden m\u00e1s \u00e9rintetlen maradt. \u00c9s azonnal m\u0171k\u00f6d\u0151 sz\u00e1ll\u00edt\u00e1st kapunk. Tov\u00e1bb\u00e1, az mmnormalize \u2014 ez egy fantasztikus dolog az rsyslog-ban. Lehet\u0151v\u00e9 teszi, hogy napl\u00f3kat elemezz\u00fcnk, de nem Grok \u00e9s regexp seg\u00edts\u00e9g\u00e9vel. Absztrakt szintaxisf\u00e1t k\u00e9sz\u00edt. A napl\u00f3kat k\u00f6r\u00fclbel\u00fcl \u00fagy elemzi, ahogyan a ford\u00edt\u00f3 az forr\u00e1sk\u00f3dot. Ez nagyon gyors munk\u00e1t tesz lehet\u0151v\u00e9, kev\u00e9s CPU-t fogyaszt, \u00e9s igaz\u00e1b\u00f3l egy nagyon klassz dolog. Sok m\u00e1s el\u0151ny is van, de ezen nem \u00e1lln\u00e9k meg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/ca811be9f9ff318fb8c8bbf3dc45a038.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az rsyslog-nak sok h\u00e1tr\u00e1nya is van. Ezek nagyj\u00e1b\u00f3l ugyanazok, mint az el\u0151ny\u00f6k. A f\u0151 probl\u00e9m\u00e1k \u2014 tudni kell, hogyan kell elk\u00e9sz\u00edteni, \u00e9s a megfelel\u0151 verzi\u00f3t kell v\u00e1lasztani.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/034f588e0834b1d4e4873d9c3dbd0873.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy unix socket-ba \u00edrjuk a napl\u00f3kat. R\u00e1ad\u00e1sul nem a \/dev\/log-ba, mert ott egy kaosz van a rendszer napl\u00f3kb\u00f3l, ott a journald is benne van ebben a folyamatban. Teh\u00e1t \u00edrjunk egy egyedi socket-ba. Csak egy k\u00fcl\u00f6n szab\u00e1lyk\u00e9szlettel k\u00f6tj\u00fck hozz\u00e1. Nem keverj\u00fck \u00f6ssze semmivel. Minden \u00e1tl\u00e1that\u00f3 \u00e9s \u00e9rthet\u0151 lesz. Ezt val\u00f3j\u00e1ban meg is val\u00f3s\u00edtottuk. A socket-ekhez tartoz\u00f3 k\u00f6nyvt\u00e1r szabv\u00e1nyos\u00edtott, \u00e9s minden kont\u00e9nernek el\u00e9rhet\u0151. A kont\u00e9nerek l\u00e1thatj\u00e1k a sz\u00fcks\u00e9ges socket-et, megnyithatj\u00e1k \u00e9s \u00edrhatnak r\u00e1. <\/p>\n<p><\/p>\n<p>Mi\u00e9rt nem f\u00e1jl? Mert mindenki olvasta <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/280606\/\">a Badushka cikket,<\/a><\/noindex>, amely megpr\u00f3b\u00e1lta \u00e1tkonfigur\u00e1lni a f\u00e1jlt docker-ben, \u00e9s kider\u00fclt, hogy a rsyslog \u00fajraind\u00edt\u00e1sa ut\u00e1n a f\u00e1jl le\u00edr\u00f3ja megv\u00e1ltozik, \u00e9s a docker elvesz\u00edti ezt a f\u00e1jlt. Valami m\u00e1st tart nyitva, de m\u00e1r nem azt a socket-et, ahov\u00e1 \u00edrnak. \u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy megker\u00fclj\u00fck ezt a probl\u00e9m\u00e1t, \u00e9s egy\u00fattal a blokkol\u00e1s probl\u00e9m\u00e1j\u00e1t is.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/78db15581a68ce16d11f5ebe7e6fe04e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az rsyslog v\u00e9grehajtja a di\u00e1n szerepl\u0151 m\u0171veleteket, \u00e9s elk\u00fcldi a napl\u00f3kat vagy egy relay-be, vagy a Kafka-ba. A Kafka a r\u00e9gi m\u00f3dszernek felel meg. A relay \u2014 ez arra ir\u00e1nyult, hogy tiszt\u00e1n az rsyslog-ot pr\u00f3b\u00e1ltam haszn\u00e1lni a napl\u00f3k sz\u00e1ll\u00edt\u00e1s\u00e1ra. Message Queue n\u00e9lk\u00fcl, az rsyslog be\u00e9p\u00edtett eszk\u00f6zeivel. Elvileg ez m\u0171k\u00f6dik.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/e61a25005ecbdc86d9de3215ee6fb97e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De van n\u00e9h\u00e1ny \u00e1rnyalat azzal kapcsolatban, hogyan lehet \u0151ket betenni ebbe a r\u00e9szbe (Logstash\/Graylog\/ES). Ez a r\u00e9sz (rsyslog-rsyslog) a data center-ek k\u00f6z\u00f6tt haszn\u00e1latos. Itt van egy t\u00f6m\u00f6r\u00edtett TCP link, amely lehet\u0151v\u00e9 teszi a s\u00e1vsz\u00e9less\u00e9g megtakar\u00edt\u00e1s\u00e1t, \u00e9s \u00edgy n\u00f6veli annak val\u00f3sz\u00edn\u0171s\u00e9g\u00e9t, hogy kapunk valamilyen napl\u00f3t egy m\u00e1sik data center-b\u0151l, amikor a csatorna t\u00falterhelt. Mert van Indon\u00e9zia, ahol minden rossz. Ott ez egy folyamatos probl\u00e9ma.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/7509ba360be2db4dec0c8679225d285f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Elgondolkodtunk azon, hogyan tudjuk nyomon k\u00f6vetni, hogy a napl\u00f3k, amelyeket az alkalmaz\u00e1sb\u00f3l r\u00f6gz\u00edtett\u00fcnk, val\u00f3ban eljutnak-e a c\u00e9lhoz? \u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy metrik\u00e1kat \u00e1ll\u00edtunk be. Az rsyslognak van egy statisztikai gy\u0171jt\u0151 modulja, amelyben vannak k\u00fcl\u00f6nb\u00f6z\u0151 sz\u00e1ml\u00e1l\u00f3k. P\u00e9ld\u00e1ul meg tudja mutatni a sor m\u00e9ret\u00e9t, vagy hogy h\u00e1ny \u00fczenet \u00e9rkezett egy bizonyos cselekv\u00e9s sor\u00e1n. Ezekb\u0151l m\u00e1r lehet valamit levonni. Ezenk\u00edv\u00fcl vannak egyedi sz\u00e1ml\u00e1l\u00f3k, amelyeket be lehet \u00e1ll\u00edtani, \u00e9s p\u00e9ld\u00e1ul meg tudja mutatni, hogy egy adott API mennyi \u00fczenetet r\u00f6gz\u00edtett. Tov\u00e1bb\u00e1, \u00edrtam egy rsyslog_exportert Pythonban, \u00e9s mindezt elk\u00fcldt\u00fck a Prometheusnak, ahol grafikonokat \u00e9p\u00edtett\u00fcnk. Nagyon v\u00e1gytunk a Graylog metrik\u00e1ira, de m\u00e9g nem tudtuk be\u00e1ll\u00edtani \u0151ket.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/ef9bd61fc43e056b4a56240c85e7fd20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Milyen probl\u00e9m\u00e1k mer\u00fcltek fel? Probl\u00e9m\u00e1k ad\u00f3dtak abb\u00f3l, hogy v\u00e1ratlanul felfedezt\u00fck, hogy a Live API-jaink m\u00e1sodpercenk\u00e9nt 50 ezer \u00fczenetet \u00edrnak. Ez csak a Live API, a staging n\u00e9lk\u00fcl. A Graylog csak 12 ezer \u00fczenetet mutat m\u00e1sodpercenk\u00e9nt. \u00c9s felmer\u00fclt a jogos k\u00e9rd\u00e9s, hogy hol vannak a t\u00f6bbiek? ebb\u0151l arra k\u00f6vetkeztett\u00fcnk, hogy a Graylog egyszer\u0171en nem k\u00e9pes kezelni. Megn\u00e9zt\u00fck, \u00e9s val\u00f3ban, a Graylog \u00e9s az Elasticsearch nem tudta elviselni ezt a terhel\u00e9st.<\/p>\n<p><\/p>\n<p>K\u00f6vetkez\u0151 felfedez\u00e9sek, amelyeket a folyamat sor\u00e1n tett\u00fcnk.<\/p>\n<p><\/p>\n<p>A socketbe \u00edr\u00e1s le\u00e1ll. Hogyan t\u00f6rt\u00e9nt ez? Amikor rsyslogot haszn\u00e1ltam a k\u00e9zbes\u00edt\u00e9shez, egy id\u0151 ut\u00e1n megszakadt a kapcsolat a data center-ek k\u00f6z\u00f6tt. A k\u00e9zbes\u00edt\u00e9s le\u00e1llt egy helyen, majd a m\u00e1sikban is. Mindez eljutott az API g\u00e9phez, amely az rsyslog socketbe \u00edr. Ott kitelt a sor. A UNIX socketbe val\u00f3 \u00edr\u00e1s sor is megtelt, amely alap\u00e9rtelmez\u00e9s szerint 128 csomagot t\u00e1mogat. A k\u00f6vetkez\u0151 write() a programunkban blokkolva lett. Amikor megn\u00e9zt\u00fck a k\u00f6nyvt\u00e1rat, amelyet a Go alkalmaz\u00e1sokban haszn\u00e1lunk, azt \u00edrt\u00e1k, hogy a socketbe val\u00f3 \u00edr\u00e1s nem blokkol\u00f3 m\u00f3dban t\u00f6rt\u00e9nik. Meg voltunk gy\u0151z\u0151dve r\u00f3la, hogy semmi nem blokkol\u00f3dik. Mert olvastuk. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/280606\/\">a Badushka cikket,<\/a><\/noindex>, amely err\u0151l \u00edrt. De van egy dolog. Ez a h\u00edv\u00e1s k\u00f6r\u00fcl egy v\u00e9gtelen ciklus is volt, amely folyamatosan megpr\u00f3b\u00e1lta a \u00fczenetet besz\u00farni a socketbe. Ezt mi nem \u00e9szlelt\u00fck. \u00dajra kellett \u00edrni a k\u00f6nyvt\u00e1rat. Az\u00f3ta t\u00f6bbsz\u00f6r is v\u00e1ltozott, de most m\u00e1r megszabadultunk a blokkokt\u00f3l minden alrendszerben. Ez\u00e9rt le lehet \u00e1ll\u00edtani az rsyslogot, \u00e9s semmi nem fog le\u00e1llni.<\/p>\n<p><\/p>\n<p>Figyelni kell a sorok m\u00e9ret\u00e9t, ami seg\u00edt elker\u00fclni ezeket a buktat\u00f3kat. El\u0151sz\u00f6r is, monitorozhatjuk, amikor elkezd\u00fcnk \u00fczeneteket elvesz\u00edteni. M\u00e1sodszor, figyelhetj\u00fck, hogy alapvet\u0151en probl\u00e9m\u00e1ink vannak a k\u00e9zbes\u00edt\u00e9ssel.<\/p>\n<p><\/p>\n<p>\u00c9s egy m\u00e9g kellemetlenebb dolog \u2014 a mikroszolg\u00e1ltat\u00e1sos architekt\u00far\u00e1ban a 10-szeres amplifik\u00e1ci\u00f3 nagyon k\u00f6nnyen megval\u00f3s\u00edthat\u00f3. N\u00e1lunk nem sok bej\u00f6v\u0151 k\u00e9r\u00e9s \u00e9rkezik, de a graf alapj\u00e1n, amin ezek az \u00fczenetek futnak, az access napl\u00f3k miatt val\u00f3ban k\u00f6r\u00fclbel\u00fcl t\u00edzszeres\u00e9re n\u00f6velj\u00fck a napl\u00f3k terhel\u00e9s\u00e9t. Sajnos nem volt id\u0151m pontos sz\u00e1mokat sz\u00e1m\u00edtani, de a mikroszolg\u00e1ltat\u00e1sok ilyenek. Ezt figyelembe kell venni. Jelenleg a naplogy\u0171jt\u0151 alrendszer a legterheltebb a Lazad\u00e1n\u00e1l. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/d76c6d91613ff77c41b8985cee83218f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan lehet megoldani az elasticsearch probl\u00e9m\u00e1t? Ha gyorsan szeretn\u00e9 megkapni a napl\u00f3kat egy helyen, hogy ne kelljen k\u00f3dol\u00e1s k\u00f6zben az \u00f6sszes g\u00e9pen keresni, haszn\u00e1ljon f\u00e1jlt\u00e1rol\u00f3t. Ez garant\u00e1ltan m\u0171k\u00f6dik. B\u00e1rmely szerverb\u0151l elk\u00e9sz\u00edthet\u0151. Csak le kell valahogy ter\u00edteni a lemezeket \u00e9s be\u00e1ll\u00edtani a syslogot. Ut\u00e1na garant\u00e1ltan minden napl\u00f3 egy helyen lesz. Azt\u00e1n nyugodtan be\u00e1ll\u00edthatja az elasticsearch-t, graylog-ot, valami m\u00e1st. De m\u00e1r meg lesznek az \u00f6sszes napl\u00f3ja, \u00e9s t\u00e1rolhatja \u0151ket annyira, ameddig a lemezmeghajt\u00f3k engedik.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/571297f25de76958769f3a4b9bfbf5b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El\u0151ad\u00e1som id\u0151pontj\u00e1ban a s\u00e9ma \u00edgy n\u00e9zett ki. Szinte teljesen abbahagytuk a f\u00e1jlok \u00edr\u00e1s\u00e1t. Jelenleg val\u00f3sz\u00edn\u0171leg lekapcsoljuk a marad\u00e9kokat. A lok\u00e1lis g\u00e9peken, ahol az API fut, nem lesz\u00fcnk k\u00e9pesek f\u00e1jlokat \u00edrni. Egyr\u00e9szt van egy f\u00e1jlt\u00e1rol\u00f3, ami nagyon j\u00f3l m\u0171k\u00f6dik. M\u00e1sr\u00e9szt, ezeken a g\u00e9peken folyamatosan elfogy a hely, azt folyamatosan figyelni kell.<\/p>\n<p><\/p>\n<p>Ez a r\u00e9sz a Logstash-sal \u00e9s Graylog-gal egy kicsit zavar\u00f3. Teh\u00e1t meg kell szabadulnunk t\u0151le. V\u00e1lasszunk ki valami egyet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/4a285577708aa1c55c16a72364fa8072.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy elhagyjuk a Logstash-t \u00e9s a Kibana-t. Mert van biztons\u00e1gi oszt\u00e1lyunk. Mi a kapcsolat? A kapcsolat az, hogy a Kibana X-Pack \u00e9s Shield n\u00e9lk\u00fcl nem teszi lehet\u0151v\u00e9 a napl\u00f3khoz val\u00f3 hozz\u00e1f\u00e9r\u00e9si jogok elk\u00fcl\u00f6n\u00edt\u00e9s\u00e9t. Ez\u00e9rt v\u00e1lasztottuk a Graylog-ot. Minden benne van. Nekem nem tetszik, de m\u0171k\u00f6dik. \u00daj hardvert v\u00e1s\u00e1roltunk, friss Graylog-ot \u00e1ll\u00edtottunk be r\u00e1, \u00e9s az \u00f6sszes szigor\u00fa form\u00e1tum\u00fa napl\u00f3t k\u00fcl\u00f6n Graylog-ba helyezt\u00fck \u00e1t. Megoldottuk a probl\u00e9m\u00e1t az azonos mez\u0151k k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpusaival szervezetileg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/91b9fdada2648ae1caec05169b11926a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit is tartalmaz a new Graylog? Egyszer\u0171en csak mindent meg\u00edrtunk Dockerbe. Sok szervert vett\u00fcnk, h\u00e1rom Kafka p\u00e9ld\u00e1nyt telep\u00edtett\u00fcnk, 7 Graylog szervert 2.3-as verzi\u00f3val (mivel az Elasticsearch 5-\u00f6t akartunk). Az eg\u00e9szet HDD RAID-re telep\u00edtett\u00fck. 100 ezer \u00fczenet\/m\u00e1sodperces indexing rate-et l\u00e1ttunk. L\u00e1ttunk egy sz\u00e1mot, ami 140 terabyte adatot jelentett hetente. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/05f9b3c06739548f092bbe271bf8fc54.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s megint a buktat\u00f3k! K\u00e9t le\u00e9rt\u00e9kel\u00e9s k\u00f6zel\u00edt. \u00c1tk\u00f6lt\u00f6zt\u00fcnk 6 milli\u00f3 \u00fczenethez. A Graylog-unk nem b\u00edrt vele. Valahogy megint t\u00fal kell \u00e9ln\u00fcnk. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/424aa2febc2fd903aabee4aeabb64010.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cdgy t\u00fal\u00e9lt\u00fcnk. M\u00e9g n\u00e9h\u00e1ny szervert \u00e9s SSD-t adtunk hozz\u00e1. Jelenleg \u00edgy \u00e9l\u00fcnk. Most m\u00e1r 160 ezer \u00fczenetet dolgozunk fel m\u00e1sodpercenk\u00e9nt. M\u00e9g nem \u00fctk\u00f6zt\u00fcnk a hat\u00e1rba, ez\u00e9rt egyel\u0151re nem vil\u00e1gos, hogy val\u00f3j\u00e1ban mennyit tudunk kih\u00fazni ebb\u0151l. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/17d84fa7de5403551e55f42345e62a1a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ilyenek a j\u00f6v\u0151beli terveink. Ezek k\u00f6z\u00fcl tal\u00e1n a legfontosabb a magas rendelkez\u00e9sre \u00e1ll\u00e1s. Jelenleg nincs. N\u00e9h\u00e1ny g\u00e9pet azonosan \u00e1ll\u00edtottunk be, de az \u00f6sszes adat egy g\u00e9pen kereszt\u00fcl megy. Id\u0151t kellene sz\u00e1nni arra, hogy be\u00e1ll\u00edtsuk a failover-t k\u00f6z\u00f6tt\u00fck.<\/p>\n<p><\/p>\n<p>Metrik\u00e1k gy\u0171jt\u00e9se a Graylogb\u00f3l.<\/p>\n<p><\/p>\n<p>Rate limit be\u00e1ll\u00edt\u00e1sa, hogy egy, meg\u0151r\u00fclt API ne \u00f6lj\u00f6n meg minket s\u00e1vsz\u00e9less\u00e9gben \u00e9s minden egy\u00e9bben.<\/p>\n<p><\/p>\n<p>\u00c9s v\u00e9g\u00fcl, al\u00e1\u00edrni valamilyen SLA-t a fejleszt\u0151kkel, hogy mennyit tudunk kezelni. Ha t\u00f6bbet \u00edrtok, akkor sajn\u00e1lom.<\/p>\n<p><\/p>\n<p>\u00c9s dokument\u00e1ci\u00f3t \u00edrni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jurij Bushmelev \u201eA kap\u00e1k t\u00e9rk\u00e9pe a napl\u00f3gy\u0171jt\u00e9s \u00e9s -sz\u00e1ll\u00edt\u00e1s ter\u00fclet\u00e9n\u201d \u2014 a besz\u00e1mol\u00f3 dek\u00f3dol\u00e1sa.\" src=\"\/wp-content\/uploads\/2019\/04\/4a78e2834d5877f8bf17d77a44000c22.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>R\u00f6viden \u00f6sszefoglalva mindent, amit \u00e1t\u00e9lt\u00fcnk. El\u0151sz\u00f6r is, szabv\u00e1nyok. M\u00e1sodszor, a syslog \u2014 egy torta. Harmadszor, az rsyslog pontosan \u00fagy m\u0171k\u00f6dik, ahogy a di\u00e1n van \u00edrva. \u00c9s most t\u00e9rj\u00fcnk \u00e1t a k\u00e9rd\u00e9sekre.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9sek<\/strong>.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Mi\u00e9rt d\u00f6nt\u00f6tt\u00fcnk \u00fagy, hogy m\u00e9gsem haszn\u00e1ljuk... (filebeat?)<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: F\u00e1jlt kell \u00edrni. Nagyon nem akartam. Amikor az API-d m\u00e1sodpercenk\u00e9nt ezer \u00fczenetet \u00edr, m\u00e9g ha \u00f3r\u00e1nk\u00e9nt forgatsz is, az m\u00e9g mindig nem megold\u00e1s. \u00cdrhatunk pipe-ba is. Amire a fejleszt\u0151k megk\u00e9rdezt\u00e9k t\u0151lem: \u201eMi t\u00f6rt\u00e9nik, ha a folyamat, ahov\u00e1 \u00edrunk, \u00f6sszeomlik?\u201d Egyszer\u0171en nem tudtam mit v\u00e1laszolni, \u00e9s azt mondtam: \u201eH\u00e1t rendben, akkor ne csin\u00e1ljuk \u00edgy.\u201d<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Mi\u00e9rt nem \u00edrj\u00e1tok a napl\u00f3kat egyszer\u0171en HDFS-be?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Ez a k\u00f6vetkez\u0151 l\u00e9p\u00e9s. Gondoltunk r\u00e1 a legels\u0151 pillanatt\u00f3l kezdve, de mivel jelenleg nincsenek er\u0151forr\u00e1saink ezzel foglalkozni, emiatt hossz\u00fa t\u00e1v\u00fa megold\u00e1sk\u00e9nt l\u00f3g a leveg\u0151ben.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Az oszlopform\u00e1tum jobban megfelelne.<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Minden \u00e9rtek. Mi mindk\u00e9t kez\u00fcnkkel \u201emellett\u201d \u00e1llunk. <\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: A rsyslog-ba \u00edrtok. Ott haszn\u00e1lhat\u00f3 TCP \u00e9s UDP is. De ha UDP-t haszn\u00e1ltok, hogyan garant\u00e1lj\u00e1tok a k\u00e9zbes\u00edt\u00e9st?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: K\u00e9t dolog van. El\u0151sz\u00f6r is, azonnal mindenkinek mondom, hogy nem garant\u00e1ljuk a napl\u00f3k k\u00e9zbes\u00edt\u00e9s\u00e9t. Mert amikor a fejleszt\u0151k j\u00f6nnek \u00e9s azt mondj\u00e1k: \u201eHogyha elkezd\u00fcnk p\u00e9nz\u00fcgyi adatokat \u00edrni, akkor ti ezeket valahogy t\u00e1rolj\u00e1tok, ha t\u00f6rt\u00e9nik valami\u201d, mi azt mondjuk: \u201eRemek! Akkor kezdj\u00e9tek el blokkolni a socketbe \u00edr\u00e1st, \u00e9s csin\u00e1lj\u00e1tok ezt tranzakci\u00f3kban, hogy biztos legyetek benne, hogy megkaptuk a socket-en, \u00e9s megbizonyosodtok r\u00f3la, hogy azt \u00e1tvett\u00fck.\u201d \u00c9s ebben a pillanatban mindenkinek azonnal nem lesz sz\u00fcks\u00e9ge r\u00e1. Ha pedig nem sz\u00fcks\u00e9ges, akkor mi\u00e9rt k\u00e9rdez\u0151sk\u00f6dnek? Ha nem akarj\u00e1tok garant\u00e1lni a socket \u00edr\u00e1st, mi\u00e9rt garant\u00e1ljuk a k\u00e9zbes\u00edt\u00e9st? Mi \u201ebest effort\u201d-ot csin\u00e1lunk. Val\u00f3ban pr\u00f3b\u00e1ljuk meg min\u00e9l t\u00f6bbet \u00e9s min\u00e9l jobban eljuttatni, de nem adunk 100%-os garanci\u00e1t. Ez\u00e9rt p\u00e9nz\u00fcgyi adatokat nem kell oda \u00edrni. Erre ott vannak a tranzakci\u00f3s adatb\u00e1zisok.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Amikor az API gener\u00e1l egy \u00fczenetet a napl\u00f3ban \u00e9s \u00e1tadja a vez\u00e9rl\u00e9st a mikroszolg\u00e1ltat\u00e1soknak, tal\u00e1lkoztatok-e m\u00e1r azzal a probl\u00e9m\u00e1val, hogy a k\u00fcl\u00f6nb\u00f6z\u0151 mikroszolg\u00e1ltat\u00e1sokb\u00f3l \u00e9rkez\u0151 \u00fczenetek nem a megfelel\u0151 sorrendben \u00e9rkeznek? Ebb\u0151l z\u0171rzavar ad\u00f3dik.<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Norm\u00e1lis, hogy k\u00fcl\u00f6nb\u00f6z\u0151 sorrendben \u00e9rkeznek. Ezzel sz\u00e1molni kell. Mert b\u00e1rmilyen h\u00e1l\u00f3zati k\u00e9zbes\u00edt\u00e9s nem garant\u00e1lja a sorrendet, vagy k\u00fcl\u00f6n er\u0151forr\u00e1sokat kell r\u00e1ford\u00edtani. Ha a f\u00e1jlt\u00e1rol\u00f3kat n\u00e9zz\u00fck, minden API a saj\u00e1t f\u00e1jlj\u00e1ba menti a napl\u00f3kat. Helyesebben a rsyslog ott rendszerezi \u0151ket mapp\u00e1kba. Minden API-nak megvan a saj\u00e1t napl\u00f3ja, ahov\u00e1 el lehet menni \u00e9s megn\u00e9zni, majd a timestamp alapj\u00e1n p\u00e1ros\u00edtani \u0151ket. Ha a Graylog-ba mennek, akkor ott id\u0151rendben lesznek rendezve. Ott minden rendben lesz.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: A timestamp milliszekundumos elt\u00e9r\u00e9seket mutathat.<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: A timestamp-ot mag\u00e1nak az API-nak kell gener\u00e1lnia. Ez igaz\u00e1b\u00f3l az eg\u00e9sz l\u00e9nyeg. Van NTP-\u00fcnk. Az API m\u00e1r mag\u00e1ban az \u00fczenetben gener\u00e1lja a timestamp-ot. A rsyslog nem ad hozz\u00e1.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Nem nagyon \u00e9rthet\u0151, hogyan m\u0171k\u00f6dik az interakci\u00f3 az adatk\u00f6zpontok k\u00f6z\u00f6tt. Az adatk\u00f6zponton bel\u00fcl vil\u00e1gos, hogyan gy\u0171jtik \u00e9s dolgozz\u00e1k fel a napl\u00f3kat. Hogyan t\u00f6rt\u00e9nik az interakci\u00f3 az adatk\u00f6zpontok k\u00f6z\u00f6tt? Vagy minden adatk\u00f6zpont a saj\u00e1t \u00e9let\u00e9t \u00e9li?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Majdnem. Minden orsz\u00e1gunk egy adott adatk\u00f6zpontban tal\u00e1lhat\u00f3. Jelenleg nincs arra p\u00e9lda, hogy egy orsz\u00e1g k\u00fcl\u00f6nb\u00f6z\u0151 adatk\u00f6zpontokban legyen elhelyezve. Ez\u00e9rt nincs sz\u00fcks\u00e9g az egyes\u00edt\u00e9s\u00fckre. Minden k\u00f6zpontban van Log Relay. Ez egy Rsyslog szerver. Val\u00f3j\u00e1ban k\u00e9t menedzsment g\u00e9p van. Mindkett\u0151 ugyan\u00fagy van be\u00e1ll\u00edtva. De egyel\u0151re a forgalom csak az egyiken megy kereszt\u00fcl. Ez aggreg\u00e1lja a napl\u00f3kat. Van egy lemezes sor a biztons\u00e1g kedv\u00e9\u00e9rt. \u00d6sszenyomja a napl\u00f3kat, \u00e9s elk\u00fcldi \u0151ket a k\u00f6zponti adatk\u00f6zpontba (Szingap\u00farba), ahol m\u00e1r Graylogba jutnak. Minden adatk\u00f6zpontban van saj\u00e1t f\u00e1jlt\u00e1rol\u00f3ja. Ha megsz\u0171nik a kapcsolatunk, minden napl\u00f3t ott tartunk. Azok ott maradnak. Azok ott lesznek mentve.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: V\u00e9szhelyzetekben onnan kaptok napl\u00f3kat?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: El lehet menni oda (a f\u00e1jlt\u00e1rol\u00f3hoz) \u00e9s megn\u00e9zni.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Hogyan ellen\u0151rizz\u00e9tek, hogy nem vesz\u00edtettek el napl\u00f3kat?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Val\u00f3j\u00e1ban vesz\u00edt\u00fcnk el napl\u00f3kat, \u00e9s ezt figyelj\u00fck. A monitoroz\u00e1s egy h\u00f3napja indult el. A Go API \u00e1ltal haszn\u00e1lt k\u00f6nyvt\u00e1rban vannak metrik\u00e1k. K\u00e9pes sz\u00e1molni, h\u00e1nyszor nem tudott \u00edrni a socketbe. Jelenleg van egy okos heurisztika. Van egy puffer. Pr\u00f3b\u00e1l \u00fczenetet \u00edrni a socketbe a pufferb\u0151l. Ha a puffer megtelik, elkezdi eldobni \u0151ket. \u00c9s sz\u00e1molja, hogy mennyit dobott el. Ha elkezdik t\u00fall\u00e9pni a sz\u00e1ml\u00e1l\u00f3kat, akkor tudunk r\u00f3la. Ezek most a Prometheusba is ell\u00e1togatnak, \u00e9s a Grafan\u00e1ban meg lehet n\u00e9zni a grafikonokat. Be lehet \u00e1ll\u00edtani a figyelmeztet\u00e9seket. De egyel\u0151re nem vil\u00e1gos, kinek k\u00fcldj\u00fck azokat.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Az Elasticsearch-ben tartotok napl\u00f3kat replik\u00e1ci\u00f3val. H\u00e1ny replik\u00e1tok van?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Egy replika.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Ez csak egy replika?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Ez a mester \u00e9s replika. K\u00e9t p\u00e9ld\u00e1nyban t\u00e1rolj\u00e1k az adatokat.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: A rsyslog puffer\u00e9nek m\u00e9ret\u00e9t valahogy \u00e1ll\u00edtott\u00e1tok? <\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Egyedi unix socketbe \u00edrjuk a datagramokat. Ez azonnal 128 kilob\u00e1jt korl\u00e1tot szab sz\u00e1munkra. Nem tudunk t\u00f6bbet \u00edrni bel\u0151le. Ezt a szabv\u00e1nyban r\u00f6gz\u00edtett\u00fck. Akik a t\u00e1rol\u00f3khoz akarnak jutni, azok 128 kilob\u00e1jtot \u00edrnak. A k\u00f6nyvt\u00e1rak egy\u00e9bk\u00e9nt lev\u00e1gj\u00e1k, \u00e9s jelzik, hogy az \u00fczenet lev\u00e1g\u00e1sra ker\u00fclt. Az \u00fczenet szabv\u00e1ny\u00e1ban van egy speci\u00e1lis mez\u0151, amely megmutatja, hogy az \u00edr\u00e1s k\u00f6zben lev\u00e1g\u00e1sra ker\u00fclt-e vagy sem. Teh\u00e1t van lehet\u0151s\u00e9g\u00fcnk ezt a pontot nyomon k\u00f6vetni.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: \u00cdr-e t\u00f6r\u00f6tt JSON-t? <\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: A t\u00f6r\u00f6tt JSON-t vagy a relay sor\u00e1n, mert t\u00fal nagy csomag, dobj\u00e1k el. Vagy a Graylog dobja el, mert nem tudja a JSON-t elemezni. De itt vannak olyan \u00e1rnyalatok, amelyeket jav\u00edtani kell, \u00e9s ezek d\u00f6nt\u0151en az rsyslog-hoz kapcsol\u00f3dnak. M\u00e1r kit\u00f6lt\u00f6ttem n\u00e9h\u00e1ny probl\u00e9m\u00e1t, amelyeken m\u00e9g dolgozni kell.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Mi\u00e9rt a Kafka? Pr\u00f3b\u00e1lt\u00e1k m\u00e1r a RabbitMQ-t? A Graylog nem m\u0171k\u00f6dik ilyen terhel\u00e9sek mellett?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: N\u00e1lunk a Graylog nem m\u0171k\u00f6dik j\u00f3l. A Graylogunk m\u0171k\u00f6dik, de vele val\u00f3ban probl\u00e9m\u00e1s. Egy k\u00fcl\u00f6n\u00f6s dolog. Igaz\u00e1b\u00f3l nincs is sz\u00fcks\u00e9g r\u00e1. Ink\u00e1bb a rsyslog-b\u00f3l k\u00f6zvetlen\u00fcl az elasticsearch-ba \u00edrn\u00e1m, \u00e9s ut\u00e1na a Kibana-t n\u00e9zn\u00e9m. De el kell rendezni a k\u00e9rd\u00e9st a biztons\u00e1giakkal. Ez egy lehets\u00e9ges fejleszt\u00e9si ir\u00e1nyunk, amikor kidobjuk a Graylogot, \u00e9s csak a Kibana-t haszn\u00e1ljuk. A Logstash haszn\u00e1lat\u00e1nak nincs \u00e9rtelme, mert ugyanazt meg tudom csin\u00e1lni az rsyslog-gal. \u00c9s van modulja az elasticsearch-ba val\u00f3 \u00edr\u00e1sra. A Graylog-gal pr\u00f3b\u00e1lunk valahogy egy\u00fctt \u00e9lni. M\u00e9g kicsit tuningoltuk is. De ott van m\u00e9g tere a fejleszt\u00e9seknek.<\/p>\n<p><\/p>\n<p>A Kafka kapcs\u00e1n. \u00cdgy alakult ez t\u00f6rt\u00e9netileg. Amikor \u00e9rkeztem, m\u00e1r l\u00e9tezett, \u00e9s logokat m\u00e1r \u00edrtak bele. Csak fel\u00e1ll\u00edtottuk a klasztert, \u00e9s a logokat \u00e1tk\u00f6lt\u00f6ztett\u00fck. Mi menedzselj\u00fck, tudjuk, hogy \u00e1ll. A RabbitMQ-val kapcsolatban\u2026 nem j\u00f6n \u00f6ssze a RabbitMQ. De a RabbitMQ-unk m\u0171k\u00f6dik. Van a produkci\u00f3s k\u00f6rnyezet\u00fcnkben, \u00e9s voltak vele probl\u00e9m\u00e1k. Mostanra, a le\u00e1raz\u00e1s el\u0151tt, \u00fcgyesebb\u00e9 tett\u00fck, \u00e9s j\u00f3l m\u0171k\u00f6dik. De addig nem voltam felk\u00e9sz\u00fclve, hogy kiadjam a produkci\u00f3s k\u00f6rnyezetbe. Van m\u00e9g egy szempont. A Graylog tudja olvasni az AMQP 0.9 verzi\u00f3t, m\u00edg az rsyslog tudja \u00edrni az AMQP 1.0 verzi\u00f3t. Nincs egy megold\u00e1s sem, ami mindkett\u0151t tudja. Csak az egyik vagy a m\u00e1sik. \u00cdgy jelenleg csak a Kafka m\u0171k\u00f6dik. De ott is vannak saj\u00e1t \u00e1rnyoldalai. Mert az omkafka, amely az rsyslog azon verzi\u00f3j\u00e1t haszn\u00e1lja, amit mi haszn\u00e1lunk, elvesz\u00edtheti az \u00f6sszes \u00fczenetbuffer\u00e9t, amelyet kiszedett az rsyslog-b\u00f3l. Egyel\u0151re megbar\u00e1tkoztunk ezzel. <\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Azt haszn\u00e1lj\u00e1tok, mert m\u00e1r volt nektek? M\u00e1s c\u00e9lra nem haszn\u00e1lj\u00e1tok?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Az a Kafka, ami volt, a Data Science csapat \u00e1ltal van haszn\u00e1lva. Ez egy teljesen k\u00fcl\u00f6n projekt, amir\u0151l sajnos nem tudok nyilatkozni. Nem vagyok tiszt\u00e1ban vele. A Data Science csapat ir\u00e1ny\u00edt\u00e1sa alatt volt. Amikor a logokat beind\u00edtott\u00e1k, \u00fagy d\u00f6nt\u00f6ttek, hogy azt haszn\u00e1lj\u00e1k, hogy ne kelljen m\u00e9g egy saj\u00e1tot fel\u00e1ll\u00edtani. Most friss\u00edtett\u00fck a Graylog-ot, \u00e9s elvesz\u00edtett\u00fck a kompatibilit\u00e1st, mert ott egy r\u00e9gi Kafka verzi\u00f3 van. Musz\u00e1j volt egy saj\u00e1tot bevezetn\u00fcnk. R\u00e1ad\u00e1sul megszabadultunk a n\u00e9gy t\u00e9mt\u0151l minden API-ra. K\u00e9sz\u00edtett\u00fcnk egy sz\u00e9les t\u00e9m\u00e1t minden \u00e9l\u0151 rendszerhez, \u00e9s egy sz\u00e9les t\u00e9m\u00e1t az \u00f6sszes staging-hez, \u00e9s csak mindent oda k\u00fcld\u00fcnk. A Graylog mindezt p\u00e1rhuzamosan kigy\u0171jti.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: Mi\u00e9rt sz\u00fcks\u00e9ges ez a var\u00e1zsl\u00e1s a socketekkel? Pr\u00f3b\u00e1lt\u00e1tok a syslog log driver haszn\u00e1lat\u00e1t a kont\u00e9nerekhez?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: Abban az id\u0151szakban, amikor ezzel a k\u00e9rd\u00e9ssel foglalkoztunk, a Dockerrel val\u00f3 kapcsoltunk fesz\u00fcltt\u00e9 v\u00e1lt. Ez a Docker 1.0 vagy 0.9 volt. A Docker \u00f6nmag\u00e1ban furcsa volt. M\u00e1sr\u00e9szt, ha a napl\u00f3kat is bele kell tenni... Van egy ellen\u0151rizetlen gyan\u00fam, hogy minden napl\u00f3t \u00e1tenged a kapcsolati d\u00e9monj\u00e1n. Ha van egy API, ami meg\u0151r\u00fcl, akkor a t\u00f6bbi API bele\u00fctk\u00f6zik abba, hogy nem tudja elk\u00fcldeni a stdout-ot \u00e9s stderr-t. Nem tudom, hogy ez hov\u00e1 vezet. Van egy \u00e9rz\u00e9sem, hogy ebben a helyzetben nem kellene haszn\u00e1lni a Docker syslog-illeszt\u0151j\u00e9t. A funkcion\u00e1lis tesztel\u0151 oszt\u00e1lyunknak van egy saj\u00e1t kis Graylog klasztere a napl\u00f3kkal. \u0150k haszn\u00e1lj\u00e1k a Docker napl\u00f3-illeszt\u0151it, \u00e9s \u00fagy t\u0171nik, hogy n\u00e1luk minden rendben van. De \u0151k k\u00f6zvetlen\u00fcl a GELF-t \u00edrj\u00e1k a Graylogba. Abban az id\u0151szakban, amikor mindez elkezd\u0151d\u00f6tt, csak azt akartuk, hogy m\u0171k\u00f6dj\u00f6n. Lehet, hogy k\u00e9s\u0151bb, amikor valaki azt mondja, hogy ez m\u00e1r r\u00e9g\u00f3ta j\u00f3l m\u0171k\u00f6dik, akkor megpr\u00f3b\u00e1ljuk.<\/p>\n<p><\/p>\n<p><strong>K\u00e9rd\u00e9s<\/strong>: A sz\u00e1ll\u00edt\u00e1st a datacenter-ek k\u00f6z\u00f6tt rsyslog-on v\u00e9gezz\u00fck. Mi\u00e9rt nem Kafka-val?<\/p>\n<p><\/p>\n<p><strong>V\u00e1lasz<\/strong>: T\u00e9nyleg mindk\u00e9t m\u00f3dot haszn\u00e1ljuk. K\u00e9t okb\u00f3l. Ha a csatorna teljesen megvan gyilkolva, akkor m\u00e9g t\u00f6m\u00f6r\u00edtett form\u00e1ban sem mennek \u00e1t a napl\u00f3k. A Kafka azonban lehet\u0151v\u00e9 teszi, hogy egyszer\u0171en elvesz\u00edtj\u00fck \u0151ket a folyamat sor\u00e1n. Ezzel a m\u00f3dszerrel elker\u00fclj\u00fck a napl\u00f3k elakad\u00e1s\u00e1t. Ilyen esetben egyszer\u0171en k\u00f6zvetlen\u00fcl haszn\u00e1ljuk a Kafka-t. Ha a csatorn\u00e1nk j\u00f3, \u00e9s szeretn\u00e9nk felszabad\u00edtani, akkor rsyslog-ot haszn\u00e1lunk. De val\u00f3j\u00e1ban be lehet \u00e1ll\u00edtani, hogy automatikusan dobja ki azt, ami nem ment \u00e1t. Jelenleg valahol k\u00f6zvetlen\u00fcl az rsyslog sz\u00e1ll\u00edt\u00e1st haszn\u00e1ljuk, valahol pedig Kafka-t.<\/p>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/yurij-bushmelev-karta-grablej-na-pole-sbora-i-dostavki-logov-rasshifrovka-doklada\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Jurij Bushmelev \u201eA napl\u00f3k gy\u0171jt\u00e9s\u00e9re \u00e9s sz\u00e1ll\u00edt\u00e1s\u00e1ra szolg\u00e1l\u00f3 gereblye t\u00e9rk\u00e9pe\u201d \u2014 a besz\u00e1mol\u00f3 elmagyar\u00e1z\u00e1sa | ProHoster","description":"A napl\u00f3k fontos r\u00e9szei a rendszernek, amik lehet\u0151v\u00e9 teszik, hogy meg\u00e9rts\u00fck, hogy az \u00fagy m\u0171k\u00f6dik (vagy nem m\u0171k\u00f6dik), ahogy v\u00e1rtuk. A mikroszolg\u00e1ltat\u00e1s-architekt\u00fara k\u00f6r\u00fclm\u00e9nyei k\u00f6z\u00f6tt a napl\u00f3k kezel\u00e9se k\u00fcl\u00f6n tudom\u00e1nny\u00e1 v\u00e1lik, mint egy speci\u00e1lis olimpia.","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/32723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=32723"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/32723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/24507"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=32723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=32723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=32723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}