InfluxDB 时间序列数据库部署教程

InfluxDB 是目前最流行的开源时间序列数据库,专为处理高写入负载和时间戳数据而设计。它广泛应用于服务器监控、IoT 数据采集和实时分析场景。本文将在搬瓦工 VPS 上部署 InfluxDB 2.x,并演示数据的写入、查询以及与 TelegrafGrafana 的集成。

一、环境要求

  • 操作系统: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。
  • URLhttp://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% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。