gpt4 book ai didi

time-series - 在 InfluxDB 中计算费率

转载 作者:行者123 更新时间:2023-12-01 04:59:48 25 4
gpt4 key购买 nike

我有 3 列(时间、值、结果)的测量表。 timevalue是时间序列数据库所需的基础。 result列标记可以具有以下值之一(成功/硬失败/软失败/未知)。

我想在给定的时间窗口内跟踪成功率(成功/总数)(因为我将在 grafana 上使用它,时间窗口可能会改变并且应该支持动态时间范围查询)

我在 Influx 0.9 上尝试过的事情:

1: Using Grafana: 

Grafana 有一个百分比堆栈选项来显示计数值。不幸的是,它不显示百分比值。它只显示带有分布的图形。我对生成百分比感兴趣,我认为 Grafana 没有这种能力。
2: Continuous queries - single table:

我尝试设置一个连续查询来汇总新测量表中的成功计数和总计数。
CREATE CONTINUOUS QUERY count_total ON metrics BEGIN SELECT SUM(value) as total INTO "metric_agg" FROM "original_metric" WHERE time > now() - 1h GROUP BY time(5m) END CREATE CONTINUOUS QUERY count_success ON metrics BEGIN SELECT SUM(value) as success INTO "metric_agg" FROM "original_metric" WHERE result = 'success' and time > now() - 1h GROUP BY time(5m) END
鉴于这是两个不同的 CQ 写入相同的表,某些值在新的 metric_agg 上并不完全匹配。表,导致 grafana 查询失败。我觉得我可能在这里尝试了一些错误的东西。如果您看到错误,请告诉我

更新 :不确定以下是否可行,但在查看 beckettsean 的回复后想将其放在此处。我很快就会试试这个。

在单独的字段下创建 2 个 CQ 转储聚合值并运行一个除法:
CREATE CQ count_total ON metrics BEGIN SELECT SUM(value) as total INTO "metric_agg" FROM "original_metric" WHERE time > now() - 1h GROUP BY time(5m) END CREATE CQ count_success ON metrics BEGIN SELECT SUM(value) as success INTO "metric_agg" FROM "original_metric" WHERE result = 'success' and time > now() - 1h GROUP BY time(5m) END
格拉法纳: select success / total from metric_agg where $timeFilter
3: Continuous queries - single table - overwrites:

我尝试在上面的每个 CQ 上插入“虚拟”0 值,以确保在每一列的每一行中都有一个值。在大多数情况下,这实际上会用 0 覆盖原始值,并生成导致错误率的错误值。
4: Continuous queries - multiple tables:

我现在试图在自己的表中编写每个 CQ,并希望在 Grafana 查询中合并聚合表。然而,对涌入的“合并”似乎并没有产生一个单一的系列。
SELECT sum("success") as success, sum("total") as total FROM merge /metric_result_*/ WHERE time > now() - 2h GROUP BY time(5m) fill(0)
生成 2 个系列( metric_result_successmetric_result_total .. 与 CQ 写入数据的位置相同)。

我想我想问的是:
计算流入 0.9+ 的比率的最佳方法是什么? CQ 似乎很脆弱,如果可能的话,我很想避免使用它们。

最佳答案

2: Continuous queries - single table:



不推荐这种方法,因为 CQ 都写入同一个系列。没有标签来区分结果,所以一个 CQ 覆盖了另一个 CQ 的点。点由它们的测量名称、标签集和时间戳唯一标识。字段不是唯一性的一部分。每个 CQ 都写入相同的测量值 metric_agg .由于没有 GROUP BY <tag>GROUP BY *为两个 CQ 设置的标记为空。这只是留下时间戳来区分两者,因为它们具有相同的 GROUP BY time()子句,他们将写入具有相同时间戳的点。

4: Continuous queries - multiple tables:



无法计算跨测量值(您称之为“表格”)。测量中的系列可以合并,但不能跨测量合并。

单单在 InfluxDB 查询语言中,您所请求的内容是不可能的,这是一个很长的说法。要计算在特定状态下花费的时间,您需要在 InfluxDB 之外处理查询结果。

关于time-series - 在 InfluxDB 中计算费率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com