[Scouter] 설치 · Tomcat 연동 · Slack 알림 연동!!







1. 사전 준비(공통)

sudo yum install -y java-1.8.0-openjdk-devel export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
  • Scouter 릴리스 페이지에서 최신 tar.gz 를 다운로드(또는 GitHub 릴리즈). (아래 예시는 /opt/scouter 기준). GitHub

cd /opt # 최신 릴리스 파일명 예시: scouter-2025xxxx.tar.gz sudo wget https://github.com/scouter-project/scouter/releases/download/<TAG>/scouter-<DATE>.tar.gz sudo tar xzf scouter-<DATE>.tar.gz sudo mv scouter-<DATE> scouter

2. Scouter Collector / Server 설치 (중앙 서버)

Collector(Server)는 Agent에서 오는 데이터를 받아 저장/전달하는 역할입니다.

  1. 폴더 구조 예시 (설치된 scouter 폴더 안에 collector, server, client가 있습니다). 기본 Collector 포트는 6100 등으로 사용. JM Engineering Blog

  2. Collector(및 server) 실행(간단 테스트)

cd /opt/scouter/collector # 실행 스크립트(예: start.sh 또는 run.sh)가 있는 경우 사용 ./start-collector.sh & # server (UI/관리 포함) cd /opt/scouter/server ./start-server.sh &

실무: systemd 단위 파일로 등록해 서비스로 관리하는 것을 권장합니다(아래 systemd 예시 참고).

  1. systemd 예시 (Scouter Collector)
    파일: /etc/systemd/system/scouter-collector.service

[Unit] Description=Scouter Collector After=network.target [Service] Type=simple User=scouter Group=scouter WorkingDirectory=/opt/scouter/collector ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar ./scouter-collector.jar Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl enable --now scouter-collector sudo journalctl -u scouter-collector -f
  1. 방화벽: Collector가 수신하는 포트(예: 6100 등)를 허용. (iptables 또는 firewalld에서 설정).

참고: 기본 Quick-Start / Collector 설치 가이드를 참조하세요. GitHub+1


3. (옵션) Host Agent 설치 — OS 지표 수집

/opt/scouter/agent.host 디렉토리에 host agent가 있습니다. 아래 예시로 실행:

cd /opt/scouter/agent.host ./host.sh start # 또는 nohup ./host.sh > /var/log/scouter-host.log 2>&1 &

conf 디렉토리에서 scouter.conf를 열어 collector 주소(서버 IP/포트)를 지정하세요.


4. Java Agent 설치 — Tomcat 연동 (실습 가이드)

Tomcat에 Scouter Java Agent를 붙여 애플리케이션 트랜잭션을 모니터링합니다.

4.1 준비

  • Scouter Java Agent 파일: /opt/scouter/agent.java/scouter.agent.jar

  • Agent 설정 파일: /opt/scouter/agent.java/conf/scouter.conf (또는 scouter1.conf 등)

4.2 Tomcat 시작 스크립트에 -javaagent 옵션 추가

Tomcat이 설치된 서버에서 catalina.sh(또는 시스템에 따라 /etc/systemd/system/tomcat.serviceJAVA_OPTS)를 수정합니다.

예: /opt/tomcat/bin/catalina.sh (수정 전 백업 권장)

# 아래 3줄을 CATALINA_OPTS 또는 JAVA_OPTS에 추가 export SCOUTER_AGENT_DIR=/opt/scouter/agent.java export CATALINA_OPTS="$CATALINA_OPTS -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar" export CATALINA_OPTS="$CATALINA_OPTS -Dscouter.config=${SCOUTER_AGENT_DIR}/conf/scouter.conf" export CATALINA_OPTS="$CATALINA_OPTS -Dobj_name=tomcat-myapp-01"

또는 systemd 단위 파일 환경에 직접:

Environment="JAVA_OPTS=-javaagent:/opt/scouter/agent.java/scouter.agent.jar -Dscouter.config=/opt/scouter/agent.java/conf/scouter.conf -Dobj_name=tomcat-myapp-01"

중요 포인트

  • -Dobj_name은 UI에서 표시될 객체 이름(서버 식별자)입니다. 환경별로 중복되지 않게 지정하세요. GitHub

4.3 scouter.conf 핵심 설정(예시)

파일: /opt/scouter/agent.java/conf/scouter.conf

# Collector 서버 IP:PORT (예시) scouter.server.ip=10.0.1.100 scouter.server.port=6100 # Agent 이름 (UI에 표시될 이름) obj_name=tomcat-myapp-01 # 로그, 전송 간격 등 (기본값이 있음) net_collector_udp_port=6100 net_tcp_server_port=6108

(※ 실제 키/옵션명은 배포된 버전의 conf 예시를 확인해 적용하세요.) JM Engineering Blog+1

4.4 Tomcat 재시작 / 확인

# Tomcat 재시작 sudo systemctl restart tomcat # Agent 적용 확인: Scouter Client에서 obj_name 또는 서버 IP로 보이는지 확인 # 또는 로그에서 scouter.agent.jar 로딩 로그 확인 tail -f /opt/tomcat/logs/catalina.out

5. Scouter Client 접속

  • Scouter Client(데스크탑 Java 애플리케이션)를 실행해 Collector/Server 주소(예: 127.0.0.1:6100)와 로그인(admin/admin 기본)을 입력하면 모니터링 화면이 보입니다. GitHub


6. Scouter 알람(Alerts) → Slack 연동 (실습)

Scouter 자체에는 알람 생성 기능이 있고, Slack으로 전송하려면 서버 플러그인을 사용하거나 외부 Webhook을 이용한 연동을 합니다. 오픈소스 커뮤니티에서 제공하는 Slack 플러그인 예시(scouter-plugin-server-alert-slack)가 있습니다. GitHub

6.1 방법 선택지 요약

A. Scouter server plugin (추천 — 서버 레벨에서 알람을 받아 Slack으로 전송)
B. 외부 스크립트/웹훅 연동 (간단: Scouter 알람 로그를 받아서 curl로 Slack Webhook 호출)

아래에 두 방법 모두 단계별로 설명합니다.


6.2 A. Scouter Server Plugin 방식 (GitHub 플러그인 사용 예시)

  1. 플러그인 소스 가져오기

cd /tmp git clone https://github.com/scouter-contrib/scouter-plugin-server-alert-slack.git cd scouter-plugin-server-alert-slack
  1. 빌드 (Maven 필요)

# 빌드하여 JAR 생성 mvn clean package # 생성된 jar 위치: target/*.jar
  1. 플러그인 배포

  • 생성된 JAR 파일을 Scouter Server의 plugins 디렉토리(또는 scouter/server/plugins)에 복사합니다.

sudo cp target/scouter-plugin-server-alert-slack-*.jar /opt/scouter/server/plugins/
  1. Slack Webhook 준비

  • 워크스페이스에서 Incoming Webhook을 생성하고, 전송할 채널과 Webhook URL을 얻습니다. (Slack에서 "앱 추가 → Incoming Webhooks" → Webhook URL 복사)

  1. 플러그인 설정

  • 플러그인에 따라 conf 또는 properties 파일에 Webhook URL을 설정합니다. (플러그인 README에 설정 방식 명시)
    예시 (플러그인 설정 파일 slack.conf 또는 scouter-plugin.properties):

slack.webhook.url=https://hooks.slack.com/services/T00000000/B00000000/xxxxxxxxxxxxxxxxxxxx slack.channel=#ops-alert slack.username=ScouterAlert

(정확한 설정 파일/키는 플러그인 문서를 확인 후 적용하세요.) GitHub

  1. Scouter Server 재시작

sudo systemctl restart scouter-collector # 또는 scouter-server 서비스 재시작
  1. 테스트

  • Scouter Client에서 인위적으로 임계치를 넘기거나(예: CPU 사용량 경고) 플러그인의 테스트 메시지 기능을 사용하여 Slack 채널에 메시지 도착 확인.

장점: 서버 내부에서 바로 전송되므로 안정적이고 실시간성 보장. 플러그인에 따라 지원되는 이벤트(Agent connect/disconnect, CPU/Memory/Disk 경고 등)가 다름. GitHub


6.3 B. 외부 Webhook(간단) 방식 — Scouter Alert 로그를 스크립트로 감지해 Slack에 POST

  1. Slack Webhook 생성(위 A-4와 동일).

  2. 간단한 bash 스크립트 예시: (/opt/scouter/scripts/notify_slack.sh)

#!/bin/bash WEBHOOK_URL="https://hooks.slack.com/services/XXXX/XXXX/XXXX" CHANNEL="#ops-alert" BOTNAME="ScouterBot" TEXT="$1" payload=$(jq -n --arg text "$TEXT" --arg channel "$CHANNEL" --arg username "$BOTNAME" '{text:$text,channel:$channel,username:$username}') curl -s -X POST -H 'Content-type: application/json' --data "$payload" $WEBHOOK_URL

(주의: jq 설치 필요)

  1. Scouter 알람 로그(또는 server 로그)를 tail -F로 모니터링해서 조건이 만족되면 위 스크립트 호출:

tail -F /opt/scouter/server/logs/server.log | while read LINE; do echo "$LINE" | grep "ALERT_PATTERN" && /opt/scouter/scripts/notify_slack.sh "$LINE" done
  • ALERT_PATTERN 은 로그내 경고 문자열(예: agent disconnected, cpu warning)로 조정.

장점: 구현이 간단하고 플러그인 빌드가 필요 없음. 단점: 로그 파싱 방식이라 이벤트 누락/지연 가능.


7. 모니터링/알람 운영 팁

  • Agent obj_name 규칙화: env-app-idx 형태로 표준화(예: prd-web01, stg-api02) — UI와 알람에서 빠르게 식별 가능. GitHub

  • 네트워크/포트: Collector <-> Agent 통신 포트(기본 UDP/TCP 포트)를 방화벽에서 허용.

  • 로그 보존/디스크: Scouter Server가 저장하는 데이터 양을 고려해 디스크 용량/rotation 정책 수립.

  • 알람 임계치 튜닝: 초기에는 완화된 임계치로 테스트 후 점진 축소. 잦은 오탐(노이즈)은 경보무시 설정이나 재조정 필요.

  • 백업: Scouter의 DB/저장 포맷(파일 기반 여부)을 확인해 정기 백업 설정.


8. 문제 발생 시 확인 포인트 / 디버깅

  • Agent 로그 (/opt/scouter/agent.java/log/) — Agent가 Collector에 접속하는지 확인

  • Collector/Server 로그 (/opt/scouter/server/log/) — 포트 충돌, Plugin load 오류 확인

  • Tomcat 로그(catalina.out) — -javaagent 인자로 scouter.agent.jar 로딩 메시지 확인

  • 방화벽/네트워크: Collector IP/포트로 UDP/TCP 패킷이 전달되는지 체크 (ss, netstat, tcpdump)

  • Plugin 빌드 오류: Maven 버전 확인 및 mvn -v 로 JDK 호환성 확인


9. 빠른 체크리스트(핵심 명령 모음)

  • Java 설치 확인:

java -version
  • Scouter 압축 풀기:

tar xzf scouter-<DATE>.tar.gz -C /opt
  • Tomcat에 -javaagent 추가(예시):

export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/scouter/agent.java/scouter.agent.jar -Dscouter.config=/opt/scouter/agent.java/conf/scouter.conf -Dobj_name=tomcat-myapp-01"
  • Scouter Server 실행(예):

cd /opt/scouter/server ./start-server.sh &
  • 플러그인 빌드/배포:

git clone https://github.com/scouter-contrib/scouter-plugin-server-alert-slack.git cd scouter-plugin-server-alert-slack mvn clean package cp target/*.jar /opt/scouter/server/plugins/ systemctl restart scouter-collector

(참고 문서: Scouter 설치/QuickStart 및 plugin repo). GitHub+2GitHub+2




 

댓글

이 블로그의 인기 게시물

[8/9] 1184회 로또 당첨번호 추천!!

[AWS] SCP, OU, Policy 사용하기 !!

[AWS] AWS Activate 스타트업 $1,000 지원 성공

[Gemini API] 구글 생성형 AI API 모델별 요금 및 청구 방식!!

[8/2] 1183회 로또 당첨번호 추천!!

[Shopizer E‑commerce] Shopizer란?

[Vault] 온프레미스 구축 개요!!