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/agent )
• Java Version : Oracle JDK 1.8_0.202
• WAS : Apache Tomcat v8.5.100
Agent Server란?
모니터링할 대상 서버로, 에이전트 소프트웨어가 설치되어 성능 데이터를 수집한다.
1. Linux Server 방화벽 설정
① Scouter 6100 Port TCP / UDP 방화벽 트래픽 허용
$ sudo firewall-cmd --zone=public --add-port=6100/tcp --permanent
success
$ sudo firewall-cmd --zone=public --add-port=6100/udp --permanent
success
② Apache Tomcat TCP 방화벽 트래픽 허용
$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
$ sudo firewall-cmd --zone=public --add-port=8009/tcp --permanent
success
③ 방화벽 재시작
$ sudo firewall-cmd --reload
success
2. Scouter 다운로드 및 압축 해제
wget 명령으로 Scouter 다운로드 한다.
$ wget https://github.com/scouter-project/scouter/releases/download/v2.20.0/scouter-all-2.20.0.tar.gz
다운로드한 Scouter-all-버전.tar.gz 파일의 압축을 해제한다.
$ tar xvfz /home/agent/scouter-all-2.20.0.tar.gz
$ ls /home/agent/scouter -al
total 12
drwxr-xr-x. 7 agent agent 89 May 29 2023 .
drwx------. 3 agent agent 149 May 23 10:51 ..
drwxr-xr-x. 3 agent agent 155 May 23 10:51 agent.batch
drwxr-xr-x. 3 agent agent 4096 May 23 10:51 agent.host
drwxr-xr-x. 4 agent agent 94 May 23 10:51 agent.java
drwxr-xr-x. 6 agent agent 4096 May 23 10:51 server
drwxr-xr-x. 5 agent agent 4096 May 23 10:51 webapp
3. Agnet( 감시 대상 ) 서버 설정
1) Agnet 서버의 Host 설정
Linux 서버의 상태 정보를 Collector( 수집 ) 서버로 전송
$ vim /home/agent/scouter/agent.host/conf/scouter.conf
### scouter host configruation sample
#net_collector_ip=127.0.0.1
#net_collector_udp_port=6100
#net_collector_tcp_port=6100
#cpu_warning_pct=80
#cpu_fatal_pct=85
#cpu_check_period_ms=60000
#cpu_fatal_history=3
#cpu_alert_interval_ms=300000
#disk_warning_pct=88
#disk_fatal_pct=92
## 01. Collector 서버 전송 설정
# Collector( 수집 ) 서버의 호스트 이름
obj_name = scouter_monitoring_system
# Collector( 수집 ) 서버의 IP 주소
net_collector_ip = 127.0.0.1
# Collector 서버의 UDP Port
net_collector_udp_port = 6100
# Collector 서버의 TCP Port
net_collector_tcp_port = 6100
## 02. CPU 알림 설정 옵션
# CPU 경고 임계치
cpu_warning_pct = 80
# CPU 오류 임계치
cpu_fatal_pct = 85
# CPU 감시주기( millisecond )
cpu_check_period_ms = 60000
# CPU 알림 누적 카운트
cpu_fatal_history = 3
# CPU 알림 주기
cpu_alert_interval_ms = 300000
## 03. Memory 알림 설정 옵션
mem_alert_enabled = true
mem_warning_pct = 80
mem_fatal_pct = 90
## 04. DISK 사용 알림 설정
# CPU 경고 임계치( % )
disk_warning_pct = 88
# CPU 경고 임계치( % )
disk_fatal_pct = 92
2) Agnet 서버의 Java Application 설정
Java Application 정보 읽고 Collector( 수집 ) 서버로 전송
$ vim /home/agent/scouter/agent.java/conf/scouter.conf
### scouter java agent configuration sample
#obj_name=WAS-01
#net_collector_ip=127.0.0.1
#net_collector_udp_port=6100
#net_collector_tcp_port=6100
#hook_method_patterns=sample.mybiz.*Biz.*,sample.service.*Service.*
#trace_http_client_ip_header_key=X-Forwarded-For
#profile_spring_controller_method_parameter_enabled=false
#hook_exception_class_patterns=my.exception.TypedException
#profile_fullstack_hooked_exception_enabled=true
#hook_exception_handler_method_patterns=my.AbstractAPIController.fallbackHandler,my.ApiExceptionLoggingFilter.handleNotFoundErrorResponse
#hook_exception_hanlder_exclude_class_patterns=exception.BizException
# Collector( 수집 ) 서버의 호스트 이름
obj_host_name = scouter_monitoring_system
# Agnet( 감시 대상 ) 서버의 별칭 지정
obj_name = Agent-00
# Collector( 수집 ) 서버의 IP 주소
net_collector_ip = 127.0.0.1
# Collector( 수집 ) 서버의 UDP Port
net_collector_udp_port = 6100
# Collector( 수집 ) 서버의 TCP Port
net_collector_tcp_port = 6100
# 프로파일링 할 메서드 지정 가능 - 좀더 분석해볼것 -
# Hooking 하여 기록할 method의 pattern 정의
# hook_method_patterns = sample.mybiz.*Biz.*,sample.service.*Service.*
# XLog 정보에는 IP 정보가 포함되어 있는데 proxy 등을 경유하는 경우
# 사용자 IP를( x-forwarded-for 같은 ) http header에서 구해오도록 설정
# trace_http_client_ip_header_key = X-Forwarded-For
# Spring의 request mapping method의 parameter를 profiling 합니다.
# profile_spring_controller_method_parameter_enabled = true
# error로 마킹할 Exception class pattern을 지정합니다.
# 상속받은 Exception class의 이름까지 검색합니다.
# hook_exception_class_patterns = my.exception.TypedException
# profile_fullstack_hooked_exception_enabled = true
# hook_exception_handler_method_patterns = my.AbstractAPIController.fallbackHandler,my.ApiExceptionLoggingFilter.handleNotFoundErrorResponse
# hook_exception_hanlder_exclude_class_patterns = exception.BizException
4. JDK 설치 및 사용자 환경변수 편집
JDK 8u202 다운로드 ( https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html )
다운받은 JDK를 설치할 사용자 디렉토리에 위치시킨다.
$ ls /home/agent/ -al
total 234668
drwx------. 3 agent agent 4096 May 23 10:59 .
drwxr-xr-x. 3 root root 19 May 22 20:04 ..
-rw-------. 1 agent agent 80 May 23 10:33 .bash_history
-rw-r--r--. 1 agent agent 18 Jan 24 2023 .bash_logout
-rw-r--r--. 1 agent agent 141 Jan 24 2023 .bash_profile
-rw-r--r--. 1 agent agent 492 Jan 24 2023 .bashrc
-rw-------. 1 agent agent 3645 May 23 10:59 .viminfo
-rw-r--r--. 1 agent agent 165 May 23 10:51 .wget-hsts
-rw-r--r--. 1 agent agent 178418154 May 23 11:00 jdk-8u202-linux-x64.rpm
drwxr-xr-x. 7 agent agent 89 May 29 2023 scouter
-rw-r--r--. 1 agent agent 61848487 May 29 2023 scouter-all-2.20.0.tar.gz
jdk-8u202-linux-x64.rpm 파일을 실행하여 설치한다.
$ sudo rpm -ivh /home/agent/jdk-8u202-linux-x64.rpm
warning: /home/agent/jdk-8u202-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8-2000:1.8.0_202-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
설치한 JDK를 사용자 환경설정에 변수로 등록한다.
$ vim /home/agent/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
unset rc
# JDK 환경변수 설정
export JAVA_HOME=/usr/java/jdk1.8.0_202-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
환경 변수를 추가하고 다시 로드한다.
$ source /home/agent/.bashrc
JAVA 옵션이 환경변수에 제대로 등록 되었는지 확인한다.
$ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
5. Apache Tomcat 설치 및 환경 설정
wget 명령으로 Apache Tocmat 다운로드 한다.
$ wget https://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz
--2024-05-23 11:03:08-- https://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz
Resolving mirror.navercorp.com (mirror.navercorp.com)... 125.209.216.167
Connecting to mirror.navercorp.com (mirror.navercorp.com)|125.209.216.167|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10885192 (10M) [application/octet-stream]
Saving to: ‘apache-tomcat-8.5.100.tar.gz’
apache-tomcat-8.5.100.tar.gz 100%[===========================================================================================>] 10.38M 821KB/s in 8.8s
2024-05-23 11:03:17 (1.18 MB/s) - ‘apache-tomcat-8.5.100.tar.gz’ saved [10885192/10885192]
Apache Tomcat이 다운로드 되었는지 확인한다.
$ ls /home/agent -al
total 245304
drwx------. 3 agent agent 4096 May 23 11:03 .
drwxr-xr-x. 3 root root 19 May 22 20:04 ..
-rw-------. 1 agent agent 80 May 23 10:33 .bash_history
-rw-r--r--. 1 agent agent 18 Jan 24 2023 .bash_logout
-rw-r--r--. 1 agent agent 141 Jan 24 2023 .bash_profile
-rw-r--r--. 1 agent agent 662 May 23 11:02 .bashrc
-rw-------. 1 agent agent 6145 May 23 11:02 .viminfo
-rw-r--r--. 1 agent agent 165 May 23 10:51 .wget-hsts
-rw-r--r--. 1 agent agent 10885192 Mar 19 23:00 apache-tomcat-8.5.100.tar.gz
-rw-r--r--. 1 agent agent 178418154 May 23 11:00 jdk-8u202-linux-x64.rpm
drwxr-xr-x. 7 agent agent 89 May 29 2023 scouter
-rw-r--r--. 1 agent agent 61848487 May 29 2023 scouter-all-2.20.0.tar.gz
다운로드가 완료되었다면 Apache Tomcat 압축을 /usr/local/ 경로에 압축을 해제하여 준다.
$ sudo tar zxfv apache-tomcat-8.5.100.tar.gz -C /usr/local
$ ls /usr/local/apache-tomcat-8.5.100/ -al
total 140
drwxr-xr-x. 9 root root 4096 May 23 11:03 .
drwxr-xr-x. 13 root root 160 May 23 11:03 ..
-rw-r-----. 1 root root 20913 Mar 19 22:54 BUILDING.txt
-rw-r-----. 1 root root 6210 Mar 19 22:54 CONTRIBUTING.md
-rw-r-----. 1 root root 57011 Mar 19 22:54 LICENSE
-rw-r-----. 1 root root 1726 Mar 19 22:54 NOTICE
-rw-r-----. 1 root root 3342 Mar 19 22:54 README.md
-rw-r-----. 1 root root 7140 Mar 19 22:54 RELEASE-NOTES
-rw-r-----. 1 root root 16505 Mar 19 22:54 RUNNING.txt
drwxr-x---. 2 root root 4096 May 23 11:03 bin
drwx------. 2 root root 4096 Mar 19 22:54 conf
drwxr-x---. 2 root root 4096 May 23 11:03 lib
drwxr-x---. 2 root root 6 Mar 19 22:54 logs
drwxr-x---. 2 root root 30 May 23 11:03 temp
drwxr-x---. 7 root root 81 Mar 19 22:54 webapps
drwxr-x---. 2 root root 6 Mar 19 22:54 work
다음으로 Apache Tomcat의 외부 접속을 위한 Port 오픈 및 Unicode 변경하여 준다.
$ sudo vim /usr/local/apache-tomcat-8.5.100/conf/server.xml
<?xml version='1.0' encoding='utf-8'?>
~~ 이 하 생 략 ~~
<Service name="Catalina">
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
URIEncoding="UTF-8"/>
~~ 이 하 생 략 ~~
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
/>
-->
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
URIEncoding="UTF-8"
/>
~~ 이 하 생 략 ~~
</Service>
</Server>
Apache Tomcat의 JVM 구동 옵션을 아래와 같이 변경하여 준다.
$ sudo vim /usr/local/apache-tomcat-8.5.100/bin/setenv.sh
#!/bin/sh
# JAVA_HOME 경로 지정
JAVA_HOME="/usr/java/jdk1.8.0_202-amd64/"
# JVM 옵션 설정
MIN_MEMORY="128m"
MAX_MEMORY="512m"
# MAX_PERM_SIZE="256m" // JAVA 8 이전 설정
MAX_METASPACE_SIZE="256m"
SERVICE_NAME="Agent-00( 서비스_이름 )"
# Jaba Application 시스템 속성 정의( JAVA 8 이후 설정 )
JAVA_OPTS="-Dcom.example.servicename=${SERVICE_NAME} -Xms${MIN_MEMORY} -Xmx${MAX_MEMORY} -XX:MaxMetaspaceSize=${MAX_METASPACE_SIZE}"
# Jaba Application 시스템 속성 정의( JAVA 8 이전 설정 )
# JAVA_OPTS="-Dcom.example.servicename=${SERVICE_NAME} -Xms${MIN_MEMORY} -Xmx${MAX_MEMORY} -XX:MaxPermSize=${MAX_PERM_SIZE} ${JAVA_OPTS}"
# Apache Tomcat 시작 Script( 리눅스 환경 )
export JAVA_OPTS="${JAVA_OPTS}"
# Scouter 설치한 경로 지정( agent.java 까지 )
export SCOUTER_AGENT_DIR=/home/agent/scouter/agent.java/
if [ "$1" = "start" -o "$1" = "run" ]; then
# Java Program에서 scouter agent를 인식할 수 있도록 명령행 옵션을 설정
JAVA_OPTS="${JAVA_OPTS} -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar"
# 설정 파일 경로 지정
JAVA_OPTS="${JAVA_OPTS} -Dscouter.config=${SCOUTER_AGENT_DIR}/conf/scouter.conf"
# 모니터링 대상( object ) 이름
JAVA_OPTS="${JAVA_OPTS} -Dobj_name=${SERVICE_NAME}"
fi
위와 같이 설정하였다면 Apache Tomcat이 실행되면서 Scouter 모니터링 시스템과도 연동된다.
6. Agent( 감시 대상 ) 서버의 HOST & WAS 실행 및 종료
1) Scouter Host 실행 및 종료
① Scouter - Host 실행
$ cd /home/agent/scouter/agent.host/
$ sh ./host.sh
nohup: redirecting stderr to stdout
____ _
/ ___| ___ ___ _ _| |_ ___ _ __
\___ \ / __/ \| | | | __/ _ \ '__|
___) | (_| (+) | |_| | || __/ |
|____/ \___\___/ \__,_|\__\___|_|
Open Source S/W Performance Monitoring
Scouter version 2.20.0
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
② Scouter - Host 종료
$ cd /home/agent/scouter/agent.host/
$ sh ./stop.sh
2) Apache Tomcat 실행 및 종료
① Apache Tomcat 실행
$ sudo sh /usr/local/apache-tomcat-8.5.100/bin/startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.100
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.100
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.100/temp
Using JRE_HOME: /usr/java/jdk1.8.0_202-amd64/
Using CLASSPATH: /usr/local/apache-tomcat-8.5.100/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.100/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
② Apache Tomcat 종료
$ sudo sh /usr/local/apache-tomcat-8.5.100/bin/shutdown.sh
설정이 완료되었다면 Collector Server를 구현하여 Monitoring System 구축을 마무리 하자.
'Scouter' 카테고리의 다른 글
[Scouter] Telegram을 통한 Alert 시스템 구축 (0) | 2024.05.22 |
---|---|
[Scouter] Collector - 수집 Server 구성하기 (0) | 2024.05.21 |