본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 28. 17:58

커스텀 이벤트 리스너(Event Listener)를 사용하여 Apache SeaTunnel에 DingTalk 알림을 추가하는 방법

요약

Apache SeaTunnel에서 작업 실패 시 DingTalk으로 알림을 보낼 수 있도록 커스텀 이벤트 리스너 플러그인을 개발하고 배포하는 방법을 설명합니다. 직접 코드를 작성하여 맞춤형 알림을 구현하거나, 이미 빌드된 JAR 파일을 사용하여 간편하게 설정할 수 있습니다.

핵심 포인트

  • SeaTunnel의 Event Listener 기능을 활용한 커스텀 플러그인 개발
  • DingTalk 그룹 로봇을 이용한 실시간 장애 알림 구현
  • 직접 개발 또는 사전 빌드된 JAR 패키지 다운로드 방식 지원
  • 플러그인 적용을 위한 lib 디렉토리 업로드 및 서비스 재시작 절차

개요 (Overview)

배경 (Background)

데이터 동기화 작업을 실행하기 위해 SeaTunnel을 사용합니다.
배포 참고 사항: Apache SeaTunnel 서비스 배포.

문제 (Problem)

  • 작업이 실패하거나 기타 중요한 이벤트가 발생했을 때 DingTalk으로 알림을 보내야 합니다.
  • SeaTunnel 자체는 내장된 메시지 알림 기능을 제공하지 않으며, 보통 DolphinScheduler 또는 기타 외부 도구에 의존합니다.

해결책 (Solution)

  • SeaTunnel에서 제공하는 이벤트 리스너 (Event Listener) 기능을 사용합니다.
  • 실패 이벤트를 포착하고 알림 메시지를 보내는 커스텀 플러그인 (Custom Plugin)을 개발합니다.
  • 커맨드 라인 제출을 통해 그룹 로봇 (Group Robot) 파라미터를 구성합니다.

배포 (Deployment)

  • 코드를 작성하고 패키징하고 싶지 않고 실패 알림만 필요한 경우, 플러그인 개발 단계를 건너뛰고 JAR 패키지를 직접 다운로드할 수 있습니다.
  • 맞춤형 알림 내용이나 추가적인 이벤트 처리가 필요한 경우, 직접 코드를 수정할 수 있습니다.

플러그인 개발 (Develop the Plugin)

프로젝트는 다음에서 얻을 수 있습니다:

프로젝트 구조 (Project Structure)

패키지 이름 com.ts7ming은 커스텀할 수 있습니다.

│  pom.xml
│
└─src
...

pom.xml

  • 여기서는 버전 2.3.13이 사용되었습니다. 실제 환경에 맞춰 조정하십시오.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
...

DingTalkEventListener.java

  • SeaTunnel은 다음과 같은 이벤트 유형을 지원합니다.
package com.ts7ming;

import lombok.extern.slf4j.Slf4j;
...

org.apache.seatunnel.api.event.EventHandler

com.ts7ming.DingTalkEventListener

프로젝트 패키징 (Package the Project)

mvn clean package

플러그인 배포 (Deploy the Plugin)

직접 패키징하고 싶지 않다면 바로 사용할 수 있는 JAR 파일을 직접 다운로드하십시오.

cd /opt/apache-seatunnel/lib

wget https://github.com/ts7ming/SeatunnelExt/releases/download/v1/SeatunnelExt-1.0-SNAPSHOT.jar
...

업로드 (Upload)

JAR 패키지를 SeaTunnel 루트 경로 아래의 lib 디렉토리에 업로드합니다.
예시:

/opt/apache-seatunnel/lib/

SeaTunnel 서비스 재시작 (Restart SeaTunnel Services)

systemctl stop seatunnel-master.service
systemctl stop seatunnel-worker.service

...

플러그인 로드 여부 확인 (Check Whether the Plugin Is Loaded)

grep "DingTalk" /opt/apache-seatunnel/logs/seatunnel-engine-master.log

예상 출력 결과:

INFO  [o.a.s.e.s.CoordinatorService  ] [pool-4-thread-1] - [localhost]:5801 [seatunnel] [5.1] Loaded event handlers: [com.ts7ming.DingTalkEventListener@20eaeaed, org.apache.seatunnel.api.event.LoggingEventHandler@59c99cb9]

작업 실행 (Run the Task)

중요 사항:

  • -D 파라미터는 반드시 --config 앞에 위치해야 합니다.
  • SeaTunnel 시작 스크립트는 파라미터 순서를 유연하게 파싱하지 않습니다.
sh bin/seatunnel.sh --async \
-Ddingtalk.webhook.url="https://oapi.dingtalk.com/robot/send?access_token=Your_DingTalk_Token" \
-Ddingtalk.secret="Your_DingTalk_Secret" \
...

완료되었습니다!

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0