如果这个任务听起来很简单,我很抱歉。但是,我刚刚开始与 Influx 合作。
我的流入数据库中有以下数据集。
> select * from "productA" where "key" = 'auth-service' and time >= now() - 2d
name: productA
time key value
---- --- -----
1606149940282823100 auth-service 200
1606150840121208900 auth-service 200
1606151739988156400 auth-service 200
1606152640068272500 auth-service 501
1606153540171206600 auth-service 200
1606154440452052500 auth-service 200
1606155340367436300 auth-service 501
1606156240083789100 auth-service 501
1606157140017362300 auth-service 200
1606158040164140600 auth-service 200
1606158940108503600 auth-service 200
1606159840290334300 auth-service 200
.
.
.
.
.
1606309240026904100 auth-service 200
1606310140215219500 auth-service 200
1606311040035353800 auth-service 200
1606311940135475600 auth-service 200
1606312840182629300 auth-service 404
1606313740375395900 auth-service 200
1606314640279048300 auth-service 200
1606315540205045900 auth-service 200
1606316440125233400 auth-service 200
1606317340177812500 auth-service 404
1606318240399528000 auth-service 200
1606319140427589200 auth-service 200
1606320039995366300 auth-service 200
1606320940496533400 auth-service 200
1606321840238763300 auth-service 200
我正在尝试编写一个查询,该查询应该给我值不是 200 的结果,以及值返回 200 的下一个条目。因此,如果序列中有 5 个条目的值不等于 200,那么它应该给出我是报告值不是 200 的第一个条目,这应该按日期分组。
简而言之,这些测量数据是使用脚本存储的,该脚本每 15 分钟检查一次 productA 的身份验证服务的 HTTP 响应代码。我正在尝试创建一个网页,用户可以在其中查看过去 15 天的事件列表,他们可以在其中看到身份验证服务何时失败并通过时间戳恢复成功。如果此事件发生多次,则页面也会显示该事件。
例如
Date : 11-24-20
11:00 AM - productA Auth service Failed
12:15 PM - productA Auth Service Restored
5:00 PM - productA Auth service Failed
5:30 PM - productA Auth Service Restored
Date : 11-25-20
11:00 AM - productA Auth service Failed
12:15 PM - productA Auth Service Restored
到目前为止,我的方法是获取过去 15 天内状态代码不是 200 的所有条目的列表,然后使用该数据进行另一个查询,在该查询中我使用第一个查询中的时间戳来获取下一个条目的值是 200。但是这种方法不能在一天内处理多次发生的此类事件。
任何最佳解决方案表示赞赏!
谢谢,
麦克风