Grafana 如何帮助 PingCAP 解决 TiDB 部署问题
PingCAP 由三位基础设施工程师于 2015 年创立,是 TiDB 背后的公司。TiDB 是一款专为水平伸缩性、强一致性和高可用性设计的混合事务/分析处理 (HTAP) 数据库,其源代码托管在 GitHub 上。
成长的烦恼
TiDB 在 GitHub 上拥有超过 13,000 个星标和近 200 位贡献者,是全球最受欢迎的开源数据库项目之一,并且仍在不断发展。
事实上,大约两年前,PingCAP 发现其系统已大幅增长,需要一套强大的监控解决方案。PingCAP 国际化负责人 Queeny Jin 表示:“我们有数百个指标来监控我们的系统,我们需要理解这些指标才能有效诊断集群中的问题。”
团队尝试了 StatsD,但“很快就放弃了”,转而使用 Prometheus 来收集监控和性能数据。Queeny 表示:“Prometheus 功能强大且易于使用,而且是用 Go 语言编写的,因此我们可以轻松为其贡献代码。”作为 Prometheus 首选的可视化层,Grafana 自然成为显示系统指标的简单选择。Queeny 说:“使用起来很自然也很简单,因为 Prometheus 和 Grafana 的组合是一个流行的监控技术栈。我们使用 Prometheus 从 TiDB 数据库集群拉取指标,然后在 Grafana 中展示它们。”
在大多数情况下,用户依靠 Grafana 直观且信息丰富的仪表盘来获取洞察,而不是查看详细日志。
Queeny Jin,PingCAP 国际化负责人
快速定位问题的核心
Queeny 说,部署到位后,使用 Grafana 进行故障排除变得简单多了。她表示:“它每天都帮助我们为用户诊断和解决 TiDB 集群的问题。基本上,我们将所有重要指标收集到一个概览仪表盘中,这样我们就能轻松找出出现的任何问题。在大多数情况下,用户依靠 Grafana 直观且信息丰富的仪表盘来获取洞察,而不是查看详细日志。”
这是一个巨大的优势,因为典型的 TiDB 集群包含超过 1,100 个不同组件的指标,包括 TiDB server、TiKV(驱动 TiDB 的开源分布式事务性键值存储)server 以及 Placement Driver(管理和调度 TiKV 节点的元数据层)server。PingCAP 测试环境中的单个集群,包含 89 个 server 和 91 个服务,在 15 天内会产生 179G 的指标日志。Queeny 说:“我们不可能去每台 server 上查看所有这些日志。这就是 Grafana 对我们至关重要且运行得天衣无缝的地方,因为它让所有这些日志变得有意义。”
除了易于使用的仪表盘,PingCAP 还看重 Grafana 多功能的 API。Queeny 表示:“它使我们能够构建自己的工具。”Grafana 的插件架构使得任何人都可以构建自定义面板和数据源来扩展 Grafana,甚至改进现有的仪表盘。事实上,Queeny 说,“受 Grafana reporter 的启发,我们构建了自己的工具,可以从 Grafana 生成 PDF 报告。”
团队最喜欢的功能是 Row,他们用它来分组指标。Queeny 说:“在 TiKV 中,我们构建了一个 Error Row,并将所有重要的错误指标汇总到这个 Row 中,这样我们就能非常快速地识别问题。”
基于这些原因,Queeny 表示:“Grafana 是我们系统指标 GUI 展示的首选,也是唯一选择。它对我们的用户来说非常有效。”