{"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\/it\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","title":{"rendered":"Monitoraggio come servizio: sistema modulare per architetture a microservizi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Oggi nel nostro progetto, oltre al codice monolitico, funzionano decine di microservizi. Ognuno di essi richiede monitoraggio. Farlo in questo volume con le forze degli ingegneri DevOps \u00e8 problematico. Abbiamo sviluppato un sistema di monitoraggio che funziona come un servizio per gli sviluppatori. Possono scrivere metriche nel sistema di monitoraggio, usarle, creare dashboard basate su di esse e collegare allarmi che scattano al raggiungimento di determinati valori soglia. Agli ingegneri DevOps rimane solo l'infrastruttura e la documentazione. <\/p>\n<p>Questo post \u00e8 la trascrizione del mio intervento durante la nostra <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/tomicro\">sezione<\/a><\/noindex> a RIT++. Molti ci hanno chiesto di fare versioni testuali delle relazioni presentate l\u00ec. Se sei stato alla conferenza o hai visto il video, non troverai nulla di nuovo. A tutti gli altri, benvenuti sotto il tag. Racconter\u00f2 come siamo arrivati a questo sistema, come funziona e come intendiamo aggiornarlo. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" 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>Il passato: schemi e piani <\/h3>\n<p>\nCome siamo arrivati al sistema di monitoraggio esistente? Per rispondere a questa domanda, bisogna tornare al 2015. Ecco come si presentava allora: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" src=\"\/wp-content\/uploads\/2019\/11\/d955f9bcdb5f5a5a54720c77113ca85d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAvevamo circa 24 nodi responsabili del monitoraggio. Qui c'\u00e8 un intero insieme di cronjob, script e demoni che monitorano qualcosa in qualche modo, inviano messaggi e svolgono funzioni. Abbiamo pensato che, proseguendo, un sistema simile sarebbe diventato sempre meno sostenibile. Non ha senso svilupparlo: \u00e8 troppo ingombrante. <br \/>\nAbbiamo deciso di scegliere quali elementi di monitoraggio mantenere e sviluppare e quali abbandonare. Ne sono rimasti 19. Sono rimasti solo Graphite, aggregatori e Grafana come dashboard. Ma come apparir\u00e0 il nuovo sistema? Ecco come: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" src=\"\/wp-content\/uploads\/2019\/11\/57d220113d0b76c05874b5d774bff8af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbbiamo uno storage per le metriche: sono i Graphite, che saranno basati su SSD veloci, e ci sono aggregatori specifici per le metriche. Inoltre, utilizzeremo Grafana per visualizzare le dashboard e Moira per gli allerta. Volevamo anche sviluppare un sistema per la ricerca di anomalie. <\/p>\n<h3>Standard: Monitoraggio 2.0<\/h3>\n<p>\nEcco come si presentavano i piani nel 2015. Ma dovevamo preparare non solo l'infrastruttura e il servizio stesso, ma anche la documentazione ad esso collegata. Abbiamo sviluppato un standard aziendale che abbiamo chiamato monitoraggio 2.0. Quali erano i requisiti per il sistema? <\/p>\n<ul>\n<li>disponibilit\u00e0 continua; <\/li>\n<li>intervallo di conservazione delle metriche = 10 secondi; <\/li>\n<li>archiviazione strutturata di metriche e dashboard; <\/li>\n<li>SLA &gt; 99,99% <\/li>\n<li>raccolta di metriche degli eventi tramite UDP (!). <\/li>\n<\/ul>\n<p>\nAvevamo bisogno di UDP, poich\u00e9 gestivamo un alto volume di traffico e eventi che generano metriche. Se le scrivessimo tutte in Graphite contemporaneamente, l'archivio andrebbe in crash. Abbiamo anche scelto prefissi di primo livello per tutte le metriche. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" src=\"\/wp-content\/uploads\/2019\/11\/d24c4474b19b532a48cef4d4376287ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCiascuno dei prefissi ha una propriet\u00e0 specifica. Ci sono metriche su server, reti, contenitori, risorse, applicazioni e cos\u00ec via. \u00c8 stata implementata una filtrazione chiara, rigorosa e tipizzata, dove accettiamo solo metriche di primo livello e le altre semplicemente le scartiamo. Ecco come abbiamo pianificato questo sistema nel 2015. E nel presente? <\/p>\n<h3>Presente: schema di interazione dei componenti di monitoraggio<\/h3>\n<p>\nInnanzitutto monitoriamo le applicazioni: il nostro codice PHP, le applicazioni e i microservizi \u2014 in breve, tutto ci\u00f2 che scrivono i nostri sviluppatori. Tutte le applicazioni inviano metriche all'aggregatore Brubeck (statsd, riscritto in C) tramite UDP. Si \u00e8 rivelato essere il pi\u00f9 veloce nei test sintetici. E invia gi\u00e0 le metriche aggregate a Graphite tramite TCP. <\/p>\n<p>Esso ha un tipo di metrica chiamata timer. \u00c8 una cosa molto utile. Ad esempio, per ogni connessione di un utente con il servizio, inviate a Brubeck una metrica con il tempo di risposta. Arrivano un milione di risposte, e l'aggregatore restituisce solo 10 metriche. Avete il numero di utenti arrivati, il tempo massimo, minimo e medio di risposta, la mediana e 4 percentili. Poi i dati vengono trasferiti a Graphite e possiamo vederli tutti in tempo reale. <\/p>\n<p>Abbiamo anche un'aggregazione per le metriche riguardanti l'hardware, il software, le metriche di sistema e il nostro vecchio sistema di monitoraggio Munin (che \u00e8 stato in uso fino al 2015). Raccogliamo tutto questo tramite il demone CollectD in C (che include una serie di vari plugin, \u00e8 in grado di interrogare tutte le risorse del sistema host su cui \u00e8 installato, basta indicare nella configurazione dove scrivere i dati) e scriviamo i dati in Graphite attraverso di esso. Supporta anche plugin Python e script shell, quindi puoi scrivere le tue soluzioni personalizzate: CollectD raccoglier\u00e0 questi dati da host locali o remoti (supponendo ci sia Curl) e li invier\u00e0 a Graphite. <\/p>\n<p>Successivamente, tutte le metriche che abbiamo raccolto vengono inviate a Carbon-c-relay. Questa \u00e8 una soluzione di Carbon Relay da Graphite, modificata in C. Si tratta di un router che raccoglie tutte le metriche che inviamo dai nostri aggregatori e le instrada verso i nodi. Inoltre, durante l'instradamento, verifica la validit\u00e0 delle metriche. Esse, da un lato, devono corrispondere allo schema con i prefissi che ho mostrato in precedenza e, dall'altro, devono essere valide per Graphite. Altrimenti vengono scartate. <\/p>\n<p>Successivamente, Carbon-c-relay invia le metriche al cluster Graphite. Utilizziamo Carbon-cache, riscritto in Go, come principale sistema di archiviazione delle metriche. Go-carbon, a causa della sua multithreading, supera notevolmente le prestazioni di Carbon-cache. Riceve i dati e li scrive sui dischi utilizzando il pacchetto whisper (standard, scritto in python). Per leggere i dati dai nostri archivi, utilizziamo l'API di Graphite. Funziona molto pi\u00f9 velocemente rispetto al Graphite WEB standard. Cosa succede ai dati successivamente? <\/p>\n<p>Essi vanno in Grafana. Come principale fonte di dati utilizziamo i nostri cluster di Graphite, e abbiamo Grafana come interfaccia web per visualizzare le metriche e costruire dashboard. Ogni sviluppatore crea un proprio dashboard per il proprio servizio. Successivamente, costruiscono grafici che mostrano le metriche inviate dalle proprie applicazioni. Oltre a Grafana, abbiamo anche SLAM. Si tratta di un demone Python che calcola SLA sulla base dei dati provenienti da Graphite. Come ho gi\u00e0 detto, abbiamo diverse decine di microsistemi, ciascuno dei quali ha le proprie esigenze. Con SLAM confrontiamo la documentazione con ci\u00f2 che abbiamo in Graphite e verifichiamo quanto le esigenze si allineano con la disponibilit\u00e0 dei nostri servizi. <\/p>\n<p>Procediamo oltre: il monitoraggio degli allerta. \u00c8 organizzato attraverso un robusto sistema: Moira. \u00c8 indipendente perch\u00e9 ha un proprio Graphite sotto il cofano. \u00c8 stata sviluppata dai ragazzi di SKB 'Kontur', scritta in Python e Go, completamente open source. Moira riceve tutto lo stesso flusso che va verso i Graphite. Se per qualche motivo il vostro archivio si guasta, il monitoraggio degli allerta continuer\u00e0 a funzionare.<\/p>\n<p>Moira \u00e8 stata implementata in Kubernetes, utilizzando un cluster di server Redis come database principale. Il risultato \u00e8 un sistema tollerante ai guasti. Confronta il flusso delle metriche con un elenco di trigger: se non ci sono menzioni, scarta la metrica. In questo modo \u00e8 in grado di elaborare gigabyte di metriche al minuto. <\/p>\n<p>Inoltre, abbiamo integrato un LDAP aziendale, tramite il quale ogni utente del sistema aziendale pu\u00f2 creare notifiche per trigger esistenti (o appena creati). Poich\u00e9 Moira include Graphite, supporta tutte le sue funzionalit\u00e0. Pertanto, prima prendi una riga e la copi in Grafana. Controlla come vengono visualizzati i dati nei grafici. Successivamente prendi la stessa riga e la copi in Moira. Le applichi i limiti e ottieni l'allerta in uscita. Per fare tutto questo, non sono necessarie conoscenze specifiche. Moira \u00e8 in grado di inviare avvisi tramite SMS, email, in Jira, Slack... Supporta anche l'esecuzione di script personalizzati. Quando si verifica un trigger e Moira \u00e8 iscritta a uno script personalizzato o a un eseguibile, lo avvia e passa a stdin a quell'eseguibile un JSON. Di conseguenza, il tuo programma deve analizzarlo. Cosa fare con questo JSON \u00e8 una tua scelta. Vuoi, invialo su Telegram, vuoi, apri i task in Jira, fai quello che preferisci. <\/p>\n<p>Per l'allerta utilizziamo anche uno sviluppo interno: Imagotag. Abbiamo adattato un pannello di solito utilizzato per i prezzi elettronici nei negozi, per le nostre esigenze. Abbiamo visualizzato i trigger da Moira su di esso. Sono indicati i loro stati e quando si sono verificati. Alcuni membri del team di sviluppo hanno rinunciato alle notifiche in Slack e email in favore di questo pannello. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" src=\"\/wp-content\/uploads\/2019\/11\/bcf454c96adaa0cff81f5e56db5b715c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEssendo una compagnia all'avanguardia, abbiamo monitorato anche Kubernetes in questo sistema. L'abbiamo integrato utilizzando Heapster, che abbiamo installato nel cluster, raccoglie i dati e li invia a Graphite. Alla fine, lo schema appare cos\u00ec: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" src=\"\/wp-content\/uploads\/2019\/11\/cca0f2f9f590fc84609d48e52ebd0d21.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Componenti di monitoraggio<\/h3>\n<p>Ecco l'elenco dei link ai componenti che abbiamo utilizzato per questo compito. Sono tutti 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>Statistiche<\/h3>\n<p>\nEcco alcune cifre su come funziona il sistema da noi. <\/p>\n<h4>Aggregator (brubeck)<\/h4>\n<p>\nNumero di metriche: ~ 300 000 \/ sec<br \/>\nIntervallo di invio delle metriche a Graphite: 30 sec<br \/>\nUtilizzo delle risorse del server: ~ 6% CPU (riferito a server completi); ~ 1Gb RAM; ~ 3 Mbps LAN<\/p>\n<h4>Graphite (go-carbon)<\/h4>\n<p>\nNumero di metriche: ~ 1 600 000 \/ min<br \/>\nIntervallo di aggiornamento delle metriche: 30 sec<br \/>\nSchema di archiviazione delle metriche: 30sec 35d, 5min 90d, 10min 365d (fornisce comprensione su cosa sta accadendo con il servizio su un lungo periodo di tempo) <br \/>\nUtilizzo delle risorse del server: ~ 10% CPU; ~ 20Gb RAM; ~ 30 Mbps LAN<\/p>\n<h3>Flessibilit\u00e0<\/h3>\n<p>\nIn Avito, teniamo molto alla flessibilit\u00e0 del nostro servizio di monitoraggio. Perch\u00e9 \u00e8 diventato cos\u00ec? In primo luogo, le sue parti costitutive sono intercambiabili: sia i componenti stessi che le loro versioni. In secondo luogo - manutenibilit\u00e0. Poich\u00e9 l'intero progetto \u00e8 basato su open source, puoi modificare il codice, apportare modifiche e implementare funzionalit\u00e0 non disponibili di default. Vengono utilizzate pile abbastanza diffuse, principalmente Go e Python, quindi \u00e8 abbastanza semplice. <\/p>\n<p>Ecco un esempio di un problema realmente verificatosi. Una metrica in Graphite \u00e8 un file. Ha un nome. Nome del file = nome della metrica. E c'\u00e8 un percorso per questo. I nomi dei file in Linux sono limitati a 255 caratteri. E noi abbiamo (come 'clienti interni') ragazzi del dipartimento database. Ci dicono: 'Vogliamo monitorare le nostre query SQL. E queste non sono 255 caratteri, ma 8 MB ognuna. Vogliamo visualizzarle in Grafana, vedere i parametri di questa query e, anche meglio, vogliamo vedere il top di queste query. Sarebbe fantastico se si visualizzassero in tempo reale. E sarebbe davvero straordinario se potessimo inserirle nell'allerta.' <\/p>\n<p><img decoding=\"async\" alt=\"Monitoraggio come servizio: sistema modulare per architetture a microservizi\" src=\"\/wp-content\/uploads\/2019\/11\/e1136c7fd0b6156c0c3fd49bab54737e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Esempio di query SQL preso come esempio da <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/9.6\/queries-with\">sito postgrespro.ru<\/a><\/noindex> <\/i><\/p>\n<p>Avviamo un server Redis e i nostri plugin Collectd, che accedono a Postgres per raccogliere tutti i dati e inviare le metriche a Graphite. Ma sostituiamo il nome della metrica con hash. Questo stesso hash viene inviato contemporaneamente a Redis come chiave, e l'intera query SQL come valore. Rimane da fare in modo che Grafana possa accedere a Redis e recuperare queste informazioni. Apriamo l'API di Graphite, poich\u00e9 questo \u00e8 il principale punto di interfaccia tra tutti i componenti di monitoraggio e Graphite, e inseriamo una nuova funzione chiamata aliasByHash() \u2014 riceviamo il nome della metrica da Grafana e lo utilizziamo nella query a Redis come chiave, in risposta riceviamo il valore della chiave, che \u00e8 la nostra \u201cquery SQL\u201d. In questo modo, siamo riusciti a visualizzare in Grafana la query SQL, che in teoria non poteva essere visualizzata l\u00ec, insieme alle statistiche relative (calls, rows, total_time, \u2026). <\/p>\n<h3>Conclusioni <\/h3>\n<p>\n<b>Disponibilit\u00e0.<\/b> Il nostro servizio di monitoraggio \u00e8 disponibile 24 ore su 24, 7 giorni su 7, da qualsiasi applicazione e codice. Se hai accesso ai repository, puoi scrivere dati nel servizio. Il linguaggio non \u00e8 importante, le soluzioni non contano. Devi solo sapere come aprire un socket, inviare la metrica e chiudere il socket. <\/p>\n<p><b>Affidabilit\u00e0.<\/b> Tutti i componenti sono resistenti ai guasti e gestiscono bene i nostri carichi. <\/p>\n<p><b>Basso livello di ingresso.<\/b> Per utilizzare questo sistema, non \u00e8 necessario studiare i linguaggi di programmazione o le query in Grafana. Basta aprire la propria applicazione, inserire il socket che invier\u00e0 le metriche a Graphite, chiuderlo, aprire Grafana, creare dashboard e osservare il comportamento delle metriche, ricevendo notifiche tramite Moira.<\/p>\n<p><b>Autonomia.<\/b> Tutto questo pu\u00f2 essere fatto in autonomia, senza l'aiuto di ingegneri DevOps. E questo \u00e8 un overkill, perch\u00e9 puoi monitorare il tuo progetto proprio ora, senza chiedere aiuto \u2014 n\u00e9 per iniziare, n\u00e9 per modifiche. <\/p>\n<h3>Qual \u00e8 il nostro obiettivo? <\/h3>\n<p>\nTutti i punti elencati di seguito non sono solo pensieri astratti, ma rappresentano ci\u00f2 a cui sono stati compiuti anche i primi passi. <\/p>\n<ol>\n<li>Rilevatore di anomalie. Vogliamo sviluppare un servizio che acceda ai nostri repository Graphite e verifichi ogni metrica tramite vari algoritmi. Abbiamo gi\u00e0 algoritmi che vogliamo esaminare, abbiamo dati, sappiamo come lavorare con essi.\n<\/li>\n<li>Metadati. Abbiamo molti servizi, che nel tempo cambiano, proprio come le persone che lavorano con loro. Tenere costantemente la documentazione manualmente non \u00e8 un'opzione. Pertanto, attualmente nei nostri microservizi vengono integrati i metadati. Qui \u00e8 specificato chi lo ha sviluppato, i linguaggi con cui interagisce, i requisiti di SLA, dove e a chi inviare le notifiche. Al momento del deployment del servizio, tutti i dati delle entit\u00e0 vengono creati autonomamente. Alla fine, ricevi due link: uno ai trigger e l'altro ai dashboard in Grafana.\n<\/li>\n<li>Monitoraggio in ogni casa. Riteniamo che un sistema simile debba essere utilizzato da tutti gli sviluppatori. In questo modo saprai sempre dove si trova il tuo traffico, cosa sta accadendo, dove scende e dove ha punti deboli. Se, ad esempio, arriva qualcosa e sovraccarica il tuo servizio, lo scoprirai non durante una telefonata da un manager, ma da un avviso, e potrai subito aprire i log recenti e vedere cosa \u00e8 successo.\n<\/li>\n<li>Alte prestazioni. Il nostro progetto cresce costantemente e oggi elabora circa 2.000.000 di valori di metriche al minuto. Un anno fa, questo numero era di 500.000. E la crescita continua, il che significa che tra un po\u2019 Graphite (whisper) inizier\u00e0 a sovraccaricare notevolmente il sistema di archiviazione. Come ho gi\u00e0 detto, questo sistema di monitoraggio \u00e8 piuttosto versatile grazie all'intercambiabilit\u00e0 dei componenti. Qualcuno gestisce e amplia costantemente la propria infrastruttura specificamente per Graphite, ma noi abbiamo deciso di seguire un'altra strada: usare <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/\">ClickHouse<\/a><\/noindex> come archivio per le nostre metriche. Questo passaggio \u00e8 praticamente completato e presto racconter\u00f2 in dettaglio come \u00e8 stato fatto: quali difficolt\u00e0 ci sono state e come sono state superate, come si \u00e8 svolto il processo di migrazione, descriver\u00f2 i componenti scelti come middleware e le loro configurazioni. \n<\/li>\n<\/ol>\n<p>\nGrazie per l'attenzione! Fate le vostre domande sull'argomento, cercher\u00f2 di rispondere qui o nei prossimi post. \u00c8 possibile che qualcuno abbia esperienza nella creazione di un sistema di monitoraggio simile o nella transizione a Clickhouse in una situazione analoga: condividetela nei commenti.<br \/>\n<br \/>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Monitoraggio come servizio: sistema modulare per architetture a microservizi | ProHoster","description":"Oggi nel nostro progetto, oltre al codice monolitico, funzionano decine di microservizi. Ognuno di essi richiede di essere monitorato. Farlo in tali quantit\u00e0 da parte degli ingegneri DevOps \u00e8 problematico.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/52115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=52115"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/52115\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=52115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=52115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=52115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}