{"id":56075,"date":"2020-02-04T00:00:00","date_gmt":"2020-02-03T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/osnovy-monitoringa-postgresql-aleksej-lesovskij"},"modified":"2020-02-18T14:04:16","modified_gmt":"2020-02-18T11:04:16","slug":"osnovy-monitoringa-postgresql-aleksej-lesovskij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/osnovy-monitoringa-postgresql-aleksej-lesovskij","title":{"rendered":"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Ich lade Sie ein, sich mit der Pr\u00e4sentation von Alexey Lesovsky von Data Egret \"Grundlagen der PostgreSQL-\u00dcberwachung\" vertraut zu machen.<\/strong><\/p>\n<p><\/p>\n<p>In dieser Pr\u00e4sentation wird Alexey Lesovsky die Schl\u00fcsselpunkte der PostgreSQL-Statistiken erl\u00e4utern, was sie bedeuten und warum sie in der \u00dcberwachung wichtig sind. Er wird darauf eingehen, welche Grafiken in der \u00dcberwachung enthalten sein sollten, wie man sie hinzuf\u00fcgt und wie man sie interpretiert. Die Pr\u00e4sentation ist f\u00fcr Datenbankadministratoren, Systemadministratoren und Entwickler, die sich f\u00fcr die Fehlersuche in PostgreSQL interessieren, von gro\u00dfem Nutzen.<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"Hbi2AFhd4nY\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Hbi2AFhd4nY\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/07b4739a84eb36c84e0c663c5d721435.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mein Name ist Alexey Lesovskiy und ich vertrete das Unternehmen Data Egret. <\/p>\n<p><\/p>\n<p>Ein paar Worte \u00fcber mich. Ich habe einst vor vielen Jahren als Systemadministrator angefangen. <\/p>\n<p><\/p>\n<p>Ich habe verschiedene Linux-Systeme administriert, mich mit verschiedenen Linux-bezogenen Themen, wie Virtualisierung und \u00dcberwachung, besch\u00e4ftigt und mit Proxys gearbeitet. Aber irgendwann habe ich mich mehr mit Datenbanken besch\u00e4ftigt, insbesondere mit PostgreSQL. Es hat mir sehr gefallen. Schlie\u00dflich habe ich den Gro\u00dfteil meiner Arbeitszeit mit PostgreSQL verbracht und bin so allm\u00e4hlich PostgreSQL DBA geworden.<\/p>\n<p><\/p>\n<p>In meiner gesamten Karriere haben mich immer die Themen Statistik, Monitoring und Telemetriedaten interessiert. W\u00e4hrend meiner Zeit als Systemadministrator habe ich mich intensiv mit Zabbix besch\u00e4ftigt und ein kleines Set an Skripten geschrieben, das <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/lesovsky\/zabbix-extensions\">zabbix-extensions<\/a><\/noindex>. Es erlangte zu seiner Zeit recht gro\u00dfe Beliebtheit. Damit konnte man eine Vielzahl von wichtigen Aspekten \u00fcberwachen, nicht nur Linux, sondern auch verschiedene andere Komponenten.<\/p>\n<p><\/p>\n<p>Zurzeit arbeite ich mit PostgreSQL. Ich entwickle ein anderes Tool, das die Arbeit mit PostgreSQL-Statistiken erm\u00f6glicht. Es hei\u00dft <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/lesovsky\/pgcenter\">pgCenter<\/a><\/noindex> (Artikel auf Habr \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/425083\/\">Postgres-Statistiken ohne Stress und Aufwand<\/a><\/noindex>). <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/10f619998e38e7dce6c2b042565c6aee.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Eine kurze Einf\u00fchrung. Welche Situationen treten bei unseren Kunden auf? Es kommt zu einem Vorfall mit der Datenbank. Nachdem die Datenbank wiederhergestellt wurde, kommt der Abteilungsleiter oder der Entwicklungsleiter und sagt: \u201eFreunde, wir sollten die Datenbank \u00fcberwachen, denn es ist etwas Schlimmes passiert und wir m\u00fcssen verhindern, dass so etwas in Zukunft nochmals passiert.\u201c Hier beginnt der spannende Prozess, ein \u00dcberwachungssystem auszuw\u00e4hlen oder ein bestehendes System anzupassen, um die eigene Datenbank \u2013 sei es PostgreSQL, MySQL oder eine andere \u2013 zu \u00fcberwachen. Die Kollegen fangen an, Vorschl\u00e4ge zu machen: \u201eIch habe geh\u00f6rt, dass es diese oder jene Datenbank gibt. Lasst uns die nutzen.\u201c Die Kollegen fangen an, untereinander zu streiten. Am Ende w\u00e4hlen wir eine Datenbank aus, aber die \u00dcberwachung von PostgreSQL ist darin ziemlich schwach ausgepr\u00e4gt, sodass st\u00e4ndig Anpassungen notwendig sind. Man muss bestimmte Repositories von GitHub herunterladen, sie klonen, Skripte anpassen und wie auch immer nachjustieren. Letztlich f\u00fchrt dies zu einer Menge manueller Arbeit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/6a36a566c8c9e155d7b99e2adaf9e70c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In diesem Bericht werde ich Ihnen vermitteln, wie Sie Monitoring-L\u00f6sungen nicht nur f\u00fcr PostgreSQL, sondern auch f\u00fcr andere Datenbanken ausw\u00e4hlen k\u00f6nnen. Ziel ist es, Ihr Monitoring so zu optimieren, dass Sie daraus echten Nutzen ziehen k\u00f6nnen, um Ihre Datenbank effektiv zu \u00fcberwachen und rechtzeitig auf bevorstehende Probleme oder Ausf\u00e4lle reagieren zu k\u00f6nnen. <\/p>\n<p><\/p>\n<p>Die Ideen in diesem Bericht lassen sich direkt auf jede Datenbank anwenden, sei es eine relationale Datenbank oder NoSQL. Daher werden nicht nur Aspekte von PostgreSQL behandelt; Sie finden auch viele Ans\u00e4tze, wie Sie Monitoring in PostgreSQL umsetzen k\u00f6nnen. Es werden Abfragebeispiele und Entit\u00e4ten gezeigt, die in PostgreSQL f\u00fcr das Monitoring zur Verf\u00fcgung stehen. Wenn Ihre Datenbank \u00e4hnliche Funktionen bietet, die Sie in Ihr Monitoring integrieren k\u00f6nnen, k\u00f6nnen Sie diese ebenfalls adaptieren und umsetzen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/412766f755018e76ac04c0e399361f4d.jpg\" style=\"display:block;margin: 0 auto;\" \/>In dem Bericht werde ich nicht<br \/>\ndarlegen, wie Metriken erfasst und gespeichert werden. Ich werde nichts \u00fcber die Datenverarbeitung und deren Bereitstellung f\u00fcr den Benutzer sagen und auch nichts \u00fcber das Alerting erw\u00e4hnen.<br \/>\nIm Verlauf des Berichts werde ich verschiedene Screenshots bestehender Monitoring-Tools zeigen und diese kritisieren. Dennoch werde ich versuchen, keine Marken zu nennen, um keine Werbung oder gegen diese Produkte gerichtete Werbung zu machen. Daher sind alle \u00dcbereinstimmungen zuf\u00e4llig und dem Leser \u00fcberlassen.<br \/>\n<img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/e1c6ba71914b5c133f37a76484768d5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLassen Sie uns zun\u00e4chst kl\u00e4ren, was Monitoring bedeutet. Monitoring ist ein \u00e4u\u00dferst wichtiges Element, das jeder haben sollte. Das ist allgemein bekannt. Aber gleichzeitig z\u00e4hlt Monitoring nicht als direktes Gesch\u00e4ftsprodukt und hat keinen unmittelbaren Einfluss auf den Gewinn eines Unternehmens. Daher wird Monitoring oft nur nachrangig behandelt. Wenn wir Zeit haben, k\u00fcmmern wir uns um das Monitoring; wenn nicht, dann bleibt es einfach im Backlog und wird irgendwann sp\u00e4ter angegangen. <\/p>\n<p><\/p>\n<p>In unserer Erfahrung, wenn wir zu Kunden kommen, ist das Monitoring h\u00e4ufig unvollst\u00e4ndig und weist keine interessanten Funktionen auf, die uns bei der Arbeit mit der Datenbank helfen k\u00f6nnten. Daher muss das Monitoring immer weiter verbessert werden. <\/p>\n<p><\/p>\n<p>Datenbanken sind komplexe Systeme, die ebenfalls \u00fcberwacht werden m\u00fcssen, da sie als Informationsspeicher fungieren. Informationen sind f\u00fcr ein Unternehmen von gro\u00dfer Bedeutung und d\u00fcrfen nicht verloren gehen. Gleichzeitig sind Datenbanken jedoch sehr komplexe Softwarekomponenten, die aus zahlreichen Elementen bestehen, von denen viele \u00fcberwacht werden m\u00fcssen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/d2293a3d5089c320aa94471039a6023f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Betrachten wir konkret PostgreSQL, so l\u00e4sst es sich als ein Schema darstellen, das aus vielen Komponenten besteht. Diese Komponenten interagieren miteinander. Zudem gibt es in PostgreSQL das sogenannte Stats Collector-System, das es erm\u00f6glicht, Statistiken \u00fcber die Leistung dieser Subsysteme zu sammeln und dem Administrator oder Benutzer eine Schnittstelle zu bieten, um diese Statistiken einzusehen. <\/p>\n<p><\/p>\n<p>Diese Statistiken werden in Form eines Satzes von Funktionen und Views pr\u00e4sentiert, die auch als Tabellen bezeichnet werden k\u00f6nnen. Mit einem herk\u00f6mmlichen psql-Client k\u00f6nnen Sie sich mit der Datenbank verbinden, diese Funktionen und Views abfragen und konkrete Zahlen zur Leistung der PostgreSQL-Subsysteme erhalten. <\/p>\n<p><\/p>\n<p>Sie k\u00f6nnen diese Zahlen in Ihr bevorzugtes \u00dcberwachungssystem einf\u00fcgen, Grafiken erstellen, Funktionen hinzuf\u00fcgen und langfristige Analysen erhalten. <\/p>\n<p><\/p>\n<p>In diesem Bericht m\u00f6chte ich jedoch nicht alle diese Funktionen umfassend behandeln, da dies einen ganzen Tag in Anspruch nehmen k\u00f6nnte. Stattdessen werde ich mich auf nur zwei bis vier Punkte konzentrieren und erl\u00e4utern, wie sie die \u00dcberwachung verbessern.<br \/>\n<img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/13e1b9dc97deeb164576818eb6be17fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWenn es um die \u00dcberwachung der Datenbank geht, welche Aspekte sollten wir im Auge behalten? Zuerst einmal die Verf\u00fcgbarkeit, denn die Datenbank ist ein Dienst, der den Zugang zu Daten f\u00fcr unsere Kunden bereitstellt, und wir m\u00fcssen die Verf\u00fcgbarkeit \u00fcberwachen, sowie einige qualitative und quantitative Merkmale, die damit verbunden sind. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/eb54f240bfaf74a356cf87e66ed9f83b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Au\u00dferdem sollten wir die Kunden \u00fcberwachen, die sich mit unserer Datenbank verbinden. Diese k\u00f6nnen sowohl normale Kunden als auch sch\u00e4dliche Nutzer sein, die der Datenbank schaden k\u00f6nnten. Auch deren Aktivit\u00e4ten m\u00fcssen \u00fcberwacht werden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/4ef57fc16b0b0974f5d66568534fad96.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn Kunden auf die Datenbank zugreifen, arbeiten sie offensichtlich mit unseren Daten. Daher m\u00fcssen wir auch \u00fcberwachen, wie die Kunden mit den Daten interagieren: mit welchen Tabellen und in geringerem Ma\u00dfe mit welchen Indizes. Das hei\u00dft, wir m\u00fcssen die Arbeitslast (workload) bewerten, die durch unsere Kunden entsteht.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/ef7ee6e5c3b66bb14adc3d8b0c34f4f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Arbeitslast setzt sich nat\u00fcrlich aus Anfragen zusammen. Anwendungen verbinden sich mit der Datenbank und greifen \u00fcber Anfragen auf die Daten zu. Deshalb ist es wichtig, die Anfragen in unserer Datenbank zu bewerten, ihre Angemessenheit zu \u00fcberwachen und sicherzustellen, dass sie nicht fehlerhaft geschrieben sind. Einige Optionen m\u00fcssen m\u00f6glicherweise \u00fcberarbeitet werden, damit sie schneller und mit besserer Leistung arbeiten. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/cf74205ff688659cae41e4b0cbc4525d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn wir \u00fcber Datenbanken sprechen, sind Datenbanken immer mit Hintergrundprozessen verbunden. Diese Prozesse sorgen daf\u00fcr, dass die Leistung der Datenbank auf einem hohen Niveau bleibt, weshalb sie eine gewisse Menge an Ressourcen ben\u00f6tigen. Gleichzeitig k\u00f6nnen sie mit den Ressourcen der Clientanfragen in Konflikt geraten, und ein \u00fcberm\u00e4\u00dfiger Ressourcenverbrauch dieser Hintergrundprozesse kann die Leistung der Clientanfragen direkt beeinflussen. Daher ist es wichtig, auch diese Prozesse zu \u00fcberwachen und sicherzustellen, dass es keine Ungleichgewichte gibt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/50f44ab160e889882210529fa9b7fc57.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In Bezug auf das Monitoring von Datenbanken bleiben alle diese Aspekte innerhalb der Systemmetriken. Da jedoch die meisten unserer Infrastrukturen in die Cloud verlagert werden, r\u00fccken die Systemmetriken eines einzelnen Hosts h\u00e4ufig in den Hintergrund. In Datenbanken sind sie jedoch weiterhin relevant, und es ist nat\u00fcrlich auch notwendig, die Systemmetriken zu \u00fcberwachen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/71d119b3ef5d5b9eee5510a43ef0e16d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit den Systemmetriken ist im Gro\u00dfen und Ganzen alles in Ordnung; alle modernen Monitoring-Systeme unterst\u00fctzen bereits diese Metriken. Dennoch fehlen insgesamt einige Komponenten, und es m\u00fcssen gewisse Dinge hinzugef\u00fcgt werden. Auch darauf werde ich eingehen; es wird mehrere Folien zu diesem Thema geben. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/e38d506da3a168913952a4015ba06e3e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDer erste Punkt des Plans ist die Verf\u00fcgbarkeit. Was bedeutet Verf\u00fcgbarkeit? Meiner Meinung nach ist Verf\u00fcgbarkeit die F\u00e4higkeit der Datenbank, Verbindungen zu bedienen, d. h. die Datenbank ist aktiv und nimmt Verbindungen von Klienten entgegen. Diese Verf\u00fcgbarkeit kann anhand einiger Merkmale bewertet werden. Diese Merkmale lassen sich sehr gut auf Dashboards darstellen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/befa103d55797b6ec9884541ca70c05a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAlle wissen, was Dashboards sind. Es ist, wenn du einen kurzen Blick auf einen Bildschirm wirfst, auf dem die erforderlichen Informationen zusammengefasst sind. Und du kannst sofort feststellen, ob es ein Problem mit der Datenbank gibt oder nicht.<br \/>\nDaher ist es wichtig, die Verf\u00fcgbarkeit der Datenbank und andere Schl\u00fcsselmerkmale immer auf Dashboards darzustellen, damit diese Informationen zur Hand sind und stets verf\u00fcgbar sind. Zus\u00e4tzliche Details, die bei der Untersuchung von Vorf\u00e4llen oder Notfallsituationen helfen, sollten auf sekund\u00e4re Dashboards ausgegliedert oder in Drilldown-Links verborgen werden, die auf externe Monitoring-Systeme verweisen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/6c595fdff1d0626b61bc76ad06299fb0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ein Beispiel f\u00fcr ein bekanntes \u00dcberwachungssystem. Es handelt sich um ein sehr fortschrittliches \u00dcberwachungssystem. Es sammelt eine gro\u00dfe Menge an Daten, aber aus meiner Sicht hat es ein merkw\u00fcrdiges Verst\u00e4ndnis von Dashboards. Es gibt einen Link \u201eDashboard erstellen\u201c. Wenn Sie jedoch ein Dashboard erstellen, erstellen Sie eine Art Liste, die aus zwei Spalten besteht, eine Liste von Diagrammen. Und wenn Sie etwas ansehen m\u00f6chten, klicken Sie mit der Maus, scrollen und suchen nach dem gew\u00fcnschten Diagramm. Das kostet Zeit, das hei\u00dft, echte Dashboards gibt es nicht. Es gibt nur Listen von Diagrammen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/0a82729df59b2e09741bd290e3fb4f29.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was sollte man auf diese Dashboards hinzuf\u00fcgen? Man kann mit einer Kennzahl wie der Reaktionszeit beginnen. In PostgreSQL gibt es die Ansicht pg_stat_statements. Sie ist standardm\u00e4\u00dfig deaktiviert, aber es ist eine der wichtigen systemeigenen Ansichten, die immer aktiviert und verwendet werden sollte. Sie enth\u00e4lt Informationen \u00fcber alle ausgef\u00fchrten Abfragen, die in der Datenbank durchgef\u00fchrt wurden. <\/p>\n<p><\/p>\n<p>Dementsprechend k\u00f6nnen wir davon ausgehen, dass wir die gesamte Ausf\u00fchrungszeit aller Anfragen nehmen und durch die Anzahl der Anfragen mithilfe der oben genannten Felder teilen. Aber das ist eine Durchschnittstemperatur f\u00fcr das gesamte Krankenhaus. Wir k\u00f6nnen uns auch an anderen Feldern orientieren \u2013 der minimalen, maximalen und medianen Ausf\u00fchrungszeit der Anfragen. Wir k\u00f6nnen sogar Perzentile erstellen, daf\u00fcr gibt es entsprechende Funktionen in PostgreSQL. Auf diese Weise k\u00f6nnen wir einige Zahlen erhalten, die die Reaktionszeit unserer Datenbank f\u00fcr bereits ausgef\u00fchrte Anfragen charakterisieren, d. h. wir f\u00fchren keine fiktive Anfrage 'select 1' aus und schauen uns die Reaktionszeit an, sondern analysieren die Antwortzeiten der bereits ausgef\u00fchrten Anfragen und stellen sie entweder als einzelne Zahl dar oder erstellen ein Diagramm basierend auf diesen Werten. <\/p>\n<p><\/p>\n<p>Es ist auch wichtig, die Anzahl der derzeit von der System generierten Fehler zu \u00fcberwachen. Dazu kann die Ansicht pg_stat_database verwendet werden. Wir konzentrieren uns auf das Feld xact_rollback. Dieses Feld zeigt nicht nur die Anzahl der Rollbacks, die in der Datenbank stattfinden, sondern ber\u00fccksichtigt auch die Anzahl der Fehler. Wir k\u00f6nnen diese Zahl theoretisch in unser Dashboard integrieren und beobachten, wie viele Fehler wir derzeit haben. Wenn es viele Fehler gibt, ist das ein guter Anlass, die Logs zu \u00fcberpr\u00fcfen und herauszufinden, um welche Fehler es sich handelt und warum sie auftreten, um dann entsprechende Untersuchungen anzustellen und L\u00f6sungen zu finden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/3ee7809fd203c03596633479f34dba12.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es ist m\u00f6glich, etwas wie einen Tacho hinzuzuf\u00fcgen. Dies zeigt die Anzahl der Transaktionen pro Sekunde und die Anzahl der Anfragen pro Sekunde an. Vereinfacht gesagt, k\u00f6nnen Sie diese Zahlen als aktuelle Leistung Ihrer Datenbank verwenden und beobachten, ob es hier zu Anfrage- oder Transaktionsspitzen kommt oder ob die Datenbank unterlastet ist, weil ein Backend ausgefallen ist. Diese Kennzahl sollte stets im Auge behalten werden. F\u00fcr unser Projekt ist diese Leistung normal, w\u00e4hrend Werte dar\u00fcber oder darunter problematisch und unklar sind. Das bedeutet, dass wir \u00fcberpr\u00fcfen m\u00fcssen, warum solche Zahlen auftreten.<\/p>\n<p><\/p>\n<p>Um die Anzahl der Transaktionen zu bewerten, k\u00f6nnen wir erneut auf die Ansicht pg_stat_database zugreifen. Wir k\u00f6nnen die Anzahl der Commits und der Rollbacks addieren und die Anzahl der Transaktionen pro Sekunde ermitteln. <\/p>\n<p><\/p>\n<p>Jeder versteht, dass in eine Transaktion mehrere Anfragen passen k\u00f6nnen? Daher sind TPS und QPS etwas unterschiedlich. <\/p>\n<p><\/p>\n<p>Die Anzahl der Anfragen pro Sekunde kann \u00fcber pg_stat_statements ermittelt werden, indem man einfach die Summe aller ausgef\u00fchrten Anfragen berechnet. Es ist klar, dass wir den aktuellen Wert mit dem vorherigen vergleichen, die Differenz berechnen und die Anzahl erhalten.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/d2e521bf6360aa5a34f3042281f9f902.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es k\u00f6nnen auf Wunsch zus\u00e4tzliche Metriken hinzugef\u00fcgt werden, die ebenfalls helfen, die Verf\u00fcgbarkeit unserer Datenbank zu bewerten und zu verfolgen, ob es irgendwelche Ausfallzeiten gab. <\/p>\n<p><\/p>\n<p>Eine dieser Metriken ist die Uptime. Aber Uptime in PostgreSQL ist ein etwas kompliziertes Thema. Lassen Sie mich erkl\u00e4ren, warum. Sobald PostgreSQL gestartet ist, beginnt die Uptime zu z\u00e4hlen. Wenn jedoch zu einem bestimmten Zeitpunkt, zum Beispiel nachts, eine Aufgabe ausgef\u00fchrt wurde und der OOM-Killer einen untergeordneten Prozess von PostgreSQL zwangsweise beendet, beendet PostgreSQL in diesem Fall die Verbindung zu allen Clients, setzt den Bereich des shardierten Speichers zur\u00fcck und beginnt die Wiederherstellung von dem letzten Pr\u00fcfpunkte. W\u00e4hrend dieser Wiederherstellung nimmt die Datenbank keine Verbindungen an, was als Ausfallzeit betrachtet werden kann. Gleichzeitig wird der Uptime-Z\u00e4hler jedoch nicht zur\u00fcckgesetzt, da er die Zeit seit dem ersten Start des Postmasters z\u00e4hlt. Daher k\u00f6nnen solche Situationen \u00fcbersehen werden.<\/p>\n<p><\/p>\n<p>Es ist auch wichtig, die Anzahl der Autovacuum-Arbeiter zu \u00fcberwachen. Wissen Sie, was Autovacuum in PostgreSQL ist? Es handelt sich um ein faszinierendes System innerhalb von PostgreSQL. Dar\u00fcber wurden zahlreiche Artikel verfasst und viele Vortr\u00e4ge gehalten. Es gibt viele Diskussionen \u00fcber das Vacuum und dar\u00fcber, wie es funktionieren sollte. Viele betrachten es als ein notwendiges \u00dcbel. Und das ist es tats\u00e4chlich. Es \u00e4hnelt einem Garbage Collector, der veraltete Zeilenversionen bereinigt, die von keiner Transaktion ben\u00f6tigt werden, und Platz in Tabellen und Indizes f\u00fcr neue Zeilen schafft. <\/p>\n<p><\/p>\n<p>Warum ist es notwendig, das zu \u00fcberwachen? Weil das Vacuum manchmal gro\u00dfen Schaden anrichten kann. Es beansprucht eine erhebliche Menge an Ressourcen, was dazu f\u00fchrt, dass die Client-Anfragen darunter leiden. <\/p>\n<p><\/p>\n<p>Die \u00dcberwachung sollte \u00fcber die Ansicht pg_stat_activity erfolgen, \u00fcber die ich im n\u00e4chsten Abschnitt sprechen werde. Diese Ansicht zeigt die aktuelle Aktivit\u00e4t in der Datenbank an. Anhand dieser Aktivit\u00e4t k\u00f6nnen wir die Anzahl der aktuell laufenden Vacuum-Prozesse verfolgen. Wir k\u00f6nnen die Vacuums beobachten und feststellen, dass, wenn wir das Limit \u00fcberschreiten, dies ein Grund ist, die PostgreSQL-Einstellungen zu \u00fcberpr\u00fcfen und die Vacuum-Arbeiten zu optimieren. <\/p>\n<p><\/p>\n<p><strong>Eine weitere Eigenschaft von PostgreSQL ist, dass es unter langen Transaktionen leidet. Besonders unter Transaktionen, die lange verweilen und keine Aktivit\u00e4ten durchf\u00fchren. Diese werden als stat idle-in-transaction bezeichnet. Eine solche Transaktion h\u00e4lt Sperren und behindert die Arbeit des Vacuum-Prozesses. Infolgedessen wachsen die Tabellen und nehmen an Gr\u00f6\u00dfe zu. Anfragen, die mit diesen Tabellen arbeiten, beginnen langsamer zu werden, weil alte Versionen der Zeilen aus dem Speicher auf die Festplatte und zur\u00fcck geschaufelt werden m\u00fcssen.<\/strong> Daher ist es wichtig, die Dauer der l\u00e4ngsten Transaktionen sowie die l\u00e4ngsten Anfragen des Vacuum-Prozesses zu \u00fcberwachen. <strong>Wenn wir Prozesse sehen, die bereits sehr lange laufen, also l\u00e4nger als 10-20-30 Minuten bei OLTP-Last, dann sollten wir darauf achten und sie entweder zwangl\u00e4ufig beenden oder die Anwendung optimieren, damit sie nicht so lange aufgerufen werden und h\u00e4ngen bleiben.<\/strong> Bei analytischer Last sind 10-20-30 Minuten normal; manchmal gibt es sogar noch l\u00e4ngere. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/736035b2ee6106b571ad6f84f2902d41.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAls N\u00e4chstes haben wir die Option mit verbundenen Kunden. Sobald wir das Dashboard erstellt und die wichtigen Verf\u00fcgbarkeitsmetriken angezeigt haben, k\u00f6nnen wir auch zus\u00e4tzliche Informationen \u00fcber die verbundenen Kunden hinzuf\u00fcgen. <\/p>\n<p><\/p>\n<p>Informationen \u00fcber die verbundenen Kunden sind wichtig, denn aus der Perspektive von PostgreSQL gibt es verschiedene Arten von Kunden. Es gibt gute Kunden und es gibt schlechte Kunden. <\/p>\n<p><\/p>\n<p>Ein einfaches Beispiel: Mit Kunden meine ich Anwendungen. Eine Anwendung stellt eine Verbindung zur Datenbank her und beginnt sofort, ihre Anfragen zu senden. Die Datenbank verarbeitet diese Anfragen, f\u00fchrt sie aus und gibt die Ergebnisse an den Kunden zur\u00fcck. Das sind gute und richtige Kunden. <\/p>\n<p><\/p>\n<p>Es gibt Situationen, in denen sich ein Kunde verbindet und die Verbindung aufrechterh\u00e4lt, aber dabei nichts tut. Er befindet sich im Zustand idle. <\/p>\n<p><\/p>\n<p>Es gibt jedoch auch problematische Kunden. Ein Beispiel w\u00e4re ein Kunde, der sich anmeldet, eine Transaktion \u00f6ffnet, etwas in der Datenbank macht und dann zur Code-Ebene wechselt, um auf eine externe Quelle zuzugreifen oder um dort die erhaltenen Daten zu verarbeiten. Dabei schlie\u00dft er jedoch die Transaktion nicht. Dadurch bleibt die Transaktion in der Datenbank offen und blockiert eine Zeile. Das ist ein ung\u00fcnstiger Zustand. Wenn die Anwendung dann zuf\u00e4llig aufgrund eines Exceptions irgendwo im Inneren abst\u00fcrzt, kann die Transaktion \u00fcber einen sehr langen Zeitraum offen bleiben. Dies hat direkte Auswirkungen auf die Leistung von PostgreSQL. PostgreSQL wird langsamer arbeiten. Daher ist es wichtig, solche Kunden rechtzeitig zu \u00fcberwachen und ihre Arbeit gegebenenfalls zwangsweise zu beenden. Zudem muss die Anwendung optimiert werden, um solche Situationen zu vermeiden. <\/p>\n<p><\/p>\n<p>Andere problematische Kunden sind wartende Kunden. Sie werden jedoch aus Umst\u00e4nden problematisch. Ein einfaches Beispiel sind wartende Transaktionen: Eine Transaktion kann eine Sperre auf bestimmte Zeilen setzen, dann kann sie irgendwo im Code fehlschlagen und es bleibt eine h\u00e4ngende Transaktion. Ein anderer Kunde k\u00f6nnte die gleichen Daten anfordern, aber er wird auf eine Sperre sto\u00dfen, weil die h\u00e4ngende Transaktion bereits Sperren auf bestimmte ben\u00f6tigte Zeilen h\u00e4lt. Die zweite Transaktion wird somit im Warten h\u00e4ngen bleiben, bis die erste Transaktion abgeschlossen ist oder ihr Administrator sie zwangsweise schlie\u00dft. Wartende Transaktionen k\u00f6nnen sich ansammeln und das Verbindungslimit zur Datenbank \u00fcberschreiten. Wenn das Limit \u00fcberschritten ist, kann die Anwendung nicht mehr mit der Datenbank arbeiten. Dies stellt eine Notfallsituation f\u00fcr das Projekt dar. Daher ist es wichtig, problematische Kunden zu \u00fcberwachen und zeitnah zu reagieren. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/41eaa8fcb747bf5ca4e0d6d264d1e0ac.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ein weiteres Beispiel f\u00fcr das Monitoring. Hier sehen wir ein ansprechendes Dashboard. Oben finden Sie Informationen zu den Verbindungen. Insgesamt 8 DB-Verbindungen. Das ist alles. Wir haben keine Informationen dar\u00fcber, welche Kunden aktiv sind, welche nur im Leerlauf sind und nichts tun. Es fehlen Informationen zu h\u00e4ngenden Transaktionen und zu wartenden Verbindungen. Es handelt sich nur um eine Zahl, die die Anzahl der Verbindungen anzeigt, und das war's. Weiter m\u00fcssen Sie selbst raten.<br \/>\n<img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/553a4b6432c308c0023e49c4a35aa0a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nUm diese Informationen im Monitoring zu integrieren, m\u00fcssen Sie die Systemansicht pg_stat_activity nutzen. Wenn Sie viel Zeit mit PostgreSQL verbringen, wird diese Ansicht zu Ihrem besten Freund, da sie die aktuelle Aktivit\u00e4t in PostgreSQL anzeigt, also was dort gerade passiert. Jeder Prozess hat eine eigene Zeile, die Informationen zu diesem Prozess darstellt: von welchem Host die Verbindung hergestellt wurde, unter welchem Benutzer, unter welchem Namen, wann die Transaktion gestartet wurde, welcher aktuelle Befehl ausgef\u00fchrt wird und welcher Befehl zuletzt ausgef\u00fchrt wurde. Das Zustand des Clients kann anhand des Feldes stat bewertet werden. Wir k\u00f6nnen dies gruppieren und die aktuellen Stats in der Datenbank sowie die Anzahl der Verbindungen mit diesem stat in der Datenbank ermitteln. Diese Zahlen k\u00f6nnen wir dann in unser Monitoring einspeisen und Diagramme daf\u00fcr erstellen.<br \/>\nEs ist auch wichtig, die Dauer der Transaktionen zu bewerten. Ich habe bereits gesagt, dass die Dauer der Vakuumprozesse wichtig ist, aber die Transaktionen werden auf die gleiche Weise bewertet. Es gibt die Felder xact_start und query_start. Diese zeigen, sozusagen, den Startzeitpunkt der Transaktion und den Startzeitpunkt der Anfrage an. Wir verwenden die Funktion now(), die den aktuellen Zeitstempel anzeigt, und subtrahieren den Timestamp der Transaktion und der Anfrage. So erhalten wir die Dauer der Transaktion und die Dauer der Anfrage. <\/p>\n<p><\/p>\n<p>Wenn wir lange Transaktionen sehen, sollten wir diese bereits abschlie\u00dfen. <strong>F\u00fcr OLTP-Lasten gelten Transaktionen von mehr als 1-2-3 Minuten als lang.<\/strong>. <strong>F\u00fcr OLAP-Lasten sind lange Transaktionen normal, aber wenn sie l\u00e4nger als zwei Stunden dauern, ist das ebenfalls ein Zeichen daf\u00fcr, dass es irgendwo ein Ungleichgewicht gibt.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/1f3caea3077c0c5c2bcf60ee2f1be884.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWenn die Kunden mit der Datenbank verbunden sind, beginnen sie mit unseren Daten zu arbeiten. Sie greifen auf Tabellen zu, sie greifen auf Indizes zu, um Daten aus der Tabelle abzurufen. Es ist wichtig zu bewerten, wie die Kunden mit diesen Daten arbeiten.<\/p>\n<p><\/p>\n<p>Dies dient dazu, unsere Arbeitslast zu bewerten und ein ungef\u00e4hres Verst\u00e4ndnis daf\u00fcr zu bekommen, welche Tabellen bei uns am \"hei\u00dfesten\" sind. Beispielsweise ist dies n\u00f6tig, wenn wir \"hei\u00dfe\" Tabellen auf einen schnellen SSD-Speicher legen m\u00f6chten. Archivierte Tabellen, die wir seit langem nicht mehr verwenden, k\u00f6nnen wir auf ein \"kaltes\" Archiv, auf SATA-Festplatten, verschieben, wo sie verbleiben k\u00f6nnen, und der Zugriff erfolgt nach Bedarf. <\/p>\n<p><\/p>\n<p>Es ist auch n\u00fctzlich, um Anomalien nach verschiedenen Releases und Deployments zu erkennen. Angenommen, das Projekt hat eine neue Funktion eingef\u00fchrt. Beispielsweise wurde eine neue Funktionalit\u00e4t f\u00fcr die Arbeit mit der Datenbank hinzugef\u00fcgt. Wenn wir Grafiken zur Nutzung der Tabellen erstellen, k\u00f6nnen wir diese Anomalien leicht auf diesen Grafiken erkennen. Beispielsweise pl\u00f6tzliche Anstiege bei Updates oder Deletes. Das wird sehr gut sichtbar sein.<\/p>\n<p><\/p>\n<p>Auch Anomalien einer \"verzerrten\" Statistik k\u00f6nnen festgestellt werden. Was bedeutet das? PostgreSQL verf\u00fcgt \u00fcber einen sehr leistungsstarken und hochwertigen Abfrageplaner. Die Entwickler widmen viel Zeit dessen Optimierung. Wie funktioniert er? Um gute Pl\u00e4ne zu erstellen, sammelt PostgreSQL in regelm\u00e4\u00dfigen Abst\u00e4nden Statistiken \u00fcber die Verteilung der Daten in den Tabellen. Dazu geh\u00f6ren h\u00e4ufige Werte wie die Anzahl der einzigartigen Werte, Informationen \u00fcber NULL in der Tabelle und eine gro\u00dfe Menge an weiteren Informationen. <\/p>\n<p><\/p>\n<p>Basierend auf diesen Statistiken erstellt der Planer mehrere Abfragen, w\u00e4hlt die optimalste aus und verwendet diesen Abfrageplan zur Ausf\u00fchrung der Abfrage und zur R\u00fcckgabe der Daten. <\/p>\n<p><\/p>\n<p>Es kommt vor, dass die Statistiken \"schwanken\". Die Daten bez\u00fcglich Qualit\u00e4t und Menge haben sich in der Tabelle ver\u00e4ndert, aber die Statistiken wurden nicht aktualisiert. Daher k\u00f6nnen die erstellten Pl\u00e4ne suboptimal sein. Wenn unsere Pl\u00e4ne anhand des gesammelten Monitorings und der Tabellen als suboptimal erweisen, k\u00f6nnen wir diese Anomalien identifizieren. Beispielsweise, wenn sich die Daten qualitativ ver\u00e4ndert haben und der Index zusammen mit dem sequentiellen Durchlauf durch die Tabelle genutzt wird. Das bedeutet, wenn der Abfrage nur 100 Zeilen zur\u00fcckgegeben werden sollen (mit einer Begrenzung von limit 100), wird eine vollst\u00e4ndige Durchsuchung durchgef\u00fchrt. Das wirkt sich immer negativ auf die Leistung aus. <\/p>\n<p><\/p>\n<p>Wir werden dies im Monitoring erkennen k\u00f6nnen. Wir k\u00f6nnen bereits diese Abfrage anschauen, ein Explain daf\u00fcr durchf\u00fchren, Statistiken sammeln und einen neuen zus\u00e4tzlichen Index erstellen. So k\u00f6nnen wir auf dieses Problem reagieren. Daher ist das wichtig. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/a586b45241efc73b5c59b8e21b9c2629.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ein weiteres Beispiel f\u00fcr Monitoring. Ich denke, viele werden es erkannt haben, weil es sehr popul\u00e4r ist. Wer es in seinen Projekten verwendet, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\">Prometheus<\/a><\/noindex>? \u0410 \u043a\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 Prometheus? \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0435\u0441\u0442\u044c \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 PostgreSQL \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wrouesnel\/postgres_exporter\">postgres_exporter<\/a><\/noindex> Prometheus. Aber hier gibt es einen Nachteil. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/5a9de42b009c7bb333ee72f01bb46fb9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es gibt mehrere Diagramme, in denen als Einheit Bytes angegeben sind, d.h. insgesamt f\u00fcnf Diagramme: Insert-Daten, Update-Daten, Delete-Daten, Fetch-Daten und Return-Daten. Als Ma\u00dfeinheit sind Bytes angegeben. Das Problem ist jedoch, dass die Statistik in PostgreSQL Daten in Tuples (Zeilen) zur\u00fcckliefert. Entsprechend sind diese Diagramme eine ausgezeichnete M\u00f6glichkeit, Ihre Arbeitslast um ein Vielfaches zu senken, denn ein Tuple entspricht nicht einem Byte; ein Tuple ist eine Zeile, die viele Bytes umfasst und immer variable L\u00e4nge hat. Es ist also eine \u00e4u\u00dferst komplizierte oder sogar unm\u00f6gliche Aufgabe, die Arbeitslast in Bytes anhand von Tuples zu berechnen. Daher ist es wichtig, bei der Verwendung eines Dashboards oder einer integrierten \u00dcberwachung stets zu verstehen, dass diese korrekt funktioniert und Ihnen angemessen bewertete Daten liefert. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/697ca274c58466beec45614e9d57bda7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wie erh\u00e4lt man Statistiken f\u00fcr diese Tabellen? PostgreSQL bietet daf\u00fcr eine bestimmte Reihe von Views. Die wichtigste View ist <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/10\/monitoring-stats.html\">pg_stat_user_tables<\/a><\/noindex>. User_tables bedeutet, dass die Tabellen im Namen des Benutzers erstellt wurden. Im Gegensatz dazu gibt es System-Views, die von PostgreSQL selbst verwendet werden. Und es gibt eine aggregierte Tabelle Alltables, die sowohl System- als auch Benutzertabellen umfasst. Sie k\u00f6nnen je nach Vorliebe auf einer der beiden basieren.<\/p>\n<p><\/p>\n<p>\u00dcber die oben genannten Felder kann man die Anzahl von Insert, Update und Delete bewerten. Das Dashboard-Beispiel, das ich verwendet habe, nutzt genau diese Felder zur Einsch\u00e4tzung der Workload-Eigenschaften. Daher k\u00f6nnen wir uns auch darauf st\u00fctzen. Es ist jedoch wichtig zu beachten, dass es sich um Tuples und nicht um Bytes handelt, weshalb wir dies nicht einfach in Bytes umrechnen k\u00f6nnen.<\/p>\n<p><\/p>\n<p>Auf Grundlage dieser Daten k\u00f6nnen wir sogenannte TopN-Tabellen erstellen, zum Beispiel Top-5 oder Top-10. Damit l\u00e4sst sich verfolgen, welche Tabellen st\u00e4rker beansprucht werden als andere. Beispielsweise die 5 'hei\u00dfen' Tabellen im Hinblick auf Inserts. Anhand dieser TopN-Tabellen bewerten wir unsere Workload und k\u00f6nnen auch Spitzenlasten nach verschiedenen Releases, Updates und Deployments einsch\u00e4tzen. <\/p>\n<p><\/p>\n<p>Es ist ebenfalls wichtig, die Gr\u00f6\u00dfe der Tabellen zu bewerten, da Entwickler manchmal neue Funktionen ausrollen und unsere Tabellen aufgrund des Hinzuf\u00fcgens zus\u00e4tzlicher Datenmenge stark anwachsen. Dabei wird jedoch h\u00e4ufig nicht vorhergesehen, wie sich dies auf die Gr\u00f6\u00dfe der Datenbank auswirkt. Solche F\u00e4lle k\u00f6nnen f\u00fcr uns ebenfalls \u00fcberraschend sein. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/9b964b332210c5bef77f99dfa386a2b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Und jetzt eine kurze Frage an Sie. Welche Fragen kommen auf, wenn Sie eine Belastung auf einem Server mit einer Datenbank feststellen? Welche Fragen stellen Sie sich als N\u00e4chstes? <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/b72286a22e6e3ad0f1b6c8a478cf65b3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tats\u00e4chlich stellt sich jedoch die folgende Frage: Welche Anfragen verursachen die Belastung? Es ist nicht interessant zu beobachten, welche Prozesse die Belastung verursachen. Es ist klar, dass, wenn der Host eine Datenbank verwaltet, dort eine Datenbank l\u00e4uft, und logisch ist, dass nur Datenbanken dort Ressourcen nutzen. Wenn wir Top \u00f6ffnen, sehen wir eine Liste von Prozessen in PostgreSQL, die etwas tun. Aus dem Top wird jedoch nicht ersichtlich, was genau sie tun. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/3d8c06dfe22d5fe93427055c39925a2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Daher m\u00fcssen wir die Anfragen identifizieren, die die gr\u00f6\u00dfte Belastung verursachen, da die Optimierung dieser Anfragen in der Regel mehr Vorteile bringt als die Optimierung der PostgreSQL-Konfiguration, des Betriebssystems oder sogar der Hardware. Nach meiner Einsch\u00e4tzung liegt dieser Gewinn bei etwa 80-85-90 %. Und das geht viel schneller. Es ist schneller, eine Anfrage zu optimieren, als die Konfiguration zu \u00e4ndern, einen Neustart zu planen, insbesondere wenn die Datenbank nicht neu gestartet werden kann, oder zus\u00e4tzliche Hardware hinzuzuf\u00fcgen. Es ist einfacher, eine Anfrage umzuformulieren oder einen Index hinzuzuf\u00fcgen, um bereits bessere Ergebnisse aus dieser Anfrage zu erzielen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/f41c9f7596f527a4403c5a5981f3a0d2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDementsprechend m\u00fcssen Anfragen und deren Angemessenheit \u00fcberwacht werden. Nehmen wir ein weiteres Beispiel f\u00fcr das Monitoring. Auch hier gibt es ein ansprechendes Monitoring. Es sind Informationen zur Replikation vorhanden, Informationen zur Bandbreite, zu Blockierungen und zur Ressourcennutzung. Alles sieht gut aus, aber es fehlen Informationen zu den Anfragen. Unklar bleibt, welche Anfragen in unserer Datenbank ausgef\u00fchrt werden, wie lange sie dauern und wie viele Anfragen es sind. Im Monitoring m\u00fcssen wir diese Informationen immer vorliegen haben. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/d92327c0486336105fb9a8005b6032ae.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>F\u00fcr den Erhalt dieser Informationen k\u00f6nnen wir das Modul pg_stat_statements verwenden. Darauf basierend lassen sich verschiedenste Grafiken erstellen. Zum Beispiel k\u00f6nnen wir die Informationen zu den h\u00e4ufigsten Anfragen abrufen, also zu denjenigen Anfragen, die am h\u00e4ufigsten ausgef\u00fchrt werden. Nach Deployments ist es ebenfalls sehr hilfreich, einen Blick darauf zu werfen und zu pr\u00fcfen, ob es zu einem Anstieg der Anfragen gekommen ist. <\/p>\n<p><\/p>\n<p>Wir k\u00f6nnen auch die l\u00e4ngsten Anfragen \u00fcberwachen, also diejenigen, die am l\u00e4ngsten ausgef\u00fchrt werden. Diese beanspruchen die CPU und verbrauchen E\/A-Ressourcen. Auch das k\u00f6nnen wir anhand der Felder total_time, mean_time, blk_write_time und blk_read_time bewerten. <\/p>\n<p><\/p>\n<p>Wir k\u00f6nnen die ressourcenintensivsten Anfragen bewerten und \u00fcberwachen, insbesondere solche, die von der Festplatte lesen, mit dem Speicher arbeiten oder umgekehrt eine Schreiblast erzeugen.<\/p>\n<p><\/p>\n<p>Wir sind in der Lage, die gro\u00dfz\u00fcgigsten Anfragen zu bewerten. Dies sind Anfragen, die eine gro\u00dfe Menge an Zeilen zur\u00fcckgeben. Zum Beispiel k\u00f6nnte das eine Anfrage sein, bei der man vergessen hat, ein Limit zu setzen, sodass sie einfach den gesamten Inhalt der Tabelle oder der angeforderten Tabellen zur\u00fcckgibt.<\/p>\n<p><\/p>\n<p>Wir k\u00f6nnen auch Anfragen \u00fcberwachen, die tempor\u00e4re Dateien oder tempor\u00e4re Tabellen verwenden. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/7b33a882f23dc99ae5b6d158eaffdad5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nUnd da sind auch unsere Hintergrundprozesse zu beachten. Hintergrundprozesse sind in erster Linie Checkpoints, auch Kontrollpunkte genannt, sowie Autovacuum und Replikation. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/8fb2f921b60bd25053896155c90d7e53.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ein weiteres Beispiel f\u00fcr die \u00dcberwachung. Es gibt auf der linken Seite einen Reiter \"Wartung\", den wir aufrufen und hoffen, etwas N\u00fctzliches zu sehen. Aber hier gibt es nur die Betriebszeit des Vacuum und der Statistiksammlung, nichts weiter. Diese Informationen sind sehr sp\u00e4rlich, weshalb es immer wichtig ist zu wissen, wie unsere Hintergrundprozesse in der Datenbank arbeiten und ob es dabei zu Problemen kommt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/137acdb66afc49d0a61d74581bf51b39.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn wir \u00fcber Kontrollpunkte sprechen, sollten wir ber\u00fccksichtigen, dass diese 'schmutzigen' Seiten aus dem shardierten Speicher auf die Festplatte geschrieben werden, bevor ein Kontrollpunkt erstellt wird. Dieser Kontrollpunkt kann dann als Ausgangspunkt f\u00fcr eine Wiederherstellung verwendet werden, falls PostgreSQL unerwartet beendet wird. <\/p>\n<p><\/p>\n<p>Um alle 'schmutzigen' Seiten auf die Festplatte zu schreiben, ist eine gewisse Menge an Schreibvorg\u00e4ngen erforderlich. In Systemen mit viel RAM kann das sehr viel sein. Wenn Kontrollpunkte in kurzen Abst\u00e4nden sehr h\u00e4ufig durchgef\u00fchrt werden, kann dies die Festplattenleistung stark beeintr\u00e4chtigen. Das f\u00fchrt dazu, dass Kundenanfragen unter Ressourcenmangel leiden. Sie werden um Ressourcen k\u00e4mpfen und es wird an Leistung fehlen. <\/p>\n<p><\/p>\n<p>\u00dcber die pg_stat_bgwriter k\u00f6nnen wir die Anzahl der aufgetretenen Checkpoints anhand der angegebenen Felder \u00fcberwachen. Wenn wir in einem bestimmten Zeitraum (z. B. 10-15-20 Minuten oder eine halbe Stunde) eine hohe Anzahl von Checkpoints verzeichnen, beispielsweise 3-4-5, k\u00f6nnte das bereits ein Problem darstellen. In diesem Fall sollten wir die Datenbank und die Konfiguration untersuchen, um herauszufinden, was diese Vielzahl an Checkpoints verursacht. M\u00f6glicherweise l\u00e4uft eine gro\u00dfe Schreiboperation. Anhand unserer Workload-Diagramme k\u00f6nnen wir die Situation bereits einsch\u00e4tzen, da wir diese Grafiken hinzugef\u00fcgt haben. Wir k\u00f6nnen die Parameter f\u00fcr die Checkpoints entsprechend anpassen, um sicherzustellen, dass sie die Anfragen nicht negativ beeinflussen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/3d86b57d87ec592f307b28ea4efb26ae.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ich komme erneut auf das Thema Autovacuum zur\u00fcck, denn wie bereits erw\u00e4hnt, kann es sowohl die Leistung der Festplatten als auch der Anfragen erheblich beeintr\u00e4chtigen. Daher ist es immer wichtig, die Anzahl der Autovacuum-L\u00e4ufe zu bewerten. <\/p>\n<p><\/p>\n<p>Die Anzahl der Autovacuum-Worker in der Datenbank ist begrenzt. Standardm\u00e4\u00dfig gibt es drei. Wenn also st\u00e4ndig drei Worker in der Datenbank aktiv sind, deutet das darauf hin, dass das Autovacuum nicht optimal konfiguriert ist. In diesem Fall sollten die Limits angehoben und die Autovacuum-Einstellungen \u00fcberpr\u00fcft werden.<br \/>\nEs ist wichtig zu bewerten, welche Vakuum-Worker bei uns aktiv sind. Entweder ist es ein vom Benutzer initiiertes Vakuum, das durch einen DBA manuell gestartet wurde und dadurch eine Last erzeugt hat, was zu einem Problem gef\u00fchrt hat. Oder es handelt sich um die Anzahl der Vakuum-Operationen, die den Transaktionsz\u00e4hler zur\u00fccksetzen. F\u00fcr einige Versionen von PostgreSQL k\u00f6nnen diese Vakuum-Operationen sehr ressourcenintensiv sein, da sie die gesamte Tabelle lesen und alle Bl\u00f6cke in dieser Tabelle scannen. <\/p>\n<p><\/p>\n<p>Und nat\u00fcrlich die Dauer der Vakuumprozesse. Wenn wir lange Vakuumprozesse haben, die sehr lange dauern, bedeutet das, dass wir die Vakuumkonfiguration erneut pr\u00fcfen und m\u00f6glicherweise anpassen sollten. Denn es kann zu einer Situation kommen, in der das Vakuum lange an einer Tabelle arbeitet (3-4 Stunden), aber in der Zwischenzeit sich wieder eine gro\u00dfe Anzahl toter Zeilen in der Tabelle angesammelt hat. Sobald das Vakuum beendet ist, muss es diese Tabelle erneut verarbeiten. Das f\u00fchrt zu einem Zustand \u2013 einem endlosen Vakuum. In diesem Fall kann das Vakuum seine Aufgabe nicht erf\u00fcllen, und die Tabellen beginnen allm\u00e4hlich zu wachsen, obwohl das Volumen an n\u00fctzlichen Daten gleich bleibt. Daher \u00fcberpr\u00fcfen wir bei langen Vakuumprozessen immer die Konfiguration und versuchen, sie zu optimieren, ohne die Leistung der Benutzeranfragen zu beeintr\u00e4chtigen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/bf109b53e0ad70bbb3fba727149e5086.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aktuell gibt es kaum eine PostgreSQL-Installation, die keine Streaming-Replikation hat. Replikation ist der Prozess der \u00dcbertragung von Daten vom Master zur Replik.<\/p>\n<p><\/p>\n<p>Die Replikation in PostgreSQL erfolgt \u00fcber das Transaktionsprotokoll. Der Master erstellt das Transaktionsprotokoll. \u00dcber eine Netzwerkverbindung wird das Protokoll an die Replik \u00fcbertragen, wo es dann reproduziert wird. Ganz einfach. <\/p>\n<p><\/p>\n<p>Zur \u00dcberwachung des Replikationslag wird die Ansicht pg_stat_replication verwendet. Aber damit ist nicht alles einfach. In Version 10 wurde die Ansicht ge\u00e4ndert. Erstens wurden einige Felder umbenannt. Zudem wurden einige Felder hinzugef\u00fcgt. In der Version 10 sind Felder hinzugekommen, die die Einsch\u00e4tzung des Replikationslags in Sekunden erm\u00f6glichen. Das ist sehr praktisch. In Version 10 gab es auch weiterhin die M\u00f6glichkeit, den Lag in Bytes zu bewerten. Diese M\u00f6glichkeit besteht nach wie vor in Version 10, d. h. Sie k\u00f6nnen w\u00e4hlen, was Ihnen besser passt \u2013 den Lag in Bytes oder in Sekunden zu bewerten. Viele nutzen beides.<\/p>\n<p><\/p>\n<p>Um den Replikations-Lag zu bewerten, m\u00fcssen wir jedoch die Journal-Position in der Transaktion kennen. Diese Positionen der Transaktionsjournale sind in der Ansicht pg_stat_replication enthalten. Mit der Funktion pg_xlog_location_diff() k\u00f6nnen wir sozusagen zwei Punkte im Transaktionsjournal festlegen, die Differenz zwischen ihnen berechnen und den Replikations-Lag in Bytes erhalten. Das ist sehr praktisch und einfach. <\/p>\n<p><\/p>\n<p>In der Version 10 wurde diese Funktion in pg_wal_lsn_diff() umbenannt. Generell wurde in allen Funktionen, Sichten und Tools, in denen das Wort \u201exlog\u201c vorkam, es durch \u201ewal\u201c ersetzt. Dies gilt sowohl f\u00fcr Sichten als auch f\u00fcr Funktionen. Das ist eine solche Neuerung. <\/p>\n<p><\/p>\n<p>Au\u00dferdem wurden in der 10. Version spezifische Zeilen hinzugef\u00fcgt, die den Lag anzeigen. Dazu geh\u00f6ren Write Lag, Flush Lag und Replay Lag. Es ist wichtig, diese Werte zu \u00fcberwachen. Wenn wir sehen, dass es einen Replikations-Lag gibt, m\u00fcssen wir untersuchen, warum er aufgetreten ist, woher er kommt und das Problem beheben. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/5b29d7519f28da63446b741024a68bb8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit den Systemmetriken ist fast alles in Ordnung. Bei jedem Monitoring, das entsteht, beginnen wir mit den Systemmetriken. Dazu geh\u00f6ren die Auslastung von Prozessoren, Speicher, Swap, Netzwerk und Festplatte. Dennoch fehlen viele Parameter standardm\u00e4\u00dfig. <\/p>\n<p><\/p>\n<p>Wenn die Prozessnutzung in Ordnung ist, gibt es Probleme mit der Datentr\u00e4gernutzung. Entwickler von Monitoring-Tools f\u00fcgen in der Regel Informationen zur Bandbreite hinzu. Diese kann in IOPS oder Bytes angegeben werden. Doch sie vergessen oft die Latenz und die Auslastung der Speicherger\u00e4te. Dies sind entscheidende Parameter, die helfen zu beurteilen, wie stark unsere Festplatten belastet sind und wie stark sie verlangsamen. <strong>Wenn die Latenz hoch ist, bedeutet das, dass es Probleme mit den Festplatten gibt. Eine hohe Auslastung deutet darauf hin, dass die Festplatten \u00fcberlastet sind.<\/strong> Diese Parameter sind qualitativ hochwertiger als die Bandbreite.<\/p>\n<p><\/p>\n<p>Obwohl diese Statistiken auch aus dem Dateisystem \/proc abgerufen werden k\u00f6nnen, wie es bei der CPU-Auslastung der Fall ist. Warum diese Informationen nicht in Monitoring-Tools integriert werden, wei\u00df ich nicht. <strong>Nichtsdestotrotz ist es wichtig, diese in deinem Monitoring zu haben.<\/strong> <\/p>\n<p><\/p>\n<p>Das Gleiche gilt f\u00fcr Netzwerkinterfaces. <strong>Es gibt Informationen zur Netzwerkbandbreite in Paketen oder Bytes, aber es fehlen Informationen zur Latenz und zur Auslastung, obwohl diese ebenfalls n\u00fctzlich w\u00e4ren.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/3b9b2c300bcc8a30e1b6fae1a55e6f21.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jede \u00dcberwachung hat ihre Schw\u00e4chen. Egal, welches Monitoring Sie ausw\u00e4hlen, es wird immer gewissen Kriterien nicht gerecht werden. Dennoch entwickeln sie sich weiter, neue Funktionen und Features kommen hinzu. W\u00e4hlen Sie also etwas aus und passen Sie es an. <\/p>\n<p><\/p>\n<p>Um Anpassungen vorzunehmen, ist es wichtig, stets zu verstehen, was die \u00fcbermittelten Statistiken bedeuten und wie man sie zur Probleml\u00f6sung nutzen kann. <\/p>\n<p><\/p>\n<p>Hier sind einige Schl\u00fcssel\u00fcberlegungen:<\/p>\n<p><\/p>\n<ul>\n<li>Die Verf\u00fcgbarkeit sollte stets \u00fcberwacht werden, und Dashboards sind notwendig, damit Sie schnell erkennen k\u00f6nnen, ob die Datenbank in Ordnung ist. <\/li>\n<li>Es ist wichtig zu wissen, welche Kunden mit Ihrer Datenbank interagieren, um schlechte Kunden auszuschlie\u00dfen. <\/li>\n<li>Es ist entscheidend zu bewerten, wie diese Kunden mit den Daten umgehen. Ein klares Bild \u00fcber Ihre Arbeitslast ist notwendig.<\/li>\n<li>Es ist wichtig zu analysieren, wie sich diese Arbeitslast zusammensetzt und welche Anfragen dies beeinflussen. Sie k\u00f6nnen Anfragen bewerten, optimieren, refaktorisieren und Indizes f\u00fcr sie erstellen. Das ist von gro\u00dfer Bedeutung.<\/li>\n<li>Hintergrundprozesse k\u00f6nnen negative Auswirkungen auf Kundenanfragen haben, weshalb es wichtig ist, sicherzustellen, dass sie nicht zu viele Ressourcen beanspruchen.<\/li>\n<li>Systemmetriken erm\u00f6glichen es Ihnen, Skalierungspl\u00e4ne zu erstellen und die Kapazit\u00e4t Ihrer Server zu erh\u00f6hen. Daher ist es wichtig, sie ebenfalls zu verfolgen und zu bewerten.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Grundlagen der PostgreSQL-\u00dcberwachung. Alexey Lesovskiy\" src=\"\/wp-content\/uploads\/2020\/02\/7ece1ec5ffc67d68697c0932a2fbf7db.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn Sie sich f\u00fcr dieses Thema interessieren, k\u00f6nnen Sie diese Links durchsehen.<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/bit.do\/stats_collector\">http:\/\/bit.do\/stats_collector<\/a><\/noindex> \u2014 dies ist die offizielle Dokumentation mit den Statistiksammlern. Dort finden Sie eine Beschreibung aller statistischen Ansichten sowie der entsprechenden Felder. Sie k\u00f6nnen diese lesen, verstehen und analysieren, um basierend darauf eigene Grafiken zu erstellen und Ihr Monitoring zu erweitern. <\/p>\n<p><\/p>\n<p>Beispiele f\u00fcr Anfragen:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/bit.do\/dataegret_sql\">http:\/\/bit.do\/dataegret_sql<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/bit.do\/lesovsky_sql\">http:\/\/bit.do\/lesovsky_sql<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Dies ist unser unternehmensinterner und mein eigener Repository. Dort gibt es Beispiele f\u00fcr Anfragen. Es sind keine Abfragen wie \"select * from irgendetwas\" enthalten. Stattdessen sind bereits fertige Anfragen mit Joins und interessanten Funktionen vorhanden, die es erm\u00f6glichen, aus Rohdaten lesbare und n\u00fctzliche Werte abzuleiten, wie z. B. Bytes oder Zeit. Sie k\u00f6nnen diese untersuchen, analysieren und in Ihr Monitoring integrieren, um eigene Monitoring-L\u00f6sungen darauf aufzubauen. <\/p>\n<p><\/p>\n<h4 id=\"voprosy\">Fragen<\/h4>\n<p><\/p>\n<p>Frage: Sie haben gesagt, dass Sie keine Marken bewerben werden, aber ich bin dennoch neugierig \u2013 welche Dashboards verwenden Sie in Ihren Projekten?<br \/>\nAntwort: Das ist unterschiedlich. Manchmal kommen wir zu einem Kunden, der bereits sein eigenes Monitoring hat. Wir beraten den Kunden dann, was er in sein Monitoring hinzuf\u00fcgen sollte. Besonders schwierig sind die Dinge mit Zabbi\u0445. Denn dort gibt es keine M\u00f6glichkeit, TopN-Diagramme zu erstellen. Wir selbst nutzen <noindex><a rel=\"nofollow\" href=\"https:\/\/okmeter.io\/\">Okmeter<\/a><\/noindex>, weil wir diese Jungs im Bereich Monitoring beraten haben. Sie haben das Monitoring f\u00fcr PostgreSQL basierend auf unserem Lastenheft erstellt. Ich arbeite an meinem eigenen pet-project, das Daten \u00fcber Prometheus sammelt und diese in <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/\">Grafana<\/a><\/noindex>. Mein Ziel ist es, in Prometheus meinen eigenen Exporter zu erstellen und alles dann in Grafana darzustellen.<\/p>\n<p><\/p>\n<p>Frage: Gibt es Analogien zu AWR-Berichten oder \u2026 Aggregationen? Wissen Sie dar\u00fcber etwas?<br \/>\nAntwort: Ja, ich wei\u00df, was AWR ist, das ist eine gro\u00dfartige Sache. Zurzeit gibt es verschiedene L\u00f6sungen, die ein \u00e4hnliches Modell umsetzen. In bestimmten Zeitintervallen werden einige Baselines in dasselbe PostgreSQL oder in ein separates Speicherformat geschrieben. Man kann sie im Internet suchen, sie sind verf\u00fcgbar. Einer der Entwickler einer solchen L\u00f6sung ist im Forum sql.ru in der PostgreSQL-Diskussion aktiv. Dort kann man ihn erreichen. Ja, solche L\u00f6sungen gibt es, sie k\u00f6nnen genutzt werden. Zudem in meiner <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/lesovsky\/pgcenter\">pgCenter<\/a><\/noindex> Ich arbeite auch an einem Tool, das dasselbe erm\u00f6glicht.<\/p>\n<p><\/p>\n<p>P.S.1 Wenn Sie postgres_exporter verwenden, welches Dashboard verwenden Sie? Es gibt mehrere. Einige davon sind bereits veraltet. K\u00f6nnte die Community ein aktualisiertes Template erstellen?<\/p>\n<p><\/p>\n<p>P.S.2 Ich habe pganalyze entfernt, da es sich um ein propriet\u00e4res SaaS-Angebot handelt, das auf Leistungs\u00fcberwachung und automatisierte Anpassungsvorschl\u00e4ge fokussiert ist.<\/p>\n<p class=\"for_users_only_msg\">Nur registrierte Benutzer k\u00f6nnen an der Umfrage teilnehmen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Bitte melden Sie sich an.<\/a><\/noindex>Sind Sie an Contour interessiert?<\/p>\n<h2 class=\"default-block__polling-title\">Welches selbstgehostete Monitoring f\u00fcr PostgreSQL (mit Dashboard) halten Sie f\u00fcr das beste?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">30,0%<\/strong>Zabbix + Erweiterungen von Alexey Lesovsky oder zabbix 4.4 oder libzbxpgsql + zabbix libzbxpgsql + zabbix3<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>https:\/\/github.com\/lesovsky\/pgcenter0<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>https:\/\/github.com\/pg-monz\/pg_monz0<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">20,0%<\/strong>https:\/\/github.com\/cybertec-postgresql\/pgwatch22<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">20,0%<\/strong>https:\/\/github.com\/postgrespro\/mamonsu2<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>https:\/\/www.percona.com\/doc\/percona-monitoring-and-management\/conf-postgres.html0<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10,0%<\/strong>pganalyze ist ein propriet\u00e4res SaaS \u2013 ich kann es nicht entfernen.<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10,0%<\/strong>https:\/\/github.com\/powa-team\/powa1<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>https:\/\/github.com\/darold\/pgbadger0<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>https:\/\/github.com\/darold\/pgcluu0<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>https:\/\/github.com\/zalando\/PGObserver0<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10,0%<\/strong>https:\/\/github.com\/spotify\/postgresql-metrics1<\/p>\n<\/li>\n<\/ul>\n<p>    10 Benutzer haben abgestimmt. 26 Benutzer haben sich enthalten.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/486710\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0438\u0437 Data Egret &quot;\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 PostgreSQL&quot; \u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435; \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435, \u043a\u0430\u043a \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c [&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-56075","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=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0438\u0437 Data Egret &quot;\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 PostgreSQL&quot; \u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435; \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435, \u043a\u0430\u043a \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\" \/>\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\/osnovy-monitoringa-postgresql-aleksej-lesovskij\" \/>\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\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 PostgreSQL. \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0438\u0437 Data Egret &quot;\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 PostgreSQL&quot; \u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435; \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435, \u043a\u0430\u043a \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/osnovy-monitoringa-postgresql-aleksej-lesovskij\" \/>\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=\"2020-02-03T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:16+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\udd47 Grundlegende Aspekte des PostgreSQL-Monitorings. Alexey Lesovsky | ProHoster","description":"Ich empfehle, sich die Zusammenfassung des Vortrags von Alexey Lesovsky von Data Egret \"Grundlagen des PostgreSQL-Monitorings\" anzusehen. In diesem Vortrag wird Alexey Lesovsky die Schl\u00fcsselpunkte der PostgreSQL-Statistik erl\u00e4utern, was sie bedeuten und warum sie im Monitoring vorhanden sein sollten; welche Grafiken im Monitoring enthalten sein sollten, wie man sie hinzuf\u00fcgt und wie man sie interpretiert. Der Vortrag wird f\u00fcr Datenbankadministratoren und Systemadministratoren von Nutzen sein.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/osnovy-monitoringa-postgresql-aleksej-lesovskij","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\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 PostgreSQL. \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0438\u0437 Data Egret &quot;\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 PostgreSQL&quot; \u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435; \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435, \u043a\u0430\u043a \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/osnovy-monitoringa-postgresql-aleksej-lesovskij","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":"2020-02-03T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:16+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"56075","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:31:43","updated":"2022-09-29 10:21:06"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/56075","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=56075"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/56075\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=56075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=56075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=56075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}