Deepflow(deepflow韩国)

基于 Prometheus mysqldexporter[1] 的 MySQL 监控方案大家都很熟悉,Grafana 也推出了相关的 MySQL Dashboard[2] 来监控 MySQL 服务的状态。但是 Prometheus 的方案具有较强的侵入性,需要配置专用账号访问数据库,从 MySQL 上获取需要监控的指标数据,这对权限管控严格的运维团队来说无疑不是一个友好的选择。同时,Prometheus 获取的数据限于 MySQL 服务本身,依然解答不了谁的请求有异常、谁的访问超时了等问题。

意识到这些不足之后,我们基于 DeepFlow 构建了一个高效、可配置、无侵入的 MySQL 监控面板,可监控 MySQL 服务的网络时延、吞吐、异常,以及 SQL 性能问题,以快速定位性能瓶颈和排查故障原因。部署了 DeepFlow 之后,deepflow-agent 会自动采集所在节点上的可观测数据,我们基于这些数据构建了一个 Dashboard,内容包括:

OverviewConnectionsDelayErrorThroughputSQL Analysis

前往我们的在线 Demo[3] 也可快速体验 Dashboard。

01|Dashboard 介绍

进入 Dashboard ,我们配置了如下变量,分别对应不同部署方案下的数据库服务:

Deepflow(deepflow韩国)

variables

在 K8s 上部署的数据库服务,可用 cluster 和 db_service 变量组合,切换到目标数据库,其中,db_service 变量假定了数据库服务的 workload 名字包含 sql 字样,使用者可根据实际情况修改变量值,我们下个版本也会支持在 Dashboard 上通过变量配置服务名,以更方便地使用这个 Dashboard:

Deepflow(deepflow韩国)

cluster

Deepflow(deepflow韩国)

db_chost

使用云数据库,可用 db_ip 变量通过 IP 切换到目标数据库,并且支持输入网段:

Deepflow(deepflow韩国)

db_ip

在右侧,我们用 统计位置[4] 可查看不同视角下的监控信息,比如我们的默认值 tap_side = 客户端网卡,我们看到的就是在客户端处采集到的对外连接数据库的监控情况。

Deepflow(deepflow韩国)

tap_side

最后,我们有个 client_for_SQL_Analysis 变量,它仅对 SQL_Analysis 面板生效,可用于快速分析具体某个应用的业务情况。

Deepflow(deepflow韩国)

server_side_connection

第二个是客户端视角:从客户端分组看,我们发现保持连接的客户端中,大部分客户端都保持了平稳的连接。

Deepflow(deepflow韩国)

Throughput

结合错误、时延、吞吐来分析,我们发现了吞吐高、时延高的应用,可能就是本次故障发生的原因。然后,我们使用 *deepflow-server* 作为查询变量,输入到 client_for_SQL_Analysis 变量中,分析一下这个应用的 SQL:

Deepflow(deepflow韩国)

SQL Analysis Left

从 SQL Delay 时序图来看,部分 SQL 查询的时延甚至达到了 15 ms。结合右侧的 SQL 分析 ,我们也定位到了时延高的 SQL 以及没有限制返回数、设计不合理的 SQL,部分 SQL 的查询结果明显不在我们预期之内。

Deepflow(deepflow韩国)

SQL Analysis Full

最后,我们还可以通过 Distributed Tracing,对时延大于 10ms 的 SQL 发起追踪,看看时间到底耗费在网络层还是应用层。

Deepflow(deepflow韩国)

Distributed Tracing

至此,我们从网络请求、时延、错误及异常、吞吐量以及最后的 SQL 分析,完整地完成了一次 MySQL 故障定位,我们知道了哪个应用有异常、有什么异常、甚至具体到哪个业务发生了异常。得益于 DeepFlow 的 AutoTracing、AutoMetrics、AutoLogging、AutoTagging 核心机制,我们可以从应用角度快速分析 MySQL 服务的调用拓扑、性能指标、访问日志、调用链追踪。 而且在全过程中,我们没有访问过一次数据库,对进行中的业务没有任何影响。

03|后续规划

我们目前在制作一批 Dashboard,包括:Nginx、MySQL/PostgreSQL、HTTP、Dubbo/gRPC、Kafka/MQTT、TCP/UDP/IP、DNS 等,希望能带来社区高度自动化、高精度的可观测性体验,期待有社区的小伙伴能加入一起。

04|什么是 DeepFlow

DeepFlow[5] 是一款开源的高度自动化的可观测性平台,是为云原生应用开发者建设可观测性能力而量身打造的全栈、全链路、高性能数据引擎。DeepFlow 使用 eBPF、WASM、OpenTelemetry 等新技术,创新的实现了 AutoTracing、AutoMetrics、AutoTagging、SmartEncoding 等核心机制,帮助开发者提升埋点插码的自动化水平,降低可观测性平台的运维复杂度。利用 DeepFlow 的可编程能力和开放接口,开发者可以快速将其融入到自己的可观测性技术栈中。

GitHub 地址:https://github.com/deepflowys/deepflow

访问 DeepFlow Demo[6],体验高度自动化的可观测性新时代。

参考资料

[1] mysqldexporter:

[2] MySQL Dashboard:

[3] 在线 Demo:

[4] 统计位置: https://deepflow.yunshan.net/docs/zh/auto-metrics/metrics-without-instrumentation/#统计位置说明

[5] DeepFlow:

[6] DeepFlow Demo:https://deepflow.yunshan.net/docs/zh/install/overview/

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。