我在云中的 kubernetes 中运行了一些容器,它们正在 prem db 服务器上进行查询,我有兴趣了解 db 的延迟如何影响应用程序。我该如何监控/记录这些内容?
答案1
假设我只想绘制 SGBD 响应时间图,我可以设置一些 Pod,它会循环查询我的数据库,并将一些结果输出到其 stdout,...某种time mysql <cmd-args>
。然后,我将使用 prometheus 库公开这些指标(或 munin、collectd,...任何适合您的生态系统的东西)。
假设我对 SQL 内部指标感兴趣,我可以在 Kubernetes 上部署一些 mysql 导出器,查询远程 SGBD。不过我怀疑您是否有大量有关链接延迟的数据。
假设我对 MySQL 本身不太感兴趣,而是对站点到站点的延迟感兴趣,我可以使用类似 smokeping 的工具来绘制响应时间。更好的方法是:进行某种 TCP 检查,不一定查询 MySQL,而是测量建立 TCP 握手所需的时间。
不过,理想的情况是您的应用程序测量这些时间。响应缓慢可能是由于距离、硬件故障或软件故障造成的。跟踪查询时间和查询数据可能是有意义的,因为您可能能够精确定位可以优化的查询……
哦,显然,Istio、Service Meshes……往往会附带许多工具来帮助您跟踪执行时间、数据流……