iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0

在自動化的世界裡,最怕的不是流程的複雜,而是「無聲的失敗」,為了避免這種窘境,我們需要建立一個可靠的錯誤監控與通知機制

今天,我們將會利用 n8n 內建的「錯誤觸發器」(Error Trigger)功能,搭配 Discord,打造一個全自動的錯誤警報系統。只要任何一個工作流程出錯,我們就會在指定的 Discord 頻道中收到即時通知,就能第一時間掌握狀況並進行處理

核心概念

在 n8n 中,我們可以設定一個特別的「錯誤工作流程」。這個流程不會被排程或 Webhook 觸發,它的唯一使命,就是在 n8n 執行個體中任何其他已啟用的工作流程發生錯誤時自動啟動。這就像是為我們的所有自動化流程裝上了一個中央保全系統

workflow

步驟一:建立新的工作流程並加入「Error Trigger」

  • 來到儀表板,新增一個流程「Create Workflow」

    image 0.png

  • 初始節點選擇「Error Trigger」

    image 1.png

步驟二:設定 Discord 通知節點

  • 下個節點選擇 Discord 的「Send a message」

    image 2.png

  • 「Connection Type」選擇「Webhook」,憑證的串接在之前的文章有撰寫過,這邊就不重複惹

    image 3.png

  • Message 就寫個「ERROR!」

    image 4.png

  • 接著我們到現有的其他 workflow 裡面的設定

    image 5.png

  • 把「Error Workflow」選擇為剛剛建立的這個流程並存檔

    image 6.png

  • 再來則是故意觸發錯誤,隨便選個程式碼節點加入底下的程式碼,讓他在最上方直接拋出錯誤

    throw new Error("這是一個用來觸發錯誤通知的測試!");
    

    image 7.png

  • 接著就能在 Discord 收到通知啦

    image 8.png

  • 但如果每個流程都有設定要跑這個錯誤通知,就會發現這個訊息看不出來到底是哪個流程出問題了,所以接下來我們來設定客製化的訊息

  • 回到剛剛的錯誤流程畫布,點選中間的「Executions」,可以看到過去執行的內容

    image 9.png

  • 可以把綠色的節點點兩下打開,查看裡面的資訊,就能發現這邊有回傳不少變數能讓我們使用

    image 10.png

  • 再來回到畫布上,點選 Discord 的節點,在 Message 的內容貼上以下內容,並在右上角切換為「Expression」

    **🚨 n8n 工作流程發生錯誤!🚨**
    
    **工作流程名稱:** {{$json.workflow.name}}
    **錯誤節點:** {{$json.execution.lastNodeExecuted}}
    **錯誤訊息:** `{{$json.execution.error.message}}`
    **執行日誌連結:** [點此查看]({{$json.execution.url}})
    

    image 11.png

  • 接著就能在 Discord 看到對應的通知囉

    image 12.png

  • 而我們畫布上的節點長這樣

    image 13.png

  • 最後也附上完整的 JSON

    {
      "nodes": [
        {
          "parameters": {},
          "type": "n8n-nodes-base.errorTrigger",
          "typeVersion": 1,
          "position": [0, 0],
          "id": "70924a03-bda6-4729-ac95-5123ed6b0a58",
          "name": "Error Trigger"
        },
        {
          "parameters": {
            "authentication": "webhook",
            "content": "=**🚨 n8n 工作流程發生錯誤!🚨**\n\n**工作流程名稱:** {{$json.workflow.name}}\n**錯誤節點:** {{$json.execution.lastNodeExecuted}}\n**錯誤訊息:** `{{$json.execution.error.message}}`\n**執行日誌連結:** [點此查看]({{$json.execution.url}})",
            "options": {}
          },
          "type": "n8n-nodes-base.discord",
          "typeVersion": 2,
          "position": [208, 0],
          "id": "d061948a-ee82-483c-8eba-0779c372978a",
          "name": "Discord",
          "webhookId": "[REDACTED_WEBHOOK_ID]",
          "credentials": {
            "discordWebhookApi": {
              "id": "[REDACTED_CREDENTIAL_ID]",
              "name": "Discord Webhook account"
            }
          }
        }
      ],
      "connections": {
        "Error Trigger": {
          "main": [
            [
              {
                "node": "Discord",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      },
      "pinData": {},
      "meta": {
        "templateCredsSetupCompleted": true,
        "instanceId": "[REDACTED_INSTANCE_ID]"
      }
    }
    

官方文件

https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/


上一篇
[Day16]_CodePen RSS 通知
系列文
告別重複瑣事: n8n workflow 自動化工作實踐17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言