Elephant Shed bündelt und integriert bewährte Komponenten, die für das Management eines PostgreSQL®-Servers benötigt werden. Dabei werden erprobte Tools für alle relevanten Bereiche bereits vorinstalliert und vorkonfiguriert. Die Mehrzahl dieser Tools kann über eine komfortable Weboberfläche gesteuert werden. Selbst gestandene PostgreSQL®-Administratoren werden kaum einen Bereich finden, der von Elephant Shed nicht abgedeckt wird.
Neu in Version 1.2 ist die Unterstützung von Ubuntu Bionic (18.04), neben der bisherigen Unterstützung für Debian Stretch (9). Beide Distributionen sind für die Architekturen amd64 (x86_64) und ppc64el (IBM POWER) verfügbar.
Nach Rückmeldungen durch Benutzer wurde für die Version 1.2 das Grafana-Dashboard überarbeitet. Verschiedene PostgreSQL®-Cluster pro Maschine werden nun durch den Cluster-Namen wie „10/main“ unterschieden. Alle Metrikpanels benutzen nun korrekte Einheiten, d.h. die Achsen sind nun mit „Bytes pro Sekunde“ oder „Operationen pro Minute“ beschriftet. Grafana wurde auf Version 5 aktualisiert.
Die Prometheus-Timeseries-Datenbank wurde auf Version 2 aktualisiert, mit besserer Performance und kompakterer Datenhaltung. Leider ist das Speicherformat nicht kompatibel, alte Monitoring-Daten werden nicht erhalten.
Bug-Fixes und Verbesserungen:
- prometheus-sql-exporter: Die automatische Erkennung von PostgreSQL®-Clustern und Datenbanken wurde neu geschrieben und ist nun stabiler
- Prometheus nutzt nun den Host- und Cluster-Namen in Timeseries-Labels
- prometheus-node-exporter wurde auf Version 0.15 aktualisiert
- pgBadger: Handhabung von log_line_prefix korrigiert
Die aktualisierten Pakete stehen über packages.credativ.com zum Download bereit. Wer Elephant Shed bereits installiert hat, kann die Updates wie gewohnt über apt einspielen.
Elephant Shed ist ein Open-Source-Projekt, entwickelt und gepflegt von credativ. Für Elephant Shed bietet die credativ einen umfassenden technischen Support mit garantierten Service Level Agreements, der optional auch an 365 Tagen im Jahr rund um die Uhr zur Verfügung steht.
Unsere PostgreSQL®-Appliance Elephant Shed bringt fertig konfiguriertes Datenbank- und System-Monitoring mit. Wir setzen dabei auf Grafana und Prometheus. Hier stellen wir die Grundlagen vor, auf denen diese Monitoring-Architektur basiert.
Im Vordergrund steht hier Performance-Monitoring, d.h. die Sammlung quantitativer Metriken über die Zeit, z.B. den Verlauf der Zahl der Transaktionen pro Sekunde. Qualitative Metriken wie „ist die Festplatte vollgelaufen“ und Alerting können von Grafana und Prometheus ebenfalls erfasst werden, sollen hier aber nicht behandelt werden.
Prometheus-Exporter
Prometheus als Timeseries-Datenbank bildet die Zentrale des Monitorings. Metriken haben hier einen Namen und verschiedene Labels, z.B. sql_pg_stat_database mit Labels datname=“omdb“ und col=“xact_commit“.
Prometheus bezieht seine Daten von sogenannten Exportern, die periodisch (z.B. alle 30 s) abgefragt werden. Wohl in jeder Installation zu finden ist der Node-Exporter, der System-Daten wie Dateisystem-Füllstand, CPU-Auslastung und Speicherbelegung auswertet. Für die PostgreSQL®-Überwachung setzen wir den SQL-Exporter in einer von uns gepatchten Version ein.
Im SQL-Exporter sind SQL-Abfragen konfiguriert, die in allen PostgreSQL®-Clustern und -Datenbanken auf dem System ausgeführt werden. Dabei ist es üblich, immer absolute Werte abzufragen, z.B. Transaktionen seit Systemstart, und nicht schon vorzuverarbeiten. Ein Wert wie „Transaktionen pro Sekunde“ wird dann durch Prometheus aus den Rohdaten berechnet.
# SELECT datname, xact_commit, xact_rollback FROM pg_stat_database WHERE datname !~ 'template(0|1)' ORDER BY datname; datname | xact_commit | xact_rollback ----------+-------------+--------------- foo | 8881 | 0 omdb | 29149 | 18926 postgres | 43780 | 1754 (3 Zeilen)
Das Ergebnis stellt der Exporter dann per http auf localhost:9237 zur Verfügung:
sql_pg_stat_database{col="xact_commit", datname="omdb", host=":5432", sql_job="10/main", user="postgres"} 29149
sql_pg_stat_database{col="xact_rollback", datname="omdb", host=":5432", sql_job="10/main", user="postgres"} 18926Prometheus-Abfrage
Im Webinterface von Prometheus können die gesammelten Daten dann abgefragt werden. Im einfachsten Fall besteht eine Prometheus-Query einfach aus dem Namen der Timeseries:
sql_pg_stat_database{col=~'xact_commit|xact_rollback',datname='omdb',host=':5432'}
Die Graphik zeigt die steigende Zahl von durchgeführten Transaktionen. Um nun auf die Rate der Transaktionen pro Sekunde zu kommen, benutzt man die Funktion rate(), wobei über ein angegebenes Intervall gemittelt wird, hier 1 Minute:
rate(sql_pg_stat_database{col=~'xact_commit|xact_rollback',datname='omdb',host=':5432'}[1m])
Grafana
Grafana dient nun dazu, die von Prometheus gesammelten Daten hübsch formatiert in Dashboards anzuzeigen. Für jedes „Panel“ im Dashboard werden Prometheus-Queries hinterlegt und Achsenbeschriftungen und andere Grapheigenschaften konfiguriert. Dabei passiert das Rendering der Daten vollständig im Browser, Grafana stellt lediglich Umgebung zur Verfügung, der Browser bezieht dann die Timeseries-Werte direkt als JSON von Prometheus.
Elephant Shed
Das von uns für Elephant Shed entwickelte PostgreSQL®-Dashboard kann natürlich auch für andere Setups genutzt werden. Alle benötigten Dateien finden sich im Git-Repository.
Vergangene Woche fand die deutschsprachige PostgreSQL®-Konferenz am Müggelsee im Süd-Osten von Berlin statt. credativ war mit insgesamt neun Personen vertreten. Vier unserer Kollegen haben als Speaker zum Vortragsprogramm beigetragen. Auch in der Event-Organisation war credativ vertreten und hat mitgeholfen, die Konferenz zu stemmen und zu einem Erfolg zu machen. Aufgrund der langen Anfahrt sind wir schon am Vortag angereist und konnten uns am Freitag dann ganz auf die Konferenz und das Publikum am credativ-Stand konzentrieren.
Das Vortragsprogramm war abwechslungsreich gestaltet. Den Auftakt machte Peer Heinlein mit der Keynote „Umdenken! 11 Gebote zum IT-Management“, in der er unter anderem die Diskrepanz im Investitionsverhalten zwischen Hardware und Personal ansprach. In der Praxis beobachtet er oft, dass für Hardware wesentlich mehr Geld ausgegeben wird, als für Personal. Zitate wie: „Nehmen wir gleich ein Terabyte RAM, dann haben wir was für die Zukunft!“ seien keine Seltenheit. Bei Schulungen und Stellen werde dagegen nicht selten gespart. Auch „zu komplexe“ hochverfügbare Systeme, bei denen der „nicht redundante“ Admin der Single Point of Failure ist, seinen die Regel. Viele seiner Beobachtungen können wir von credativ aus der Praxis bestätigen.
In seinem Vortrag „Modernes SQL: Wie PostgreSQL® die Konkurrenz aussticht“ stellte Markus Winand einige SQL-Sprachkonstrukte vor, die zwar Teil des SQL-Standards sind (teilweise auch schon seit SQL:2003), trotzdem aber ausschließlich von PostgreSQL® implementiert werden – aber nicht von der Konkurrenz. Beispiele sind FILTER, boolean-Aggregate und DOMAINs.
Während dessen hat Devrim Gündüz in seinem Talk „WAL for DBAs – Everything you want to know“ Details über Interna des PostgreSQL®-Write Ahead Logs vorgestellt und ist darauf eingegangen, was Administratoren zu beachten haben.
Bruce Momjian stellte den aktuellen Stand von Sharding in PostgreSQL®“ vor. Leider blieb im Vortrag nicht mehr viel Zeit um auf die Zukunft zu blicken, so dass hier lediglich die vergangene Entwicklung beleuchtet wurde.
Mit eigenen Vorträgen waren wir durch Alexander Sosna und Adrian Vondendriesch vertreten, die die Hintergründe unserer PostgreSQL®-Appliance Elephant Shed vorstellten, sowie durch Christoph Berg, der vorstellte, wie man mit Prometheus und Grafana ein Monitoring für PostgreSQL® einrichtet. Michael Meskes stellte in seiner Closing Session die Frage „Hat Open Source eine Zukunft?“ und mahnte, auf völlig offene Produkte zu setzen, die ohne Open Core und Vendor Lock-In auskommen.
Insgesamt war die Konferenz eine lohnende Erfahrung für uns, insbesondere die Live-Demo von Elephant Shed am credativ-Stand war ein guter Einstieg zu interessanten Gesprächen.
Die nächste PGConf.DE findet im Mai 2019 in Leipzig statt. Wir freuen uns jetzt schon!
In diesem Jahr ist es endlich wieder soweit – Die PGConf.DE öffnet am 13. April 2018 ihre Pforten!
Mit ca. 200 Besuchern ist die PGConf.DE die deutschlandweit größte PostgreSQL® Veranstaltung, und findet in diesem Jahr in Berlin statt. Zuletzt wurde die PGConf.DE 2015 in Hamburg ausgetragen.
credativ ist natürlich wieder mit dabei – in diesem Jahr als Platin-Sponsor. Insgesamt halten unsere Kollegen drei Vorträge:
- PostgreSQL®-Monitoring mit Grafana und Prometheus – von Christoph Berg
- „PostgreSQL® liefert eine Vielzahl von Performance-Metriken. In diesem Vortrag zeigen wir, wie man diese Daten von PostgreSQL®-Clustern mit Prometheus-Exportern abruft und als Graphen in Grafana darstellt. Die Präsentation erläutert die Monitoring-Grundlagen, und in einer Live-Demo werden neue Graphen in das Grafana-Dashboard eingefügt.“
- PostgreSQL® und alles was dazugehört – Elephant Shed – von Adrian Vondendriesch und Alexander Sosna
- „PostgreSQL® ist für viele Nutzer heute ein zentrales Element ihrer IT-Infrastruktur, oder auf dem Weg dahin. Für einen reibungslosen Betrieb wird jedoch eine entsprechende leistungsfähige Umgebung benötigt. Im Vortrag wird eine Stand-Alone-Datenbankserver-Umgebung vorgestellt, die für Entwicklung und Produktion verwendet werden kann und sowohl PostgreSQL®-Neueinsteigern, -Umsteigern, als auch Veteranen das Leben möglichst einfach macht.“
Elephant Shed ist eine von credativ entwickelte, leistungsfähige PostgreSQL® Appliance, die vollständig als freie Open Source-Lösung zum Download zur Verfügung steht.
- „PostgreSQL® ist für viele Nutzer heute ein zentrales Element ihrer IT-Infrastruktur, oder auf dem Weg dahin. Für einen reibungslosen Betrieb wird jedoch eine entsprechende leistungsfähige Umgebung benötigt. Im Vortrag wird eine Stand-Alone-Datenbankserver-Umgebung vorgestellt, die für Entwicklung und Produktion verwendet werden kann und sowohl PostgreSQL®-Neueinsteigern, -Umsteigern, als auch Veteranen das Leben möglichst einfach macht.“
- Hat Open Source eine Zukunft? – von Dr. Michael Meskes
Das vollständige Vortragsprogramm kann auf der Veranstaltungswebsite eingesehen werden.
Wir freuen uns auf Euren Besuch an unserem Stand und in den Vorträgen! Wenn Ihr noch nicht registriert seid, müsst Ihr schnell sein – Laut Veranstalter werden die Tickets bereits knapp.
Weitere Informationen erhaltet Ihr auf der Veranstaltungswebsite PGConf.DE
Neben den Vortragenden beschäftigt die credativ viele Mitglieder der PostgreSQL®-Community. Einige Mitarbeiter waren schon vor Firmengründung an dem Projekt beteiligt und leisten auch heute noch einen wichtigen Beitrag für die Software. Auch daraus entstand für die credativ eine enge und langjährige Verbundenheit mit dem PostgreSQL®-Projekt und der Community.
Dieser Artikel wurde ursprünglich von Philip Haas geschrieben.
Elephant Shed ist eine frei verfügbare und von credativ entwickelte PostgreSQL® Management-, Monitoring- und Administrationslösung.
Folgende Punkte umfasst die für 2018 angesetzte Projektroadmap:
- Q2 2018: Unterstützung für Ubuntu 18.04
- Q3 2018: Unterstützung für CentOS 7
Ein weiterhin geplantes Feature ist die Implementierung der REST-API zur Kontrolle der einzelnen Komponenten. REST steht für REpresentational State Transfer und ist eine Programmierschnittstelle, welche sich an den Verhaltensweisen des World Wide Web orientiert. Konkret sollen hiermit die PostgreSQL® Datenbank und das Backup über pgBackRest angesprochen werden.
Ein Multi-Host-Support wird ebenfalls angestrebt. Eine zentrale Kontrolle mehrerer Elephant Shed Instanzen ist somit möglich.
Um Elephant Shed noch bedienbarer zu machen, sollen verschiedene Konfigurationsparameter des Webinterfaces angepasst werden.
An der Projektroadmap wird natürlich stetig gearbeitet. Über GitHub können Sie uns jederzeit Ihr Feedback hinterlassen.
Wir möchten an dieser Stelle allen Nutzern und Testern danken, und freuen uns auf die künftige Weiterentwicklung des Projektes!
Weitere Informationen erhalten Sie unter elephant-shed.io und auf GitHub.
Dieser Artikel wurde ursprünglich von Philip Haas geschrieben.
Elephant Shed ist nun auch als Vagrant-Box verfügbar. Damit kann die PostgreSQL® Appliance sehr einfach getestet und erprobt werden.
Vagrant ist ein Open-Source-Tool zum Erstellen von portablen virtuellen Software-Umgebungen. Skript-gesteuert können damit leicht virtuelle Maschinen erzeugt werden, in denen eine Softwarekomponente zum Testen installiert ist. Vagrant selbst ist dabei nur der Manager, für die eigentliche Virtualisierung können verschiedenste Backends wie Virtualbox oder Cloud-Provider eingesetzt werden.
Für die Entwicklung von Elephant Shed haben wir von Anfang an auf Vagrant gesetzt. Diese „Box“ ist nun auch in der Vagrant Cloud erhältlich.
Zur Benutzung dieser Box müssen Vagrant und VirtualBox installiert sein. Das Host-Betriebssystem ist dabei unerheblich (Linux/MacOS/Windows), in der Box läuft Debian Stretch. Die Box wird dann von Vagrant automatisch heruntergeladen:
vagrant init credativ/elephant-shed vagrant up
Dies erstellt eine virtuelle Maschine, in der Elephant Shed in VirtualBox auf Ihren Computer läuft.
- Default-User:
admin - Default-Passwort:
admin - Das Webinterface hört auf Port 4433: https://localhost:4433
- PostgreSQL® hört auf Port 55432:
psql -h localhost -p 55432 -U admin
Wir freuen uns über Feedback!
Weitere Informationen finden Sie auf unserer Elephant Shed-Projektseite, sowie auf Github.
Unsere PostgreSQL®-Appliance Elephant Shed ist nun in Version 1.1 verfügbar. Die aktualisierten Pakete für Debian Stretch sind auf packages.credativ.com verfügbar.
Die Änderungen sind im Wesentlichen Anpassungen und Bugfixes im Monitoring-Dashboard von Grafana. So zeigt z.B. der Check „Next Freeze“ eine Warnung (Orange) erst, wenn ein anstehender Freeze 10% überfällig, bzw noch nicht abgeschlossen ist. Der Graph „Dead Tuples“ zeigt nun die korrekten Werte an. An dieser Stelle noch einmal vielen Dank für die Nutzer-Hinweise!
Die Dokumentation wurde auf Sphinx umgestellt, da sie mittlerweile die Größe einer README-Datei überschritten hatte. Sie wird mit den Paketen ausgeliefert und ist über das Webinterface verfügbar. Auch online ist immer die aktuelle Version hinterlegt: elephant-shed.io/doc
Elephant Shed
Elephant Shed ist eine leistungsfähige PostgreSQL® Appliance, die vollständig als freie Open Source-Lösung zum Download zur Verfügung steht. Die Appliance bietet eine enorme Erleichterung für den Betrieb von PostgreSQL® im Unternehmenseinsatz. Elephant Shed baut auf bewährten Komponenten auf, die ausschließlich unter anerkannten Open Source Lizenzen veröffentlicht werden. Diese Tools sind eine wirkungsvolle Unterstützung für das Management eines PostgreSQL® Servers. Alle verwendeten Komponenten sind vorinstalliert und in die integrale Automatisierung eingebunden. Die langfristige Pflege der Appliance wird durch die PostgreSQL®-Experten der credativ übernommen.
Elephant Shed steht auch als vorinstallierte Hardware-Appliance zur Verfügung, die von unserem Partner, der Thomas-Krenn.AG, angeboten wird. Für Elephant Shed bietet die credativ einen umfassenden technischen Support mit garantierten Service-Level-Agreements, der optional auch an 365 Tagen im Jahr rund um die Uhr zur Verfügung steht. Eine Unterstützung bei der Installation und Integration, sowie eine Einführung in Elephant Shed ist selbstverständlich auch Bestandteil der Services von credativ. Für Fragen zu Elephant Shed und unseren Service- und Supportleistungen stehen wir Ihnen gern zur Verfügung.
Weitere Informationen finden Sie auf unserer Elephant Shed-Projektseite, sowie auf Github.
Dieser Artikel wurde ursprünglich von Philip Haas geschrieben.
Das Herzstück unserer PostgreSQL®-Appliance „Elephant Shed“ ist das Datenbank-Administrationstool pgAdmin 4. Für die Appliance stand das Tool bisher in der Version 1.5 zur Verfügung.
Seit dem 25. Januar ist pgAdmin 4 in der neuen Version 2.1 auch im Repository apt.postgresql.org enthalten. credativ hat hierfür die bislang noch nicht in Debian enthaltenen Python-Pakete erstellt und nach Debian und apt.postgresql.org hochgeladen. pgAdmin 4 ist auf apt.postgresql.org für Debian stretch und jessie, sowie die Entwicklungszweige buster und sid verfügbar. Bei Ubuntu werden die LTS-Releases xenial und bionic (letzteres wird im kommenden April released) unterstützt. Selbstverständlich ist die neue Version auch mit dem Elephant Shed kompatibel.
In Debian selbst ist pgAdmin 4 leider noch nicht enthalten. Die benutzten JavaScript-Bibliotheken sind zwar alle Open Source, aber etliche Komponenten sind noch nicht als eigenständiges Debian-Paket vorhanden, was Voraussetzung für einen Upload ist. credativ ist hier weiter am Ball, um die aktuelle Version auch in Debian einzubringen.
Praxisbezogene PostgreSQL® Schulungen, ab sofort regelmäßig im PostgreSQL® Competence Center!
Ab diesem Jahr bieten wir von credativ regelmäßige Schulungen für die freie objektrelationale Datenbank PostgreSQL® an.
Die Schulungen werden von den erfahrenen Spezialisten unseres PostgreSQL® Competence Centers durchgeführt und vermitteln den Teilnehmern genau das Wissen, das Sie für einen erfolgreichen Einsatz von PostgreSQL® benötigen.
Folgende Schulungstermine sind für das Jahr 2018 angesetzt:
- Mittwoch, 14.03.2018 bis Donnerstag, 15.03.2018
- Dienstag, 15.05.2018 bis Mittwoch, 16.05.2018
- Dienstag, 14.08.2018 bis Mittwoch, 15.08.2018
- Mittwoch, 07.11.2018 bis Donnerstag, 08.11.2018
Der Preis für die Teilnahme an der zweitägigen Schulung beträgt 780,-€ netto pro Person und ist inklusive Verpflegung.
Der Anmeldung erfolgt telefonisch (+49 2166 9901-0), per E-Mail (schulung@credativ.de) oder per Kontaktformular.
Die Schulungen finden am Standort in Mönchengladbach statt und sind somit für den Großraum Köln und Düsseldorf gut zu erreichen. Sollten Teilnehmer außerhalb von NRW anreisen, stehen in direkter Umgebung der Schulungsräume Hotels zur Verfügung.
Weitere Informationen sowie die detaillierten Schulungsinhalte finden Sie auf unserer Schulungsseite.
Wir freuen uns auf Ihren Besuch!
Dieser Artikel wurde ursprünglich von Philip Haas geschrieben.
Wichtige Updates – Erste Tests mit CentOS 7 und mögliche Auswirkungen
Das aktuelle Thema Meltdown und Spectre wurde in einem vorhergehenden Artikel bereits ausführlich besprochen. Dort gab es erste kleine Tests mit dem Auswirkungen von den relevanten Securitypatches auf die Geschwindigkeit des Systems. Kernelentwickler hatten bereits darauf hingewiesen, dass unter Umständen mit 5 bis 30 Prozent Geschwindigkeitseinbußen zu rechnen ist.
Es gab einige Fragen zu den Auswirkungen in CentOS 7, da einige der Securitypatches in den Kernel portiert wurden (und damit logischerweise auch in RHEL 7 zu finden sind). CentOS 7 bietet mit dem Kernel 3.10.0-693.11.6 einen aktuellen Patchlevel mit aktuellen Fixes für die beschriebenen Sicherheitsproblemen an, unter anderm auch die Backports für Kernel Page Tables Isolation (KPTI). Um vollständig alle Sicherheitsprobleme zu beheben, muss ferner die Aktualisierungen des Microcodes eingespielt werden (microcode_ctl-2.1-22.2). Red Hat hat hier einen entsprechenden Artikel online gestellt, der die Änderungen erläutert.
Ist das System nach aktuellem Kenntnisstand geschützt, kann dies über die jeweiligen debugfs Einträge abgefragt werden:
$ cat /sys/kernel/debug/x86/ibrs_enabled 0 $ cat /sys/kernel/debug/x86/ibpb_enabled 0 $ cat /sys/kernel/debug/x86/pti_enabled 1
Auf dem verwendeten virtuellen Testsystem waren IBRS und IBPB jeweils 0, da auf dem Host auch die relevanten Microcode Updates noch nicht zur Verfügung standen. Insbesondere die Variante 2 (Spectre, Branching Poisoning Attack) soll mit IBPB dann auch nicht mehr möglich sein. Ob und wie alle Einträge tatsächlich aktiviert sind, hängt von der verwendeten Plattform ab. Der Red Hat Artikel bietet hier ebenfalls eine Übersicht über die möglichen Konstellationen. Ein Folgeartikel wird sich mit den jeweiligen unterschiedlichen Einstellungen noch beschäftigen und die Performancemessungen hierfür ebenfalls wiederholen.
Mit den obigen Einstellungen für IBRS und IBPB ist das Testsystem gegen die Varianten 1 (Spectre mit Branch Bounds-checking exploit) und Variante 3 (Meltdown, Speculative Cache Loading) geschützt.
Die folgenden Messungen wurden im Vergleich mit dem vorhergehenden Patchlevel 3.10.0-693.11.1 durchgeführt, um die Auswirkungen zu testen.
Die Messungen
Wie alle Messungen sind die Zahlen im folgenden natürlich spezifisch für die verwendete Umgebung. Die Messungen sollen nicht prinzipiell die Leistungsfähigkeit demonstrieren, sondern die Auswirkungen von Änderungen im Kernel zeigen. Als Benchmark dient erneut der PostgreSQL®-eigene Benchmark pgbench mit PostgreSQL® HEAD vom 05.01.2018. Die Tests wurden auf einer CentOS 7 (7.4.1708) VM durchgeführt, ebenfalls jeweils mit 4 und 8 vCPUs. Anders als in den Tests auf der Fedora 27 Instanz standen jedoch 8 GByte RAM zur Verfügung, allerdings sollte das im wesentlichen keine Auswirkungen auf die Messung haben. pgbench wurde zunächst mit 16 Verbindungen und einem pgbench Thread gestartet. Der Testlauf hier ist SELECT-only.
Der ältere Kernel bietet bei dieser Teststellung bei 4 vCPUs ca. 10%, bei der Verwendung doppelt sovieler Prozessoren ca. 5% mehr Durchsatz (41045 zu 37050 respektive 53712 zu 51365 Transaktionen pro Sekunde). pgbench bietet auch die Möglichkeit, mehrere Threads für den Benchmark zu nutzen. Die folgende Teststellung verwendet für jede Datenbankverbindung einen eigenen Thread (Schalter -j für pgbench):
Der Vergleich verwendet jeweils 8 vCPUs und stellt die Durchsatzraten mit Prepared Statements (Schalter -Mprepared für pgbench) und normale Statements gegenüber (letzteres ist der Standard für pgbench). Hier ergibt sich sogar ein winziger Performancevorteil für den neuen Kernel mit den sicherheitsrelevanten Patches, dieser liegt zwischen 1 und 2%. Damit liegen diese bei diesem Benchmark quasi gleichauf. pgbench unterstützt die Möglichkeit benutzerdefinierte Skripte auszuführen die es gestattet, eigene SQL Befehle für einen Testlauf zu benutzen. KPTI hat seinen größten Geschwindigkeitsnachteil theoretisch bei Workloads, wo sehr viele Context Switches und Systemaufrufe stattfinden. Im folgenden wird ein unrealistisches Szenario getestet, indem pgbench mit den identischen Laufzeitparametern zu den vorhergehenden Testfällen immer ein
SELECT 1;
verwendet. Das Ergebnis stellt sich wie folgt dar:
Der Einbruch gegenüber dem Kernel mit KPTI ist hier deutlich. Er verliert knapp 16% gegenüber dem Kernel ohne die entsprechenden Fixes, in Zahlen sind es 167352 (3.10.0-693.11.1) gegenüber 147947 (Kernel 3.10.0-693.11.6) Transaktionen pro Sekunden.
Das ganze lässt sich noch weitertreiben, in dem gar keine Abfrage mehr ausgeführt und man daher Parser und alles nachgelagerte der Datenbank außen vor lässt. Man erreicht dies, indem pgbench lediglich ein „;“ als SQL-Skript vorgesetzt bekommt. Dies stresst hauptsächlich nur noch das System selbst, da die Datenbank im Endeffekt nichts mehr zu tun hat und lediglich Prozesse forked. Das Resultat gestaltet sich dann wie folgt:
In absoluten Zahlen stehen hier im Schnitt 254574 zu 230021 (Kernel 3.10.0-693.11.1 sowie 3.10.0-693.11.6) gegenüber. Dies entspricht 10% weniger Durchsatz im Falle des neuen Kernels. Interessant ist auch der Vergleich, falls die CPU und der verwendete Kernel kein PCID (Process-Context Identifiers) bieten. Dies bedeutet in den meisten hier getesteten Fällen einen deutlichen Einbruch der Durchsätze. Der Testfall mit pgbench und 16 Datenbankverbindungen SELECT-only (ohne Prepared Statements) mit jeweils einem eigenem pgbench Thread ergibt im Vergleich:
Im Vergleich zum Kernel ohne KPTI hat das Fehlen der Unterstützung von PCID einen Einbruch um ca. 7% zur Folge (56232 im Vergleich zu 52757 Transaktionen pro Sekunde). Noch deutlicher fällt das Resultat im Vergleich des „noop“-Benchmarks aus. Hier beträgt der Unterschied zwischen dem Kernel ohne KPTI, mit KPTI und dem Fehlen von PCID jeweils 10% und 16%:
Interessant bei diesen Vergleichen ist noch der Einfluss von schreibenden Transaktionen. Hierzu wurde pgbench anstatt im SELECT-only Modus (Schalter -S) im TPC-B Workload getestet. Der beobachtete Trend der Geschwindigkeitseinbußen von moderat beim Kernel mit KPTI Unterstützung hin zu bemerkenswert lässt sich auch hier beobachten:
Fazit
In den getesteten Fällen mit pgbench zeigt sich, dass die von den Kernelentwickler pauschal angegebenen Einbußen beim Kernelupgrade durchaus realistisch sind. Allerdings kann nicht pauschal eine spezifische Zahl genannt werden, da die Einbrüche sehr stark abhängig vom Workload sind. pgbench an sich ist bereits ein sehr synthetischer Workload, der zwar die Datenbank stark stressen kann, allerdings mit der realen Welt sehr wenig gemein hat. Selbst hier bedarf es stark unrealistischer Benchmarkkonfigurationen, um die Einbrüche in den genannten Bereichen tatsächlich aufzuzeigen, nie wurde aber der Worstcase von 30 % tatsächlich erreicht. Dies bedeutet nicht, dass es den Workload mit diesen Geschwindigkeitseinbußen tatsächlich nicht gibt. Eher unterstreichen die von uns ermittelten Ergebnisse die Bedeutung von eigenen, möglichst Anwendungsnahen Tests, die spezifisch den eigenen Workload und etwaige zu erwartende Einbußen überprüfen. In der Mehrzahl pendeln sich die Unterschiede zu Ungunsten des CentOS7 Kernels mit Sicherheitspatches in etwa bei 5% ein, es können jedoch durchaus mehr sein. Besonders wenn die Unterstützung von PCID von der Plattform nicht gewährleistet wird, so kann dies deutlich höhere Einbußen nach sich ziehen, bis zu 16% in den hier gezeigten Teststellungen.
Mit Beginn des Jahres 2018 wurden Probleme mit dem Speichermanagement und Intel-Prozessoren öffentlich. Laut diesen Reports ist es offensichtlich möglich, beliebige Bereiche des Kernel- und Userspace Speicherbereiches auszulesen und damit unter Umständen auf sensitive Bereiche zugreifen zu können.
Im Laufe der letzten Tage gab es einige Gerüchte und Vermutungen, in welche Richtung dies alles geht, mittlerweile gibt es ein offizielles Statement der Hacker von Project Zero (Google), die die Erkenntnisse zusammenfassen.
Was ist genau passiert?
Im wesentlichen wurden Angriffsvektoren identifiziert, die über die nicht erfolgreiche, spekulative Ausführung von Code auf einem Prozessor und geschicktes Timing privilegierte Informationen trotz fehlender Berechtigung aus dem Cache der CPU auslesen kann. Hierbei ist es möglich, trotz der fehlenden Berechtigung (sei es aus dem User- oder innerhalb des Kernelspace) Speicherbereiche zu lesen und deren Inhalte zu interpretieren. Dies ermöglich theoretisch breitflächige Einfallstore für Schadsoftware, wie etwa das Ausspionieren sensibler Daten oder der Mißbrauch von Berechtigungen. Man spricht hier von sogenannten Side Channel Attacks. Betroffen sind nach aktuellem Kenntnisstand nicht nur Intel CPUs (von denen man ausschließlich ursprünglich ausging), sondern auch AMD CPUs, ARM sowie POWER8 und 9 Prozessoren.
Was genau geschieht aktuell?
Project Zero fasst im Report die wesentlichen Probleme zusammen. Es existieren mehrere Exploits die mit unterschiedlichen Ansätzen privilegierte Speicherbereiche lesen und damit unberechtigterweise an Informationen in sensiblen Bereichen des Kernels oder anderer Prozesse gelangen können. Da fast alle modernen CPUs die spekulative Ausführung von Anweisungen unterstützen, um ein Leerlaufen ihrer Ausführungseinheiten und damit verbundene hohe Latenzen zu verhindern, sind eine Vielzahl von Systemen theoretisch betroffen. Ein weiterer Ansatzpunkt dieses Angriffsszenarios ist die in aktuellen Systemen vorhandene Art und Weise, wie die Speicherbereiche von User- und Kernelspace interagieren. Tatsächlich war es bisher so, dass diese Speicherbereiche nicht wirklich voneinander getrennt sind, sondern der Zugriff auf diese Bereiche mit einem speziellen Bit abgesichert sind. Der Vorteil dieser nicht vorhandenen Trennung sind insbesondere dann tragend, wenn beispielsweise häufig von User- auf Kernelspace umgeschaltet werden muss.
Die Angriffsszenarien im Einzelnen sind:
- Spectre
Dieses Angriffsszenario nutzt die in modernen CPUs vorhandene Branch Prediction, d.h. Vorabanalyse über die Wahrscheinlichkeit dass bestimmter Code bzw. -zweige erfolgreich ausgeführt werden können. Hierbei wird die CPU dazu verleitet eigentlich von der Vorhersage nicht berücksichtigten Code spekulativ auszuführen. Diese Attacke kann dann benutzt werden, um schadhaften Code auszuführen. Diese Attacke funktioniert theoretisch auf allen CPUs mit entsprechender Sprungvorhersage, allerdings ist es laut Project Zero hier schwer zusammenfassend zu sagen welche Prozessoren in welcher Art betroffen sind. Spectre hat vor allem Anwendungen im Userspace im Fokus. Da Spectre hauptsächlich dann funktioniert, wenn bereits fehlerhafter Code in entsprechenden Anwendungen vorhanden ist, sollte besonders auf entsprechende Updates geachtet werden.
- Meltdown
Bei Meltdown wird nun die spekulative Ausführung genutzt, um Code auszuführen, der eigentlich gar nicht final erreicht werden kann. Dies sind hier Exception-Anweisungen mit nachfolgenden Instruktionen, die nie ausgeführt würden. Durch die spekulative Ausführung der CPU werden diese Instruktionen dennoch von der CPU berücksichtigt. Zwar gibt es keine Seiteneffekte durch diese Art der Ausführung, dennoch verbleiben die von der Instruktion belegten Speicheradressen im Cache der CPU und können von dort genutzt werden, um alle Speicheradressen zu testen. Da aktuell der Speicherbereich des Kernels und des Userspaces gleichermaßen zusammenhängend organisiert sind, kann so nicht nur der gesamte Speicherbereich des Kernels, sondern auch aller auf dem System laufenden Prozesse ausgelesen werden. Eine detaillierte Beschreibung der Funktionsweise des Angriffs ist hier zu finden. Meltdown funktioniert nur auf Intel Prozessoren, da nur hier die Privilegien auf den adressierten Speicherbereich bei Out-Of-Order Ausführung nicht mehr geprüft werden.
Beide Szenarios machen sich auf unterschiedliche Art und Weise die entsprechenden Sicherheitslücken zunutze. Die CVEs zu den Lücken sind im einzelnen:
Wie geht es weiter?
Um Meltdown-Attacken vorzubeugen gibt es für Linux, Windows und OSX bereits entsprechende Updates (Letzteres enthält entsprechende Änderungen bereits seit geraumer Zeit. Im wesentlichen trennen diese Updates die Speicherverwaltung für den Kernel- und Userspace völlig auf (unter Linux bekannt als KPTI-Patches, Kernel Page Table Isolation, formals auch KAISER). Hierdurch ist es nicht mehr möglich, durch die Privilege Escalation auf Intelprozessoren auf Speicherbereiche des Kernels ausgehend eines unprivilegierten Kontextes zuzugreifen. RedHat stellt diese ebenso wie CentOS und Fedora bereits mit aktualisierten Kerneln zur Verfügung.
Insbesondere die Meltdown-Attacken werden hierbei wirkungsvoll unterdrückt, für Spectre-Attacken selbst gibt es ausgehend der aktuellen Sachlage keine belastbaren, wirkungsvollen Maßnahmen. Wichtig ist jedoch, dass im Linuxkernel eBPF und die entsprechende Ausführung vom BPF-Code im Kernel deaktiviert wird.
sysctl -a | grep net.core.bpf_jit_enable
sysctl net.core.bpf_jit_enable=0
Die Änderung setzt „root“-Berechtigungen voraus.
Geschwindigkeit aktualisierter Kernel
Durch die Trennung der Speicherverwaltung für Kernel- und Userspace werden Kontextwechsel und Systemaufrufe teurer. Dies sorgt für deutlich höhere Latenzen, insbesondere wenn die Anwendung sehr viele Kontextwechsel (beispielsweise Netzwerkommunikation) verursacht. Die Einbußen hierbei sind schwierig zu bemessen, da nicht jeder Workload wirklich identische Zugriffsmuster zugrunde legt. Für kritische Systeme empfehlen sich daher Lasttests auf identischen Testsystemen falls möglich. Falls nicht möglich sollten die Lastparameter nach der Aktualisierung des Systems sorgfältig beobachtet werden. Man nimmt pauschal Geschwindigkeitseinbußen im Rahmen 5% an, letztendlich wurden jedoch auch Tests der Kernelentwickler mit bis zu 30% Einbußen beobachtet. Da die Page Table Isolation (bis jetzt) nur für x86_64 Architekturen verfügbar ist, treffen diese Zahlen tatsächlich nur auf Maschinen mit Intel Prozessoren zu. Tatsächlich wird KPTI vom Kernel Upstream standardmässig nicht für AMD aktiviert.
Ob KPTI aktiviert ist, lässt sich per Kernel-Log ermitteln:
dmesg -T | grep "page tables isolation"
[Fr Jan 5 10:10:16 2018] Kernel/User page tables isolation: enabled
Insbesondere Anwender von Datenbanken sind hier sensitiv, da zum Beispiel Systeme wie PostgreSQL® in der Regel eine hohe Anzahl Context Switches bei hoher Last verursachen. Bei credativ haben wir den Impact auf einem kleinen virtualisierten System klassifiziert. Grundlage ist ein Fedora 27 System als KVM-Gast mit 4 GByte RAM und schnellem NVMe-Speicher als Grundlage. Dies spielt bei diesem Test jedoch eher ein unbedeutende Rolle, da die mit pgbench durchgeführten Datenbanktests lediglich eine Größe von knapp 750 MByte hat. Der Shared Buffer Pool der PostgreSQL® Instanz war mit 1 GByte so konfiguriert, dass die komplette Datenbank in den Datenbankcache passt. Die Tests wurden jeweils mit 4 und 8 virtuellen Prozessoren durchgeführt. Das Hostsystem verfügt über einen Intel Core i7-6770HQ Prozessor.
Die größte Auswirkung ist zu beobachten, wenn PCID im Kernel nicht vorhanden bzw, deaktiviert ist. PCID ist eine Optimierung, die einen Flush des Translation Lookaside Buffers (TLB) verhindert, wenn ein Context Switch erfolgt. Virtuelle Speicheradressen werden nur dann erfolgreich per TLB aufgelöst, wenn die PCID zum aktuellen Thread auf der jeweiligen CPU passt. PCID steht ab kernel 4.14 zur Verfügung. Der Test vergleicht einen Entwicklerkernel mit Page Table Isolation (PTI) 4.15.0-rc6, aktuellen Fedora Upstreamkernel mit und ohne Sicherheitspatches. PTI kann deaktiviert werden, indem man dem Kernel mittels pti=off beim Booten ein entsprechendes Argument definiert.
Das Fedora Testsystem hat bereits einen sehr aktuellen Kernel (4.14). Der Unterschied zum alten Upstreamkernel 4.14.8 ohne Sicherheitsrelevante Patches beträgt zum neuen Kernel 4.14.11 ca. 6%. pgbench liefert dann folgende Durchsatzraten (Transaction per second):
Legt man den ehemaligen Standardkernel 4.14.8 von Fedora 27 mit 100% zugrunde, ergibt sich folgendes Bild:
Die PostgreSQL® Community hat ebenfalls bereits kleinere Tests zum Messen der Auswirkungen durchgeführt. Die Ergebnisse decken sich mit unseren Erkenntnissen. Der neue Kernel 4.14.11 mit den relevanten Patches bietet in etwa diesselbe Performance wie der Entwicklerkernel 4.15.0-rc6 auf dieser Plattform. 4.14.11 ist in diesen Testcases sogar teilweise vor dem alten Upstreamkernel (8 vCPU, Vergleich 4.14.8, grün und 4.14.11, braun). Allerdings liegt der Vorteil hier bei knapp über 1%, so dass man hier eher davon ausgehen kann, dass bei dieser Teststellung keine großen Geschwindigkeitsunterschiede bestehen.
Für Interessierte gibt es zudem eine eigene Seite zu dem Thema. Diese fasst alle wesentliche Informationen zusammen. Empfehlenswert ist auch die Zusammenfassung des Journalisten Hanno Böck auf github, die eine sehr gute Liste aller Patches für Meltdown und Spectre bietet.
Dieser Artikel wurde ursprünglich von Bernd Helmle geschrieben.
PostgreSQL®-Hardware-Appliances von Thomas-Krenn und credativ
Freyung / Mönchengladbach, 28.11.2017 – Die Thomas-Krenn.AG stellt vier Server-Appliances für den Einsatz des Open-Source-Datenbanksystems PostgreSQL® im Mittelstand und Enterprise-Bereich vor. Dabei handelt es sich um je zwei Systeme auf Intel-Xeon-Basis und zwei auf der OpenPower-Plattform mit POWER8-CPUs. Die Server werden mit der vorinstallierten Software-Appliance „Elephant Shed“ ausgeliefert, die eine vollständige Betriebsumgebung des Datenbanksystems bereitstellt. Den in der Appliance enthaltenen Software Support leistet das Mönchengladbacher Unternehmen credativ, das auch hinter der Entwicklung von Elephant Shed steht.
Die vier Systeme sind auf bestes Preis/Performance-Verhältnis für PostgreSQL® optimiert und wurden gemeinsam mit credativ konzipiert und getestet. Die Version 1.0 der Software-Appliance Elephant Shed ist genau auf diese Hardware abgestimmt. Sie integriert führende Open-Source-Lösungen für Database Monitoring und Alerting, Backup sowie System- und DBMS-Verwaltung. Den Anwendern steht damit ein Gesamtsystem zur Verfügung, das sich schnell und einfach in Betrieb nehmen lässt und kontinuierlich Updates und Security Patches erhält. Sämtliche Software-Komponenten sind Open Source; für den Anwender fallen weder Lizenz- noch Subskriptionskosten an.
Bereits die Hardware der Medium-Konfiguration mit Intel E5-2690v4 CPU mit 14 Cores deckt ein breites Spektrum an Datenbankanwendungen ab. Vier Intel Data Center SSDs dienen dort zum Speichern der Daten. Die High-End-Variante mit zwei Intel Xeon E5-2695v4 CPUs und insgesamt 36 CPU Cores, 512 GB RAM und acht SSDs ist für umfangreiche Datenbank-Anwendungen mit höchsten Ansprüchen an die Performance konzipiert. Die Systeme auf OpenPower-Basis sind hinsichtlich RAM und Storage identisch konfiguriert. Als CPU kommt hier ein 3,325 GHz POWER8 von IBM mit acht Cores und 64 Hardware-Threads zum Einsatz.
Bei unternehmenskritischen Datenbanken muss Service und Support durch kompetente Anbieter sichergestellt sein. Thomas-Krenn und credativ leisten deshalb umfassenden Support für Hard- und Software. Zusätzlich zum Hardware-Support von Thomas-Krenn übernimmt credativ den Support für sämtliche Software-Komponenten der Appliance. Im Gegensatz zu vielen anderen Anbietern koppelt credativ Supportleistungen nicht an bestimmte Hardware. Der Basis-Support plus zwei Inklusiv-Stunden pro Monat kann also für eine beliebige Anzahl von Appliances verwendet werden. Flexible Erweiterungen des Support-Kontingents, beispielsweise 24/7 Support, oder PostgreSQL®-Schulungen, lassen sich problemlos hinzubuchen.
„Unsere Kunden lieben Open Source; auch und gerade bei Datenbank-Systemen, da hier einzelne proprietäre Anbieter die Lizenzschraube immer weiter anziehen. Dem Markt die passenden, attraktiven Open-Source-Angeboten zur Verfügung zu stellen, ist ein fester Bestandteil unserer Mehrwert-Strategie“, so Dr. David Hoeflmayr, CEO der Thomas- Krenn.AG, „Das geht nicht ohne Partner. Die credativ GmbH mit ihrer konsequenten Ausrichtung auf Open Source Software, langjähriger Expertise im PostgreSQL®-Umfeld und seinem fairen, transparenten Support-Modell ist für uns der ideale Partner, um Open-Source-Datenbanksysteme für Mittelstand und Enterprise-Kunden anzubieten.“
Sascha Heuer, Geschäftsführer der credativ GmbH ergänzt: „Die credativ GmbH ist für Ihre klare und konsequente Open Source Strategie international bekannt. Daher freue ich mich sehr, dass wir nun diese Partnerschaft ins Leben rufen konnten, denn auch die Thomas-Krenn AG engagiert sich seit vielen Jahren sehr stark im Open Source Umfeld. Unsere gemeinsame PostgreSQL® Appliance ist in Ihrer Art wahrscheinlich einmalig, und zeigt in eindrucksvoller Weise den enormen Mehrwert von wirklich freien Open Source Projekten. Im Unterschied zu anderen Projekten haben wir uns ganz bewusst für eine vollständig freie Lösung entschieden, die mit keinerlei Lizenz- oder Subskriptionskosten versehen ist und einen Vendor-Lock vollständig vermeidet.“
Über die credativ GmbH:
Die credativ GmbH ist ein herstellerunabhängiges Beratungs- und Dienstleistungsunternehmen mit Standorten in Mönchengladbach und München, sowie Schwesterunternehmen in USA, Indien, Spanien und den Niederlanden. Bereits seit 1999 fokussiert sich die credativ GmbH vollständig auf die Planung und Realisierung professioneller Businesslösungen unter Verwendung von Open Source Software. Seit Mai 2006 betreibt die credativ GmbH das deutsche Open Source Support Center (OSSC) und bietet damit einen professionellen 24×7 Enterprise Support für zahlreiche Open Source Projekte. Darüber hinaus leistet das deutsche PostgreSQL® Competence Center mit seinem dedizierten Datenbank-Team einen umfassenden Service für das objektrelationale Datenbanksystem PostgreSQL®. In Deutschland beschäftigt die credativ GmbH 50 Mitarbeiter.
Über die Thomas-Krenn.AG:
Die Thomas-Krenn.AG ist ein führender Hersteller individueller Server- und Storage-Systeme sowie Anbieter von Lösungen rund um das Rechenzentrum. Zu den mehr als 15.000 Kunden aus ganz Europa gehören Großkonzerne, öffentliche Verwaltung, IT-Dienstleister, Bildungseinrichtungen sowie eine Vielzahl kleiner und mittelständischer Unternehmen. Der Onlineshop der Thomas-Krenn.AG bietet Kunden eine europaweit einzigartige Möglichkeit, in kürzester Zeit maßgeschneiderte Server mit geprüften Komponenten zu konfigurieren und bereits am nächsten Tag zu installieren. Das Unternehmen produziert mit derzeit 150 Mitarbeitern alle Server in Deutschland am Standort Freyung. Seit ihrer Gründung im Jahr 2002 weist die Thomas-Krenn.AG ein stetiges Wachstum aus eigener Kraft auf.
Weitere Informationen:
https://www.thomas-krenn.com/de/loesungen/postgresql.htm
https://www.credativ.de/elephant-shed
https://elephant-shed.io/de/
Kontakt credativ GmbH:
credativ GmbH
Trompeterallee 108
41189 Mönchengladbach
www.credativ.de
Pressekontakt:
Michael Amstadt, Leiter Marketing/Vertrieb DACH
Telefon: +49 2166 9901-160
Telefax: +49 2166 9901-100
E-Mail: michael.amstadt@credativ.de
Weitere Informationen:
Sascha Heuer, Geschäftsführer
Telefon: +49 2166 9901-0
Telefax: +49 2166 9901-100
E-Mail: sascha.heuer@credativ.de
Kontakt Thomas-Krenn.AG:
Thomas-Krenn.AG
Speltenbach-Steinäcker 1
94078 Freyung
www.thomas-krenn.com
Ulrich Wolf
Telefon: +49 8551 9150-721
E-Mail: presse@thomas-krenn.com
Dieser Artikel wurde ursprünglich von Philip Haas geschrieben.
















