시작하며: 로봇이 쓰러졌는데 아무도 모른다면?

지난 5편을 통해 알고리즘을 다듬고, If 노드를 사용해 구글 달력에 기록을 남기는 방향을 PATCH(북마크 이동)와 POST(새 운동 등록) 두 갈래로 나누었다.

이제 이 두 갈래의 끝에 텔레그램 노드를 연결해 “작업 완료!”라는 알림만 받으면 끝이라고 생각했다. 하지만 내가 뭐라고 저게 완벽하다고 생각할까 언제 어디서 어떻게 에러가 발생할지 모르니 에러 발생 시 알림을 받아야겠다 생각했다.

1. 에러 발생

구글 서버 다운, Cert 만료, 패턴 매칭 실패 등 에러가 발생할 수 있는 시나리오는 많다. 이 중 하나라도 터지면 생성한 노드는 멈춰버린다. 즉, 나에게 텔레그램 성공 알림이 오지 않는다. 나는 아침에 일어나서 또는 운동가기 전 달력이 텅 빈 것을 보고 사태를 파악할 것이다.

처음엔 각 노드마다 에러 노드를 만들어야 하나 했는데, 내 경험상 Custom Exception을 해당 메서드에 만들진 않았다. 그럼 Global하게 할 수 있을 것 같은데… 내가 생각하는데 대단한 분들이 만든 이 n8n에 없을까 역시 있다.

2. Error Workflow

어떤 Work Flow에서든 에러가 터지면 메시지를 전달하는 워크플로우를 만든다.

  1. 새 워크플로우를 하나 생성하고 이름을 Error Alert 으로 짓는다.

  2. 첫 번째 노드로 Error Trigger 노드를 추가한다. 이 노드는 다른 Work flow에서 에러가 발생하면 작동되는 노드이다.

  3. 뒤이어 Telegram: Send a text message 노드를 붙이고, Text 칸을 Expression 모드로 바꾸어 아래와 같이 작성한다.

🚨 n8n Workflow error

📁 워크플로우: {{ $json.workflow.name }}
🛑 멈춘 노드: {{ $json.execution.lastNodeExecuted }}
⚠️ 에러 내용:
{{ $json.execution.error.message }}

이렇게 세팅해 두면, 내가 5편 Code 노드에서 작성했던 에러 메시지(throw new Error(...))까지 그대로 텔레그램에 찍히는 보고서가 완성된다.

4. 메인 워크플로우와 연결하기

마지막으로 메인 헬스 로봇 워크플로우에 등록해 준다.

  1. 헬스 로봇 메인 워크플로우 화면의 우측 상단 톱니바퀴 ⚙️ [Settings] 버튼을 누른다.

  2. 설정 창의 Error Workflow 드롭다운 메뉴를 클릭한다.

  3. 방금 만든 Error Alert 워크플로우를 선택하고 저장한다.

마치며

테스트를 위해 일부러 Code 노드에 오타를 내고 실행했다. 메인 워크플로우가 멈추고 텔레그램 알림 수신됐다. 에러의 위치와 원인이 정확적힌 보고서였다.

이제 매월 1일 자정에 헬스 로봇이 잘 돌아가는지 work flow를 쳐다볼 필요가 없다.

  • 성공하면: “2026년 3월 운동 루틴 캘린더 등록 완료 🏋️”라는 보고를 받고 꿀잠을 자면 된다.

  • 실패하면: 어디서 왜 터졌는지 적힌 에러 리포트를 받고 나중에 고치면 된다.

단순히 일정을 넣는 기능(Function)을 넘어, 예외 상황을 방어하는 아키텍처를 세워보고, 쓰러졌을 때 스스로 보고하는 관제 시스템까지 갖추었다.