{"id":52115,"date":"2019-11-01T00:00:00","date_gmt":"2019-10-31T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury"},"modified":"2020-02-18T13:59:47","modified_gmt":"2020-02-18T10:59:47","slug":"monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","title":{"rendered":"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dnes na na\u0161em projektu krom\u011b monolitick\u00e9ho k\u00f3du funguje des\u00edtky mikroslu\u017eeb. Ka\u017ed\u00e1 z nich vy\u017eaduje monitorov\u00e1n\u00ed. D\u011blat to v takov\u00e9m objemu je pro DevOps in\u017een\u00fdry problematick\u00e9. Vyvinuli jsme monitorovac\u00ed syst\u00e9m, kter\u00fd funguje jako slu\u017eba pro v\u00fdvoj\u00e1\u0159e. Ti mohou samostatn\u011b zapisovat metriky do monitorovac\u00edho syst\u00e9mu, vyu\u017e\u00edvat je, vytv\u00e1\u0159et na jejich z\u00e1klad\u011b dashboardy a p\u0159ipojovat k nim upozorn\u011bn\u00ed, kter\u00e1 se aktivuj\u00ed p\u0159i dosa\u017een\u00ed prahov\u00fdch hodnot. Od DevOps in\u017een\u00fdr\u016f je pot\u0159eba pouze infrastruktura a dokumentace. <\/p>\n<p>Tento p\u0159\u00edsp\u011bvek je p\u0159episem m\u00e9ho vystoupen\u00ed z na\u0161\u00ed <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/tomicro\">sekce<\/a><\/noindex> na RIT++. Mnoz\u00ed n\u00e1s \u017e\u00e1dali o textov\u00e9 verze p\u0159edn\u00e1\u0161ek z t\u00e9to akce. Pokud jste byli na konferenci nebo sledovali video, nenajdete zde nic nov\u00e9ho. A v\u0161ichni ostatn\u00ed \u2014 v\u00edtejte pod \u010dl\u00e1nkem. P\u0159edstav\u00edm, jak jsme dosp\u011bli k takov\u00e9mu syst\u00e9mu, jak funguje a jak pl\u00e1nujeme jeho aktualizace. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/000b8fdc8fb16aa76ce545ff2aa4e767.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Minulost: sch\u00e9mata a pl\u00e1ny <\/h3>\n<p>\nJak jsme dosp\u011bli k st\u00e1vaj\u00edc\u00edmu monitorovac\u00edmu syst\u00e9mu? Abychom na tuto ot\u00e1zku odpov\u011bd\u011bli, mus\u00edme se vr\u00e1tit do roku 2015. Takto to vypadalo tehdy: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/d955f9bcdb5f5a5a54720c77113ca85d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u011bli jsme p\u0159ibli\u017en\u011b 24 uzl\u016f, kter\u00e9 zaji\u0161\u0165ovaly monitorov\u00e1n\u00ed. Existovalo zde cel\u00e1 \u0159ada r\u016fzn\u00fdch cron\u016f, skript\u016f, d\u00e9mon\u016f, kte\u0159\u00ed n\u011bco kdesi n\u011bjak\u00fdm zp\u016fsobem monitorovali, pos\u00edlali zpr\u00e1vy, vykon\u00e1vali funkce. Mysleli jsme si, \u017ee \u010d\u00edm d\u00e1l, t\u00edm m\u00e9n\u011b takov\u00fd syst\u00e9m bude \u017eivotaschopn\u00fd. Jeho rozvoj nem\u011blo smysl: byl p\u0159\u00edli\u0161 rozm\u011brn\u00fd. <br \/>\nRozhodli jsme se vybrat ty prvky monitorov\u00e1n\u00ed, kter\u00e9 si nech\u00e1me a budeme rozv\u00edjet, a ty, od kter\u00fdch se vzd\u00e1me. Bylo jich 19. Z\u016fstaly pouze grafity, agreg\u00e1tory a Grafana jako dashboard. Ale jak bude vypadat nov\u00fd syst\u00e9m? Takto: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/57d220113d0b76c05874b5d774bff8af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e1me \u00falo\u017ei\u0161t\u011b metrik: jsou to grafity, kter\u00e9 budou zalo\u017een\u00e9 na rychl\u00fdch SSD disc\u00edch, a ur\u010dit\u00e9 agreg\u00e1tory pro metriky. D\u00e1le \u2014 Grafana pro zobrazen\u00ed dashboard\u016f a Moira jako alerting. Tak\u00e9 jsme cht\u011bli vyvinout syst\u00e9m pro vyhled\u00e1v\u00e1n\u00ed anom\u00e1li\u00ed. <\/p>\n<h3>Standard: Monitorov\u00e1n\u00ed 2.0<\/h3>\n<p>\nTakto vypadaly pl\u00e1ny v roce 2015. Ale museli jsme p\u0159ipravovat nejen infrastrukturu a samotnou slu\u017ebu, ale i dokumentaci k n\u00ed. Pro sebe jsme vyvinuli firemn\u00ed standard, kter\u00fd jsme nazvali monitorov\u00e1n\u00ed 2.0. Jak\u00e9 po\u017eadavky jsme m\u011bli na syst\u00e9m? <\/p>\n<ul>\n<li>st\u00e1l\u00e1 dostupnost; <\/li>\n<li>interval uchov\u00e1n\u00ed metrik = 10 sekund; <\/li>\n<li>strukturovan\u00e9 ukl\u00e1d\u00e1n\u00ed metrik a dashboard\u016f; <\/li>\n<li>SLA &gt; 99,99% <\/li>\n<li>sb\u011br eventov\u00fdch metrik pomoc\u00ed UDP (!). <\/li>\n<\/ul>\n<p>\nPot\u0159ebovali jsme UDP, proto\u017ee m\u00e1me velk\u00fd objem provozu a ud\u00e1lost\u00ed, kter\u00e9 generuj\u00ed metriky. Pokud bychom je v\u0161echny zapisovali do Graphite najednou, \u00falo\u017ei\u0161t\u011b by se zhroutilo. Tak\u00e9 jsme zvolili prefixy prvn\u00edho stupn\u011b pro v\u0161echny metriky. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/d24c4474b19b532a48cef4d4376287ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKa\u017ed\u00fd z prefix\u016f m\u00e1 n\u011bjakou vlastnost. Existuj\u00ed metriky pro servery, s\u00edt\u011b, kontejnery, zdroje, aplikace a tak d\u00e1le. Byla implementov\u00e1na jasn\u00e1, p\u0159\u00edsn\u00e1, typovan\u00e1 filtrace, kde p\u0159ij\u00edm\u00e1me metriky prvn\u00edho stupn\u011b, a ostatn\u00ed jednodu\u0161e zahazujeme. Takto jsme pl\u00e1novali tento syst\u00e9m v roce 2015. A co te\u010f? <\/p>\n<h3>Sou\u010dasnost: sch\u00e9ma interakce monitorovac\u00edch komponent\u016f<\/h3>\n<p>\nNejprve monitorujeme aplikace: n\u00e1\u0161 PHP k\u00f3d, aplikace a mikroservisy \u2014 zkr\u00e1tka v\u0161e, co na\u0161i v\u00fdvoj\u00e1\u0159i p\u00ed\u0161\u00ed. V\u0161echny aplikace zas\u00edlaj\u00ed metriky p\u0159es UDP do agreg\u00e1toru Brubeck (statsd p\u0159epsan\u00fd do C). Uk\u00e1zal se jako nejrychlej\u0161\u00ed na z\u00e1klad\u011b syntetick\u00fdch test\u016f. A on ji\u017e pos\u00edl\u00e1 agregovan\u00e9 metriky do Graphite p\u0159es TCP. <\/p>\n<p>M\u00e1 typ metrik, jako jsou \u010dasova\u010de. To je velmi pohodln\u00e1 v\u011bc. Nap\u0159\u00edklad pro ka\u017ed\u00e9 spojen\u00ed u\u017eivatele se slu\u017ebou pos\u00edl\u00e1te do Brubeck metriky s dobou odezvy. P\u0159i\u0161lo milion odpov\u011bd\u00ed a agreg\u00e1tor vydal pouze 10 metrik. M\u00e1te po\u010det p\u0159ijat\u00fdch lid\u00ed, maxim\u00e1ln\u00ed, minim\u00e1ln\u00ed a pr\u016fm\u011brnou dobu odezvy, medi\u00e1n a 4 percentily. Potom jsou data p\u0159ed\u00e1v\u00e1na do Graphite a vid\u00edme je v\u0161echny \u017eiv\u011b. <\/p>\n<p>Tak\u00e9 m\u00e1me agregaci na metriky pro hardware, software, syst\u00e9mov\u00e9 metriky a n\u00e1\u0161 star\u00fd monitorovac\u00ed syst\u00e9m Munin (ten fungoval do roku 2015). V\u0161echna tato data shroma\u017e\u010fujeme prost\u0159ednictv\u00edm C-\u0161it\u00e9ho d\u00e9mona CollectD (do kter\u00e9ho je zabudov\u00e1no mno\u017estv\u00ed r\u016fzn\u00fdch plugin\u016f, um\u00ed dotazovat v\u0161echny zdroje hostovac\u00edho syst\u00e9mu, na kter\u00e9m je nainstalov\u00e1n, sta\u010d\u00ed v konfiguraci uv\u00e9st, kam zapisovat data) a zapisujeme je pomoc\u00ed n\u011bj do Graphite. Podporuje tak\u00e9 pluginy python a shell skripty, tak\u017ee si m\u016f\u017eete ps\u00e1t vlastn\u00ed \u0159e\u0161en\u00ed: CollectD bude shroma\u017e\u010fovat tato data z lok\u00e1ln\u00edho nebo vzd\u00e1len\u00e9ho hostitele (p\u0159edpokl\u00e1dejme, \u017ee existuje Curl) a pos\u00edlat je do Graphite. <\/p>\n<p>D\u00e1le v\u0161echny metriky, kter\u00e9 jsme sesb\u00edrali, pos\u00edl\u00e1me do Carbon-c-relay. Toto \u0159e\u0161en\u00ed je Carbon Relay od Graphite, upraven\u00e9 v C. Je to router, kter\u00fd sb\u00edr\u00e1 v\u0161echny metriky, kter\u00e9 pos\u00edl\u00e1me z na\u0161ich agreg\u00e1tor\u016f, a sm\u011bruje je na uzly. Tak\u00e9 b\u011bhem sm\u011brov\u00e1n\u00ed kontroluje platnost metrik. Ty mus\u00ed jednak odpov\u00eddat sch\u00e9matu s prefixy, kter\u00e9 jsem uk\u00e1zal d\u0159\u00edve, a jednak b\u00fdt platn\u00e9 pro Graphite. Jinak jsou odm\u00edtnuty. <\/p>\n<p>Potom Carbon-c-relay pos\u00edl\u00e1 metriky do clusteru Graphite. Pou\u017e\u00edv\u00e1me Carbon-cache, p\u0159epsan\u00e9 v Go, jako hlavn\u00ed \u00falo\u017ei\u0161t\u011b metrik. Go-carbon, d\u00edky sv\u00e9 v\u00edcit\u00e9 threadovosti, v\u00fdrazn\u011b p\u0159evy\u0161uje v\u00fdkon Carbon-cache. P\u0159ij\u00edm\u00e1 data a zapisuje je na disky pomoc\u00ed bal\u00ed\u010dku whisper (standardn\u00ed, napsan\u00fd v pythonu). Pro \u010dten\u00ed dat z na\u0161ich \u00falo\u017ei\u0161\u0165 pou\u017e\u00edv\u00e1me Graphite API. To funguje mnohem rychleji ne\u017e standardn\u00ed Graphite WEB. Co se s daty d\u011bje d\u00e1l? <\/p>\n<p>Jdou do Grafany. Jako hlavn\u00ed zdroj dat pou\u017e\u00edv\u00e1me na\u0161e grafitov\u00e9 clustery, nav\u00edc m\u00e1me Grafanu jako webov\u00e9 rozhran\u00ed pro zobrazen\u00ed metrik a sestaven\u00ed dashboard\u016f. Pro ka\u017ed\u00fd sv\u016fj servis vyv\u00edjej\u00ed v\u00fdvoj\u00e1\u0159i vlastn\u00ed dashboard. D\u00e1le na nich sestavuj\u00ed grafy, na kter\u00fdch jsou zobrazeny metriky, kter\u00e9 zapisuj\u00ed ze sv\u00fdch aplikac\u00ed. Krom\u011b Grafany m\u00e1me tak\u00e9 SLAM. To je python\u00ed d\u00e9mon, kter\u00fd po\u010d\u00edt\u00e1 SLA na z\u00e1klad\u011b dat z grafitu. Jak u\u017e jsem \u0159ekl, m\u00e1me n\u011bkolik des\u00edtek mikroslu\u017eeb, z nich\u017e ka\u017ed\u00e1 m\u00e1 sv\u00e9 vlastn\u00ed po\u017eadavky. S pomoc\u00ed SLAM se d\u00edv\u00e1me do dokumentace a porovn\u00e1v\u00e1me ji s t\u00edm, co m\u00e1me v Graphite, a hodnot\u00edme, jak po\u017eadavky odpov\u00eddaj\u00ed dostupnosti na\u0161ich slu\u017eeb. <\/p>\n<p>Pokra\u010dujeme d\u00e1le: alerting. Ten je organizov\u00e1n pomoc\u00ed siln\u00e9ho syst\u00e9mu \u2014 Moira. Je nez\u00e1visl\u00e1, proto\u017ee pod kapotou m\u00e1 sv\u016fj vlastn\u00ed Graphite. Byla vyvinuta kluky z SKB \u201eKontur\u201c, napsan\u00e1 v pythonu a Go, a je kompletn\u011b open-source. Moira p\u0159ij\u00edm\u00e1 stejn\u00fd tok dat, kter\u00fd jde do grafit\u016f. Pokud z n\u011bjak\u00e9ho d\u016fvodu va\u0161e \u00falo\u017ei\u0161t\u011b sel\u017ee, v\u00e1\u0161 alerting bude fungovat.<\/p>\n<p>Moira jsme nasadili do Kubernetes, jako hlavn\u00ed datab\u00e1zi pou\u017e\u00edv\u00e1 cluster Redis server\u016f. V\u00fdsledkem je bezporuchov\u00fd syst\u00e9m. Porovn\u00e1v\u00e1 tok metrik se seznamem spou\u0161t\u011b\u010d\u016f: pokud nen\u00ed zm\u00ednka, metrika se vyhazuje. Takto je schopna zpracovat gigabajty metrik za minutu. <\/p>\n<p>D\u00e1le jsme k tomu p\u0159ipojili firemn\u00ed LDAP, pomoc\u00ed kter\u00e9ho si ka\u017ed\u00fd u\u017eivatel firemn\u00edho syst\u00e9mu m\u016f\u017ee vytv\u00e1\u0159et notifikace pro existuj\u00edc\u00ed (nebo nov\u011b vytvo\u0159en\u00e9) spou\u0161t\u011b\u010de. Jeliko\u017e Moira obsahuje Graphite, podporuje v\u0161echny jeho funkce. Proto nejprve vezmete \u0159\u00e1dek a zkop\u00edrujete ho do Grafany. Pod\u00edv\u00e1te se, jak se data zobrazuj\u00ed na grafech. Pot\u00e9 vezmete tento stejn\u00fd \u0159\u00e1dek a zkop\u00edrujete ho do Moira. P\u0159id\u00e1te mu limity a na v\u00fdstupu z\u00edsk\u00e1te alerting. K tomu v\u0161emu nepot\u0159ebujete \u017e\u00e1dn\u00e9 specifick\u00e9 znalosti. Moira je schopna upozor\u0148ovat pomoc\u00ed SMS, emailu, v Jira, Slacku\u2026 Tak\u00e9 podporuje spou\u0161t\u011bn\u00ed vlastn\u00edch skript\u016f. Kdy\u017e nastane spou\u0161t\u011b\u010d a je p\u0159ihl\u00e1\u0161ena k vlastn\u00edm skript\u016fm nebo bin\u00e1rk\u00e1m, spust\u00ed je a p\u0159ed\u00e1 t\u00e9to bin\u00e1rce JSON na stdin. Va\u0161e aplikace ho mus\u00ed parsovat. Co s t\u00edm JSONem ud\u011bl\u00e1te \u2014 to u\u017e z\u00e1le\u017e\u00ed na v\u00e1s. Chcete \u2014 po\u0161lete to do Telegramu, chcete \u2014 otev\u0159ete \u00fakoly v Jira, d\u011blejte si, co chcete. <\/p>\n<p>Pro alerting pou\u017e\u00edv\u00e1me tak\u00e9 na\u0161i vlastn\u00ed aplikaci \u2014 Imagotag. P\u0159izp\u016fsobili jsme panel, kter\u00fd se obvykle pou\u017e\u00edv\u00e1 pro elektronick\u00e9 cenovky v obchodech, na\u0161im pot\u0159eb\u00e1m. Vyt\u00e1hli jsme na n\u011bj spou\u0161t\u011b\u010de z Moira. Je tam uvedeno, v jak\u00e9m stavu jsou a kdy k tomu do\u0161lo. N\u011bkte\u0159\u00ed z v\u00fdvoje se vzdali notifikac\u00ed ve Slacku a emailu ve prosp\u011bch tohoto panelu. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/bcf454c96adaa0cff81f5e56db5b715c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA proto\u017ee jsme progresivn\u00ed firma, monitorujeme v tomto syst\u00e9mu tak\u00e9 Kubernetes. Za\u010dlenili jsme ho do syst\u00e9mu pomoc\u00ed Heapsteru, kter\u00fd jsme nainstalovali do clusteru, shroma\u017e\u010fuje data a pos\u00edl\u00e1 je do Graphite. V\u00fdsledn\u00fd diagram vypad\u00e1 takto: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/cca0f2f9f590fc84609d48e52ebd0d21.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Slo\u017eky monitorov\u00e1n\u00ed<\/h3>\n<p>Toto je seznam odkaz\u016f na ty komponenty, kter\u00e9 jsme pou\u017eili pro tento \u00fakol. V\u0161echny jsou open-source. <\/p>\n<h4>Graphite:<\/h4>\n<p><\/p>\n<ul>\n<li>go-carbon: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/lomik\/go-carbon\">github.com\/lomik\/go-carbon<\/a><\/noindex><\/li>\n<li>whisper: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/whisper\">github.com\/graphite-project\/whisper<\/a><\/noindex> <\/li>\n<li>graphite-api: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/brutasse\/graphite-api\">github.com\/brutasse\/graphite-api<\/a><\/noindex> <\/li>\n<\/ul>\n<h4>Carbon-c-relay: <\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grobian\/carbon-c-relay\">github.com\/grobian\/carbon-c-relay<\/a><\/noindex> <\/p>\n<h4>Brubeck: <\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/brubeck\">github.com\/github\/brubeck<\/a><\/noindex> <\/p>\n<h4>Collectd:<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/collectd.org\/\">collectd.org<\/a><\/noindex><\/p>\n<h4>Moira: <\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/moira-alert\">github.com\/moira-alert<\/a><\/noindex> <\/p>\n<h4>Grafana: <\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/\">grafana.com<\/a><\/noindex> <\/p>\n<h4>Heapster: <\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/heapster\">github.com\/kubernetes\/heapster<\/a><\/noindex><\/p>\n<h3>Statistika<\/h3>\n<p>\nA tady je n\u011bkolik \u010d\u00edsel o tom, jak syst\u00e9m funguje u n\u00e1s. <\/p>\n<h4>Aggregator (brubeck)<\/h4>\n<p>\nPo\u010det metrik: ~ 300 000 \/ sec<br \/>\nInterval odes\u00edl\u00e1n\u00ed metrik do Graphite: 30 sec<br \/>\nVyu\u017eit\u00ed serverov\u00fdch zdroj\u016f: ~ 6% CPU (jde o plnohodnotn\u00e9 servery); ~ 1Gb RAM; ~ 3 Mbps LAN<\/p>\n<h4>Graphite (go-carbon)<\/h4>\n<p>\nPo\u010det metrik: ~ 1 600 000 \/ min<br \/>\nInterval aktualizace metrik: 30 sec<br \/>\nSch\u00e9ma ukl\u00e1d\u00e1n\u00ed metrik: 30sec 35d, 5min 90d, 10min 365d (d\u00e1v\u00e1 p\u0159ehled o tom, co se s slu\u017ebou d\u011bje v dlouh\u00e9m \u010dasov\u00e9m horizontu) <br \/>\nVyu\u017eit\u00ed serverov\u00fdch zdroj\u016f: ~ 10% CPU; ~ 20Gb RAM; ~ 30 Mbps LAN<\/p>\n<h3>Flexibilita<\/h3>\n<p>\nV Avitu si velmi cen\u00edme flexibility na\u0161eho monitorovac\u00edho servisu. Pro\u010d se vlastn\u011b takov\u00fd vynikl? Za prv\u00e9, jeho sou\u010d\u00e1sti jsou vz\u00e1jemn\u011b zam\u011bniteln\u00e9: jak samotn\u00e9 komponenty, tak jejich verze. Za druh\u00e9 \u2014 \u00fadr\u017eba. Vzhledem k tomu, \u017ee cel\u00fd projekt je postaven na open-source software, m\u016f\u017eete sami upravovat k\u00f3d, prov\u00e1d\u011bt zm\u011bny a implementovat funkce, kter\u00e9 nejsou dostupn\u00e9 zkrabice. Pou\u017e\u00edvaj\u00ed se dost roz\u0161\u00ed\u0159en\u00e9 technologie, p\u0159ev\u00e1\u017en\u011b Go a Python, tak\u017ee je to pom\u011brn\u011b jednoduch\u00e9. <\/p>\n<p>Zde je p\u0159\u00edklad skute\u010dn\u011b vznikl\u00e9ho probl\u00e9mu. Metrika v Graphite je soubor. M\u00e1 n\u00e1zev. N\u00e1zev souboru = n\u00e1zev metriky. A existuje cesta k n\u011bmu. N\u00e1zev souboru v Linuxu je omezen na 255 znak\u016f. A m\u00e1me (jako \"intern\u00ed z\u00e1kazn\u00edci\") kluky z datab\u00e1zov\u00e9ho odd\u011blen\u00ed. \u0158\u00edkaj\u00ed n\u00e1m: \"Chceme monitorovat na\u0161e SQL dotazy. A ty \u2014 nejsou 255 znak\u016f, ale 8 MB ka\u017ed\u00fd. Chceme je zobrazit v Grafan\u011b, vid\u011bt parametry pro tento dotaz, a je\u0161t\u011b l\u00e9pe, chceme vid\u011bt top takov\u00fdch dotaz\u016f. Bylo by skv\u011bl\u00e9, kdyby se to zobrazovalo v re\u00e1ln\u00e9m \u010dase. A \u00fapln\u011b \u00fa\u017easn\u00e9 by bylo, kdybychom to mohli dostat do alertingu.\" <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu\" src=\"\/wp-content\/uploads\/2019\/11\/e1136c7fd0b6156c0c3fd49bab54737e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>P\u0159\u00edklad SQL dotazu je uveden jako p\u0159\u00edklad z <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/9.6\/queries-with\">str\u00e1nky postgrespro.ru<\/a><\/noindex> <\/i><\/p>\n<p>Zved\u00e1me server Redis a na\u0161imi Collectd pluginy, kter\u00e9 komunikuj\u00ed s Postgres a berou odtud v\u0161echna data, pos\u00edl\u00e1me metriky do Graphite. Ale m\u011bn\u00edme n\u00e1zev metriky na hash. Tento hash z\u00e1rove\u0148 pos\u00edl\u00e1me do Redis jako kl\u00ed\u010d a cel\u00fd SQL dotaz jako hodnotu. Zb\u00fdv\u00e1 n\u00e1m ud\u011blat tak, aby Grafana um\u011bla dotazovat Redis a brala tyto informace. Otev\u00edr\u00e1me Graphite API, proto\u017ee to je hlavn\u00ed rozhran\u00ed pro interakci v\u0161ech komponent monitorov\u00e1n\u00ed s Graphite, a zapisujeme tam novou funkci, kter\u00e1 se jmenuje aliasByHash() \u2014 od Grafana z\u00edsk\u00e1v\u00e1me n\u00e1zev metriky a pou\u017e\u00edv\u00e1me ho v dotazu na Redis jako kl\u00ed\u010d, v odpov\u011b\u010f dost\u00e1v\u00e1me hodnotu kl\u00ed\u010de, kterou je n\u00e1\u0161 \u201eSQL dotaz\u201c. Takto jsme v Grafan\u011b zobrazili SQL dotaz, kter\u00fd by jinak nebylo mo\u017en\u00e9 tam zobrazit, spolu se statistikou o n\u011bm (calls, rows, total_time, \u2026). <\/p>\n<h3>Z\u00e1v\u011bry <\/h3>\n<p>\n<b>Dostupnost.<\/b> Na\u0161e slu\u017eba sledov\u00e1n\u00ed je k dispozici 24\/7 z jak\u00e9koli aplikace a jak\u00e9hokoli k\u00f3du. Pokud m\u00e1te p\u0159\u00edstup k \u00falo\u017ei\u0161t\u00edm, m\u016f\u017eete zas\u00edlat do slu\u017eby data. Jazyk nen\u00ed d\u016fle\u017eit\u00fd, \u0159e\u0161en\u00ed nejsou d\u016fle\u017eit\u00e1. Pot\u0159ebujete pouze v\u011bd\u011bt, jak otev\u0159\u00edt socket, vlo\u017eit do n\u011bj metriku a socket zav\u0159\u00edt. <\/p>\n<p><b>Spolehlivost.<\/b> V\u0161echny komponenty jsou odoln\u00e9 v\u016f\u010di chyb\u00e1m a zvl\u00e1daj\u00ed na\u0161e z\u00e1t\u011b\u017ee bez probl\u00e9m\u016f. <\/p>\n<p><b>N\u00edzk\u00fd vstupn\u00ed pr\u00e1h.<\/b> Aby bylo mo\u017en\u00e9 tuto syst\u00e9m pou\u017e\u00edvat, nemus\u00edte studovat programovac\u00ed jazyky a dotazy v Grafan\u011b. Sta\u010d\u00ed otev\u0159\u00edt va\u0161i aplikaci, vlo\u017eit do n\u00ed socket, kter\u00fd bude zas\u00edlat metriky do Graphite, zav\u0159\u00edt ho, otev\u0159\u00edt Grafanu, vytvo\u0159it tam dashboardy a sledovat chov\u00e1n\u00ed va\u0161ich metrik a z\u00edsk\u00e1vat upozorn\u011bn\u00ed prost\u0159ednictv\u00edm Moira.<\/p>\n<p><b>Samostatnost.<\/b> V\u0161e toto m\u016f\u017eete d\u011blat sami, bez pomoci DevOps in\u017een\u00fdr\u016f. A to je \u00fapln\u011b zbyte\u010dn\u00e9, proto\u017ee m\u016f\u017eete sledovat sv\u016fj projekt p\u0159\u00edmo nyn\u00ed, nikoho nemus\u00edte prosit \u2014 ani na za\u010d\u00e1tku pr\u00e1ce, ani na zm\u011bny. <\/p>\n<h3>K \u010demu sm\u011b\u0159ujeme? <\/h3>\n<p>\nV\u0161e n\u00ed\u017ee uveden\u00e9 \u2014 nen\u00ed jen abstraktn\u00ed my\u0161lenka, ale z\u00e1m\u011br, ke kter\u00e9mu byly u\u010din\u011bny alespo\u0148 prvn\u00ed kroky. <\/p>\n<ol>\n<li>Detektor anom\u00e1li\u00ed. Chceme vytvo\u0159it slu\u017ebu, kter\u00e1 bude prob\u00edhat do na\u0161ich Graphite \u00falo\u017ei\u0161\u0165 a kontrolovat ka\u017edou metriku podle r\u016fzn\u00fdch algoritm\u016f. Ji\u017e m\u00e1me algoritmy, kter\u00e9 chceme proch\u00e1zet, m\u00e1me data a um\u00edme s nimi pracovat.\n<\/li>\n<li>Metadata. M\u00e1me mnoho slu\u017eeb, kter\u00e9 se \u010dasem m\u011bn\u00ed, stejn\u011b jako lid\u00e9, kte\u0159\u00ed s nimi pracuj\u00ed. Neust\u00e1le v\u00e9st dokumentaci ru\u010dn\u011b nen\u00ed mo\u017enost. Proto nyn\u00ed integrujeme metadata do na\u0161ich mikroslu\u017eeb. Je tam uvedeno, kdo je vyvinul, jazyky, se kter\u00fdmi pracuje, po\u017eadavky na SLA, kam a komu pos\u00edlat notifikace. P\u0159i nasazen\u00ed slu\u017eby se v\u0161echny \u00fadaje samostatn\u011b vytv\u00e1\u0159ej\u00ed. Nakonec dostanete dva odkazy - jeden na spou\u0161t\u011b\u010de, druh\u00fd na dashboardy v Grafan\u011b.\n<\/li>\n<li>Monitoring do ka\u017ed\u00e9ho domu. Domn\u00edv\u00e1me se, \u017ee by n\u00e1\u0161 syst\u00e9m m\u011bli pou\u017e\u00edvat v\u0161ichni v\u00fdvoj\u00e1\u0159i. V takov\u00e9m p\u0159\u00edpad\u011b v\u017edy v\u00edte, kde je v\u00e1\u0161 provoz, co se s n\u00edm d\u011bje, kde kles\u00e1, kde m\u00e1 slab\u00e1 m\u00edsta. Pokud nap\u0159\u00edklad p\u0159ijde n\u011bco, co p\u0159et\u00ed\u017e\u00ed va\u0161i slu\u017ebu, zjist\u00edte to ne b\u011bhem telefon\u00e1tu od mana\u017eera, ale d\u00edky alertu, a m\u016f\u017eete okam\u017eit\u011b otev\u0159\u00edt \u010derstv\u00e9 logy a pod\u00edvat se, co se stalo.\n<\/li>\n<li>Vysok\u00fd v\u00fdkon. N\u00e1\u0161 projekt neust\u00e1le roste a dnes zpracov\u00e1v\u00e1me p\u0159ibli\u017en\u011b 2 000 000 hodnot metrik za minutu. P\u0159ed rokem byl tento \u00fadaj 500 000. A r\u016fst pokra\u010duje, co\u017e znamen\u00e1, \u017ee za n\u011bjakou dobu za\u010dne Graphite (whisper) v\u00fdrazn\u011b zat\u011b\u017eovat diskov\u00fd subsyst\u00e9m. Jak u\u017e jsem \u0159ekl, tento monitorovac\u00ed syst\u00e9m je dost univerz\u00e1ln\u00ed d\u00edky vz\u00e1jemn\u00e9 zam\u011bnitelnosti komponent. N\u011bkdo speci\u00e1ln\u011b pro Graphite udr\u017euje a neust\u00e1le roz\u0161i\u0159uje svou infrastrukturu, ale rozhodli jsme se j\u00edt jinou cestou: pou\u017e\u00edt <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/\">ClickHouse<\/a><\/noindex> jako \u00falo\u017ei\u0161t\u011b na\u0161ich metrik. Tento p\u0159echod je t\u00e9m\u011b\u0159 dokon\u010den a brzy v\u00e1m podrobn\u011bji pov\u00edm, jak to bylo ud\u011bl\u00e1no: jak\u00e9 byly obt\u00ed\u017ee a jak byly p\u0159ekon\u00e1ny, jak prob\u00edhal proces migrace, pop\u00ed\u0161u zvolen\u00e9 komponenty pro obvaz a jejich konfigurace. \n<\/li>\n<\/ol>\n<p>\nD\u011bkuji za pozornost! Zeptejte se na sv\u00e9 ot\u00e1zky k t\u00e9matu, pokus\u00edm se odpov\u011bd\u011bt zde nebo v n\u00e1sleduj\u00edc\u00edch p\u0159\u00edsp\u011bvc\u00edch. Mo\u017en\u00e1 m\u00e1 n\u011bkdo zku\u0161enosti s v\u00fdstavbou podobn\u00e9ho monitorovac\u00edho syst\u00e9mu nebo p\u0159echodu na Clickhouse v podobn\u00e9 situaci - pod\u011blte se o n\u011b v koment\u00e1\u0159\u00edch.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/335410\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043b\u0438. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0441\u0438\u043b\u0430\u043c\u0438 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e. \u041c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0438, \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b, \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u043a \u043d\u0438\u043c \u0430\u043b\u0435\u0440\u0442\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52115","post","type-post","status-publish","format-standard","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=\"\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043b\u0438. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0441\u0438\u043b\u0430\u043c\u0438 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e.\" \/>\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\/cs\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441: \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \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 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043b\u0438. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0441\u0438\u043b\u0430\u043c\u0438 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury\" \/>\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-31T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T10:59:47+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\udd47Monitoring jako slu\u017eba: modul\u00e1rn\u00ed syst\u00e9m pro mikroslu\u017ebovou architekturu | ProHoster","description":"Dnes v na\u0161em projektu krom\u011b monolitick\u00e9ho k\u00f3du funguje des\u00edtky mikroslu\u017eeb. Ka\u017ed\u00e1 z nich vy\u017eaduje monitorov\u00e1n\u00ed. \u010cinit to v takov\u00e9m rozsahu silami DevOps in\u017een\u00fdr\u016f je problematick\u00e9.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441: \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \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 | ProHoster","og:description":"\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043b\u0438. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0441\u0438\u043b\u0430\u043c\u0438 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","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-31T21:00:00+00:00","article:modified_time":"2020-02-18T10:59:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52115","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-24 02:30:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:49:49","updated":"2026-01-24 02:30:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/52115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=52115"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/52115\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=52115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=52115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=52115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}