菜单

基础设施和监控

相关源文件

本文档记录了 n8n 的基础设施组件和监控能力。它涵盖了数据库配置、健康检查、指标收集和其他与基础设施相关的方面,帮助开发者了解 n8n 的运行方式以及如何在生产环境中进行监控。

基础设施组件概述

n8n 的基础设施由几个协同工作以提供强大工作流自动化平台的关键组件组成。

n8n 支持多种数据库系统

  • PostgreSQL
  • MySQL/MariaDB
  • SQLite

服务器在启动过程中初始化这些组件,确保数据库连接、设置监控端点和配置健康检查。

来源

监控系统

n8n 包含一个全面的监控系统,可提供对应用程序性能和健康的洞察。该监控系统围绕 Prometheus 指标和健康检查端点构建。

监控系统在服务器启动时初始化,并提供各种指标和健康检查,可用于监控应用程序的健康状况和性能。

来源

Prometheus 指标

n8n 通过 `/metrics` 端点暴露各种 Prometheus 指标,以提供应用程序性能和行为的见解。这些指标可以被 Prometheus 或其他兼容的监控系统收集。

指标系统可以通过环境变量高度配置,允许您启用或禁用特定的指标类别和标签。

来源

健康检查

n8n 提供健康检查端点,可用于监控应用程序的健康状况。这些端点对于 Kubernetes 等容器编排系统特别有用,可以确定应用程序是否健康并准备好接收流量。

健康检查系统提供两个主要端点:

  • /healthz:存活度检查,指示服务器是否正在运行。
  • /healthz/readiness:就绪度检查,指示服务器是否已准备好处理请求,包括数据库和 Redis 连接。

来源

数据库配置

n8n 支持多种数据库系统,并为每种系统提供广泛的配置选项。数据库配置通过环境变量和配置系统进行管理。

数据库配置系统提供以下选项:

  • 数据库类型选择(SQLite、PostgreSQL、MySQL/MariaDB)
  • 连接参数(主机、端口、凭据)
  • 用于安全连接的 SSL 配置
  • 连接池和超时
  • 查询日志记录和性能监控

来源

数据库连接管理

n8n 实现了一个健壮的数据库连接管理系统,负责连接建立、监控和恢复。该系统包含一个 ping 机制,以确保数据库连接保持活动状态。

数据库连接系统提供:

  • 连接初始化和迁移
  • 连接状态跟踪
  • 定期的 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 的服务器初始化过程设置了各种组件,包括数据库连接、指标收集和健康检查。服务器启动顺序确保所有组件在服务器开始接受请求之前都已正确初始化。

服务器初始化过程包括:

  1. 数据库连接初始化
  2. 指标设置(如果已启用)
  3. 端点配置
  4. 控制器注册
  5. 可选组件设置(LDAP、SAML、Source Control)
  6. 推送服务器设置
  7. 服务器启动事件发出

来源

安全和错误处理

n8n 实现了各种安全措施和错误处理机制,以确保应用程序在生产环境中保持安全和稳定。

安全头部

服务器配置了安全头信息,以防止常见的 Web 漏洞。

错误处理

n8n 包含专门的错误类来处理不同类型的错误:

  • WorkflowCrashedError:指示工作流崩溃,可能是由于内存问题。
  • NodeCrashedError:指示节点崩溃,可能是由于内存问题。
  • DbConnectionTimeoutError:指示数据库连接超时。

这些错误类提供了有关错误的详细信息和解决建议。

来源

配置选项

n8n 为其基础设施和监控组件提供了广泛的配置选项。这些选项可以通过环境变量或配置文件进行设置。

数据库配置选项

类别选项环境变量描述
数据库类型类型DB_TYPE数据库类型:sqlite, postgresdb, mysqldb, mariadb
SQLite数据库DB_SQLITE_DATABASESQLite 数据库文件名
SQLite池大小DB_SQLITE_POOL_SIZESQLite 连接池大小
SQLiteWAL 模式DB_SQLITE_ENABLE_WAL启用 SQLite WAL 模式
PostgreSQL数据库DB_POSTGRESDB_DATABASEPostgreSQL 数据库名
PostgreSQL主机DB_POSTGRESDB_HOSTPostgreSQL 主机
PostgreSQL端口DB_POSTGRESDB_PORTPostgreSQL 端口
PostgreSQL用户DB_POSTGRESDB_USERPostgreSQL 用户
PostgreSQL密码DB_POSTGRESDB_PASSWORDPostgreSQL 密码
PostgreSQLSSLDB_POSTGRESDB_SSL_ENABLED启用 PostgreSQL 的 SSL
MySQL数据库DB_MYSQLDB_DATABASEMySQL 数据库名
MySQL主机DB_MYSQLDB_HOSTMySQL 主机
MySQL端口DB_MYSQLDB_PORTMySQL 端口
MySQL用户DB_MYSQLDB_USERMySQL 用户
MySQL密码DB_MYSQLDB_PASSWORDMySQL 密码
日志记录已启用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 提供了以下方法:

  • 在存储前加密凭据数据
  • 在需要时解密凭据数据
  • 在将凭据数据返回给前端时,对敏感字段进行 redaction(脱敏)

来源

这种安全方法确保敏感的凭据数据永远不会不必要地暴露,即使在从数据库检索数据时也是如此。