application.yml 파일 설정 완료 후 아래와 같은 순서로 TPM Agent를 환경을 설정한다.
ulimit -c unlimited. set.shset.sh 스크립트 내용
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
TARGET="$JAVA_HOME/bin/tpmagent"
# 하드링크 시도, 실패하면 복사
if ln -f "$JAVA_HOME/bin/java" "$TARGET" 2>/dev/null; then
echo "Hardlink created: $TARGET"
elif cp -p "$JAVA_HOME/bin/java" "$TARGET"; then
echo "Copied binary to: $TARGET"
else
echo "WARNING: Failed to create $TARGET"
echo " This may be a permission issue. Please check write access to $JAVA_HOME/bin."
echo " You can start TPM Agent, but in 'top'/'topas', process name will appear as java."
fi
# 실행 가능 확인
if [ -x "$TARGET" ]; then
echo "Installed $TARGET"
fi
else
echo "ERROR: JAVA_HOME not set or java not found in \$JAVA_HOME/bin"
fi
# 사용자 환경변수 설정
export TPMAGENT_HOME={TPM_Agent_Home_Path}
export PATH=$TPMAGENT_HOME:$PATH
export LD_LIBRARY_PATH=$TPMAGENT_HOME:$LD_LIBRARY_PATH
# 기존 실행 중이던 Agent가 있다면, 종료 후 실행
export BOOT_WITH_AUTO_DOWN_CLEAN=true
export ENABLE_DEBUG=false
export ENABLE_GC_LOG=false
# Agent 의 java heap 메모리 설정. 2000 session 기준 1000m. 이후 1000 session 마다 200m 추가 권장
export JAVA_MIN_HEAP_SIZE=1000m
export JAVA_MAX_HEAP_SIZE=1000m{TPM_Agent_Home_Path}
"java_tpmagent_dist_{version}.tar.gz" 압축 파일 해제 디렉터리 경로
export TB_HOME={Monitoring_DB_Path}
export TB_SID={Monitoring_DB_SID}
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bintpmctl.sh 명령어는 아래와 같으며, help로 터미널에서 사용법 확인이 가능하다.
Java TPM Agent에서 libtpmstat.so를 사용하기 위하여 필요한 라이브러리이다.
Tibero Down 이후 바로 Tibero Boot를 위해서 TPM Agent Down이 필요하다. TPM Agent가 참조하고 있는 Tibero Shared Memory를 해제해야 하기 때문이다.
{Monitoring_DB_Path}
관제 데이터베이스의 경로를 입력
{Monitoring_DB_SID}
관제 데이터베이스의 SID를 입력
./tpmctl.sh [-p port] up
TPM Agent 실행, -p 옵션을 통하여 jvm 디버그 포트들을 지정할 수 있다. 기본적으로 사용 가능한 포트를 찾으나, 해당 환경에서 사용 가능한 포트를 찾지 못하여 프로세스 실행이 되지 않는다면 해당 옵션을 사용하여 수동으로 포트를 지정할 수 있다.
./tpmctl.sh down
TPM Agent 종료
./tpmctl.sh help
주의
Tibero 버전명 또는 코어셋명만으로 연동 라이브러리의 호환 여부를 판단할 수 없다. 연동 라이브러리(libtpmstat.so)는 Tibero 서버와 공유 메모리 구조체가 일치해야 정상 동작하므로, 동일한 Tibero 버전이라도 빌드 시점, 직반 패치 내역, 컴파일 옵션 등에 따라 호환되지 않을 수 있다. 따라서 과거 빌드 바이너리 또는 별도 패치가 적용된 바이너리를 사용하는 경우, 관제 연동 전 동일한 Tibero 형상 기준으로 라이브러리를 빌드하고 호환 여부를 확인해야 한다.
libJNITpmStat.so 파일이 사용하는 libtpmstat.so 라이브러리 버전이 현재 Tibero 바이너리 버전과 맞지 않다면, 기존 TPM Agent 와 동일하게 SIGSEGV 문제 등 오류가 발생하여 프로세스가 실행되지 않는다. 각 JVM 벤더별로 생성되는 오류 관련 파일 종류는 다르나 core, jitdump, javacore 등의 파일 들이 생성될 수 있으므로 해당 파일 생성시 libtpmstat.so 라이브러리 버전을 확인해야한다.
주의
TPM Agent가 참조하고 있는 Tibero Shared Memory를 해제하기 위해서는 Tibero Down을 감지해야 하는데 감지 주기는 매 수집 주기와 동일하다. 따라서 사용자의 수집 주기 설정이 길게 되어있거나 TPM Agent 자체가 느려지는 경우 등 Tibero Down 감지 자체가 늦어질 경우 Tibero Down을 하고 다시 Tibero Boot가 가능한 시점이 지연되게 된다. 이와 같이 Tibero Down 감지가 늦어져 Tibero Boot 가능 시점이 지연되는 것을 방지하기 위해서는 TPM Agent Down을 진행하고 Tibero Boot를 하면 된다.
TPM Agent 도움말 출력
./tpmctl.sh version
TPM Agent 버전 출력
./tpmctl.sh libversion
TPM Agent 이 사용하는 TPM Stat 라이브러리 빌드 패치 목록과 Tibero의 패치 목록 출력
TPM Agent를 설치하는 과정은 다음과 같다. 단, 반드시 관제 데이터베이스를 설치한 계정과 동일한 OS 계정으로 진행해야 한다.
관제 데이터베이스가 위치한 서버에 "tpmagent_dist_{version}.tar.gz" 압축 파일을 배포한 후 압축을 해제한다.
tar -zxvf java_tpmagent_dist_{version}.tar.gz"java_tpmagent_dist_{version}.tar.gz" 압축 파일을 해제한 디렉터리에 application.yml 파일을 아래와 같이 작성하여 설정을 적용한다. yml 문법에 맞게 각 파라미터들의 값을 조정하여 설정한다.
agent-config:
id: "AAA1"
ip: "192.1.3.225"
port: 8292
freq: 1000
charset: "utf-8"
cpu-mem-proc-freq: 5000
disk-freq: 5000
sessioninfo-freq: 5000
dbsysinfo-freq: 5000
sqltrace-freq: 5000
sqltrace-queue-size: 10
sqltrace-elapsed-time-threshold: 100
sqltrace-monitoring-freq: 10
sqltrace-monitoring-thread-per-session-count: 500
log:
level: INFO
rotate-time-interval: 24
rotate-file-size: 50MB
max-log-file-number: 7
path: logs/해당 과정에서 설정하는 파라미터에 대한 설명은 다음과 같다.
Tibero에서 지원하는 문자 집합은 다음과 같다.
ASCII
EUC-KR
MSWIN949
UTF-8
"java_tpmagent_dist_{version}.tar.gz" 압축 파일을 해제한 디렉터리에 set.sh 파일에 적용시킬 환경 변수들이 있으며, 아래와 같이 작성하여 설정을 적용한다.
해당 과정에서 설정하는 환경변수에 대한 설명은 다음과 같다.
O
agent-config
freq
수집 주기 (단위: msec).
[참고] 설정하지 않으면 1000ms로 설정되므로 1초 주기로 수집.
X
agent-config
charset
관제 DB의 문자 집합 (NLS_CHARACTERSET 파라미터로 확인).
[참고] 설정하지 않으면 utf-8 로 설정
X
agent-config
cpu-mem-proc-freq
CPU, 메모리, 프로세스 목록 정보를 가져오는 주기(단위: ms) [참고] 설정하지 않으면 "freq" 값으로 설정됨
X
agent-config
disk-freq
디스크 정보를 가져오는 주기 (단위: ms)
[참고] 설정하지 않으면 "freq × 60" 값으로 설정되며, 설정하면 설정한 주기로 수집을 진행
X
agent-config
session-freq
세션 정보를 가져오는 주기 (단위: ms)
[참고] 설정하지 않으면 "freq" 값으로 설정됨
X
agent-config
dbsysinfo-freq
관제 DB의 시스템 지표 정보를 가져오는 주기 (단위: ms)
[참고] 설정하지 않으면 "freq" 값으로 설정됨
X
agent-config
sqltrace-freq
SQL Trace 정보를 가져오는 주기 (단위: ms)
[참고] 설정하지 않으면 "freq" 값으로 설정됨
X
agent-config
sqltrace-queue-size
메모리에 SQL Trace를 수집하기 전에 저장하는 개수. sqltrace-freq마다 해당 queue에서 수집된 SQL Trace를 모아서 수집한다. (1 ~ 2^32-1 사이의 정수). [참고] 설정하지 않으면 10으로 설정
X
agent-config
sqltrace-elapsed-time-threshold
SQL 실행 정보 생성 기준 실행 시간 임계치(단위: ms)(예: 100msec 이상 수행된 SQL에 대해서만실행 정보 생성) [참고] 설정하지 않으면 100으로 설정
X
agent-config
sqltrace-monitoring-freq
SQL Trace를 모니터링하는 스레드의 세션 목록 조회 주기(단위: ms) [참고] 설정하지 않으면 10으로 설정
X
agent-config
sqltrace-monitoring-thread-per-session-count
SQL Trace를 모니터링하는 스레드가 담당하는 세션의 개수 [참고] 설정하지 않으면 500으로 설정
X
log
level
로그 레벨로
FATAL
ERROR
WARN
INFO
X
log
rotate-time-interval
로그 파일이 아카이빙되는 주기 (단위: h)
적재 중인 로그 파일을 주기마다 아카이빙하고 새로운 로그 파일에 적재
[참고] 설정하지 않으면 24로 설정되므로 하루 주기로 로그 파일 아카이빙
X
log
rotate-file-size
로그 파일이 아카이빙되는 파일 사이즈 (단위: MB)
적재 중인 로그 파일이 해당 파일 사이즈에 도달하면 적재 중인 로그 파일을 아카이빙하고 새로운 로그 파일에 적재
[참고] 설정하지 않으면 50으로 설정되므로 적재 중인 로그 파일이 50MB에 도달하면 로그 파일 아카이빙
X
log
max-log-file-number
아카이빙되는 파일 최대 개수 (단위: 개수)
아카이빙한 파일 개수가 최대에 도달하면 가장 오래 된 로그 파일부터 삭제
[참고] 설정하지 않으면 7로 설정되므로 최대 로그 파일 개수는 7개
X
log
path
로그 파일 생성 디렉터리
[참고] 설정하지 않으면 tpmagent.jar 경로에 logs/ 로 경로 설정
X
SHIFT-JIS
JA16SJIS
JA16SJISTILDE
JA16EUC
JA16EUCTILDE
VN8VN3
GBK
WE8MSWIN1252
ZHT16HKSCS
CL8MSWIN1251
WE8ISO8859P1
EE8ISO8859P2
WE8ISO8859P9
WE8ISO8859P15
CL8KOI8R
CL8ISO8859P5
CP866
TH8TISASCII
EL8MSWIN1253
EL8ISO8859P7
AR8MSWIN1256
AR8ISO8859P6
SJISTILDE
ZHT16BIG5
ZHT16MSWIN950
GB18030
IW8ISO8859P8
EUC-TW
ENABLE_GC_LOG
TPM Agent 실행시 jvm gc log를 파일로 생성할 것인가에 대한 환경 변수, default는 false
X
JAVA_MIN_HEAP_SIZE
TPM Agent 실행시 시작 heap 크기 설정에 대한 환경 변수, default는 각 jvm 구현체마다 다르며 보통 현재 머신 메모리의 1/64 이다.
X
JAVA_MAX_HEAP_SIZE
TPM Agent 실행시 최대 heap 크기 설정에 대한 환경 변수, default는 각 jvm 구현체마다 다르며 보통 현재 머신 메모리의 1/4 이다.
X
agent-config
id
인스턴스 ID
[참고] 웹 UI에서 관제 데이터베이스 인스턴스 등록 시 입력한 INSTANCE ID 값과 동일해야 함. 잘못 입력시 잘못된 Tibero 설치 머신 현황과 세션 목록, 그리고 TSC 네트워크 구성을 모니터링하게 되므로 주의 요망.
O
agent-config
ip
SysMaster DB 서버에 접속할 수 있는 IP 주소
O
agent-config
port
export BOOT_WITH_AUTO_DOWN_CLEAN=true
export ENABLE_DEBUG=false
export ENABLE_GC_LOG=false
export JAVA_MIN_HEAP_SIZE=1000m
export JAVA_MAX_HEAP_SIZE=1000mBOOT_WITH_AUTO_DOWN_CLEAN
TPM Agent 실행시 기존에 실행중인 process가 있으면 해당 프로세스 종료 후 실행할 것인가에 대한 환경 변수, default는 true
X
ENABLE_DEBUG
TPM Agent 실행시 debug port를 열 것인 지에 대한 환경 변수, default는 false
TPM Agent가 SysMaster DB 서버의 COLLECTOR_PORT로 연결하기 위한 포트 번호
X
DEBUG
TRACE
[참고]설정하지 않으면 INFO 로 설정됨.
DEBUG 이상 설정을 할 경우 로그양이 많아져 TPM Agent 에 설정한 주기 안에 수집을 하지 못하여 데이터 누락이 발생할 수 있음. 그로 인하여 실시간 데이터 모니터링 중 데이터가 조회되지 않는 현상이 있을 수 있음. 따라서 운영 환경에서는 해당 설정을 하지 않는 것을 권고하며, 이슈 분석을 위해서만 해당 로그 레벨을 설정.