综合新闻
InfluxDB - 安装配置 深入理解
2026-05-03 10:01
InfluxDB安装配置:Linux多发行版实战指南,解决时序数据库依赖坑、版本冲突、基础安全配置等实际问题
一、前言
搞过的人都知道,安装InfluxDB最烦的不是下载包,而是:依赖一堆坑(尤其CentOS 7的老 glibc),版本号在repo里乱跳,装完连不上、启不动、权限报错三连击。干了这么多年,这次把主流发行版的正确姿势聊透,你照着走一遍,10分钟跑起来。
二、操作步骤
步骤1:检查系统环境与前置依赖
# 查看系统版本
cat /etc/os-release
# 检查CPU架构(InfluxDB 2.x已放弃32位)
uname -m
# 检查端口占用情况
ss -tlnp | grep -E ':8086|:8088|:9999'
预期输出:
NAME="Ubuntu"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
...
x86_64 # 确认是64位系统
# 如果端口已被占用会显示监听进程
步骤2:CentOS/RHEL 添加 InfluxDB 官方仓库
# CentOS 7 / RHEL 7 系列
sudo cat > /etc/yum.repos.d/influxdb.repo << 'EOF'
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
# 清除缓存验证repo可用
sudo yum clean all
sudo yum repolist | grep influxdb
预期输出:
Loaded plugins: fastestmirror
influxdb InfluxDB Repository - RHEL 7 x86_64 Stable 12
注意:CentOS 7用户如果遇到 gpgkey 校验失败,执行:sudo rpm --import https://repos.influxdata.com/influxdb.key
步骤3:Ubuntu/Debian 添加 InfluxDB 官方仓库
# Ubuntu 20.04/22.04 通用
sudo apt-get update
sudo apt-get install -y gnupg2 curl
# 添加GPG密钥
curl --silent --location -O https://repos.influxdata.com/influxdb.key
echo "9436 8819 3D5C 3D46 48BB 9D6F 925A F202 7595 C929" | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/influxdb-archive-keyring.gpg
# 添加仓库源
echo "deb [signed-by=/usr/share/keyrings/influxdb-archive-keyring.gpg] https://repos.influxdata.com/debian stable main" | sudo tee /etc/apt/sources.list.d/influxdb.list
# 更新并确认
sudo apt-get update
apt-cache policy influxdb
预期输出:
influxdb:
Installed: (none)
Candidate: 1.11.5
Version table:
1.11.5 500
500 https://repos.influxdata.com/debian stable/main amd64 Packages
# CentOS/RHEL 安装
sudo yum install -y influxdb2
# Ubuntu/Debian 安装
sudo apt-get install -y influxdb2
# 验证安装位置与版本
which influxd
influxd version
influxd version
# 预期输出:
# InfluxDB 2.7.x (git: v2.7.x) build_date...
预期输出:
InfluxDB 2.7.1 (git: v2.7.1) build_date: 2024-01-15T14:05:43Z
⚠️ 注意:这里安装的是 InfluxDB 2.x(内置InfluxDB CLI),与 1.x 版本在认证流程和API上有重大区别。如果你的业务需要1.x兼容模式,参考FAQ部分配置。
步骤5:启动服务并配置开机自启
# 启动InfluxDB服务
sudo systemctl start influxdb
# 检查运行状态
sudo systemctl status influxdb
预期输出:
● influxdb.service - InfluxDB 2.x Service
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled)
Active: active (running) since Mon 2024-01-15 10:30:45 CST; 2s ago
Main PID: 12345 (influxd)
CGroup: /system.slice/influxdb.service
└─12345 /usr/bin/influxd
# 设置开机自启(生产环境必做)
sudo systemctl enable influxdb
# 验证端口监听
ss -tlnp | grep 8086
ss -tlnp | grep 9999 # 旧版本迁移端口
预期输出:
LISTEN 0 128 *:8086 *:* users:(("influxd",pid=12345,fd=3))
LISTEN 0 128 *:9999 *:* users:(("influxd",pid=12345,fd=4))
# 8086是主API端口,9999是旧版本RPC端口(2.x默认保留)
步骤6:初始配置与管理员账号创建
# 浏览器访问 http://服务器IP:8086 进入初始化向导
# 如果CLI初始化,使用以下命令:
influx setup \
--bucket metrics \
--org myorg \
--username admin_user \
--password YOUR_PASSWORD \
--retention 30d \
--force
# 验证CLI可连接
influx auth list
预期输出:
WARNING:
It is possible that a user with the same username exists and the setup
will fail. If so, use the CLI flag --force to reinitialize the server.
# 正常输出:
ID Description Token User Name User ID
0xxxxxxxxxxxxxxxxxx00 - oxxxxxxxxxxxxxx== admin_user 0xxxxxxxxx00
⚠️ 密码要求:必须包含至少8个字符,包含大小写字母和数字。生产环境建议使用强密码或接入LDAP/OAuth认证。
步骤7:配置网络监听与远程访问
# 查看默认配置
grep -E "bind-address|http-bind-address" /etc/influxdb/config.toml 2>/dev/null || \
grep -E "bind-address|http-bind-address" /etc/influxdb/influxdb.conf 2>/dev/null
# CentOS/RHEL 编辑配置文件
sudo vi /etc/influxdb/config.toml
# Ubuntu/Debian 编辑配置文件
sudo vi /etc/influxdb/influxdb.conf
配置示例(bind-address 改为0.0.0.0以允许远程访问):
[http]
enabled = true
bind-address = "0.0.0.0:8086" # 改为0.0.0.0而非默认127.0.0.1
auth-enabled = true # 必须开启认证!
max-body-size = 0
# 重载配置
sudo systemctl restart influxdb
# 从其他机器测试连接(需要配置token)
export INFLUX_HOST=http://目标服务器IP:8086
export INFLUX_TOKEN="你的Token"
influx ping
预期输出:
# 返回OK表示服务正常
OK
步骤8:防火墙与安全组配置
# CentOS/RHEL 7 配置firewalld
sudo firewall-cmd --permanent --add-port=8086/tcp
sudo firewall-cmd --permanent --add-port=8088/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
# Ubuntu 通常使用ufw
sudo ufw allow 8086/tcp
sudo ufw allow 8088/tcp
sudo ufw status
预期输出:
# firewalld输出
8086/tcp 8088/tcp
# ufw输出
Status: active
To Action From
-- ------ ----
8086/tcp ALLOW Anywhere
8088/tcp ALLOW Anywhere
步骤9:数据存储路径与性能调优
# CentOS/RHEL 编辑config.toml
sudo vi /etc/influxdb/config.toml
# 在[engine] section添加:
[engine]
path = "/var/lib/influxdb/engine"
# 如果需要单独的数据盘(在storage section配置)
[storage]
store = "tsm1"
data = "/data/influxdb/data"
wal = "/data/influxdb/wal"
# 重启服务
sudo systemctl restart influxdb
# 创建数据目录并授权
sudo mkdir -p /data/influxdb/{data,wal}
sudo chown -R influxdb:influxdb /data/influxdb
sudo systemctl restart influxdb
预期输出:
Job for influxdb.service changed.
# 验证路径生效
ls -la /var/lib/influxdb/engine/
⚠️ 生产环境强烈建议:WAL和TSM数据放在SSD上,保留策略根据业务需求设置,避免默认无限期保留撑爆磁盘。
三、常见问题FAQ
Q1:安装完后浏览器访问8086端口显示连接拒绝,什么情况?
先别急着骂爹,八成是配置文件里bind-address还是127.0.0.1。InfluxDB 2.x默认只监听本地回环地址,生产环境必须手动改。执行:
sudo vi /etc/influxdb/config.toml
# 找到 [http] 段落,把 bind-address 从 "127.0.0.1:8086" 改成 "0.0.0.0:8086"
sudo systemctl restart influxdb
# 再检查
ss -tlnp | grep 8086
预期输出:
LISTEN 0 128 0.0.0.0:8086 0.0.0.0:*
如果还是连不上,检查SELinux是否拦截:getenforce,如果是Enforcing模式,执行 setsebool -P httpd_can_network_connect 1 或者直接临时关闭测试。
Q2:InfluxDB 2.x的认证token在哪找?怎么API写入数据?
这是新手被劝退的重灾区。2.x废弃了1.x的Basic Auth,必须用Token。获取方式:
# 在InfluxDB Web UI里:Settings -> Tokens
# 或用CLI查看
influx auth list
# API写入示例(用curl测试)
curl -X POST "http://服务器IP:8086/api/v2/write?org=myorg&bucket=metrics&precision=s" \
-H "Authorization: Token YOUR_TOKEN_HERE" \
-H "Content-Type: text/plain; charset=utf-8" \
--data-binary "temperature,location=server_room value=25.5 1705312800"
预期输出:
# 返回空表示成功,非空表示错误
# HTTP 204 No Content - 成功
# HTTP 401 Unauthorized - Token错误
# HTTP 400 Bad Request - 数据格式错误
Q3:业务要兼容InfluxDB 1.x的协议和查询语法怎么办?
2.x版本内置了1.x兼容层,但默认不开启。开启方法:
sudo vi /etc/influxdb/config.toml
# 在文件末尾添加或修改:
[http]
enabled = true
bind-address = ":8086"
# 启用v1兼容
[influxql]
enabled = true
interval = "10s"
# 重启
sudo systemctl restart influxdb
# 测试1.x协议的8086端口
influx -host 127.0.0.1 -port 8086 -username admin_user -password YOUR_PASSWORD
# 进入后执行SHOW DATABASES验证
注意:2.x的CLI需要加-host参数才能连接老协议,直接执行influx默认走v2 API。企业迁移场景建议仔细评估兼容性限制,官方文档有明确的API对照表。
四、总结
核心要点:
下一步实战方向推荐:Telegraf agent安装配置 → InfluxDB数据写入 → Grafana对接InfluxDB可视化,这条链路打通了,时序监控体系才算完整。