Skip to content

Grafana#

在 n8n 中启用 Prometheus 指标端点,然后通过 Prometheus 实例连接 Grafana,以可视化 n8n 数据。请先参阅启用 Prometheus 指标,再按照本指南操作。

功能可用性

n8n Cloud 不提供 /metrics 端点。

可复用的 dashboard 模板#

为 n8n 实例启用 Prometheus 指标后,您可以构建 dashboard 来观察这些指标。

n8n 在以下 GitHub 项目中发布了针对多种受支持 Prometheus 指标的可复用 Grafana dashboard: n8n-observability

配置 Prometheus 抓取 n8n#

Prometheus 会定时抓取 n8n 的 /metrics 端点并存储数据,Grafana 随后查询 Prometheus 以显示这些数据。

prometheus.yml 中添加以 n8n 实例为目标的抓取作业:

1
2
3
4
5
6
scrape_configs:
  - job_name: n8n
    static_configs:
      - targets:
          - <n8n-host>:<n8n-port>
    metrics_path: /metrics

<n8n-host><n8n-port> 替换为 n8n 实例地址。n8n 默认端口为 5678

编辑后,重新加载或重启 Prometheus 以应用更改。

将 Prometheus 添加为 Grafana 数据源#

  1. 在 Grafana 中,前往 Connections > Data sources
  2. 选择 Add new data source
  3. 选择 Prometheus
  4. Prometheus server URL 设置为 Prometheus 实例地址,例如 http://prometheus:9090
  5. 选择 Save & test

Grafana 会显示成功消息以确认连接。

Webhook 可观测性#

自 n8n v2.28.0 起可用。

n8n 为每次 webhook 调用公开一个 n8n_webhook_request_duration_seconds 直方图。启用以下环境变量以收集该指标:

变量 默认值 描述
N8N_METRICS_INCLUDE_WEBHOOK_METRICS false 公开 n8n_webhook_request_duration_seconds 直方图。
N8N_METRICS_INCLUDE_WORKFLOW_INFO false 公开 n8n_workflow_info gauge,以提供人类可读的工作流名称。请参阅查询工作流名称

您可以在 n8n-observability 项目中找到适用于此直方图的即用型 dashboard

指标追踪的内容#

n8n_webhook_request_duration_seconds 是 Prometheus 直方图。对于每次 webhook 调用,n8n 会记录请求耗时(从「收到请求」到「发送响应」)。每种标签组合会公开三个序列:

序列 描述
_bucket{le="<bound>"} <bound> 秒内完成的请求累计数量。
_sum 所有请求花费的总秒数。
_count 请求总数。

每个序列都包含以下标签:

标签 示例 描述
method GET 入站请求的 HTTP 方法。
status_code 200 n8n 返回的 HTTP 状态码。
webhook_path 294febd8-… 标识 webhook 端点的 UUID 路径。
workflow_id KhcGg7EmAMoa7Bmv webhook 所属工作流的 ID。

Dashboard 设计思路#

面板 PromQL
每个工作流的请求速率 sum by (workflow_id) (rate(n8n_webhook_request_duration_seconds_count[5m]))
所有 webhook 的 p95 延迟 histogram_quantile(0.95, sum by (le) (rate(n8n_webhook_request_duration_seconds_bucket[5m])))
每个工作流的 p95 延迟 histogram_quantile(0.95, sum by (le, workflow_id) (rate(n8n_webhook_request_duration_seconds_bucket[5m])))
错误率(非 2xx) sum by (workflow_id) (rate(n8n_webhook_request_duration_seconds_count{status_code!="2.."}[5m]))
平均请求耗时 rate(n8n_webhook_request_duration_seconds_sum[5m]) / rate(n8n_webhook_request_duration_seconds_count[5m])

表单提交可观测性#

自 n8n v2.28.0 起可用。

n8n 为每次表单提交公开一个 n8n_form_submission_duration_seconds 直方图。启用以下环境变量以收集该指标:

变量 默认值 描述
N8N_METRICS_INCLUDE_FORM_METRICS false 公开 n8n_form_submission_duration_seconds 直方图。
N8N_METRICS_INCLUDE_WORKFLOW_INFO false 公开 n8n_workflow_info gauge,以提供人类可读的工作流名称。请参阅查询工作流名称

您可以在 n8n-observability 项目中找到适用于此直方图的即用型 dashboard

指标追踪的内容#

n8n_form_submission_duration_seconds 是 Prometheus 直方图。对于每次表单提交,n8n 会记录从「用户按下提交按钮」到「用户收到表单提交反馈」的耗时。每种标签组合会公开三个序列:

序列 描述
_bucket{le="<bound>"} <bound> 秒内完成的提交累计数量。
_sum 处理所有提交花费的总秒数。
_count 提交总数。

每个序列都包含以下标签:

标签 示例 描述
status_code 200 n8n 返回的 HTTP 状态码。
form_path b395d2e2-… 标识表单端点的 UUID 路径。
workflow_id qTzTyGlEROwSuVlY 表单所属工作流的 ID。

无 method 标签

表单提交不包含 method 标签,因为 n8n 仅通过 POST 接收表单数据。

Dashboard 设计思路#

面板 PromQL
每个工作流的提交速率 sum by (workflow_id) (rate(n8n_form_submission_duration_seconds_count[5m]))
所有表单的 p95 处理时间 histogram_quantile(0.95, sum by (le) (rate(n8n_form_submission_duration_seconds_bucket[5m])))
每个工作流的 p95 处理时间 histogram_quantile(0.95, sum by (le, workflow_id) (rate(n8n_form_submission_duration_seconds_bucket[5m])))
错误率(非 2xx) sum by (workflow_id) (rate(n8n_form_submission_duration_seconds_count{status_code!="2.."}[5m]))
平均处理时间 rate(n8n_form_submission_duration_seconds_sum[5m]) / rate(n8n_form_submission_duration_seconds_count[5m])

Workflow name lookup 查询工作流名称#

自 n8n v2.28.0 起可用。

启用 N8N_METRICS_INCLUDE_WORKFLOW_INFO 后,n8n 会为每个工作流公开一个 gauge:

1
n8n_workflow_info{workflow_id="VaQPuPmx9tPpo6BX",workflow_name="My workflow"} 1

通过 workflow_id 将它与其他任意 n8n 指标联接,即可在 Grafana 面板中用人类可读的名称替换不直观的 ID。例如,按工作流名称显示 webhook 请求速率:

1
2
3
4
5
sum by (workflow_name) (
  rate(n8n_webhook_request_duration_seconds_count[5m])
  * on(workflow_id) group_left(workflow_name)
  n8n_workflow_info
)