-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
情况说明
在 v0.0.12 及之前的版本,使用的是 pg 数据库存储时序数据,后台启动多个定时任务将原始数据取样为多个时间维度进行存储,在运行了一段时间之后,我发现这种方式数据取样的不准确,并且开发成本很高,最后还是决定使用 VictoriaMetrics 来存储时序数据。
VictoriaMetrics 的优秀不必多说,贴一个 gemini 3 pro 的回答。
| 维度 | VictoriaMetrics (VM) | Prometheus | InfluxDB (1.x/2.x OSS) |
|---|---|---|---|
| 推荐指数 | 🌟🌟🌟🌟🌟 (首选) | 🌟🌟🌟 (标准但较重) | 🌟🌟 (慎选) |
| 内存占用 | 极低 (同负载下约为 Prom 的 1/5) | 高 (受时间序列数量影响大) | 高 (受索引和基数影响大) |
| 磁盘占用 | 极低 (压缩率极高,约为 Prom 的 1/10) | 中等 | 中等 |
| CPU 消耗 | 低 (优化的 Go 代码,写入性能极强) | 中高 (特别是压缩数据时) | 中 (查询复杂时消耗大) |
| 高基数支持 | 优秀 (百万级 Series 依然流畅) | 差 (容易 OOM 内存溢出) | 差 (索引构建会吃光内存) |
| 协议兼容 | 兼容 PromQL、Influx 协议 | 原生 PromQL | InfluxQL / Flux |
| 部署模式 | 单一二进制文件 (极简) | 单一二进制文件 | 单一二进制文件 |
更新方式
- 在 docker-compose.yaml 中增加 victoriametrics ,完整配置参考
https://github.com/dushixiang/pika/blob/main/docker-compose.postgresql.yml
- 在 config.yaml 中增加 VictoriaMetrics 配置,完整配置参考
https://github.com/dushixiang/pika/blob/main/config.postgresql.yaml
- 执行
docker compose pull && docker compose up -d进行更新。
数据迁移
- 如果你想要将之前采集到的历史数据迁移到到 VictoriaMetrics ,需要执行以下命令
docker compose exec pika /app/pika migrate_v0_0_13
- 如果你不想保留之前的数据,只需要将旧的数据库表删除即可。
创建一个 drop_tables.sql 文件:
DROP TABLE IF EXISTS cpu_metrics CASCADE;
DROP TABLE IF EXISTS memory_metrics CASCADE;
DROP TABLE IF EXISTS disk_metrics CASCADE;
DROP TABLE IF EXISTS network_metrics CASCADE;
DROP TABLE IF EXISTS network_connection_metrics CASCADE;
DROP TABLE IF EXISTS disk_io_metrics CASCADE;
DROP TABLE IF EXISTS gpu_metrics CASCADE;
DROP TABLE IF EXISTS temperature_metrics CASCADE;
DROP TABLE IF EXISTS monitor_metrics CASCADE;
DROP TABLE IF EXISTS cpu_metrics_aggs CASCADE;
DROP TABLE IF EXISTS memory_metrics_aggs CASCADE;
DROP TABLE IF EXISTS disk_metrics_aggs CASCADE;
DROP TABLE IF EXISTS network_metrics_aggs CASCADE;
DROP TABLE IF EXISTS network_connection_metrics_aggs CASCADE;
DROP TABLE IF EXISTS disk_io_metrics_aggs CASCADE;
DROP TABLE IF EXISTS gpu_metrics_aggs CASCADE;
DROP TABLE IF EXISTS temperature_metrics_aggs CASCADE;
DROP TABLE IF EXISTS monitor_metrics_aggs CASCADE;
DROP TABLE IF EXISTS aggregation_progress CASCADE;
DROP TABLE IF EXISTS monitor_stats CASCADE;然后执行:
docker-compose exec -T postgresql psql -U pika pika < drop_tables.sql
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels