본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Project›TIL – n8n SlackLens (Google Gemini 기반 장애 자동 감지 및 보고 시스템)
Project

TIL – n8n SlackLens (Google Gemini 기반 장애 자동 감지 및 보고 시스템)

won2dev·2025년 11월 06일
#n8n#JavaScript#TIL#Application
TIL – n8n SlackLens (Google Gemini 기반 장애 자동 감지 및 보고 시스템)
이미지
plain text
n8n과 Slack, Notion, Google Sheet를 연동하여 AI 기반 장애 감지 및 자동 보고 시스템 구축
n8n과 Slack, Notion, Google Sheet를 연동하여 AI 기반 장애 감지 및 자동 보고 시스템 구축

기능

  • Slack 메시지 기반 자동 장애 감지: 실시간 메시지를 AI로 분석해 ‘문제/오류/버그’ 여부, 우선순위/카테고리/상태 추출
  • 자동 담당자 배정: Google Sheet 담당자 목록을 참조하여 Always → Active 우선 규칙으로 자동 매칭
  • Notion 자동 저장: 장애 요약, 상태, 담당자, 신고자, 발생 시각을 DB에 기록
  • Slack 알림: 저장 완료 후 채널에 “장애 보고서 접수됨” 안내 자동 발송

문제 상황

  • AI 응답 누락 / 비정확한 JSON: 모델이 코드블록이나 불완전 JSON을 반환하는 경우가 있어 파싱 에러 발생
  • Webhook 루프: 봇이 보낸 메시지를 다시 수신해 무한 루프
  • 데이터 머지 문제:
    • 이전 노드의 데이터가 사라져 다음 노드에서 원본 Slack 필드(user, timestamp, eventId)를 참조하지 못하는 현상 발생
    • $prevNode 직접 참조 등도 안정적으로 동작하지 않아, Merge 노드로 AI 응답(JSON)과 원본 이벤트를 병렬로 전달 및 병합하는 방식으로 해결

시도 과정

  • AI JSON Parser — 코드블록(````json) 제거 후, try/catch` 기반 안전 파싱으로 비정상 응답에도 기본 구조 유지
  • 봇 메시지 필터링: event.subtype === "bot_message" 또는 event.bot_id 인 경우 무시 처리
  • 담당자 매칭 프롬프트: Always 우선, 없으면 Active 중 랜덤 선택 (카테고리 매칭 기반)
  • 머지 전략:
    1. AI Issue Classifier → AI JSON Parser (AI 분석 결과)
    2. Slack User Info Request (사용자 정보 응답)

      → 두 노드를 Merge User Profile Context 에서 Combine 방식으로 병합하여 AI 분석 데이터와 Slack 프로필 정보를 하나의 JSON으로 통합

      이미지

해결 방법

  • Webhook 루프 차단
    javascript
    if (event.subtype === 'bot_message' || event.bot_id) { return []; }
    if (event.subtype === 'bot_message' || event.bot_id) { return []; }
  • AI 응답 안정화 (파서)

    JSON 파싱 오류 시에도 try/catch를 활용해 기본 구조 유지

    javascript
    let parsed;
    try {
      parsed = JSON.parse(jsonString);
    } catch (error) {
      parsed = {
        isIssue: false,
        issueSummary: 'JSON Parse Error',
        priority: '보통',
        category: '기타',
        status: '🟡 정보 보고',
        rawOutput: output
      };
    }
    let parsed;
    try {
      parsed = JSON.parse(jsonString);
    } catch (error) {
      parsed = {
        isIssue: false,
        issueSummary: 'JSON Parse Error',
        priority: '보통',
        category: '기타',
        status: '🟡 정보 보고',
        rawOutput: output
      };
    }
  • Slack 알림 포맷
    이미지

그외 웹훅 인증 및 응답 설정 문제 해결 기록

  • 문제 상황

웹훅(Webhook)과 리스폰스 노드가 올바르게 연결되지 않아 Slack 인증 실패 발생.

이벤트 수신은 되지만, Slack이 응답을 받지 못해 인증 및 실행이 중단됨.

이미지

  • 시도 과정

Slack이 응답을 받지 못해 이벤트를 반복 재시도 →

n8n은 이를 중복 요청으로 인식하며

“Webhook has no response node”

“Unused Webhook Response”

와 같은 오류가 지속 발생.

이후 Webhook 노드의 응답 모드를 “Using ‘Respond to Webhook’ Node” 로 전환해 테스트 진행.

이미지

  • 해결 방법

Webhook 노드의 Respond 설정을

“Using ‘Respond to Webhook’ Node” 로 변경하여

응답 처리를 명시적으로 위임.

이로써 Slack 인증 및 이벤트 응답이 정상적으로 완료되었으며,

중복 호출과 인증 실패 문제 모두 해결됨.

이미지

추후 개선 포인트

  • AI 신뢰성: 응답 불안정 시 워크플로우 전체 중단 가능 → 명확한 프롬프트 작성, 단계별 AI 노드 분리, 필요 시 다중 AI 노드로 내고장성 확보
  • 보안 강화: Slack 이벤트 서명 검증(X-Slack-Signature) 추가로 요청 무결성 보장
  • 자동화 확장: 장애 심각도에 따라 관련 팀 전체 공지 및 에스컬레이션 기능 확장

느낀 점 및 배운 점

  • AI와 n8n을 결합하면 장애 감지부터 담당자 배정, 보고까지 이어지는 완전한 자동화 흐름을 구현할 수 있었다.
  • 노드 간 데이터 전달의 일관성이 중요하며, 컨텍스트 유실을 방지하기 위해 Merge 기반 설계를 적용하는 것이 가장 안정적이라는 걸 배웠다.
  • 또한, AI의 응답이 항상 일정하지 않기 때문에 프롬프트의 명확성과 단계별 구조 설계가 전체 품질을 좌우한다는 점을 느꼈다.
  • 특히, AI가 응답하지 않거나 불완전한 데이터를 반환할 때 워크플로우가 중단될 수 있어, 구간별로 AI 노드를 분리하거나 보조 파서를 추가해 내고장성을 확보하는 접근이 필요하다는 것도 깨달았다.
  • 이번 주제는 단순한 실험이 아니라, 실제 사내 장애 관리나 고객 지원 프로세스에도 바로 적용할 수 있을 정도로 실무 친화적이라는 점에 n8n에 관심이 많이 생겼다.
  • 처음에는 n8n이 다소 어렵게 느껴졌지만, 직접 여러 워크플로우를 설계하고 반복적으로 학습하다 보니 점점 익숙해지고 재미도 생겼다.

🏷️ 필수 키워드

TIL

n8n

SlackLens

Slack

Notion

AI Automation

Webhook Loop Fix

Merge Strategy

공유하기
이전 글TIL - 백엔드 개발자가 톰캣의 내부 구조를 알아야 하는 이유다음 글 TIL – n8n Notion + Slack 데이터 자동화

목차

  • 기능
  • 문제 상황
  • 시도 과정
  • 해결 방법
  • 그외 웹훅 인증 및 응답 설정 문제 해결 기록
  • 추후 개선 포인트
  • 느낀 점 및 배운 점
  • 🏷️ 필수 키워드

카테고리

Project

태그

#n8n#JavaScript#TIL#Application

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹