如何使用Grafana和Prometheus来监控众多GitHub仓库的流量

433 阅读3分钟

如果你想了解你的GitHub仓库的受欢迎程度,知道星星的数量是不够的。GitHub理解这一点,这也是团队发布流量洞察的原因。

任何有仓库推送权限的人都可以查看这些洞察力,其中包括:完整的克隆、过去14天的访问者、推荐网站以及流量图中的热门内容。查看这些数据很简单,只要进入你的版本库主页,点击Insights(在版本库名称下),然后点击Traffic(在左侧边栏)。

瞧!你应该看到这样的数据你应该看到像这样的东西:

很好。

但是如果你有很多版本库呢?

k6,我们有大量的集成、扩展、例子和文档的开放源码库。而且这个数字还在不断增加。

我们希望有一种方法来了解我们的仓库的受欢迎程度和使用情况,而不需要手动收集这些统计数据,一个一个地去看,并做笔记。

我们设计并建立了GitHub流量工具,它以编程方式查看我们所有的仓库,获取流量数据,并将这些数据作为Prometheus指标公开。为了让这个工具获得我们组织的所有仓库,以及我们需要的所有流量数据,我们使用了GitHub提供的REST APIs

这种方法最酷的地方在于,我们可以像对待其他服务一样对待这个工具。我们可以依靠我们目前的Grafana代理队伍来抓取这些指标,并将它们运送到我们的Grafana CloudPrometheus实例。

但是拥有所有这些指标是不够的。我们需要一种方法来可视化它们所以我们创建了一个小的仪表盘来完成这个工作:

酷,酷,酷,但是......在这个仪表盘上,你有浏览量、克隆量和星星......顶级推荐网站的列表在哪里?以及每个 repo 的最受欢迎的内容?

接得好!:)

对于第一个版本,我们试图保持较小的范围,只获取可用数据的一个子集。在未来的迭代中,我们可能会增加那些缺失的数据和更多花哨的东西。

你也可以这样做

是的,这个工具是完全开放的,它可以在grafana/github-traffic仓库中使用。

使用它就像创建一个像这样的小.env 文件一样简单:

$ cat .env
GITHUB_TOKEN=your-github-token-goes-here
ORG_NAME=the-name-of-your-organization-goes-here

然后启动一个新的容器:

$ docker run --env-file .env -it -p 8001:8001 ghcr.io/grafana/github-traffic
level=INFO msg="Github traffic is running!"
level=INFO msg="Gather insights" repo="k6" views=163 unique_views=90 clones=406 unique_clones=109 stars=13805
level=INFO msg="Gather insights" repo="postman-to-k6" views=3 unique_views=2 clones=1 unique_clones=1 stars=238
level=INFO msg="Gather insights" repo="jmeter-to-k6" views=1 unique_views=1 clones=2 unique_clones=2 stars=44
...

一旦完成,你应该能够通过访问http://localhost:8001/metrics,来体验一下暴露的指标

在资源库中,你可以找到更多关于支持的配置选项的文档。我们还发布了一个Grafana仪表盘,可以作为可视化所有这些新的普罗米修斯指标的起点。

让我们知道你的想法

请继续关注未来关于如何紧密集成Grafana和GitHub的内容。并告诉我们你想看到的内容。联系我们的一个好地方是GitHub Repo的问题,或者Grafana的社区Slack