InfluxDB 模板:轻松分享您的监控专业知识
作者:Al Sargent / 产品, 用例, 开发者
2020 年 4 月 28 日
导航至
如果您是公司中特定技术的常驻专家,您可能会被问到很多关于它的问题:如何设置它、如何维护它、如何监控它。 虽然被公认为专家很棒,但所有这些帮助请求都会占用您日常工作的时间。
值得庆幸的是,我们有一些东西可以提供帮助:InfluxDB 模板。 InfluxDB 模板使您可以快速封装和共享 InfluxDB 监控一项技术所需的一切内容,到一个简单的 YAML 格式的文本文件中,该文件可以轻松地通过电子邮件或 Slack 发送,或发布到像 GitHub 这样的代码存储库中。 InfluxDB 模板定义了以下内容
- Telegraf 配置文件
- InfluxDB 仪表板
- InfluxDB 警报
- InfluxDB 存储桶、标签 和 变量
您的同事随后可以使用 一个终端命令 将该 YAML 文件导入到他们的 InfluxDB 实例中,以便他们可以在几分钟内开始监控。 例如,这是一个 Jenkins 仪表板,可以从 这个 YAML 文件 导入
为什么要使用 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_reponse 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 的每个版本一起提供,包括免费的 Cloud 层和开源版本。 我们已经在我们的 Influx 社区 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 模板和可观测性
可观测性 是关于监视复杂、动态系统的所有组件,从基础设施到后端微服务到面向用户的应用程序。 由于它们适用于 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 配置、警报、存储桶、变量或标签的all-in-one定义。 InfluxDB 模板中的新功能正是这种完整的定义。 由于 InfluxDB 模板更广泛,因此它们对于在您的组织内共享您的监控专业知识更有用。
亲自体验
这是一个关于如何创建 InfluxDB 模板的演示
创建该模板后,以下是其他人如何使用它
总结
回顾一下,InfluxDB 模板 使您可以快速定义任何技术的整个监控配置,到一个易于共享的开源文本文件中,您的同事可以使用一个命令将其导入到 InfluxDB 中。 我们对模板感到兴奋的原因是它们是
- 全面的: InfluxDB 模板定义了整个监控配置:数据源、仪表板和警报。 这种详细程度意味着您的同事可以立即开始使用,而无需进行耗时的来回沟通。
- 面向开发人员的: InfluxDB 模板使用您已经熟悉的现代开发人员工具:它们在 YAML 中定义。 通过 GitHub 分发。 在 Apache 2.0 下开源许可。 所有这些都使它们易于使用。 这种面向开发人员的特性帮助 Telegraf 生态系统发展到数百个插件,我们已经看到模板也出现了相同的社区增长。
- 更快地获得精彩体验: 我们将模板设计为可以快速构建和使用。 只需标记您要导出的资源,然后使用一个终端命令生成您的 YAML 文件。 您的同事只需一个命令即可导入该配置。 由于模板是纯文本文件,因此任何更改都很容易进行。
下一步是什么?
按照上面的指南构建您自己的模板,贡献到我们的 社区模板存储库,并在我们乐于助人的 InfluxDB 社区 和 Slack 中提出任何问题。 尽情享受吧!