tick-charts 更新

导航至

这是对我之前关于 tick-charts博客文章的更新,该项目旨在使 InfluxData 堆栈尽可能容易地在 Kubernetes 上运行。在开发该项目的过程中,我了解到最初的一些实现决策并不是正确的方法!此外,自那时以来,Chronograf 已显着成熟,并且需要对图表进行添加以支持几种不同的 OAuth 类型:Heroku、Github 和 Google。

Telegraf 更改

第一个版本的主要更改是 telegraf 图表的重新架构。最初,我认为 telegraf 的单体图表将是最佳选择。该图表将主机级监控以及轮询都放在一个 values.yaml 文件中。这变得很复杂,因为 telegraf 主要由配置驱动,并且将两个配置都放在一个文件中很快就会变得过于复杂。该图表的另一个缺点是,启动单个 telegraf 实例需要删除 daemonset 的大量配置。

为了降低这种复杂性,我采用了双管齐下的方法。首先,我将 telegraf 图表拆分为两个,为用户提供了更清晰的界面。接下来,我减少了 daemonset (telegraf-ds) 所需的配置量。默认值提供了 Kubernetes 中主机级监控的基础知识:KubeletDocker 轮询、cpu、mem、disk、系统负载 和网络统计信息。用户只需要设置 config.outputs.influxdb.url。如果您不想托管自己的 InfluxDB,您可以轻松启动一个 InfluxDB Cloud 实例来保存数据。

用于启动单个 telegraf 实例的图表现在称为 telegraf-s。目前,它的实现方式与旧的 telegraf 图表非常相似:使用一些自定义 golang 模板来生成配置。这对于需要大量配置的插件(例如 snmpjolokia)来说很困难,并且容易出错。为了消除这种复杂性和维护自定义代码的难度,我添加了一个 toToml 模板函数到 Helm。一旦 Helm 的 2.3 版本 可用,telegraf-s 图表将被修改为使用它。这将使在您的集群中创建 telegraf 实例变得非常容易。使用像 remarshal 这样的工具将 telegraf 输出的 toml 转换为 yaml,生成新的 telegraf 实例来监控集群一部分的工作流程将如下所示

# On mac at least...
$ telegraf -sample-config -input-filter nginx:cloudwatch -output-filter 
kafka_producer | toml2yaml | pbcopy

生成的 yaml blob 可以直接添加到您的 values.yaml 文件中的 config 部分并在那里进行编辑。

后续步骤

我计划继续改进 TICK 堆栈部署的生产就绪性、示例和用户体验。以下项目在我的此项目的 # TODO: 列表中

  • 生产就绪性
    • 使 InfluxDB 部署启用基本身份验证
    • 添加备份/恢复作业示例,以将 InfluxDB 备份到 s3 或其他对象存储
    • 创建作业以在升级时动态重新加载 telegraf 的配置
  • 用户体验
    • 创建一个顶级图表,以便可以从一个图表管理整个部署
    • 尽可能缩短从零到仪表板的时间
    • 解决随着使用量增加而开始出现的任何痛点
  • 示例
    • 使用 Telegraf 监控 Prometheus 端点
    • 在 Kubernetes 中使用队列和 Telegraf
    • 监控 {{ .telegraf_plugin.name }}(欢迎提出建议!)

我也很想听取您希望在此集成中看到哪些功能的意见。请在我们的社区网站上的这篇文章上发布您的问题/疑虑/建议或其他评论。我迫不及待想收到您的来信!