{"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\/de\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","title":{"rendered":"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Heute arbeiten auf unserem Projekt, neben monolithischem Code, zahlreiche Mikrodienste. Jeder von ihnen ben\u00f6tigt umfassende \u00dcberwachung. Dies in solch einem Umfang mit DevOps-Ingenieuren zu erledigen, ist problematisch. Deshalb haben wir ein \u00dcberwachungssystem entwickelt, das als Service f\u00fcr Entwickler fungiert. Sie k\u00f6nnen eigenst\u00e4ndig Metriken in das \u00dcberwachungssystem einpflegen, diese nutzen, Dashboards erstellen und Alarme einstellen, die bei Erreichen bestimmter Grenzwerte ausgel\u00f6st werden. Die DevOps-Ingenieure sind lediglich f\u00fcr die Infrastruktur und Dokumentation zust\u00e4ndig. <\/p>\n<p>Dieser Beitrag ist eine Aufzeichnung meines Vortrags aus unserer <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/tomicro\">Sektion<\/a><\/noindex> auf der RIT++. Viele hatten gebeten, die schriftlichen Versionen der Vortr\u00e4ge dort zu erstellen. Wenn Sie auf der Konferenz waren oder das Video angesehen haben, werden Sie nichts Neues finden. Allen anderen \u2013 willkommen unter dem Artikel. Ich werde erz\u00e4hlen, wie wir zu diesem System gekommen sind, wie es funktioniert und wie wir planen, es zu aktualisieren. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" 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>Die Vergangenheit: Pl\u00e4ne und Entw\u00fcrfe <\/h3>\n<p>\nWie sind wir zum bestehenden \u00dcberwachungssystem gekommen? Um diese Frage zu beantworten, m\u00fcssen wir ins Jahr 2015 zur\u00fcckblicken. So sah es damals aus: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" src=\"\/wp-content\/uploads\/2019\/11\/d955f9bcdb5f5a5a54720c77113ca85d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir hatten etwa 24 Knotenpunkte, die f\u00fcr das Monitoring zust\u00e4ndig waren. Hier gibt es eine ganze Reihe verschiedener Cron-Jobs, Skripte und Dienste, die in irgendeiner Weise \u00fcberwachen, Nachrichten senden und Funktionen ausf\u00fchren. Wir haben festgestellt, dass eine solche Systemstruktur mit der Zeit weniger tragf\u00e4hig sein wird. Es macht keinen Sinn, diese weiterzuentwickeln: sie ist einfach zu umst\u00e4ndlich. <br \/>\nWir haben uns entschlossen, die Monitoring-Elemente auszuw\u00e4hlen, die wir beibehalten und weiterentwickeln m\u00f6chten, und solche, von denen wir uns trennen werden. Am Ende blieben 19 \u00fcbrig. Es sind nur noch Graphite, Aggregatoren und Grafana als Dashboard \u00fcbrig. Aber wie wird das neue System aussehen? So: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" src=\"\/wp-content\/uploads\/2019\/11\/57d220113d0b76c05874b5d774bff8af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir haben ein Metrics-Repository: das sind Graphite, die auf schnellen SSDs basieren, und bestimmte Aggregatoren f\u00fcr Metriken. Dar\u00fcber hinaus verwenden wir Grafana zur Darstellung von Dashboards und Moira f\u00fcr das Alerting. Au\u00dferdem m\u00f6chten wir ein System zur Anomalieerkennung entwickeln. <\/p>\n<h3>Standard: Monitoring 2.0<\/h3>\n<p>\nSo sahen die Pl\u00e4ne im Jahr 2015 aus. Aber wir mussten nicht nur die Infrastruktur und den Dienst selbst vorbereiten, sondern auch die dazugeh\u00f6rige Dokumentation. F\u00fcr uns haben wir einen Unternehmensstandard entwickelt, den wir Monitoring 2.0 genannt haben. Welche Anforderungen gab es an das System? <\/p>\n<ul>\n<li>st\u00e4ndige Verf\u00fcgbarkeit; <\/li>\n<li>Intervall der Metrikspeicherung = 10 Sekunden; <\/li>\n<li>strukturierte Speicherung von Metriken und Dashboards; <\/li>\n<li>SLA &gt; 99,99% <\/li>\n<li>Erfassung von Ereignismetriken \u00fcber UDP (!). <\/li>\n<\/ul>\n<p>\nWir ben\u00f6tigten UDP, da wir einen hohen Datenverkehr und viele Ereignisse haben, die Metriken generieren. Wenn wir alle gleichzeitig in Graphite schreiben, w\u00fcrde das Speichersystem zusammenbrechen. Au\u00dferdem w\u00e4hlten wir Top-Level-Pr\u00e4fixe f\u00fcr alle Metriken. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" src=\"\/wp-content\/uploads\/2019\/11\/d24c4474b19b532a48cef4d4376287ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJedes dieser Pr\u00e4fixe hat eine spezifische Eigenschaft. Es gibt Metriken zu Servern, Netzwerken, Containern, Ressourcen, Anwendungen und so weiter. Es gibt eine klare, strenge, typisierte Filterung, bei der wir nur die Metriken der ersten Ebene akzeptieren und die anderen einfach verwerfen. So haben wir dieses System 2015 geplant. Und wie sieht es jetzt aus? <\/p>\n<h3>Aktuell: Schema der Interaktion zwischen den \u00dcberwachungskomponenten<\/h3>\n<p>\nZun\u00e4chst \u00fcberwachen wir die Applikationen: unseren PHP-Code, Anwendungen und Microservices \u2013 kurz gesagt, alles, was unsere Entwickler erstellen. Alle Applikationen senden \u00fcber UDP Metriken an den Aggregator Brubeck (statsd, in C neu geschrieben). Er hat sich in synthetischen Tests als der schnellste erwiesen. Und er sendet die bereits aggregierten Metriken \u00fcber TCP an Graphite. <\/p>\n<p>Es gibt einen bestimmten Typ von Metriken, die als Timer bezeichnet werden. Das ist eine sehr n\u00fctzliche Funktion. Zum Beispiel sendet man f\u00fcr jede Verbindung eines Nutzers zum Dienst eine Metrik an Brubeck mit der Antwortzeit. Es kommen Millionen von Antworten, und der Aggregator liefert nur 10 Metriken. Sie haben die Anzahl der eingegangenen Benutzer, die maximale, minimale und durchschnittliche Antwortzeit, die Median und 4 Perzentile. Anschlie\u00dfend werden die Daten an Graphite \u00fcbermittelt, und wir sehen sie alle live. <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043c\u0435\u0442\u0440\u0438\u043a \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u0443, \u0441\u043e\u0444\u0442\u0443, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0430\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 Munin (\u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0443 \u043d\u0430\u0441 \u0434\u043e 2015 \u0433\u043e\u0434\u0430). \u0412\u0441\u0435 \u044d\u0442\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 C&#8217;\u0438\u0448\u043d\u044b\u0439 \u0434\u0435\u043c\u043e\u043d CollectD (\u0432 \u043d\u0435\u0433\u043e \u0432\u0448\u0438\u0442\u0430 \u0446\u0435\u043b\u0430\u044f \u043f\u0430\u0447\u043a\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435) \u0438 \u043f\u0438\u0448\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Graphite. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b python \u0438 shell \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f: CollectD \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0435\u0441\u0442\u044c Curl) \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0432 Graphite. <\/p>\n<p>Alle gesammelten Metriken senden wir an Carbon-c-relay. Dies ist eine von Graphite entwickelte Carbon-Relay-L\u00f6sung, die in C optimiert wurde. Es handelt sich um einen Router, der alle Metriken, die wir von unseren Aggregatoren senden, sammelt und an die Knoten weiterleitet. W\u00e4hrend der Routing-Phase \u00fcberpr\u00fcft er auch die G\u00fcltigkeit der Metriken. Erstens m\u00fcssen sie dem Schema mit den Pr\u00e4fixen entsprechen, das ich zuvor gezeigt habe, und zweitens m\u00fcssen sie f\u00fcr Graphite g\u00fcltig sein. Andernfalls werden sie verworfen. <\/p>\n<p>Anschlie\u00dfend sendet Carbon-c-relay die Metriken an den Graphite-Cluster. Wir verwenden Carbon-cache, um die Metriken prim\u00e4r zu speichern, was in Go neu implementiert wurde. Go-Carbon \u00fcbertrifft aufgrund seiner Multithreading-F\u00e4higkeiten die Leistung von Carbon-cache erheblich. Es nimmt die Daten auf und speichert sie auf Festplatten mithilfe des Whisper-Pakets (Standard, geschrieben in Python). Um die Daten aus unseren Speichern auszulesen, nutzen wir die Graphite API. Diese funktioniert deutlich schneller als das Standard Graphite WEB. Was passiert mit den Daten danach? <\/p>\n<p>Sie laufen in Grafana. Als prim\u00e4re Datenquelle nutzen wir unsere Graphite-Cluster, und zus\u00e4tzlich haben wir Grafana als Web-Interface, um Metriken anzuzeigen und Dashboards zu erstellen. Jeder Entwickler hat ein eigenes Dashboard f\u00fcr seinen Service. Danach erstellen sie Grafiken, auf denen die Metriken dargestellt werden, die sie aus ihren Anwendungen senden. Neben Grafana haben wir auch SLAM. Das ist ein Python-Daemon, der SLAs basierend auf Daten aus Graphite berechnet. Wie bereits erw\u00e4hnt, haben wir mehrere Dutzend Mikrodienste, von denen jeder seine eigenen Anforderungen hat. Mit Hilfe von SLAM greifen wir auf die Dokumentation zu und vergleichen sie mit dem, was in Graphite vorhanden ist, und pr\u00fcfen, wie gut die Anforderungen mit der Verf\u00fcgbarkeit unserer Dienste \u00fcbereinstimmen. <\/p>\n<p>Kommen wir zum Alerting. Dieses ist durch ein robustes System organisiert \u2013 Moira. Es ist unabh\u00e4ngig, da es einen eigenen Graphite-Backend hat. Entwickelt von den Jungs von SKB \"Kontur\", geschrieben in Python und Go, und vollst\u00e4ndig Open-Source. Moira erh\u00e4lt den gleichen Datenstrom, der in Graphite flie\u00dft. Wenn aus irgendeinem Grund Ihr Speicher ausf\u00e4llt, funktioniert Ihr Alerting weiter.<\/p>\n<p>Moira wurde in Kubernetes implementiert und verwendet als Hauptdatenbank einen Redis-Servercluster. Dadurch entstand ein ausfallsicheres System. Es vergleicht den Datenstrom mit einer Liste von Triggern: Wenn keine Erw\u00e4hnung vorhanden ist, wird die Metrik verworfen. So kann es Gigabytes an Metriken pro Minute verarbeiten. <\/p>\n<p>Au\u00dferdem haben wir eine Unternehmens-LDAP integriert, mit dem jeder Benutzer des Unternehmenssystems Benachrichtigungen zu bestehenden (oder neu erstellten) Triggern erstellen kann. Da Moira Graphite enth\u00e4lt, unterst\u00fctzt sie alle Funktionen davon. Deshalb nehmen Sie zun\u00e4chst eine Zeile und kopieren sie in Grafana. Sehen Sie, wie die Daten in den Diagrammen angezeigt werden. Dann nehmen Sie dieselbe Zeile und kopieren sie in Moira. Sie versehen sie mit Limits und erhalten am Ende ein Alerting. F\u00fcr all das ben\u00f6tigen Sie keine speziellen Kenntnisse. Moira kann \u00fcber SMS, E-Mail, Jira, Slack alarmieren... Au\u00dferdem unterst\u00fctzt sie die Ausf\u00fchrung von benutzerdefinierten Skripten. Wenn ein Trigger eintritt und sie auf ein benutzerdefiniertes Skript oder eine Bin\u00e4rdatei abonniert ist, f\u00fchrt sie es aus und \u00fcbergibt dem Bin\u00e4rprogramm JSON \u00fcber stdin. Folglich muss Ihr Programm es parsen. Was Sie mit diesem JSON machen \u2013 das liegt ganz bei Ihnen. M\u00f6chten Sie es in Telegram senden, m\u00f6chten Sie Aufgaben in Jira erstellen, tun Sie, was immer Sie wollen. <\/p>\n<p>F\u00fcr das Alerting verwenden wir auch unsere eigene Entwicklung \u2014 Imagotag. Wir haben das Dashboard, das normalerweise f\u00fcr elektronische Preisschilder in Gesch\u00e4ften verwendet wird, an unsere Bed\u00fcrfnisse angepasst. Wir haben Trigger aus Moira integriert, auf denen der aktuelle Zustand und der Zeitpunkt der Ereignisse angezeigt werden. Einige Entwickler haben sich entschieden, auf Benachrichtigungen in Slack und E-Mails zugunsten dieses Dashboards zu verzichten. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" src=\"\/wp-content\/uploads\/2019\/11\/bcf454c96adaa0cff81f5e56db5b715c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnd da wir ein progressives Unternehmen sind, haben wir in diesem System auch Kubernetes \u00fcberwacht. Wir haben es \u00fcber Heapster in das System integriert, den wir im Cluster installiert haben. Er sammelt Daten und sendet sie an Graphite. Das Schema sieht folgenderma\u00dfen aus: <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" src=\"\/wp-content\/uploads\/2019\/11\/cca0f2f9f590fc84609d48e52ebd0d21.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>\u00dcberwachungsbestandteile<\/h3>\n<p>Hier ist eine Liste der Links zu den Komponenten, die wir f\u00fcr diese Aufgabe verwendet haben. Alle sind 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>Statistik<\/h3>\n<p>\nUnd hier sind einige Zahlen zur Funktionsweise unseres Systems. <\/p>\n<h4>Aggregator (brubeck)<\/h4>\n<p>\nAnzahl der Metriken: ~ 300.000 \/ sec<br \/>\nIntervall f\u00fcr den Versand der Metriken an Graphite: 30 sec<br \/>\nServerressourcennutzung: ~ 6% CPU (bezieht sich auf vollwertige Server); ~ 1 GB RAM; ~ 3 Mbps LAN<\/p>\n<h4>Graphit (go-carbon)<\/h4>\n<p>\nAnzahl der Metriken: ~ 1.600.000 \/ Min<br \/>\nAktualisierungsintervall der Metriken: 30 Sek.<br \/>\nMetrik-Speicherstruktur: 30 Sek. 35 Tage, 5 Min. 90 Tage, 10 Min. 365 Tage (gibt einen \u00dcberblick \u00fcber den Service \u00fcber einen l\u00e4ngeren Zeitraum) <br \/>\nServerressourcennutzung: ~ 10% CPU; ~ 20 GB RAM; ~ 30 Mbps LAN<\/p>\n<h3>Flexibilit\u00e4t<\/h3>\n<p>\nBei Avito legen wir gro\u00dfen Wert auf Flexibilit\u00e4t in unserem Monitoring-Service. Warum ist er so gestaltet? Erstens, seine Komponenten sind austauschbar: sowohl die einzelnen Bauteile als auch deren Versionen. Zweitens \u2014 Wartbarkeit. Da das gesamte Projekt auf Open-Source basiert, k\u00f6nnen Sie den Code selbst anpassen, \u00c4nderungen vornehmen und Funktionen implementieren, die standardm\u00e4\u00dfig nicht verf\u00fcgbar sind. Wir verwenden weit verbreitete Stacks, haupts\u00e4chlich Go und Python, was die Umsetzung relativ einfach macht. <\/p>\n<p>Hier ist ein Beispiel f\u00fcr ein tats\u00e4chlich aufgetretenes Problem. Eine Metrik in Graphite ist eine Datei. Diese hat einen Namen. Der Dateiname entspricht dem Metriknamen. Und es gibt einen Pfad zu ihr. Die Dateinamen in Linux sind auf 255 Zeichen begrenzt. Und wir haben (als \u201einterne Auftraggeber\u201c) Leute aus der Datenbankabteilung. Sie sagen zu uns: \u201eWir m\u00f6chten unsere SQL-Abfragen \u00fcberwachen. Diese haben nicht 255 Zeichen, sondern 8 MB jeder. Wir m\u00f6chten sie in Grafana anzeigen, die Parameter dieser Abfrage sehen und noch besser, wir wollen die Top-Abfragen sehen. Es w\u00e4re gro\u00dfartig, wenn sie in Echtzeit angezeigt werden. Und es w\u00e4re richtig toll, sie in ein Alerting-System zu integrieren.\u201c <\/p>\n<p><img decoding=\"async\" alt=\"Monitoring als Dienst: Modulares System f\u00fcr Microservices-Architekturen\" src=\"\/wp-content\/uploads\/2019\/11\/e1136c7fd0b6156c0c3fd49bab54737e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Beispiel f\u00fcr eine SQL-Abfrage, die als Beispiel von <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/9.6\/queries-with\">postgrespro.ru entnommen wurde<\/a><\/noindex> <\/i><\/p>\n<p>\u041c\u044b \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440 Redis \u0438 \u043d\u0430\u0448\u0438\u043c\u0438 Collectd-\u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0434\u044f\u0442 \u0432 Postgres \u0438 \u0431\u0435\u0440\u0443\u0442 \u043e\u0442\u0442\u0443\u0434\u0430 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 Graphite. \u041d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0438\u043c\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043d\u0430 \u0445\u044d\u0448\u0438. \u042d\u0442\u043e\u0442 \u0436\u0435 \u0445\u044d\u0448 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0432 Redis \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0430, \u0438 \u0432\u0435\u0441\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b Grafana \u0443\u043c\u0435\u043b\u0430 \u0445\u043e\u0434\u0438\u0442\u044c \u0432 Redis \u0438 \u0431\u0440\u0430\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u041c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Graphite API, \u0442.\u043a. \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441 \u0433\u0440\u0430\u0444\u0438\u0442\u043e\u043c, \u0438 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f aliasByHash() \u2014 \u043e\u0442 Grafana \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u043c\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a Redis \u043a\u0430\u043a \u043a\u043b\u044e\u0447, \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u201cSQL \u0437\u0430\u043f\u0440\u043e\u0441\u201d. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0432\u044b\u0432\u0435\u043b\u0438 \u0432 Grafana \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0438\u0434\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0442\u0430\u043c \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439 \u043f\u043e \u043d\u0435\u043c\u0443 (calls, rows, total_time, &#8230;). <\/p>\n<h3>Ergebnisse <\/h3>\n<p>\n<b>Verf\u00fcgbarkeit.<\/b> Unser \u00dcberwachungsdienst ist rund um die Uhr aus jeder Anwendung und jedem Code verf\u00fcgbar. Wenn Sie Zugriff auf die Speicherorte haben, k\u00f6nnen Sie Daten an den Dienst senden. Die Sprache ist unerheblich, die L\u00f6sungen sind nicht wichtig. Sie m\u00fcssen nur wissen, wie Sie einen Socket \u00f6ffnen, die Metrik hineinschicken und den Socket schlie\u00dfen. <\/p>\n<p><b>Zuverl\u00e4ssigkeit.<\/b> Alle Komponenten sind ausfallsicher und bew\u00e4ltigen unsere Lasten gut. <\/p>\n<p><b>Niedrige Einstiegsh\u00fcrde.<\/b> Um dieses System zu nutzen, m\u00fcssen Sie keine Programmiersprachen oder Abfragen in Grafana lernen. Sie \u00f6ffnen einfach Ihre Anwendung, geben den Socket ein, der Metriken an Graphite sendet, schlie\u00dfen sie, \u00f6ffnen Grafana, erstellen dort Dashboards und beobachten das Verhalten Ihrer Metriken, w\u00e4hrend Sie \u00fcber Moira Benachrichtigungen erhalten.<\/p>\n<p><b>Eigenverantwortung.<\/b> All dies k\u00f6nnen Sie selbstst\u00e4ndig erledigen, ohne Hilfe von DevOps-Ingenieuren. Das ist \u00fcbertrieben, denn Sie k\u00f6nnen Ihr Projekt jetzt sofort \u00fcberwachen, ohne jemanden um Hilfe bitten zu m\u00fcssen \u2013 weder f\u00fcr den Start noch f\u00fcr \u00c4nderungen. <\/p>\n<h3>Wohin streben wir? <\/h3>\n<p>\nAlles, was im Folgenden aufgef\u00fchrt ist, sind nicht nur abstrakte Gedanken, sondern Dinge, zu denen bereits erste Schritte unternommen wurden. <\/p>\n<ol>\n<li>Anomalie-Detektor. Wir m\u00f6chten einen Service entwickeln, der unsere Graphite-Speicher abklappert und jede Metrik nach verschiedenen Algorithmen \u00fcberpr\u00fcft. Es gibt bereits Algorithmen, die wir einsehen m\u00f6chten, und wir haben Daten, mit denen wir arbeiten k\u00f6nnen.\n<\/li>\n<li>Metadaten. Wir bieten viele Dienste an, die sich im Laufe der Zeit \u00e4ndern, ebenso wie die Menschen, die sie betreuen. Eine manuelle Dokumentation dauerhaft zu f\u00fchren, ist keine Option. Deshalb integrieren wir jetzt Metadaten in unsere Mikrodienste. Dort wird festgehalten, wer sie entwickelt hat, mit welchen Sprachen sie interagieren, die SLA-Anforderungen und wohin sowie an wen Benachrichtigungen gesendet werden. Bei der Bereitstellung des Dienstes werden alle Entit\u00e4tsdaten automatisch erstellt. Am Ende erhalten Sie zwei Links \u2013 einen zu den Triggern und einen zu den Dashboards in Grafana.\n<\/li>\n<li>Monitoring f\u00fcr jedes Zuhause. Wir sind der Meinung, dass alle Entwickler mit einem solchen System arbeiten sollten. So wissen Sie immer, wo sich Ihr Traffic befindet, was damit passiert, wo es Ausf\u00e4lle gibt und wo Schwachstellen bestehen. Wenn beispielsweise etwas kommt und Ihren Dienst \u00fcberlastet, erfahren Sie nicht w\u00e4hrend eines Anrufs von einem Manager dar\u00fcber, sondern durch einen Alarm und k\u00f6nnen direkt die aktuellen Protokolle \u00f6ffnen und nachsehen, was passiert ist.\n<\/li>\n<li>Hohe Leistung. Unser Projekt w\u00e4chst kontinuierlich, und heute verarbeiten wir etwa 2.000.000 Metrikwerte pro Minute. Vor einem Jahr lag diese Zahl bei 500.000. Das Wachstum h\u00e4lt an, und das bedeutet, dass Graphite (whisper) bald die Speicher-Subsysteme stark belasten wird. Wie bereits erw\u00e4hnt, ist dieses \u00dcberwachungssystem aufgrund der Modularit\u00e4t der Komponenten recht vielseitig. W\u00e4hrend einige gezielt f\u00fcr Graphite ihre Infrastruktur pflegen und st\u00e4ndig erweitern, haben wir uns entschieden, einen anderen Weg zu gehen: Wir nutzen <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/\">ClickHouse<\/a><\/noindex> als Speicher f\u00fcr unsere Metriken. Dieser \u00dcbergang ist fast abgeschlossen, und bald werde ich n\u00e4her erl\u00e4utern, wie dies durchgef\u00fchrt wurde: welche Herausforderungen es gab und wie wir sie \u00fcberwunden haben, wie der Migrationsprozess ablief, und ich werde die gew\u00e4hlten Komponenten sowie deren Konfigurationen beschreiben. \n<\/li>\n<\/ol>\n<p>\nVielen Dank f\u00fcr Ihre Aufmerksamkeit! Stellen Sie Ihre Fragen zu diesem Thema, ich werde versuchen, sie hier oder in den n\u00e4chsten Beitr\u00e4gen zu beantworten. Vielleicht hat jemand Erfahrungen beim Aufbau eines solchen \u00dcberwachungssystems oder beim Umstieg auf Clickhouse in einer \u00e4hnlichen Situation \u2013 teilen Sie diese bitte in den Kommentaren.<br \/>\n<br \/>Quelle: <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 4.9.10 - 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. \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,\" \/>\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\/de\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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. \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,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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 als Service: Modulares System f\u00fcr mikroservice-Architekturen | ProHoster","description":"In unserem Projekt arbeiten neben monolithischem Code auch Dutzende von Mikrodiensten. Jeder von ihnen ben\u00f6tigt eine st\u00e4ndige \u00dcberwachung. Bei solch einem Umfang ist es f\u00fcr DevOps-Ingenieure problematisch, dies alleine zu bewerkstelligen. Daher haben wir ein Monitoring-System entwickelt, das als Service f\u00fcr Entwickler fungiert. Sie k\u00f6nnen selbst\u00e4ndig Metriken in das Monitoring-System einpflegen, diese nutzen, Dashboards erstellen und Alarme einrichten.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/monitoring-kak-servis-modulnaya-sistema-dlya-mikroservisnoj-arhitektury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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. \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,","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/52115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=52115"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/52115\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=52115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=52115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=52115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}