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 | |
将 <n8n-host> 和 <n8n-port> 替换为 n8n 实例地址。n8n 默认端口为 5678。
编辑后,重新加载或重启 Prometheus 以应用更改。
将 Prometheus 添加为 Grafana 数据源#
- 在 Grafana 中,前往 Connections > Data sources。
- 选择 Add new data source。
- 选择 Prometheus。
- 将 Prometheus server URL 设置为 Prometheus 实例地址,例如
http://prometheus:9090。 - 选择 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 | |
通过 workflow_id 将它与其他任意 n8n 指标联接,即可在 Grafana 面板中用人类可读的名称替换不直观的 ID。例如,按工作流名称显示 webhook 请求速率:
1 2 3 4 5 | |