TL;DR InfluxDB 技术提示 — 使用任务和检查进行 InfluxDB 监控
作者:Anais Dotis-Georgiou / 产品, 用例, 开发者
2020 年 8 月 7 日
导航至
在这篇文章中,我们将学习如何结合使用 任务 和 检查 来使用 InfluxDB 进行监控。
问: InfluxDB 的监控工作流程是什么? 答: 根据文档,监控工作流程 涉及以下步骤
- InfluxDB 中的检查查询数据,并根据特定条件使用
_level
分配状态。 - InfluxDB 将检查的输出存储在
statuses
测量中的_monitoring
系统存储桶中。 - 通知规则检查
statuses
测量中的数据,并根据通知规则中设置的条件,将消息发送到通知端点。 - InfluxDB 将通知存储在
notifications
测量中的_monitoring
系统存储桶中。
问: 我可以使用哪些资源通过 Flux 和 InfluxDB 进行监控? 答:如果您希望使用 InfluxDB 监控您的数据,以下是一些可能对您有用的资源列表
- 监控数据和发送警报:包含有关如何使用 Flux 监控时间序列数据的一般信息。
- 监控状态:包含有关如何监控状态的一般信息。
- Flux InfluxDB 监控包:详细介绍了 Flux 包 的监控功能,其中包括用于向端点发送通知的功能。如果您有兴趣了解有关通知和警报的更多信息,请查看此Flux Discord 包。
问: 检查 和警报之间有什么区别? 答:检查在 InfluxDB 中查询您的数据并对其应用状态。警报是根据您的通知规则发送到您的通知端点的通知。
问: 如何创建检查? 答:您可以通过 UI 创建检查。让我们为系统的可用内存百分比创建一个检查。以下是创建检查的步骤。
-
-
- 导航到 UI 中的“警报”选项卡并创建一个新检查。在此示例中,我们将创建一个阈值检查。但是,您也可以选择创建死信检查。
2. 命名您的检查为“可用内存百分比”。使用数据浏览器选择要创建检查的字段。对数据应用聚合函数。在这里,我们每 15 秒监控一次可用内存百分比的最大值。
创建检查的步骤 1。定义查询并对其应用聚合。 3. 配置您的阈值。由于我们正在监控可用百分比,因此当我的系统可用内存少于 20% 时,我将检查状态设置为“CRIT”。当我的系统可用内存介于 20%-30% 之间时,我将检查状态设置为“WARN”(如果仔细观察,您会看到我在可用内存介于 20.5% 和 29.5% 之间时定义了“WARN”状态,以便您可以轻松可视化阈值)。虽然此处未显示配置,但我将检查状态设置为“OK”,当我的系统可用内存超过 30% 时。最后,我可以单击右上角的绿色复选标记来创建我的检查。-
创建检查的步骤 2。配置检查。“CRIT”(红线)、“WARN”(黄线)和“OK”(绿线)状态已配置为可用内存百分比。
-
- 导航到 UI 中的“警报”选项卡并创建一个新检查。在此示例中,我们将创建一个阈值检查。但是,您也可以选择创建死信检查。
_level
列在哪里? 答:导航到 InfluxDB 实例中的默认_monitoring
存储桶,并按检查 ID 或检查名称进行筛选以查看结果。查看检查的输出 问: 阈值检查或死信检查目前对我来说没有用。我需要先执行数据转换才能利用它。我该怎么办? 答:您可以创建一个任务来首先转换您的数据,并将输出写入新的存储桶或测量。然后,您可以对转换后的数据创建检查。例如,假设您想要在功率水平超过某个值时发出警报,但您只有电流和电压数据。为了创建功率检查,您首先需要运行任务以从电压和电流计算功率。使用以下步骤创建任务
现在,如果您需要在电池放电时发出警报,您可以创建一个检查来过滤数据,当from(bucket: "solar") |> range(start: -task.every) |> filter(fn: ® => r["_measurement"] == "battery") |> filter(fn: ® => r["_field"] == "kWh") |> derivative(unit: 3s, nonNegative: false, columns: ["_value"], timeColumn: "_time") |> map(fn: ® => ({ r with _battery_level: if r._value > 0.0 then "CH" else "DH" }))
|> filter(fn: ® => r["_level"] == "DH")
且值小于 0 时。通过创建以下消息将检查状态与您的自定义状态相关联:Check: ${ r._check_name } is:${string(v: r._battery_level)}
此处使用 Flux 字符串插值 是冗余的,因为我们的_battery_level
已经是字符串。但是,我将其包含在内是为了演示如果您需要如何转换字段类型以在消息中包含该值。重要提示:如果您将此工作流程用于自定义状态,请确保不要使用_level
标记您的自定义状态列,因为这是为检查状态保留的。问:我需要为我的检查添加 4 个以上的状态。我该怎么办? 答:不幸的是,您不能在一个检查中添加超过 4 个状态。但是,您可以随时创建一个新的检查以包含更多状态。例如,您可以使用信息丰富的名称分隔检查,这些名称根据标签或阈值级别区分状态。再次,我鼓励您利用通知消息来阐明您的警报。注意:如果这种方法感觉很麻烦,并且您对允许为一个检查添加 4 个以上状态的功能增强感兴趣,请在此问题 #19208 上发表评论。 -