我們從 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 的系統狀態。當然,一個大型企業一定會有自己的監控告警邏輯跟維運方式,雲的內建機制只是成本較低且可以直接上手的一個選項!