クラウドの Kubernetes で実行されているコンテナがいくつかあり、これらはオンプレミスの DB サーバーでクエリを実行しています。DB からのレイテンシがアプリにどのような影響を与えているかを確認したいと考えています。これを監視/ログに記録するにはどうすればよいですか?
答え1
SGBD の応答時間をグラフ化したいだけであれば、ループでデータベースをクエリし、その結果を stdout に出力する Pod を設定できます。time mysql <cmd-args>
次に、それらのメトリックを公開する Prometheus ライブラリ (または munin、collectd など、エコシステムに適合するもの) を使用します。
SQL の内部メトリックに興味があると仮定すると、Kubernetes にいくつかの mysql エクスポーターをデプロイして、リモート SGBD をクエリすることができます。ただし、リンクの遅延に関するデータはそれほど多くないのではないかと思います。
MySQL 自体にはあまり興味がなく、むしろサイト間のレイテンシに興味があると仮定すると、応答時間をグラフ化する smokeping のようなものを使用できます。より良いのは、必ずしも MySQL をクエリするのではなく、TCP ハンドシェイクを確立するために必要な時間を測定する、ある種の TCP チェックです。
ただし、理想的なのは、アプリケーションでそれらの時間を測定することです。応答が遅いのは、距離、ハードウェア障害、ソフトウェアの不具合などが原因である可能性があります。クエリ時間とクエリされたデータの両方を追跡すると、最適化できるクエリを特定できる可能性があるため、意味があるかもしれません。
ああ、もちろん、Istio、サービス メッシュなどには、実行時間、データ フローなどを追跡するのに役立つツールが多数付属しています。