作为n8n的用户,你可能已经创建了许多自动化工作流。但你是否思考过如何追踪这些工作流的运行状态?如何及时发现问题?如何确保系统安全?本教程将带你深入了解n8n的三大运维核心功能:日志管理、监控告警和安全审计。
这篇教程适合初学者,我们将通过实操案例和完整工作流代码,让你轻松上手n8n的运维管理。
什么是日志?
日志就像是n8n实例的”日记”,它记录了所有发生的事情。当工作流出错时,日志能帮你快速定位问题。
日志级别详解
n8n提供了4个日志级别,从低到高排列:
快速开始:配置日志
方式一:使用环境变量(推荐)
如果你使用Docker或命令行启动n8n,设置这些环境变量:
方式二:修改配置文件
在你的n8n配置文件中添加:
📍 实战小技巧
- 开发环境用 debug:在调试工作流时,设置 能看到最详细的信息。
- 生产环境用 info 或 warn:保留足够的信息追踪问题,又不会产生过多日志。
- 定期清理日志:n8n会自动管理日志文件数量,但要确保磁盘有充足空间。
监控的三个核心端点
n8n提供了三个API端点让你监控实例的健康状态:
1️⃣ /healthz 端点 – 快速健康检查
返回说明:
- :实例运行正常,可以接收请求
- 其他状态码:实例有问题
应用场景: 快速检查实例是否在线,用于负载均衡器或简单的健康检查。
2️⃣ /healthz/readiness 端点 – 完整准备检查
返回说明:
- :数据库已连接且迁移完成,实例可以开始处理业务
- 其他状态码:数据库未就绪
应用场景: Kubernetes 的 readiness probe,或在启动其他依赖服务前进行检查。
3️⃣ /metrics 端点 – 详细指标数据
注意: n8n 工作流 教程 需要先启用!
返回说明: 包含CPU、内存、请求数等详细指标(Prometheus 格式)
⚙️ 启用监控指标
首先需要在环境变量中启用 端点:
📈 常见监控指标
通过 端点,你能获取:
- nodejs_heap_size_bytes:内存使用情况
- process_resident_memory_bytes:进程内存占用
- http_requests_total:总请求数
- workflow_execution_total:工作流执行次数
- workflow_execution_duration_seconds:执行耗时
什么是安全审计?
安全审计能自动检查你的n8n实例中存在的5大安全风险,帮助你快速发现和修复问题。
审计的五大报告类型
1. 凭证审计
检查您的API密钥和凭证是否存在问题:
- ✅ 检查未使用的凭证(可能遗忘的凭证)
- ✅ 检查在非活跃工作流中的凭证(可以删除)
- ✅ 检查在最近未运行工作流中的凭证(可以清理)
处理建议: 删除未使用的凭证,降低被泄露的风险。
2. 数据库审计
检查SQL查询中的安全隐患:
- ✅ 查找在 SQL 节点中使用 时直接拼接的表达式(容易被SQL注入)
- ✅ 查找查询参数字段中的表达式
- ✅ 检查未使用的查询参数
处理建议: 使用参数化查询,避免直接拼接用户输入。
3. 文件系统审计
检查哪些节点会访问服务器的文件系统:
- ✅ 列出所有访问本地文件的节点(如读取、写入文件)
处理建议: 确认这些文件操作都是必要的,限制节点的文件访问权限。
4. 节点审计
检查使用的节点类型是否存在安全风险:
- ✅ 识别官方危险节点(如代码执行节点)
- ✅ 检查社区节点的使用
- ✅ 检查自定义节点的安装
处理建议: 谨慎使用代码执行节点,仅从信任的来源安装社区节点。
5. 实例审计
检查整个实例的安全配置:
- ✅ 检查未保护的Webhook(任何人都可触发)
- ✅ 检查缺失的安全设置(如未开启双因素认证)
- ✅ 检查实例版本是否过时(需要升级)
处理建议: 为Webhook添加认证,启用安全功能,定期更新n8n。
🚀 如何运行安全审计?
方式一:命令行执行
运行后会生成一份包含所有风险的报告。
方式二:API调用
方式三:在工作流中执行
在工作流中添加 n8n 节点,选择:
- Resource: Audit
- Operation: Generate
然后运行工作流,会返回审计报告。
现在我们要创建一个完整可执行的工作流,它能自动检查实例健康状态、收集指标、运行安全审计,并发送报告。
工作流流程
工作流JSON代码
将下面的JSON代码导入到n8n中(点击”Import Workflow”):
工作流各个节点详解
📅 Schedule(定时触发)
- 配置:每小时触发一次(可修改为每30分钟、每天等)
- 作用:定期运行监控检查
🔍 检查实例健康状态
- 方法:GET 请求到
- 返回:状态码 200 表示实例在线
- 作用:基础健康检查
🗄️ 检查数据库准备状态
- 方法:GET 请求到
- 返回:状态码 200 表示数据库已连接
- 作用:确保系统可以处理业务
📈 获取详细指标
- 方法:GET 请求到
- 返回:Prometheus 格式的指标数据
- 作用:收集CPU、内存等详细信息
🔒 安全审计检查
- 方法:POST 请求到
- 认证:需要n8n API密钥
- 返回:完整的审计报告(包含5类风险)
📋 格式化报告
- 类型:Function 节点
- 作用:整理所有检查结果,生成易读的报告
📧 发送通知
- 方法:POST 到 Slack Webhook
- 作用:将报告发送到你的Slack频道或邮箱
🛠️ 如何部署这个工作流
- 复制上面的JSON代码
- 打开你的n8n实例,点击左侧菜单 “Workflows”
- 点击 “+ New” 创建新工作流
- 点击菜单 → Import from URL/File
- 粘贴JSON代码,点击Import
- 配置必要的参数:
- 将 改为你的n8n实例地址
- 在”安全审计检查”节点中添加你的n8n API认证
- 在”发送通知”节点中粘贴你的Slack Webhook URL(或改为Email通知)
- 激活工作流:点击右上角 “Activate” 按钮
- 测试运行:点击 “Execute Workflow” 立即测试一次
📝 输出示例
工作流运行后,你会收到类似这样的报告:
✅ 日志管理最佳实践
- 生产环境建议配置
- 定期检查日志:每周检查一次,看是否有重复的错误
- 及时删除旧日志:防止磁盘爆满
✅ 监控告警最佳实践
- 设置多个告警渠道:不仅Slack,还可用邮件、SMS
- 设置告警规则:
- 实例宕机立即告警
- 数据库连接失败告警
- 内存使用超过80%告警
- 定期测试告警:每月手动触发一次,确认通知渠道畅通
✅ 安全审计最佳实践
- 定期运行审计:建议每周运行一次
- 及时修复问题:
- 删除未使用的凭证
- 为Webhook添加认证
- 更新过时的实例
- 文档化安全决策:记录为什么需要某个”危险节点”,便于后续审查
- 团队协作:定期与团队分享审计报告,提升整体安全意识
Q1: 日志文件会一直增长吗?
A: 不会。n8n会自动管理日志文件。当文件达到设置的大小时,会自动轮转生成新文件。当文件数达到时,会删除最旧的文件。
Q2: 端点返回404是什么原因?
A: 说明指标功能未启用。需要设置环境变量 并重启n8n。
Q3: 安全审计的”官方危险节点”包括哪些?
A: 主要包括:
- Execute Command:执行系统命令
- Code:执行JavaScript代码
- Python:执行Python代码
这些节点本身没有问题,但如果接收不受信任的输入会有风险。
Q4: 可以只将特定级别的日志写入文件吗?
A: 不行。n8n的日志输出是全局的,所有级别的日志都会同时输出到配置的目标(console和/或file)。
Q5: 如何在云环境(如Kubernetes)中启用监控?
A:
- 设置环境变量:
- 确保 端点可访问(Prometheus Scrape Target)
- 配置Kubernetes的liveness probe和readiness probe指向对应端点
- 官方文档 – 日志管理
- 官方文档 – 监控系统
- 官方文档 – 安全审计
- n8n系列教程
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/250570.html原文链接:https://javaforall.net
