最近,我们与 Grafana 的朋友一起举办了一场网络研讨会,介绍了 官方 ClickHouse Grafana 插件。在本次网络研讨会中,我们介绍了该插件的历史、设计选择背后的原因以及未来的计划。
然而,像任何好的网络研讨会一样,我们希望展示这项技术本身的演示。巧合的是,我们举办这次网络研讨会正好是 Grafana 首次 Git 提交 10 周年。再加上最近对 GitHub 分析受限的挫败感,我们决定对 Grafana 存储库进行分析。
在这篇博文中,我们将回顾我们的发现,并希望为我们的读者提供在其项目上重现相同工作的工具。
挫败感的来源
每当查看一个新的 GitHub 项目时,作为工程师,我们通常会转向 GitHub 分析 - 官方称为 Pulse。此时,我们的挫败感通常就开始了,我们看到了一些非常令人失望的分析。
考虑到日期的重要性,因为它是首次提交 10 周年,我们决定看看我们是否可以做得更好。有什么比世界上领先的 OSS OLAP 数据库和数据可视化工具更好的工具来解决这项任务呢?!
查找数据
对于任何好的分析,我们需要好的数据。幸运的是,对于我们来说,我们需要的数据要么是公开的,要么可以生成。
GitHub 通过一个很棒的项目 GH Archive 发布了所有公共存储库的完整事件历史记录。对于 ClickHouse 来说,这代表了一个相当小的数据集,我们已经 彻底记录了如何加载和分析这个数据集。自 2011 年初以来,GitHub 上每个存储库的所有拉取请求、问题、星标、分支、关注和评论,以及超过 55 亿个事件,为我们的分析提供了出色的“背景”数据集。请注意,此数据集也可在 play.clickhouse.com 中免费查询。或者,将此数据集加载到您自己的 ClickHouse 中。
虽然上述数据集为我们提供了 GitHub 项目的概览,但它没有提供提交历史记录。诚然,这将是一个更大的数据集。但是,使用 ClickHouse 分发的 git-import 工具,我们可以轻松生成存储库的完整提交历史记录,只需一个命令。这将生成三个粒度递增的文件:一个文件包含每个提交的行,一个文件包含每个文件更改的行,最后是一个逐行更改历史记录。我们已经使用相同的工具对我们自己的 ClickHouse 存储库进行了分析,并将步骤记录在 这里。
虽然我们演示中使用的所有数据集都是公开的,并且可以下载或生成,但我们也汇总了 一些简单的说明,以便更容易地重现此演示。我们的仪表板也可在 Grafana 的公共目录中找到。
构建可视化
有了这两个数据集,构建可视化就变得很简单了。我们最终的仪表板旨在同时使用这两个数据集,其中一些可能的问题已经记录在 - 这里 和 这里。这使我们只需选择感兴趣的问题,并使用适当的 Grafana 语法来确保在选择可视化之前尊重时间过滤器。本着 OSS 的精神,我们还探索了一些 Grafana 的社区可视化,例如 Treemap 和 Word Cloud 插件。例如,要可视化一段时间内的提交者,我们只需注入变量 $__timeFilter(time)
和 $__timeInterval(time)
,以确保应用时间过滤器并且存储桶大小合适。有关这些工作原理的更多详细信息,请观看网络研讨会或查看 这里。
SELECT $__timeInterval(time) as time, author, count(*) as ` ` FROM commits WHERE $__timeFilter(time) AND author IN (
SELECT author
FROM commits WHERE author NOT LIKE '%renovate[bot]%' AND $__timeFilter(time)
GROUP BY author
ORDER BY count() DESC
LIMIT 15
) GROUP BY author, time ORDER BY time, author ASC, time DESC LIMIT 10000
最终结果
我们鼓励用户观看网络研讨会,不仅可以学习在 Grafana 中构建 ClickHouse 驱动的可视化的一些技巧和窍门,还可以更好地了解像 Grafana 这样成功的 OSS 项目的历史。对我们来说,令我们印象深刻的是,Grafana 创始人 Torkel 仍然像项目创立之初一样,是今天重要的提交者。在花了最初 5 年的大部分时间重写彼此的代码之后,Carl Bergquist 和 Torkel 显然对今天蓬勃发展的社区产生了巨大的影响。虽然每天的提交数量稳步增加,但显而易见的是,提交完成的工作量已大幅增加。诸如添加警报和提供 docker 文件之类的关键功能是迄今为止最受欢迎的问题。最后,我们很高兴看到人们同时提交到两个存储库,同时注意到社区成员为两个存储库加星标(现在超过 6500 个)首先为 Grafana 加星标!希望您同意我们的最终仪表板比 Github Pulse 更丰富一些。
收集社区反馈
网络研讨会为我们提供了收集社区直接反馈的机会。因此,在最后,我们询问用户,他们接下来希望在 Grafana 的 ClickHouse 数据源中看到哪些功能得到支持。以下结果对我们很有启发,您可以期待它们会影响我们的路线图,我们将在我们的 公共存储库中尽快发布路线图。
结论
在这篇文章中,我们总结了我们最近与 Grafana 举行的关于 ClickHouse 官方 Grafana 插件的网络研讨会。感谢 Grafana 的朋友们的举办,祝贺过去 10 年,我们很高兴观看。