提问人:PietiePoo 提问时间:3/17/2023 最后编辑:AdriaanPietiePoo 更新时间:3/21/2023 访问量:224
对多个表/列应用 InfluxDB 1.x 连续查询?
Apply InfluxDB 1.x continuous query against multiple tables/columns?
问:
对于一个监控项目,我创建了一个使用 InfluxDB 1.8 的设置。由于兼容性原因,无法使用 InfluxDB 2.x。
为了节省磁盘空间,我正在尝试对数据进行下采样,数据越旧,又名“瘦身”。在 InfluxDB 1.x 中,使用保留策略和连续查询是完全可以实现的,如此处所述。
然而,一个问题出现了:进入 InfluxDB 的数据包含许多表(可用性、处理器、端口等),其中许多表具有不止一列信息。最重要的是,我想下采样三次:一次从一天到一周,一次从一周到一个月,一次从月到一年。有 2 个表,每个表包含 4 列,我已经必须编写至少 24 个 CQ。实际上,我可能会坐在大约 20-30 张桌子,每张桌子有 1-20 列。我不是在写 1200 CQ。
我的问题是:是否有任何内置方法可以告诉 InfluxDB 将 RP 和 CQ 应用于多个表和列?如果没有,我可能会编写一些 bash 脚本来侦听当前表/列并为我编写查询,但这并不优雅。
提前非常感谢。
有关设置的详细信息
- LibreNMS 23.1.1 传递数据(删除超过一天的任何内容)
- InfluxDB 1.8 接收数据(缩减采样并删除超过一年的任何内容)
- Grafana 9.3.8 可视化数据和告警
InfluxDB 2.x 通过存储桶的概念使下采样变得更加容易,但 LibreNMS 与 2.x 并不完全兼容。
答:
1赞
PietiePoo
3/21/2023
#1
我设法通过编写一个 150 行的 bash 脚本来解决我的问题,该脚本为我编写了 RP 和 CQ。根据公司政策,我不能分享脚本,但这是我是如何做到的:
- 收集所有 InfluxDB 数据库。
- 创建一个空的 .IQL 文本文件。
- 将每个数据库的 4 个 RP 写入 。IQL 文件:日、周、月、年。
- 使用 InfluxDB API 擦除每个数据库的所有当前 CQ。
- 将每个数据库、每个度量值、每个字段写入 3 个 CQ。IQL 文件:dayToWeek、weekToMonth、monthToYear。
- 使用 InfluxDB CLI(也可以使用 API)执行 .IQL 文件。
我希望这可以帮助某人。总的来说,我最终仅在我的测试环境中就获得了近 600 条 InfluxQL 指令。
下一个:下采样张量
评论