我們從 Day 17 開始就利用雲端資源如 GCP 來當作我們部署 n8n 的目標,省去自己去買實體機器或其他周邊設備的麻煩,順便省錢?(誤)既然我們利用了雲端資源如 GCP 的 Cloud Run 等 Serverless Services 或雲上的 K8s 如 GKE,那就乾脆也利用雲上的內建的監控告警機制來對監控 n8n on Public Cloud 的一切疑難雜症吧!
所以,今天就跟大家分享如何用 Cloud Logging 蒐集 n8n Main/Worker 的日誌,建立 Log-based Metric 與 Alerting Policy(大量錯誤或 Worker 崩潰時通知),並利用內建的 Cloud Monitoring Dashboard 來觀察 n8n 的運行狀況。以下的分享就以 n8n on GKE 為例。
# 利用我們之前用過的 gcloud 指令來建立相關的 Metric(以 n8n 發生幾次 ERROR 為例)
gcloud logging metrics create n8n-error-count \
--description="n8n error logs count from k8s" \
--log-filter='resource.type="k8s_container"
labels.k8s_container.container_name=~"n8n|n8n-worker"
severity>=ERROR'
(也可以更精準地用字串比對:textPayload:"Execution error"
或 jsonPayload.message:"failed"
)
cat > n8n-alert-policy.json << 'EOF'
{
"displayName": "n8n Errors > 10 in 5m",
"combiner": "OR",
"conditions": [{
"displayName": "n8n-error-count rate",
"conditionThreshold": {
"filter": "metric.type=\"logging.googleapis.com/user/n8n-error-count\"",
"comparison": "COMPARISON_GT",
"thresholdValue": 10,
"duration": "300s",
"trigger": { "count": 1 },
"aggregations": [{
"alignmentPeriod": "300s",
"perSeriesAligner": "ALIGN_DELTA"
}]
}
}],
"notificationChannels": [], # 先留空,稍後綁定
"enabled": true
}
EOF
gcloud monitoring policies create --policy-from-file=n8n-alert-policy.json
gcloud monitoring channels list
# 若無,請在 Console -> Monitoring -> Alerting -> Notification channels 建立後,再更新 Alerting Policy
# gcloud monitoring policies update POLICY_ID --policy-from-file=n8n-alert-policy.json
n8n-executions
(在 Workflow 成功時以 console.log("EXECUTION_OK")
打點,或使用 n8n 的 webhook/logging 節點寫到 STDOUT),再建對比圖「成功 vs 失敗」,一眼看健康度。n8n-worker
副本數設為 HPA(視 CPU 或自訂指標自動擴縮)。以上是一個非常間單的範例分享:如何利用 GCP 內建的 Cloud Logging 以及 Cloud Monitoring Metrics 跟相對應的 Alerting Policy / Notification Channel 來監控 n8n on Cloud 的系統狀態。當然,一個大型企業一定會有自己的監控告警邏輯跟維運方式,雲的內建機制只是成本較低且可以直接上手的一個選項!