构建 Telegraf 助手 - 加州大学伯克利分校代码库

导航至

本文由Codebase,一个加州大学伯克利分校学生组织撰写。

Building a Telegraf Assistant - UC Berkeley Codebasecodebase

你好 InfluxData 社区!我们是来自Codebase的团队,该组织是加州大学伯克利分校的学生组织,致力于为高增长的科技公司构建软件项目。上个学期,我们八个人有幸与 InfluxData 合作,为 Telegraf 添加云控制配置管理功能。我们的目标是消除设置配置文件的麻烦,允许用户通过易于使用的 Web 仪表板直接编辑其配置,而不是编辑原始 TOML 文件。

Telegraf 助手概览

目前,Telegraf 一次性启动和停止用户选择的插件。此外,对插件设置所做的任何更改都要求用户关闭 Telegraf,更改配置文件,然后重新启动服务。为了解决这个问题,Telegraf 助手是一个工具,允许 Telegraf 用户通过 HTTP 操作修改插件配置。助手与 Telegraf 代理一起实例化,并提供启动、停止、更新或检索有关插件信息的功能,而无需停止 Telegraf 服务。启动后,插件将被分配一个唯一的标识符。所有插件在实例化后,都必须通过此 API 通过其分配的标识符进行引用。

Telegraf Assistant user flow chart

使用 Telegraf 助手的 Telegraf 用户典型流程

插件 API

此 Telegraf 实现通过 ID 而不是名称来识别插件。当用户运行此版本时,助手将在启动时读取用户配置文件时自动为插件分配 ID,以适应用户拥有同一插件的多个实例的情况。

每个请求都是一个 CRUD 操作。可用的全面操作列表包括:启动插件、停止插件、更新插件、获取插件详细信息、获取插件模式、检索所有可用插件以及检索所有正在运行的插件。目前可以在 GitHub 上 Codebase 分支的 Telegraf 仓库中的 assistant/README.md 中找到每个操作的请求负载和响应示例。

这是一个使用插件 API 更新插件的示例。 uuid 指的是操作请求的生成 ID。

// REQUEST PAYLOAD
{
 "operation": "UPDATE_PLUGIN",
 "plugin": {
   "id": "x14t-54...",
   "type": "input",
   "config": "<changed values struct here>"
 },
 "uuid": "213894y123..."
}

// RESPONSE
{
  "status": "success",
  "data": {
    "plugin": {
      "id": "x14t-54...",
      "name": "cpu",
      "config": "<updated config struct here>"
    }
  },
  "uuid": "213894y123..."
}

对任何插件(包括启用或禁用的新插件)所做的任何更改都将保存到用户的配置文件中,以便下次启动 Telegraf 时保留相同的设置。

我们学到了什么

本学期,我们能够体验真正的远程工作环境,学习使用 VSCode Liveshare、Zoom、Discord、GitHub 等工具,有效地在我们自己的开发团队内部以及与我们的 InfluxData 联系人进行沟通。我们还接触到一些新技术,例如使用 CircleCI 来验证我们的代码并确保我们添加的新功能不会破坏任何现有功能。此外,我们还学会了关注 Linux 和 Windows 系统的具体要求。为了确保所有 Telegraf 用户都能获得相同的体验,我们需要为 Windows 兼容性重构我们的工作。最后,我们团队的开发人员学到了很多关于 Golang 特定数据结构和包的复杂性。由于校园内只有一两门课程主要使用 Golang,这对我们来说是一个更多地了解该语言及其优势的绝佳机会。

Telegraf 助手接下来会怎样?

我们的 Telegraf 助手源代码和信息都可以在我们的分支 codebase-berkeley/telegraf 的 Telegraf GitHub 分支中找到。InfluxData Telegraf 团队将审查我们的代码并进行任何更改,使其能够在生产环境中工作,并最终将其合并到 Telegraf 产品中。他们将采取的主要下一步是在大型企业环境中使其工作。产品副总裁 Tim 提到,InfluxData 的许多客户运营着数万个 Telegraf 代理,而让 Telegraf 助手在这种规模下工作将是 InfluxData 工程团队的下一个挑战。

如果您有兴趣参与 Telegraf 助手项目,请查看我们的代码以及有关此新功能的所有详细信息!请在我们的 PR 上发表任何评论,InfluxData 团队在实施 Telegraf 助手的最终版本时会考虑任何反馈。

感谢 InfluxData 团队!

我们想借此机会感谢那些使这个项目和合作成为可能的非常了不起的人们!Ryan,感谢您在去年夏天将 Codebase 介绍给 InfluxData,Barbara,感谢您将我们引荐给 Telegraf 团队以及你们都在做的精彩项目。Samantha、Dave 和 Jess,非常感谢您抽出时间与我们会面并每周举行站会,并感谢您作为可靠的联系人,帮助我们快速解决任何后勤或技术问题。我们也很感激有趣的回忆,例如邀请 Samantha 和几位工程师为我们的俱乐部成员讲述他们在 InfluxData 工作的经历,在会议上与 Jess 开关于幸存者的玩笑,以及从 Dave 那里听到我们在 InfluxDays North America 2020 上获得了 shoutout。