InfluxDB 时间序列数据库部署教程
InfluxDB 是目前最流行的开源时间序列数据库,专为处理高写入负载和时间戳数据而设计。它广泛应用于服务器监控、IoT 数据采集和实时分析场景。本文将在搬瓦工 VPS 上部署 InfluxDB 2.x,并演示数据的写入、查询以及与 Telegraf 和 Grafana 的集成。
一、环境要求
- 操作系统:Ubuntu 20.04+、Debian 11+ 或 CentOS 7+。
- 内存:最低 512MB,推荐 1GB 以上。
- 磁盘:根据数据量预留空间,SSD 硬盘效果最佳。
- 端口:默认使用 8086 端口。
二、在 Ubuntu/Debian 上安装
2.1 添加仓库并安装
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | tee /etc/apt/sources.list.d/influxdata.list
apt update
apt install influxdb2 influxdb2-cli -y
2.2 启动服务
systemctl start influxdb
systemctl enable influxdb
systemctl status influxdb
三、Docker 安装
docker run -d \
--name influxdb \
--restart unless-stopped \
-p 8086:8086 \
-v influxdb-data:/var/lib/influxdb2 \
-v influxdb-config:/etc/influxdb2 \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=admin \
-e DOCKER_INFLUXDB_INIT_PASSWORD=your_secure_password \
-e DOCKER_INFLUXDB_INIT_ORG=myorg \
-e DOCKER_INFLUXDB_INIT_BUCKET=monitoring \
-e DOCKER_INFLUXDB_INIT_RETENTION=30d \
influxdb:2
Docker Compose 方式:
version: '3.8'
services:
influxdb:
image: influxdb:2
container_name: influxdb
restart: unless-stopped
ports:
- "8086:8086"
volumes:
- influxdb-data:/var/lib/influxdb2
- influxdb-config:/etc/influxdb2
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=admin
- DOCKER_INFLUXDB_INIT_PASSWORD=your_secure_password
- DOCKER_INFLUXDB_INIT_ORG=myorg
- DOCKER_INFLUXDB_INIT_BUCKET=monitoring
- DOCKER_INFLUXDB_INIT_RETENTION=30d
volumes:
influxdb-data:
influxdb-config:
四、初始化设置
如果未通过环境变量初始化,可通过命令行完成:
influx setup \
--username admin \
--password your_secure_password \
--org myorg \
--bucket monitoring \
--retention 720h \
--force
也可以通过浏览器访问 http://你的IP:8086 在 Web 界面完成初始化设置。
五、核心概念
- Organization:组织,是 Bucket 和用户的容器。
- Bucket:数据桶,存储时间序列数据的容器,可设置数据保留策略。
- Measurement:类似于关系型数据库的表。
- Tag:带索引的元数据,用于过滤和分组。
- Field:实际的数据值,不带索引。
- Timestamp:每条数据的时间戳。
六、数据操作
6.1 创建 API Token
# 创建读写 Token
influx auth create \
--org myorg \
--read-buckets \
--write-buckets \
--description "Telegraf read/write token"
6.2 管理 Bucket
# 查看所有 Bucket
influx bucket list
# 创建新 Bucket
influx bucket create \
--name server-metrics \
--org myorg \
--retention 30d
# 删除 Bucket
influx bucket delete --name old-bucket --org myorg
6.3 写入数据
# 使用 Line Protocol 写入
influx write \
--bucket monitoring \
--org myorg \
--precision s \
"cpu,host=server01 usage_idle=92.5,usage_user=5.2,usage_system=2.3 $(date +%s)"
# 通过 API 写入
curl -X POST "http://localhost:8086/api/v2/write?org=myorg&bucket=monitoring&precision=s" \
--header "Authorization: Token YOUR_TOKEN" \
--header "Content-Type: text/plain; charset=utf-8" \
--data-raw "mem,host=server01 used_percent=65.3 $(date +%s)"
6.4 查询数据(Flux 语言)
# 查询最近 1 小时的 CPU 数据
influx query 'from(bucket: "monitoring")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "cpu")
|> filter(fn: (r) => r._field == "usage_idle")
|> mean()' --org myorg
七、数据保留策略
# 修改 Bucket 的保留策略
influx bucket update \
--id BUCKET_ID \
--retention 90d
# 设置降采样任务(保留长期聚合数据)
influx query 'option task = {name: "downsample_cpu", every: 1h}
from(bucket: "monitoring")
|> range(start: -task.every)
|> filter(fn: (r) => r._measurement == "cpu")
|> aggregateWindow(every: 5m, fn: mean, createEmpty: false)
|> to(bucket: "monitoring-downsampled", org: "myorg")' --org myorg
八、与 Telegraf 集成
Telegraf 是 InfluxDB 的官方数据采集代理。详细配置请参考 Telegraf 系统指标收集配置教程。核心配置示例:
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "YOUR_INFLUXDB_TOKEN"
organization = "myorg"
bucket = "monitoring"
九、与 Grafana 集成
在 Grafana 中添加 InfluxDB 数据源:
- Query Language:选择 Flux。
- URL:
http://localhost:8086 - Organization:myorg
- Token:你的 InfluxDB API Token。
- Default Bucket:monitoring
十、备份与恢复
# 备份所有数据
influx backup /tmp/influxdb-backup --org myorg
# 恢复数据
influx restore /tmp/influxdb-backup --org myorg
# 导出特定 Bucket 数据
influx query 'from(bucket: "monitoring") |> range(start: -7d)' \
--org myorg --raw > data-export.csv
常见问题
内存占用过高
InfluxDB 会使用较多内存进行缓存,可通过配置限制:
# /etc/influxdb/config.toml
storage-cache-max-memory-size = 536870912 # 512MB
storage-cache-snapshot-memory-size = 26214400 # 25MB
磁盘空间增长过快
检查数据保留策略设置,确保过期数据被及时清理。同时可以开启压缩功能减少存储占用。
总结
InfluxDB 是监控数据存储的理想选择,配合 Telegraf 采集数据、Grafana 可视化展示,构成了 TIG(Telegraf + InfluxDB + Grafana)监控栈。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。