[Spring Boot] Slack API 연동하여 모니터링 에러 알림 테스트

2026. 6. 9. 22:24·Backend/Spring
728x90

안녕하세요! 개발을 하다 보면 서버에서 발생하는 에러나 중요한 경고 시스템 로그를 실시간으로 모니터링해야 하는 순간이 찾아옵니다.

 

오늘은 저번 AWS API에 이어,

AWS SNS 연동 및 Webhook.site 활용 실전 메시지 발송 테스트

 

[Spring Boot] AWS SNS 연동 및 Webhook.site 활용 메시지 발송 테스트

안녕하세요. 지난 포스팅에서 AWS 콘솔을 통해 SNS 주제를 만들고 IAM 자격 증명을 발급받았는데요.[AWS] Amazon SNS 주제 생성 및 IAM 사용자 액세스 키 발급 가이드 [AWS] Amazon SNS 주제 생성 및 IAM 사용자

0206cho.tistory.com

 

 

협업 툴로 가장 많이 사용되는 Slack(슬랙) API를 활용하여, 스프링 부트 애플리케이션에서 특정 이벤트나 에러가 발생했을 때 지정된 슬랙 채널로 즉시 알림 메시지를 보내는 모니터링 시스템 구축 방법을 정리해 보겠습니다.

 

1. 슬랙 애플리케이션(Slack App) 생성 및 설정하기

가장 먼저 슬랙 API 핵심인 봇(Bot) 애플리케이션을 생성하고 권한을 부여해야 합니다.

 

 

1) Slack App 생성 시작

  1. Slack API 공식 홈페이지에 접속하여 로그인을 진행합니다.
  2. 우측 상단의 [Your Apps]를 누른 뒤, 화면 중앙의 [Create an App] 버튼을 클릭합니다.

 

2) 앱 설정 방식 선택

  • 팝업창이 나타나면 [From scratch](또는 설정 파일이 있다면 From a manifest)를 선택합니다.

  • App Name에 사용할 앱 이름(ex. boardServer)을 입력하고, 이 봇을 설치할 슬랙 Workspace를 지정한 뒤 생성합니다.

 

3) 봇 토큰 권한 설정하기

슬랙 봇이 채널을 읽고 메시지를 쓸 수 있도록 권한을 부여해야 합니다.

 

좌측 메뉴에서 [Features] -> [OAuth & Permissions]로 이동 후

아래로 스크롤하여 Scopes (범위) 섹션의 Bot Token Scopes (봇 토큰 범위)를 찾습니다.

 

[Add an OAuth Scope] 버튼을 눌러 다음 두 가지 필수 권한을 추가합니다.

  • channels:read: 워크스페이스 내 공개 채널의 기본 정보 보기 권한
  • chat:write: 채널에 메시지를 보낼 수 있는 권한

 

4) 워크스페이스에 앱 설치 및 토큰 복사

권한 설정이 완료되면 페이지 위쪽으로 올라가 [Install to Dev] (또는 Install to Workspace) 버튼을 클릭합니다.

 

권한 요청 화면이 나오면 [허용]을 눌러 설치를 완료합니다.

 

설치가 완료되면 Bot User OAuth Token이 생성됩니다. xoxb-로 시작하는 이 토큰 값을 [Copy]하여 안전한 곳에 보관해 둡니다.
(이 토큰은 외부로 유출되면 안 됩니다!)

 

 

2. 슬랙 채널 생성 및 봇(App) 초대하기

이제 메시지를 받아볼 전용 슬랙 채널을 만들고 봇을 참여시켜야 합니다.

 

1) 채널 링크에서 고유 ID 추출하기

슬랙 워크스페이스에서 알림을 받을 채널(ex. #board_모니터링)을 생성하거나 선택합니다.

채널 이름 마우스 우클릭 -> [복사] -> [링크 복사]를 클릭합니다.

 

주소창이나 메모장에 붙여넣어 보면 다음과 같은 형태의 URL을 확인할 수 있습니다:

https://<workspace>.slack.com/archives/C0B942TNFRR

맨 뒤에 붙은 C0B942TNFRR 부분이 바로 해당 채널의 고유 ID(channelAddress)입니다. 추후에 필요하니 따로 기록해 두세요!

 

2) 채널에 앱 추가(초대)하기

해당 채널의 대화창에서 /invite @봇이름을 입력하거나, 채널 세부정보의 [앱 추가] 메뉴를 선택합니다.

 

리스트에서 우리가 방금 만든 boardServer 앱을 찾아 [추가] 버튼을 누릅니다.

 

 

대화창에 boardServer 님이 참여했습니다.라는 문구가 뜨면 성공입니다.

 

3. Spring Boot 프로젝트 구현하기

슬랙 설정이 끝났으니, 이제 스프링 부트 환경에서 슬랙 API를 호출하는 코드를 작성해보겠습니다.

 

의존성 추가 (build.gradle)

슬랙에서 공식 지원하는 자바 라이브러리인 Slack SDK (Bolt) 라이브러리들을 build.gradle의 dependencies에 추가해 줍니다.

// Slack API SDK dependencies
implementation("com.slack.api:bolt:1.18.0")
implementation("com.slack.api:bolt-servlet:1.18.0")
implementation("com.slack.api:bolt-jetty:1.18.0")
 

환경 설정 (application.properties 또는 application.yml)

위에서 복사했던 슬랙의 봇 OAuth 토큰을 설정 파일에 등록합니다.

# Slack Bot Token Configuration
slack.token=xoxb- ~

 

슬랙 발송 서비스 클래스 구현 (SlackService.java)

슬랙 API와 통신하여 실시간 메시지를 포스팅하는 핵심 비즈니스 로직입니다. 빌더 패턴을 이용하여 메시지 요청 객체를 조립합니다.

// 시스템 로그 및 예외 상황을 슬랙(Slack) 채널로 전송

@Service
@Log4j2
public class SlackService {
    @Value(value = "${slack.token}")
     String slackToken;

    /**
     * 지정한 슬랙 채널 유형에 맞춰 메시지를 발송하는 메서드
     * * @param message  슬랙 채널에 띄울 본문 텍스트 (에러 내용 등)
     * @param channel  보낼 채널 종류 식별값 ("error" 또는 "warnning")
     */
    public void sendSlackMessage(String message, String channel){

        String channelAddress = ""; // 실제 슬랙 채널의 ID(예: C01234567)를 담을 변수

        // 매개변수로 들어온 문자열 조건에 따라 실제 전송할 슬랙 채널 ID를 매핑
        if(channel.equals("error")){
            // 에러 상황일 때 상수로 정의된 모니터링 채널 ID 주입
            channelAddress = "C0B942TNFRR";
        }

        try {
            // Slack 라이브러리 싱글톤 인스턴스로부터 주입받은 토큰을 사용해 슬랙 API 통신용 클라이언트 생성
            MethodsClient methods = Slack.getInstance().methods(slackToken);

            // 슬랙 API 요구 규격에 맞춰 전송할 채널 주소와 텍스트 본문을 빌더 패턴으로 조립
            ChatPostMessageRequest request = ChatPostMessageRequest.builder()
                    .channel(channelAddress) // 위에서 구한 채널 ID (ex. #error-log 채널 고유값)
                    .text(message)           // 발송할 문자열
                    .build();

            // 슬랙 서버로 최종 메시지 포스팅(발송) 요청
            methods.chatPostMessage(request);

            // 성공 시 스프링 서버 콘솔에 정보 로그를 남김
            log.info("Slack " + channel + " 에 메시지 보냄");

        } catch (SlackApiException | IOException e) {
            log.error("슬랙 메시지 전송 실패: {}", e.getMessage());
        }
    }
}

 

테스트용 API 컨트롤러 작성 (TestController.java)

기능이 정상적으로 작동하는지 확인하기 위해, 특정 엔드포인트를 호출하면 슬랙 알림이 가도록 테스트 API를 구성해 봅니다.

@RestController
@RequiredArgsConstructor
@Log4j2
public class TestController {

    private final SlackService slackService;

    /**
     * 슬랙 모니터링 에러 알림 테스트 API
     * /slack/error
     */
    @GetMapping("/slack/error")
    public void error(){
        log.info("슬랙 error 채널 테스트");

        // slackService를 활용해 지정된 워크스페이스의 'error' 전용 채널로 즉시 알림 테스트 메시지를 보냅니다.
        slackService.sendSlackMessage("슬랙 에러 테스트", "error");
    }
}

 

4. 결과 확인

스프링 부트 애플리케이션을 구동한 뒤, 브라우저나 Postman을 통해 http://localhost:8080/slack/error 주소를 호출합니다.

 

지정한 슬랙 채널로 "슬랙 에러 테스트"라는 알림 메시지가 실시간으로 날아온다면 성공입니다.

 

 

 

728x90

'Backend > Spring' 카테고리의 다른 글

[Spring] eGovFramework 환경에서 구글 SMTP 연동 및 첨부파일 메일 보내기  (0) 2026.06.11
[Spring Boot] AWS SNS 연동 및 Webhook.site 활용 메시지 발송 테스트  (0) 2026.06.05
[Spring AI] 로컬 LLM과 Redis를 활용한 나만의 RAG 시스템 구축 가이드  (0) 2026.05.10
[Spring] 전자정부프레임워크 crpto DB정보 globals.properties 암호화  (0) 2026.01.29
[Spring] WebFlux 초기 설정  (0) 2024.11.18
'Backend/Spring' 카테고리의 다른 글
  • [Spring] eGovFramework 환경에서 구글 SMTP 연동 및 첨부파일 메일 보내기
  • [Spring Boot] AWS SNS 연동 및 Webhook.site 활용 메시지 발송 테스트
  • [Spring AI] 로컬 LLM과 Redis를 활용한 나만의 RAG 시스템 구축 가이드
  • [Spring] 전자정부프레임워크 crpto DB정보 globals.properties 암호화
min_sol
min_sol
  • min_sol
    비글개발연구소🐾
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (291)
      • Programming (132)
        • Algorithm (56)
        • JAVA (40)
        • GIS (5)
        • PyQt (10)
        • C# (11)
        • Mobile (6)
        • AI (4)
      • Backend (41)
        • Spring (19)
        • JSP (11)
        • Network (5)
      • Frontend (30)
        • Nexacro (1)
        • React (11)
        • Vue (13)
        • Next.js (4)
      • Database (11)
        • PostgreSQL (1)
        • Oracle (8)
        • Elasticsearch (1)
      • DevOps (10)
        • Linux (7)
        • Mac (1)
        • AWS (1)
      • Tools (32)
        • IntelliJ (1)
        • VSCode (1)
        • GitHub (10)
        • RPA (20)
      • Security (9)
      • etc (22)
        • ERROR (5)
        • 세미나 | 교육 (11)
        • 자격증 (1)
        • 일상 (2)
        • 2021 (2)
  • 인기 글

  • 태그

    백준
    PyQt
    vue.js
    생능출판
    스윙
    자료구조
    Java
    VUE
    코딩테스트
    계산기
    연습문제
    이클립스
    PyQt5
    spring
    jsp
    알고리즘
    자동화
    명품자바에센셜
    RPA
    자바
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
min_sol
[Spring Boot] Slack API 연동하여 모니터링 에러 알림 테스트
상단으로

티스토리툴바