n8n 2.43.7 运维手册:备份、升级、日志与监控

Ubuntu 22.04 上 n8n 2.43.7 生产运维:systemd 托管模板、逻辑/物理备份与恢复演练、升级回滚与迁移日志、JSON 行日志与审计事件、Prometheus 监控、安全基线与故障排查速查,实测回显齐全。

n8nn8n运维监控2026/10/17

n8n 2.43.7 运维手册:备份、升级、日志与监控

‍‍​​‌​> 目标:面向 Ubuntu 22.04 服务器上的 n8n 2.43.7 自托管实例,给出系统服务托管、备份恢复、升级回滚、日志监控与故障排查的完整操作手册。备份类命令与日志/指标输出均为实测回显;系统服务单元为标准 systemd 模板(语法经 systemd-analyze verify 校验)。

一、生产拓扑与账户规划

用户/客户端 → Nginx/Caddy(TLS) → 127.0.0.1:5678 (n8n systemd 服务) → ~/.n8n/ (SQLite) 
                                                                    → 可选 PostgreSQL
  • 独立系统账户运行(useradd -r -m -d /var/lib/n8n n8n),数据根目录用 N8N_USER_FOLDER=/var/lib/n8n/.n8n 显式指定(实测该变量决定 CLI 与服务的共同数据目录);
  • 运行要求 Node.js >= 24(npm engines 实测);安装:sudo npm install -g n8n,升级后可执行文件位于 /usr/bin/n8n;
  • 换 PostgreSQL 见《n8n 2.43.7 配置参数详解(环境变量实测)》第五节(实测建表 157 张)。

二、systemd 托管

/etc/systemd/system/n8n.service:

[Unit]
Description=n8n workflow automation
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=n8n
Group=n8n
EnvironmentFile=/etc/n8n/n8n.env
ExecStart=/usr/bin/n8n start
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

/etc/n8n/n8n.env(权限 600,属主 n8n)集中放环境变量:

N8N_USER_FOLDER=/var/lib/n8n/.n8n
N8N_PORT=5678
GENERIC_TIMEZONE=Asia/Shanghai
N8N_SECURE_COOKIE=true
N8N_RUNNERS_ENABLED=true
# N8N_METRICS=true
sudo systemctl daemon-reload && sudo systemctl enable --now n8n
systemd-analyze verify /etc/systemd/system/n8n.service   # 语法校验,无输出即通过
curl -s http://127.0.0.1:5678/healthz                     # → {"status":"ok"}

三、备份与恢复

3.1 必备清单(缺一不可)

对象位置说明
加密密钥~/.n8n/config丢了所有凭证作废,单独加密保存
主库~/.n8n/database.sqlite(含 -wal/-shm)工作流、执行、用户全在里面
内置事件日志~/.n8n/n8nEventLog*.log审计流水,自动轮转(实测存在 -1/-2 后缀文件)
逻辑导出CLI 导出 JSON跨版本、跨库恢复的首选

3.2 逻辑备份(✅ 实测)

$ n8n export:workflow --backup --output=/var/backups/n8n/wf/
Successfully exported 2 workflows.       # 每个工作流一个 <id>.json

$ n8n export:credentials --backup --output=/var/backups/n8n/cred/   # AES 密文,安全可归档
# ⚠️ 除非迁移加密密钥,绝不使用 --decrypted(帮助原文:ALL SENSITIVE INFORMATION WILL BE VISIBLE)

$ n8n export:entities --outputDir=/var/backups/n8n/entities/        # 全库实体级备份

3.3 物理备份与瘦身

SQLite 带 WAL,直接 cp 主文件可能丢最后几笔提交。安全做法:

sqlite3 ~/.n8n/database.sqlite ".backup '/var/backups/n8n/db-$(date +%F).sqlite'"

维护窗口可顺手瘦身(实测 VACUUM:2,396,160 → 2,351,104 字节):

sqlite3 ~/.n8n/database.sqlite 'VACUUM;'

3.4 恢复演练

systemctl stop n8n
n8n import:workflow --separate --input=/var/backups/n8n/wf/
n8n import:credentials --input=/var/backups/n8n/cred/xxx.json
# 全库级恢复:import:entities --inputDir=... (--truncateTables 先清目标表)
systemctl start n8n

💡 密钥与数据必须成对恢复:config 里的 encryptionKey 和导出时的实例一致,凭证才能解开。

四、升级与回滚

# 1) 升级前全量备份(3.2 + 3.3)
# 2) 升级
sudo npm install -g n8n@latest     # 2.43.7 为当时 latest(dist-tags 实测)
# 3) 重启,观察迁移日志
journalctl -u n8n -f
#   Starting migration AddErrorColumnsToTestRuns1737715421462
#   Finished migration AddErrorColumnsToTestRuns1737715421462 ...

要点(实测行为):

  • 升级首次启动自动跑增量迁移,迁移期间不要 kill 进程;
  • 迁移失败可用 n8n db:revert 回退最后一次迁移(危险操作,先备份);
  • 回滚版本 = sudo npm install -g n8n@<旧版本号>,但注意新迁移可能不可逆,升级前备份是唯一可靠回滚手段;
  • CLI 改动激活状态后提示 Please restart n8n for changes to take effect,服务化环境记得重启生效。

五、日志

层位置/开启方式格式
服务日志journalctl -u n8nconsole 格式:2026-10-17T12:59:42.296Z | debug | 消息 {元数据}
应用日志N8N_LOG_OUTPUT=file + N8N_LOG_FILE_LOCATION=<完整文件路径>JSON 行:{"level","message","metadata":{...}}(实测样例)
审计事件~/.n8n/n8nEventLog*.log事件流(实例加入、登录、工作流变更等),自动按大小轮转

实测 JSON 行样例:

{"level":"info","message":"Initializing n8n process","metadata":{"file":"start.js","function":"init","timestamp":"2026-10-17T13:01:10.369Z"}}

排障时临时 N8N_LOG_LEVEL=debug,能看到节点加载明细(n8n-nodes-base {"nodes":500,...})。注意 N8N_LOG_FILE_LOCATION 必须是文件路径,传目录会生成同名文件并报 Not a directory(实测坑)。

六、监控

curl -s http://127.0.0.1:5678/healthz    # {"status":"ok"},适合拨测

Prometheus 指标:环境变量 N8N_METRICS=true 后 GET /metrics 实测输出:

# HELP n8n_expression_evaluation_duration_seconds Duration of VM-based expression evaluation in seconds.
# TYPE n8n_expression_evaluation_duration_seconds histogram

Prometheus 抓取片段:

scrape_configs:
  - job_name: n8n
    static_configs:
      - targets: ['n8n.internal:5678']

建议告警项:healthz 连续失败、执行积压(/metrics 队列指标)、磁盘水位(执行数据是膨胀主因)。周期体检加一条 cron:每周 n8n audit(实测输出五类风险报告 JSON)+ 备份脚本。

七、安全基线

  • 保持 N8N_SECURE_COOKIE=true,TLS 交给反代(Cookie 实测默认 HttpOnly; Secure; SameSite=Lax);
  • API Key 定期轮换:编辑器 Settings → n8n API 删除重建(Key 为 JWT,可审计签发时间);
  • n8n user-management:reset 无确认直接清空用户库(实测),放到只有运维能执行的路径与权限下;
  • 工作流内敏感操作优先用 Credential,不要把密钥写进节点参数(执行历史会存明文)。

八、故障排查速查

症状原因/定位处置
CLI 执行报 n8n Task Broker's port 5679 is already in use.常驻服务已占 Broker 端口(实测原文)维护窗口停服务跑批量任务,或为该次执行错开 Broker 端口
日志报 Failed to start Python task runner ... Python 3 is missing系统无 Python3(实测原文)安装 python3 或忽略(JS 节点不受影响)
Webhook 调用 404 带 hint工作流未激活/路径不符(实测原文见 API 篇)激活工作流,生产地址为 /webhook/<path>
反代后登录态丢失Secure Cookie 仅 HTTPS 回传(实测对比)反代上 TLS;内网临时 HTTP 才设 N8N_SECURE_COOKIE=false
服务起不来、日志卡在迁移迁移中被打断n8n db:revert 后重启;仍失败用备份恢复
凭证全部报解密失败config 密钥与数据不配对找回原 config;无备份则凭证需重建

九、维护节奏建议

周期动作
每日healthz 拨测 + 逻辑备份(export:workflow --backup)
每周n8n audit + 凭证/全库导出轮换 + 日志体积检查
每月VACUUM 瘦身、执行数据保留策略复核、恢复演练一次
升级窗口备份 → npm i -g n8n@latest → 迁移日志确认 → 冒烟(healthz + 一次手动执行)

系列文章:《n8n 2.43.7 介绍与选型指南》《Ubuntu 22.04 上用 Docker Compose 部署 n8n 2.43.7》《n8n 2.43.7 配置参数详解(环境变量实测)》《n8n 2.43.7 CLI 命令详解与实测》《n8n 2.43.7 Public API 使用指南(实测)》。

相关文档