Chapter#01 : [Scouter] Agent - 감시 대상 Server 구성하기
Chapter#02 : [Scouter] Collector - 수집 Server 구성하기
Chapter#03 : [Scouter] Telegram을 통한 알림 System 구축
※ 해당 포스팅의 환경구성
• Linux Server : Rocky Linux 9.4
• Linux User Account : agent( /home/collector )
• Java Version : Oracle JDK 1.8_0.202
• WAS : Apache Tomcat v8.5.100
1. Telegram - Chat Bot 개설하기
Telegram을 실행하고 BotFather라고 검색한다.
Bot Fahter를 선택하고 대화를 시작한다.
BotFather와 대화할 수 있는 대화방에 입장하면 아래 순서대로 작업을 진행하여 준다.
① /start
② /newbot
③ 사용할 Chat Bot의 이름을 입력한다.
④ 생성한 Chat Bot의 이름 뒤에 _bot 이라고 추가적으로 입력해준다.
⑤ 답변문구로 [ API Token ]을 전달받게된다.
API Token을 통하여 정상적으로 HTTP API를 이용하여 Chat Bot을 이용할 수 있는지 확인해 보자.
아래 URL 주소에 발급받은 API Token을 추가하여 Web Browser를 통해 실행해 보자.
https://api.telegram.org/bot + API_Token + /getUpdates
true라고 나오게되면 생성한 Chat Bot을 API를 통해 관리할 수 있다.
이제 검색창에 생성한 Chat Bot의 이름을 검색한다.
제작한 Chat Bot을 찾으면 선택하고 『 시작 』 버튼을 클릭한다.
대화가 시작되면 /start 라고 자동으로 Message가 출력되는 것을 확인할 수 있다.
다시 위에서 실행한 Web Browser를 새로고침( F5 ) 하자
https://api.telegram.org/bot + API_Token + /getUpdates
그럼 위와같이 Message를 전달받을 사용자의 Telegram ID 값을 확인할 수 있다.
다시 아래의 URL 주소를 조합하여 Web Browser를 통해 실행하여준다.
https://api.telegram.org/bot + API_Token + /sendmessage?chat_id= + 사용자_ID + &text= + 전송_메세지
이제 다시 Telegram 대화 내역을 확인해 보면 API로 전달한 Message가 출력되는 것을 확인 할 수 있다.
위와같이 전달할 Mesagge가 출력되면 Chat Bot은 정상적으로 생성된걸 알 수 있다.
2. Telegram - Channel( 단체방 ) 개설하기
Scouter의 경고 메시지 알림을 한명 이상이 받는것은 좋지 않다.
그렇기에 여러명이서 알림을 받을 수 있도록 채널을 개설하여 운영하는것이 좋다.
Telegram 상단의 Hamburger 버튼을 클릭하고 사이드 메뉴가 나타난다.
사이드 메뉴 항목중 『 채널 만들기 』 항목을 선택하여 준다.
개설할 채널명과, 설명(선택사항)을 기입하고 『 만들기 』 버튼을 클릭한다.
Scouter 서버의 알림을 전달받기위한 Channel은 비공개로 운영될 것임으로 『 비공개 채널 』을 선택한다.
Channel의 참가자로 생성한 Chat Bot을 추가하여준다.
Channel에 추가한 Chat Bot은 반드시 관리자로 등록해 주어야 한다.
『 관리자로 세우기 』 버튼을 클릭한다.
관리자로 등록할 Chat Bot의 권한을 아래와 같이 설정하여 준다.
해당 Channel은 Scouter의 경고 알림을 수신하는 역할만 할것임으로 Chat Bot의 권한을 위와같이 설정하였다.
이제 Channel이 생성되면 자동으로 해당 Channel에 입장하게 된다.
구독자가 2명( Chat Bot, 개설자 )이 존재하는지 확인해 주자.
다시 위에서 Chat Bot 생성 확인을 위해 사용한 URL 주소를 다시 Web Browser로 호출해준다.
https://api.telegram.org/bot + API_Token + /getUpdates
이번에는 위와같이 Channel의 ID가 존재하는것을 확인 할 수 있다.
( Channel의 ID는 ' - ( 마이너스 )' 기호로 시작된다. )
위에서 사용한 방법과 비슷하게 이번에는 Channel에 전체 Message를 전달해 보자.
https://api.telegram.org/bot + API_Token + /sendmessage?chat_id= + 채널_ID + &text= + 전송_메세지
개설한 Channel에 전송한 메시지가 출력되면 성공이다.
이로서 Scouter의 경고 메시지를 전송할 Telegram Channel이 개설되었다.
3. Scouter - Telegram 라이브러리 파일 준비
Scouter 서버의 경고 알림을 Telegram을 통해 전달받으려면 몇가지 라이브러리( *.jar ) 파일이 필요하다.
Scouter - Telegram 라이브러리 다운로드
( https://github.com/scouter-contrib/scouter-plugin-server-alert-telegram/releases )
위 사이트에 접속하여 제공하는 라이브러리 파일들을 다운로드 하여준다.
다운받은 라이브러리 파일들을 Collector( 수집 ) 서버의 lib 디렉토리로 업로드하여 준다.
$ cd /home/collector/scouter/server/lib
파일이 정상적으로 업로드 되었는지 확인해 보자.
$ ls /home/collector/scouter/server/lib -al
total 35636
~~ 파일 업로드 확인 ~~
-rw-r--r--. 1 collector collector 263965 May 24 12:07 commons-codec-1.9.jar
-rw-r--r--. 1 collector collector 61829 May 24 12:07 commons-logging-1.2.jar
-rw-r--r--. 1 collector collector 229650 May 24 12:07 gson-2.6.2.jar
-rw-r--r--. 1 collector collector 736658 May 24 12:07 httpclient-4.5.2.jar
-rw-r--r--. 1 collector collector 326724 May 24 12:07 httpcore-4.4.4.jar
-rw-r--r--. 1 collector collector 10629 May 24 12:07 scouter-plugin-server-alert-telegram.jar
4. Scout - Collector( 수집 ) 서버 Telegram 설정 추가
라이브러리가 준비되었다면 이제 Collector 서버의 Scouter와 Telegram을 연동하여 주면 된다.
$ vim /home/collector/scouter/server/conf/scouter.conf
# Server ID
server_id = scouter_service
# Agent 제어 및 Service 포트( Default : TCP 6100 )
net_tcp_listen_port = 6100
# UDP 수신 포트( Default : 6100 )
net_udp_listen_port = 6100
# DataBase 저장경로( Default : ./database )
db_dir = ./database
# Log 저장경로( Default : ./logs )
log_dir = ./logs
# External Interface
# Telegram 설정
# Telegram 메시지 발송 여부 (true / false) - 기본 값은 false
ext_plugin_telegram_send_alert = true
# 로깅 여부 - 기본 값은 false
ext_plugin_telegram_debug = true
# 수신 레벨( 0 : INFO, 1 : WARN, 2 : ERROR, 3 : FATAL ) - 기본 값은 0
ext_plugin_telegram_level = 0
# Telegram 봇 토큰
ext_plugin_telegram_bot_token = 0000000000000000000000000000000000000000000000
# Telegram 봇 ID or 채널 ID( 해당 포스팅은 채널 ID 사용 )
ext_plugin_telegram_chat_id = -0000000000000
# 응답시간의 임계치 (ms) - 기본 값은 0으로, 0일때 응답시간의 임계치 초과 여부를 확인하지 않는다.
ext_plugin_elapsed_time_threshold = 5000
# 기본 값은 0으로, 0일때 GC Time의 임계치 초과 여부를 확인하지 않는다.
ext_plugin_gc_time_threshold = 5000
# 기본 값은 0으로, 0일때 Thread Count의 임계치 초과 여부를 확인하지 않는다.
ext_plugin_thread_count_threshold = 300
# Alert 메시지 발송에서 제외할 NAME 패턴 목록 (',' 구분자 사용, * (wildcard) 사용 가능)
# ext_plugin_ignore_name_patterns = myTomcat1
# Alert 메시지 발송에서 제외할 TITLE 패턴 목록 (',' 구분자 사용, * (wildcard) 사용 가능)
# ext_plugin_ignore_title_patterns = Elapsed,CONNECTION,activat*
# Alert 메시지 발송에서 제외할 MESSAGE 패턴 목록 (',' 구분자 사용, * (wildcard) 사용 가능)
# ext_plugin_ignore_message_patterns = *(/v1/common/user/testuser)*
# 연속된 동일 Alert을 1시간 동안 제외 - 기본 값은 false
ext_plugin_ignore_continuous_dup_alert = false
### 확인 및 분석 필요 항목 ###
# 저장소 자동 삭제 여부
# mgr_purge_enabled = true
# 프로퍼티 데이터를 자동으로 지우는 디스크 사용량
# mgr_purge_disk_usage_pct = 80
# 프로퍼티 데이터를 자동으로 지워지기전 유지되는 날짜수
# mgr_purge_profile_keep_days = 10
# xlog 점 데이터가 자동으로 지워지기전 유지되는 날짜수
# mgr_purge_xlog_keep_days = 30
# 각종 카운터(선그래프값) 가 자동으로 지워지기전에 유지되는 날짜수
# mgr_purge_counter_keep_days = 70
위와 같이 내용을 수정하여 준다.
이후 Collector( 수집 ) 서버의 Scouter를 다시 실행하여 준다.
$ cd /home/collector/scouter/server/
$ sh ./startup.sh
nohup: redirecting stderr to stdout
____ _
/ ___| ___ ___ _ _| |_ ___ _ __
\___ \ / __/ \| | | | __/ _ \ '__|
___) | (_| (+) | |_| | || __/ |
|____/ \___\___/ \__,_|\__\___|_|
Open Source S/W Performance Monitoring
Scouter version 2.20.0
Agnet( 감시 대상 ) 서버가 실행중이지 않다면 Agnet 서버도 다시 실행하여 준다.
잠시뒤 Telegram에 개설한 Channel에 서버의 실행되었다는 정보가 전달된다.
이후 Collector, Agnet 서버 모두 종료 및 문제가 발생하는 경우
해당 Telegram의 Channel을 통해 관련 정보가 전달될 것이다.
'Scouter' 카테고리의 다른 글
[Scouter] Collector - 수집 Server 구성하기 (0) | 2024.05.21 |
---|---|
[Scouter] Agent - 감시 대상 서버 설정 (0) | 2024.05.19 |