监控状态
此页面记录了早期版本的 InfluxDB OSS。 InfluxDB OSS v2 是最新稳定版本。 查看等效的 InfluxDB v2 文档: 监控状态。
Flux 帮助您监控指标和事件中的状态
如果您刚开始使用 Flux 查询,请查看以下内容
查找状态持续多长时间
使用
stateDuration()
函数计算列值保持相同值(或状态)的时长。包括以下信息- 要搜索的列: 任何标签键、标签值、字段键、字段值或 measurement。
- 值: 要在指定列中搜索的值(或状态)。
- 状态持续时间列: 用于存储状态持续时间的新列,即指定值持续的时长。
- 单位: 时间单位(
1 秒
(默认)、1 分钟
、1 小时
),用于递增状态持续时间。
|> stateDuration( fn: (r) => r._column_to_search == "value_to_search_for", column: "state_duration", unit: 1s )
使用
stateDuration()
搜索每个点的指定值- 对于第一个评估为
true
的点,状态持续时间设置为0
。对于每个连续评估为true
的点,状态持续时间按每个连续点之间的时间间隔(以指定单位)增加。 - 如果状态为
false
,则状态持续时间重置为-1
。
- 对于第一个评估为
使用 stateDuration() 的查询示例
以下查询在过去 5 分钟内搜索 doors
存储桶,以查找门已 closed
多少秒。
from(bucket: "doors")
|> range(start: -5m)
|> stateDuration(
fn: (r) =>
r._value == "closed",
column: "door_closed",
unit: 1s
)
在本示例中,door_closed
是状态持续时间列。如果您每分钟向 doors
存储桶写入数据,则对于每个 _value
为 closed
的连续点,状态持续时间增加 60 秒
。如果 _value
不是 closed
,则状态持续时间重置为 0
。
查询结果
上面示例查询的结果可能如下所示(为简单起见,我们省略了 measurement、tag 和 field 列)
_time _value door_closed
2019-10-26T17:39:16Z closed 0
2019-10-26T17:40:16Z closed 60
2019-10-26T17:41:16Z closed 120
2019-10-26T17:42:16Z open -1
2019-10-26T17:43:16Z closed 0
2019-10-26T17:44:27Z closed 60
计算连续状态的数量
使用
stateCount()
函数并包括以下信息- 要搜索的列: 任何标签键、标签值、字段键、字段值或 measurement。
- 值: 要在指定列中搜索的值。
- 状态计数列: 用于存储状态计数的新列,即指定值存在的连续记录数。
|> stateCount (fn: (r) => r._column_to_search == "value_to_search_for", column: "state_count" )
使用
stateCount()
搜索每个点的指定值- 对于第一个评估为
true
的点,状态计数设置为1
。对于每个连续评估为true
的点,状态计数增加 1。 - 如果状态为
false
,则状态计数重置为-1
。
- 对于第一个评估为
使用 stateCount() 的查询示例
以下查询在过去 5 分钟内搜索 doors
存储桶,并计算有多少个点的 _value
为 closed
。
from(bucket: "doors")
|> range(start: -5m)
|> stateDuration(
fn: (r) =>
r._value == "closed",
column: "door_closed")
本示例将状态计数存储在 door_closed
列中。如果您每分钟向 doors
存储桶写入数据,则对于每个 _value
为 closed
的连续点,状态计数增加 1
。如果 _value
不是 closed
,则状态计数重置为 -1
。
查询结果
上面示例查询的结果可能如下所示(为简单起见,我们省略了 measurement、tag 和 field 列)
_time _value door_closed
2019-10-26T17:39:16Z closed 1
2019-10-26T17:40:16Z closed 2
2019-10-26T17:41:16Z closed 3
2019-10-26T17:42:16Z open -1
2019-10-26T17:43:16Z closed 1
2019-10-26T17:44:27Z closed 2
用于计算机器状态的查询示例
以下查询每分钟检查机器状态(空闲、已分配或繁忙)。InfluxDB 在过去一小时内搜索 servers
存储桶,并计算机器状态为 idle
、assigned
或 busy
的记录。
from(bucket: "servers")
|> range(start: -1h)
|> filter(fn: (r) =>
r.machine_state == "idle" or
r.machine_state == "assigned" or
r.machine_state == "busy"
)
|> stateCount(fn: (r) => r.machine_state == "busy", column: "_count")
|> stateCount(fn: (r) => r.machine_state == "assigned", column: "_count")
|> stateCount(fn: (r) => r.machine_state == "idle", column: "_count")
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。如需获得支持,请使用以下资源
拥有年度合同或支持合同的客户 可以联系 InfluxData 支持。