iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
AI & Data

進擊的 n8n系列 第 24

Day 24:監控與 Log(可以使用 Google Cloud 的 Cloud Logging & Monitoring)

  • 分享至 

  • xImage
  •  

我們從 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 為例。


  1. 基本前提
  • 確定 GKE 已啟用:
    • logging.googleapis.com/kubernetes
    • monitoring.googleapis.com/kubernetes
  • 不需安裝額外 agent,GKE 會自動把 Pod 日誌送到 Cloud Logging。
  1. 建立 Log-based Metric(以錯誤關鍵字為例)
  • 將 n8n 容器的 ERROR 或 Execution failed 等 log 透過內建的 Cloud Monitoring 建立 Metrics:
# 利用我們之前用過的 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"

  1. 根據以上的 log 以及 Cloud Monitoring 所建立的 Metrics(例如 n8n ERROR Rate 超過 Threshold 就通知 n8n 維運團隊)
  • 以下範例為:當 5 分鐘內錯誤次數 > 10 次就觸發
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
  • 加入 GCP Cloud Monitoring 內建就提供的 Notification Channel(Email/Slack/PagerDuty/SMS)
gcloud monitoring channels list

# 若無,請在 Console -> Monitoring -> Alerting -> Notification channels 建立後,再更新 Alerting Policy

# gcloud monitoring policies update POLICY_ID --policy-from-file=n8n-alert-policy.json
  1. Cloud Monitoring 的進階分享(Optional)
  • 你可以在 Monitoring 建立自訂儀表板,加入下列 Dashboard:
    • Log-based Metric:n8n-error-count(每 5m)
    • Kubernetes / Workload -> Pod restarts by namespace: n8n
    • CPU/Memory by Deployment:n8n-main、n8n-worker
  • 小技巧:
    • 建立另一個 metric: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 的系統狀態。當然,一個大型企業一定會有自己的監控告警邏輯跟維運方式,雲的內建機制只是成本較低且可以直接上手的一個選項!


上一篇
Day 23:n8n 加密金鑰與憑證管理(Secret Manager or 自行管理)
下一篇
Day 25:來總結一下吧!n8n on Google Cloud 各服務總整理
系列文
進擊的 n8n25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言