InfluxDB模板:轻松分享您的监控专业知识
作者:Al Sargent / 产品,用例,开发者
2020年4月28日
导航至
如果您是公司中某项技术的驻场专家,您可能经常会被问到很多关于它的问题:如何设置、如何维护、如何监控。虽然作为专家得到认可是一件好事,但所有这些求助请求可能会占用您日常工作的宝贵时间。
幸运的是,我们有一些东西可以帮助您:**InfluxDB模板**。InfluxDB模板允许您将InfluxDB监控某项技术所需的所有内容快速封装成一个简单的YAML格式的文本文件,可以轻松通过电子邮件或Slack发送,或者发布到GitHub等代码仓库。InfluxDB模板定义了以下内容
- Telegraf配置文件
- InfluxDB仪表板
- InfluxDB警报
- InfluxDB 桶、标签和变量
您的同事可以使用一条终端命令将那个YAML文件导入到他们的InfluxDB实例中,这样他们可以在几分钟内开始监控。例如,这里有一个可以从这个YAML文件导入的Jenkins仪表板。
为什么使用InfluxDB模板
InfluxDB模板允许您一次与许多同事分享您监控某项技术的实践,而不是逐一配置他们的实例。由于InfluxDB模板可以一键导入,因此它们可以节省您数小时枯燥且容易出错的配置信息复制和粘贴。
您还可以在我们的公共GitHub社区模板仓库上公开发布您的模板。通过与社区分享,您可以获得更多人对模板的审查和反馈,以进一步改进它。
构建您自己的模板
首先,看看这些已经构建好的模板
对于这些中的每一个,检查它们的.yml文件。为了快速了解这些模板的结构,我发现搜索“kind:”很有帮助。
例如,在我们的Jenkins YAML文件中,您将看到以下部分
kind: Label | 当您导入此模板时,所有新的配置元素都将带有“jenkins”标签 |
kind: Bucket | 定义了您的Jenkins数据将放入的桶 |
kind: Variable | 定义了一些变量,例如Jenkins作业名称和主机名。 |
kind: Dashboard | 定义了您的仪表板,包括它们的视觉属性和底层的Flux代码 |
kind: Telegraf | 定义了Telegraf配置文件,使用常规格式 |
完成这些后,查看以下指南了解如何
我们还有一个关于如何构建自己的模板的网络研讨会记录。
当您构建自己的模板时,您希望使用我们的influx pkg命令。您可以在下载InfluxDB 2.0 OSS时获取它。您需要运行influx pkg export
来导出模板,然后influx pkg
来导入模板。
模板技巧
以下是一些我在构建模板时发现的有用的技巧
技巧#1
在构建模板时,请确保根据这些指南优化您的Flux查询。这些指南。您还可以使用这些工具来避免不必要的基数增长。
提示 #2
在折线图上,考虑同时绘制中位数和最大值(如果更高更差)或最小值(如果更低更差)。这可以通过在仪表板单元格中使用两个Flux查询来完成,一个用于按最大值(或最小值)聚合,另一个用于按中位数聚合,如下面的示例所示。使用Flux aggregateWindow()
函数来完成此操作。使用aggregateWindow()
的另一个好处是它会加快查询速度,因为您只需发送足够的数据来渲染图表,而不需要更多。
以下是一个如何操作的示例;这是针对http_response Telegraf插件,但模式对于其他Telegraf插件也将类似。
# This plots the max of a time series
from(bucket: "http-response")
|> range(start: -60m)
|> filter(fn: (r) => r._measurement == "http_response")
|> filter(fn: (r) => r._field == "response_time")
|> group(columns: [""], mode:"by")
|> aggregateWindow(every: 60s, fn: max)
|> yield(name: "max")
# This plots the median of a time series
from(bucket: "http-response")
|> range(start: -60m)
|> filter(fn: (r) => r._measurement == "http_response")
|> filter(fn: (r) => r._field == "response_time")
|> group(columns: [""], mode:"by")
|> aggregateWindow(every: 60s, fn: median)
|> yield(name: "median")
# This plots the minimum of a time series
from(bucket: "http-response")
|> range(start: -60m)
|> filter(fn: (r) => r._measurement == "http_response")
|> filter(fn: (r) => r._field == "response_time")
|> group(columns: [""], mode:"by")
|> aggregateWindow(every: 60s, fn: min)
|> yield(name: "min")
提示 #3
使用Slack作为您的InfluxDB 通知端点。Slack报告端点是InfluxDB的每个版本都包括在内的,包括免费云版本和开源版本。我们已经在Influx Community Slack实例上设置了一个Slack频道。
要使用它,按照以下方式将https://hooks.slack.com/services/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
作为您的入站Webhook URL添加
一旦您的警报开始触发,请转到influxcommunity.slack.com,如果需要,请注册,然后转到#notifications-testing频道查看您的警报。您应该看到如下所示的内容
当然,您的确切文本将取决于您指定的内容。只需确保在测试完成后关闭您的检查,如下所示,以免使其他人无法使用#notifications-testing。
在介绍如何操作之后,让我们谈谈InfluxDB模板如何与您的组织可能实施的大趋势相结合。
InfluxDB模板和GitOps
广义而言,GitOps是将尽可能多的操作配置放入GitHub、BitBucket或GitLab等代码库的实践。这基本上是将开发者的实践(代码库)扩展到操作(配置库)。
GitOps使得追踪谁改变了什么以及何时改变变得容易。这反过来又使得找到任何监控问题的根本原因变得容易。因为InfluxDB模板只是YAML文本文件,所以它们可以被提交到仓库中,使您能够看到随时间的变化,并且组织中的其他人或开源社区可以通过拉取请求进行贡献。
InfluxDB模板和DevOps
在DevOps文化中,有一个积极的努力,在开发者和运维团队之间推动共享理解,并共同承担他们构建和运行的软件的责任。InfluxDB模板允许开发者全面定义如何监控他们非常熟悉的技术,并将其与需要在生产环境中运行该技术的运维团队共享。
例如,MySQL发出的数十个指标中,也许开发者已经了解到只有几个真正值得跟踪,并构建了复杂的警报检查,定义了这些指标何时表明有问题。使用InfluxDB模板,这种知识很容易在整个组织中共享。这为不断被要求帮助设置监控的特定技术的专家节省了时间。
InfluxDB模板和可观测性
可观察性(Observability)是指对复杂、动态系统的所有组件进行监控,从基础设施到后端微服务再到面向用户的应用程序。由于它们可以由Telegraf进行监控,因此InfluxDB模板允许您将可观察性扩展到整个组织。这反过来帮助组织中的每个人更快地发现和解决问题。
InfluxDB模板的可用性
今天,InfluxDB模板和influx pkg
命令在InfluxDB OSS 2.0和InfluxDB Cloud 2中可用。使用InfluxDB模板不需要额外费用。
今天,我们有二十多个模板,它们在Apache 2许可协议下开源授权。
- Apache + Postgres
- AWS Cloudwatch
- 反恐精英:全球攻势 / CSGO (!)
- 货币汇率
- Docker
- 端点安全状态
- Enviro+
- GitHub
- Google Cloud
- HAProxy
- InfluxDB 1.x
- InfluxDB 2.0 OSS(使用InfluxDB 2来监控自身)
- Jenkins
- Kubernetes
- Linux
- Microsoft SQL Server
- Modbus
- MongoDB
- MySQL / MariaDB
- 网络接口
- Nginx + MySQL
- Postgres
- Redis
- Sflow
- Telegraf(使用Telegraf进行自身监控)
- Tomcat
- VMware vSphere
- Windows
- X509
- Zookeeper
我们预计随着InfluxDB社区中的您所有人向我们的模板库贡献,这个列表将迅速增长。
现在,对于一些人来说,“模板”这个术语可能已经很熟悉了。这是因为,在一段时间里,InfluxDB已经有仪表板模板。但是正如其名所示,这些模板仅指定仪表板布局。它们不提供包含Telegraf配置、警报、桶、变量或标签的全定义。InfluxDB模板中的这一完整定义是新的。由于InfluxDB模板更为全面,它们在共享您的监控专业知识方面更有用。
亲自看看
这是一个创建InfluxDB模板的演示
一旦创建该模板,其他人就可以这样使用它
总结
总结一下,InfluxDB模板允许您快速定义任何技术的整个监控配置,在一个易于共享的开源文本文件中,您的同事可以使用一条命令将其导入InfluxDB。我们对模板感到兴奋的原因是它们
- 全面:InfluxDB模板定义了整个监控配置:数据源、仪表板和警报。这种详细程度意味着您的同事可以立即开始,无需耗费时间。
- 面向开发者:InfluxDB模板使用您已经熟悉的现代开发者工具:它们在YAML中定义。通过GitHub分发。在Apache 2.0下开源授权。所有这些使得它们易于使用。这种面向开发者的方法帮助Telegraf生态系统发展到数百个插件,我们现在已经在模板中看到了同样的社区增长。
- 更快实现卓越:我们设计了模板,使其构建和消费都快速高效。只需标记您想要导出的资源,然后通过一条终端命令生成您的YAML文件。您的同事只需一条命令即可导入该配置。由于模板是纯文本文件,任何更改都很容易进行。
接下来做什么?
按照上面的指南构建自己的模板,为我们社区模板仓库做出贡献,并在我们始终乐于助人的InfluxDB社区和Slack中提出任何问题。祝您玩得开心!