部署 InfluxDB
时序数据库用于指标、IoT 传感器和监控,Flux/InfluxQL。
平台进阶
为什么
InfluxDB 优化时序数据 — 高写吞吐、降采样和保留策略。Flux 查询语言时序分析。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
指标、IoT 和监控用 InfluxDB。通用避免(用 Postgres)。
如何做
1. Docker — influxdb:2 加 Telegraf
2. Bucket — 配保留建 bucket
3. 写入 — line protocol 高吞吐
4. 查询 — Flux 或 InfluxQL
5. Telegraf — 指标采集代理
6. Grafana — :3000 可视化
7. 降采样 — 任务聚合旧数据
示例
# docker-compose.yml
services:
influxdb:
image: influxdb:2
ports: ["8086:8086"]
volumes: [idata:/var/lib/influxdb2]
telegraf:
image: telegraf
depends_on: [influxdb]
volumes: { idata: }
# 经 line protocol 写入
curl -X POST 'localhost:8086/api/v2/write?bucket=mybucket&org=myorg' -H 'Authorization: Token my-token' -d 'temperature,location=room1 value=23.5 1700000000000000000'
# Flux 查询
curl -X POST 'localhost:8086/api/v2/query?org=myorg' -H 'Authorization: Token my-token' -d 'from(bucket:"mybucket") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "temperature")'
常见问题
- ⚠无保留策略 — 数据无限增长,bucket 设保留
- ⚠高基数 — 唯一 tag 过多,查询慢
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓设保留策略 — 自动删旧数据省存储
- ✓用降采样任务 — 聚合旧数据省空间
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求