构建Telegraf助手 - 伯克利代码库
由 社区 / 用例,产品,开发者
2021年1月27日
导航至
本文由Codebase撰写,Codebase是加州大学伯克利分校的一个学生组织。
大家好!我们是来自Codebase的团队,Codebase是一个为高增长科技公司构建软件项目的加州大学伯克利分校学生组织。上个学期,我们八个人有幸与InfluxData合作,为Telegraf添加云控制配置管理功能。我们的目标是简化配置文件设置的过程,使用户能够通过易于使用的Web仪表板直接编辑他们的配置,而不是编辑原始的TOML文件。
Telegraf助手概览
目前,Telegraf会同时启动和停止用户选择的插件。此外,对插件设置的任何更改都需要用户停止Telegraf,更改配置文件,然后重新启动服务。为了解决这个问题,Telegraf助手是一个允许Telegraf用户通过HTTP操作修改插件配置的工具。助手与Telegraf代理一起实例化,并提供启动、停止、更新或检索插件信息的功能,而无需停止Telegraf服务。启动时,插件会分配一个唯一的标识符。所有插件在实例化后都必须通过此API使用分配的标识符引用。
插件API
Telegraf的这个实现通过id识别插件,而不是名称。当用户运行这个版本时,助手将在启动时自动为插件分配ID,以适应用户拥有相同插件的多个实例。
每个请求都是一个CRUD操作。可用的操作列表包括:启动插件、停止插件、更新插件、获取插件详情、获取插件模式、检索所有可用插件和检索所有运行中的插件。每个操作的请求负载和响应的示例可以在GitHub上assistant/README.md中找到,这是Telegraf仓库的Codebase分支。
以下是一个使用插件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助手源代码和信息都可以在我们的分支中找到,该分支是Telegraf GitHub分支的分支:codebase-berkeley/telegraf。InfluxData Telegraf团队将审查我们的代码,并对其进行任何更改以确保其在生产环境中工作,并将其最终合并到Telegraf产品中。他们将要采取的下一个重大步骤是将此功能应用于大型企业环境。《产品副总裁Tim》提到,InfluxData的许多客户运营着数万个Telegraf代理,使Telegraf助手能够在这个规模上工作将是InfluxData工程团队面临的下一个挑战。
如果您对在Telegraf助手项目中合作感兴趣,请查看我们的代码和有关此新功能的全部细节!请在我们的PR上提出任何意见,InfluxData团队将在实施Telegraf助手最终版本时考虑任何反馈。
感谢InfluxData团队!
我们想借此机会感谢那些使这个项目和合作成为可能的人!感谢Ryan在去年夏天第一个将Codebase介绍给InfluxData,感谢Barbara指导我们与Telegraf团队以及你们正在进行的所有精彩项目。感谢Samantha、Dave和Jess抽出时间与我们见面,每周举行站立会议,并作为可靠的联系人帮助我们快速解决任何后勤或技术问题。我们还欣赏那些愉快的回忆,比如邀请Samantha和几位工程师向我们的俱乐部成员介绍他们在InfluxData工作的经历,在会议中与Jess开玩笑关于Survivor,以及听到Dave说我们在InfluxDays North America 2020上得到了认可。