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,并且容易出错。为了消除这种复杂性和维护自定义代码的困难,我在 Helm 中添加了一个 toToml 模板函数。一旦 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 文件可以直接添加到您的 values.yaml 文件中的 config 部分,并在那里进行编辑。

下一步

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

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

我也非常希望听到您对集成中希望看到哪些功能的想法。请在我们社区网站上的这篇帖子这里发表您的问题/疑虑/建议或其他评论。我迫不及待想听到您的反馈!