博客 / 工程

ClickHouse + Grafana 开源 GitHub 活动故事

author avatar
ClickHouse 团队
2023 年 2 月 10 日 - 6 分钟阅读

 

最近,我们与 Grafana 的朋友一起举办了一场网络研讨会,介绍了 官方 ClickHouse Grafana 插件。在本次网络研讨会中,我们介绍了该插件的历史、设计选择背后的原因以及未来的计划。

然而,像任何好的网络研讨会一样,我们希望展示这项技术本身的演示。巧合的是,我们举办这次网络研讨会正好是 Grafana 首次 Git 提交 10 周年。再加上最近对 GitHub 分析受限的挫败感,我们决定对 Grafana 存储库进行分析。

在这篇博文中,我们将回顾我们的发现,并希望为我们的读者提供在其项目上重现相同工作的工具。

挫败感的来源

每当查看一个新的 GitHub 项目时,作为工程师,我们通常会转向 GitHub 分析 - 官方称为 Pulse。此时,我们的挫败感通常就开始了,我们看到了一些非常令人失望的分析。

github_analytics_1.png github_analytics_2.png

考虑到日期的重要性,因为它是首次提交 10 周年,我们决定看看我们是否可以做得更好。有什么比世界上领先的 OSS OLAP 数据库和数据可视化工具更好的工具来解决这项任务呢?!

查找数据

对于任何好的分析,我们需要好的数据。幸运的是,对于我们来说,我们需要的数据要么是公开的,要么可以生成。

GitHub 通过一个很棒的项目 GH Archive 发布了所有公共存储库的完整事件历史记录。对于 ClickHouse 来说,这代表了一个相当小的数据集,我们已经 彻底记录了如何加载和分析这个数据集。自 2011 年初以来,GitHub 上每个存储库的所有拉取请求、问题、星标、分支、关注和评论,以及超过 55 亿个事件,为我们的分析提供了出色的“背景”数据集。请注意,此数据集也可在 play.clickhouse.com 中免费查询。或者,将此数据集加载到您自己的 ClickHouse 中。

虽然上述数据集为我们提供了 GitHub 项目的概览,但它没有提供提交历史记录。诚然,这将是一个更大的数据集。但是,使用 ClickHouse 分发的 git-import 工具,我们可以轻松生成存储库的完整提交历史记录,只需一个命令。这将生成三个粒度递增的文件:一个文件包含每个提交的行,一个文件包含每个文件更改的行,最后是一个逐行更改历史记录。我们已经使用相同的工具对我们自己的 ClickHouse 存储库进行了分析,并将步骤记录在 这里

虽然我们演示中使用的所有数据集都是公开的,并且可以下载或生成,但我们也汇总了 一些简单的说明,以便更容易地重现此演示。我们的仪表板也可在 Grafana 的公共目录中找到。

构建可视化

有了这两个数据集,构建可视化就变得很简单了。我们最终的仪表板旨在同时使用这两个数据集,其中一些可能的问题已经记录在 - 这里这里。这使我们只需选择感兴趣的问题,并使用适当的 Grafana 语法来确保在选择可视化之前尊重时间过滤器。本着 OSS 的精神,我们还探索了一些 Grafana 的社区可视化,例如 TreemapWord Cloud 插件。例如,要可视化一段时间内的提交者,我们只需注入变量 $__timeFilter(time)$__timeInterval(time),以确保应用时间过滤器并且存储桶大小合适。有关这些工作原理的更多详细信息,请观看网络研讨会或查看 这里

grafana_heatmap.png

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-1.png

grafana-2.png

收集社区反馈

网络研讨会为我们提供了收集社区直接反馈的机会。因此,在最后,我们询问用户,他们接下来希望在 Grafana 的 ClickHouse 数据源中看到哪些功能得到支持。以下结果对我们很有启发,您可以期待它们会影响我们的路线图,我们将在我们的 公共存储库中尽快发布路线图。

grafana_poll.png

结论

在这篇文章中,我们总结了我们最近与 Grafana 举行的关于 ClickHouse 官方 Grafana 插件的网络研讨会。感谢 Grafana 的朋友们的举办,祝贺过去 10 年,我们很高兴观看。

分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云产品信息!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。