使用InfluxDB Cloud监控GitHub仓库

导航到

在这篇博客文章中,我将向您展示一种简单的方法,使用您的InfluxDB Cloud账户加上从我Docker Hub账户的一个Docker容器,可以轻松地通过新版本InfluxDB Cloud内置的模板功能来监视一组GitHub仓库。

摘要

系统的工作方式是提供了一些仪表板的模板,包括它们的相关查询、变量和设置。唯一缺少的是实际收集数据。使用InfluxDB的数据收集通常是通过Telegraf完成的。我已经创建了一个带有Telegraf和所有配置设置好的Docker镜像。所以,您需要做的就是

  1. 实例化GitHub模板。
  2. 为该桶创建一个桶和令牌。
  3. 获取GitHub访问令牌。
  4. 使用必要的环境变量运行容器。在我的情况下,我使用docker-compose来运行它。

之后,您的GitHub仪表板将像魔法一样工作。

实例化模板

首先,使用左侧导航转到 模板 页面。

在这里,您将注意到一个长长的模板列表,每个模板都针对使用InfluxDB Cloud加速不同场景而设计。目前,我对GitHub数据感兴趣。

如果您想查看模板本身,可以点击标题,查看用于描述仪表板的JSON。功能非常丰富,了解它不是使用它的必要条件。然而,如果您想创建自己的模板,这可能很有用。您可以保存JSON,修改并分享它,或稍后在其他账户或InfluxDB 2.0开源中使用它。但就目前而言,我只是点击了 创建 按钮,实际上应用模板。

创建模板后,如果导航到 仪表板 页面,您将看到已添加一个名为“Github Data”的新仪表板。但点击标题后,您将得到一个“无结果”的仪表板。这是预期的,因为我们还没有配置任何实际输入GitHub数据的东西。

创建桶

在我们开始从GitHub发送数据之前,我们需要创建一个桶来包含这些数据。首先,使用左侧导航转到桶页面。

创建一个新的桶。我将其命名为“github”,但您可以将其命名为任何您想要的名称。

创建访问令牌

Telegraf插件需要一个具有写入我们刚才创建的桶的influx令牌,以及一个用于访问您的GitHub账户的GitHub个人访问令牌。

首先,切换到令牌标签页。

然后使用生成下拉菜单并选择一个读写令牌

给它访问我们刚刚创建的存储桶的写权限。

创建后,您可以点击它查看令牌本身,我们很快就会用到。

您还需要一个GitHub令牌来访问您的GitHub账户。提醒一下,您可以在GitHub的设置 -> 开发者设置 -> 个人访问令牌下创建这些令牌。然后使用“生成新令牌”按钮。

填写docker-compose文件并运行

现在我们拥有了运行Telegraf所需的一切。您需要的一切都在rickspencer3/github-telegraf。您只需通过环境变量传递配置即可。

我将使用docker-compose,并在我桌面上运行它。然而,在您选择的任何Docker平台上运行它应该非常简单。以下是对令牌进行了截断以供阅读。

version: "3.7"
 
services:
  telegraf:
    image: rickspencer3/github-telegraf
    environment:
      - INFLUX_URL=https://us-west-2-1.aws.cloud2.influxdata.com
      - INFLUX_TOKEN=...
      - [email protected]
      - INFLUX_BUCKET=github
      - GITHUB_TOKEN=1...
      - GITHUB_REPOS=influxdata/influxdb,influxdata/flux

在填写完docker-compose文件并将其保存为docker-compose.yaml后,我可以使用docker-compose up命令来运行它

$ docker-compose up
Creating network "github-integration_default" with the default driver
Creating github-integration_telegraf_1 ... done
Attaching to github-integration_telegraf_1
telegraf_1  | CONFIGURING REPOSITORIES:
telegraf_1  | > [influxdata/influxdb]
telegraf_1  | > [influxdata/flux]
telegraf_1  | > [influxdata/idpe]
telegraf_1  | 2019-10-09T17:20:00Z I! Starting Telegraf 1.12.2
telegraf_1  | 2019-10-09T17:20:00Z I! Using config file: /etc/telegraf/telegraf.conf
telegraf_1  | 2019-10-09T17:20:00Z I! Loaded inputs: github
telegraf_1  | 2019-10-09T17:20:00Z I! Loaded aggregators: 
telegraf_1  | 2019-10-09T17:20:00Z I! Loaded processors: 
telegraf_1  | 2019-10-09T17:20:00Z I! Loaded outputs: influxdb_v2
telegraf_1  | 2019-10-09T17:20:00Z I! Tags enabled: host=772e3e34b0e5
telegraf_1  | 2019-10-09T17:20:00Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"772e3e34b0e5", Flush Interval:10

这意味着Telegraf每10秒从GitHub收集一次数据。

查看仪表板

如果我导航回仪表板,仍然没有结果。这是因为我必须告诉仪表板使用哪个存储桶。这意味着如果我需要以某种原因将数据分离,我可以运行指向不同存储桶的不同容器。因此,我应该使用下拉菜单选择正确的存储桶。如果您看不到下拉菜单,您可能需要点击右上角的变量按钮。

在那个时刻,您可以看到已经收集了一些数据。

如果我想查看特定的存储库,我可以使用该repo下拉菜单。

最后

如果您想查看容器的构建方式、修复它或改进它,请查看该存储库。