本文档记录了 n8n 的基础设施组件和监控能力。它涵盖了数据库配置、健康检查、指标收集和其他与基础设施相关的方面,帮助开发者了解 n8n 的运行方式以及如何在生产环境中进行监控。
n8n 的基础设施由几个协同工作以提供强大工作流自动化平台的关键组件组成。
n8n 支持多种数据库系统
服务器在启动过程中初始化这些组件,确保数据库连接、设置监控端点和配置健康检查。
来源
n8n 包含一个全面的监控系统,可提供对应用程序性能和健康的洞察。该监控系统围绕 Prometheus 指标和健康检查端点构建。
监控系统在服务器启动时初始化,并提供各种指标和健康检查,可用于监控应用程序的健康状况和性能。
来源
n8n 通过 `/metrics` 端点暴露各种 Prometheus 指标,以提供应用程序性能和行为的见解。这些指标可以被 Prometheus 或其他兼容的监控系统收集。
指标系统可以通过环境变量高度配置,允许您启用或禁用特定的指标类别和标签。
来源
n8n 提供健康检查端点,可用于监控应用程序的健康状况。这些端点对于 Kubernetes 等容器编排系统特别有用,可以确定应用程序是否健康并准备好接收流量。
健康检查系统提供两个主要端点:
/healthz:存活度检查,指示服务器是否正在运行。/healthz/readiness:就绪度检查,指示服务器是否已准备好处理请求,包括数据库和 Redis 连接。来源
n8n 支持多种数据库系统,并为每种系统提供广泛的配置选项。数据库配置通过环境变量和配置系统进行管理。
数据库配置系统提供以下选项:
来源
n8n 实现了一个健壮的数据库连接管理系统,负责连接建立、监控和恢复。该系统包含一个 ping 机制,以确保数据库连接保持活动状态。
数据库连接系统提供:
来源
n8n 的指标系统收集并公开有关应用程序性能和行为的各种指标。这些指标通过 Prometheus 格式的 `/metrics` 端点公开。
| 类别 | 描述 | 示例指标 |
|---|---|---|
| 默认指标 | 系统和 Node.js 指标 | process_cpu_seconds_total, nodejs_heap_space_size_total_bytes |
| 路由指标 | API 端点指标 | http_request_duration_seconds, last_activity |
| 缓存指标 | 缓存命中/未命中指标 | cache_hits_total, cache_misses_total, cache_updates_total |
| 事件总线指标 | 事件总线指标 | 事件特定计数器,例如 workflow_success_total |
| 队列指标 | 队列作业指标 | scaling_mode_queue_jobs_waiting, scaling_mode_queue_jobs_active |
| 自定义指标 | 自定义应用程序指标 | version_info, active_workflow_count |
指标系统可以通过环境变量进行高度配置。
| 环境变量 | 描述 | 默认 |
|---|---|---|
N8N_METRICS | 启用指标端点 | false |
N8N_METRICS_PREFIX | 指标名称前缀 | n8n_ |
N8N_METRICS_INCLUDE_DEFAULT_METRICS | 包含默认的 Node.js 指标 | true |
N8N_METRICS_INCLUDE_API_ENDPOINTS | 包含 API 端点指标 | false |
N8N_METRICS_INCLUDE_CACHE_METRICS | 包含缓存指标 | false |
N8N_METRICS_INCLUDE_MESSAGE_EVENT_BUS_METRICS | 包含事件总线指标 | false |
N8N_METRICS_INCLUDE_QUEUE_METRICS | 包含队列指标 | false |
来源
n8n 的服务器初始化过程设置了各种组件,包括数据库连接、指标收集和健康检查。服务器启动顺序确保所有组件在服务器开始接受请求之前都已正确初始化。
服务器初始化过程包括:
来源
n8n 实现了各种安全措施和错误处理机制,以确保应用程序在生产环境中保持安全和稳定。
服务器配置了安全头信息,以防止常见的 Web 漏洞。
n8n 包含专门的错误类来处理不同类型的错误:
WorkflowCrashedError:指示工作流崩溃,可能是由于内存问题。NodeCrashedError:指示节点崩溃,可能是由于内存问题。DbConnectionTimeoutError:指示数据库连接超时。这些错误类提供了有关错误的详细信息和解决建议。
来源
n8n 为其基础设施和监控组件提供了广泛的配置选项。这些选项可以通过环境变量或配置文件进行设置。
| 类别 | 选项 | 环境变量 | 描述 |
|---|---|---|---|
| 数据库类型 | 类型 | DB_TYPE | 数据库类型:sqlite, postgresdb, mysqldb, mariadb |
| SQLite | 数据库 | DB_SQLITE_DATABASE | SQLite 数据库文件名 |
| SQLite | 池大小 | DB_SQLITE_POOL_SIZE | SQLite 连接池大小 |
| SQLite | WAL 模式 | DB_SQLITE_ENABLE_WAL | 启用 SQLite WAL 模式 |
| PostgreSQL | 数据库 | DB_POSTGRESDB_DATABASE | PostgreSQL 数据库名 |
| PostgreSQL | 主机 | DB_POSTGRESDB_HOST | PostgreSQL 主机 |
| PostgreSQL | 端口 | DB_POSTGRESDB_PORT | PostgreSQL 端口 |
| PostgreSQL | 用户 | DB_POSTGRESDB_USER | PostgreSQL 用户 |
| PostgreSQL | 密码 | DB_POSTGRESDB_PASSWORD | PostgreSQL 密码 |
| PostgreSQL | SSL | DB_POSTGRESDB_SSL_ENABLED | 启用 PostgreSQL 的 SSL |
| MySQL | 数据库 | DB_MYSQLDB_DATABASE | MySQL 数据库名 |
| MySQL | 主机 | DB_MYSQLDB_HOST | MySQL 主机 |
| MySQL | 端口 | DB_MYSQLDB_PORT | MySQL 端口 |
| MySQL | 用户 | DB_MYSQLDB_USER | MySQL 用户 |
| MySQL | 密码 | DB_MYSQLDB_PASSWORD | MySQL 密码 |
| 日志记录 | 已启用 | DB_LOGGING_ENABLED | 启用数据库查询日志记录 |
| 日志记录 | 选项 | DB_LOGGING_OPTIONS | 数据库日志记录选项 |
| 日志记录 | 最大执行时间 | DB_LOGGING_MAX_EXECUTION_TIME | 要记录的最大查询执行时间 |
| 选项 | 环境变量 | 描述 |
|---|---|---|
| 启用指标 | N8N_METRICS | 启用指标端点 |
| 指标前缀 | N8N_METRICS_PREFIX | 指标名称前缀 |
| 包含默认指标 | N8N_METRICS_INCLUDE_DEFAULT_METRICS | 包含默认的 Node.js 指标 |
| 包含 API 端点 | N8N_METRICS_INCLUDE_API_ENDPOINTS | 包含 API 端点指标 |
| 包含缓存指标 | N8N_METRICS_INCLUDE_CACHE_METRICS | 包含缓存指标 |
| 包含事件总线指标 | N8N_METRICS_INCLUDE_MESSAGE_EVENT_BUS_METRICS | 包含事件总线指标 |
| 包含队列指标 | N8N_METRICS_INCLUDE_QUEUE_METRICS | 包含队列指标 |
| 队列指标间隔 | N8N_METRICS_QUEUE_METRICS_INTERVAL | 更新队列指标的频率(秒) |
| 活动工作流指标间隔 | N8N_METRICS_ACTIVE_WORKFLOW_METRIC_INTERVAL | 更新活动工作流指标的频率(秒) |
来源
n8n 实现了全面的数据库实体访问控制系统,特别是针对工作流和凭据。
凭据以加密形式存储在数据库中。CredentialsService 提供了以下方法:
来源
这种安全方法确保敏感的凭据数据永远不会不必要地暴露,即使在从数据库检索数据时也是如此。