Ich habe einige Container, die in Kubernetes in der Cloud laufen. Diese führen Abfragen auf lokalen Datenbankservern durch. Mich interessiert, wie sich die Latenzen der Datenbanken auf die App auswirken. Wie kann ich das überwachen/protokollieren?
Antwort1
Angenommen, ich möchte nur die SGBD-Antwortzeiten grafisch darstellen, könnte ich einen Pod einrichten, der meine Datenbank in einer Schleife abfragt und ein Ergebnis an seine Standardausgabe ausgibt, … eine Art time mysql <cmd-args>
… Dann würde ich eine Prometheus-Bibliothek verwenden, die diese Metriken offenlegt (oder Munin, Collectd, … was auch immer in Ihr Ökosystem passt).
Vorausgesetzt, ich bin an internen SQL-Metriken interessiert, könnte ich einen MySQL-Exporter auf Kubernetes einsetzen und einen Remote-SGBD abfragen. Ich bezweifle jedoch, dass Sie viele Daten zur Link-Latenz haben würden.
Vorausgesetzt, ich interessiere mich nicht so sehr für MySQL selbst, sondern eher für die Latenz zwischen den Sites, könnte ich etwas wie Smokeping verwenden, um Antwortzeiten grafisch darzustellen. Besser: eine Art TCP-Prüfung, die nicht unbedingt MySQL abfragt, sondern eher misst, wie lange Sie für einen TCP-Handshake benötigen würden.
Der Idealfall wäre jedoch, wenn Ihre Anwendung diese Zeiten messen würde. Langsame Antworten könnten auf die Entfernung, aber auch auf Hardwarefehler oder Softwarefehler zurückzuführen sein. Es könnte sinnvoll sein, sowohl Abfragezeiten als auch abgefragte Daten zu verfolgen, da Sie so möglicherweise Abfragen identifizieren können, die optimiert werden können, ...
Oh, und natürlich werden Istio, Service Meshes usw. in der Regel mit zahlreichen Tools geliefert, die Ihnen dabei helfen, Ausführungszeiten, Datenflüsse usw. zu verfolgen.