Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

[오픈소스컨설팅] 스카우터 사용자 가이드 2020

스카우터 설치부터 각 메뉴별 활용에 대한 설명을 담고 있는 문서입니다. 권현오님이 작성해주신 문서이며, 추가가 필요한 사항에 대해서 코멘트 주시면 내용 업데이트될 예정입니다.

[오픈소스컨설팅] 스카우터 사용자 가이드 2020

  1. 1. APM=Application Performance Monitor(or Management) 활동을 수행.
  2. 2. 1 2 3
  3. 3. •실시간 분포도 •다이나믹 프로파일링 •트랜잭션 추적 •장애의 진단과 분석 •성능 개선 •안정화 • CPU, 메모리 사용량 • DB 커넥션 • 파일 IO • 동시 사용자 • 응답시간 • 실시간 처리 현황 서비스 모니터링 리소스 모니터링 Xlog와 트랜잭션 프로파일링 장애 분석 및 해결
  4. 4. Scouter Agent Scouter Collector Scouter Repository Scouter Client
  5. 5. 아래 링크를 통해 패키지 다운로드 후 압축 해제로 기본 설치 (모든 컴포넌트는 사전에 jdk 설치 필요) https://github.com/scouter-project/scouter/release server(collector) Agent가 전송한 데이터 수집/처리 agent.host OS의 CPU, Memory, Disk 등의 성능 정보 전송 agent.java 실시간 서비스 성능 정보, Heap Memory, Thread 등 Java 성능 정보 agent.java_6_7 For java6, java7 agent.batch 배치 잡 모니터링 참고 webapp rest api 독립 서버. server 에 embedded 로 실행 가능 참고
  6. 6. db_dir=/scouter/server/data/ # 수집 된 data 저장 경로 log_dir=/scouter/server/logs/ # log directory net_udp_listen_port=6100 # udp port net_tcp_listen_port=6100 # tcp port –Xms2048m –Xmx2048m # 서버 환경에 맞는 메모리 설정 default -Xmx512m 스카우터 서버의 기동과 중지 $scouter_home/server/startup.sh $scouter_home/server/stop.sh 프로세스 상태 확인 # ps ax | grep scouter-server | grep -v grep 6927 ? Sl 43:48 java -Xmx512m -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib
  7. 7. net_collector_ip=127.0.0.1 # Collector의 IP net_collector_udp_port=6100 # Collector 서버 udp port Net_collector_tcp_port=6100 # Collector 서버 tcp port cpu_warning_pct=80 # CPU 경고 임계치 cpu_fatal_pct=85 # CPU 에러 임계치 cpu_check_period_ms=60000 # CPU 감시 주기 (ms) cpu_fatal_history=3 # CPU 알람 누적 카운트 cpu_alert_interval_ms=300000 # CPU 알람 주기 (ms) disk_warning_pct=88 # CPU 경고 임계치 (%) disk_fatal_pct=92 # CPU 에러 임계치 (%) 스카우터 서버의 기동과 중지 # cd scouter_home/server/agent.host/ # ./host.sh # ./stop.sh 프로세스 상태 확인 # ps ax | grep scouter.host | grep -v grep 24780 ? Sl 13:54 java -classpath ./scouter.host.jar scouter.boot.Boot ./lib
  8. 8. obj_name=tomcat_1 # 감시 대상 서버 별칭 net_collector_ip=127.0.0.1 # Collector의 IP net_collector_udp_port=6100 # Collector udp Listen port net_collector_tcp_port=6100 # Collector tcp Listen port 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.handleNotFound ErrorResponse hook_exception_hanlder_exclude_class_patterns=exception.BizException
  9. 9. Tomcat catalina.sh export AGENT_HOME="/scouter_home/agent.java/“ # the location of scouter.agent.jar if [ "$1" = "start" -o "$1" = "run" ]; then export JAVA_OPTS="$JAVA_OPTS -javaagent:$AGENT_HOME/scouter.agent.jar" export JAVA_OPTS="$JAVA_OPTS -Dscouter.config=$AGENT_HOME/conf/scouter.conf" fi JBoss env.sh export JAVA_OPTS=" $JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,scouter" export JAVA_OPTS=" $JAVA_OPTS -Dscouter.config=/scouter_home/agent.java/conf/jboss63.conf" export JAVA_OPTS=" $JAVA_OPTS -javaagent:/ scouter_home /agent.java/scouter.agent.jar" # ps ax | grep java 4190 ? Sl 22:28 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat_1//conf/logging.properties - Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -javaagent:/home/kho625/scouter/agent.java//scouter.agent.jar - Dscouter.config=/home/kho625/scouter/agent.java//conf/scouter.conf -Djdk.tls.ephemeralDHKeySize=2048 - Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= - classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat_1/ -Dcatalina.home=/usr/local/tomcat - Djava.io.tmpdir=/usr/local/tomcat_1//temp org.apache.catalina.startup.Bootstrap star 독립 실행이 아닌 WAS 실행 시 attach 되어 실행
  10. 10. 아래 링크를 통해 패키지 다운로드 (사전에 jdk 설치 필요, scouter.client 중 모니터링 PC 환경에 맞는 버전으로 다운) https://github.com/scouter-project/scouter/release 윈도우의 경우 scouter.exe 실행
  11. 11. 1. 서버 접속 (collector IP:TCP port) default 계정정보 (admin/admin) 2. 실행 완료 초기 화면
  12. 12. Object > Management > Account
  13. 13. 무엇을 모니터링 할 것인가? J2EE 시스템 운영 상태 모니터링을 위해 필요한 각종 데이터를 서로 유기적으로 배치/제공하며, 유기적으로 배치된 시스템 상태에 대한 빠른 판단 및 효과적인 제어를 도움. 시스템 사용자 정보 • 통신 단말 사용자 수 • 방문자 수 • 액티브 사용자 수 시스템 처리 상태 • 초당 처리 건수 • 시간당 호출 건수 • 평균 응답시간 자원상태 • 시스템 Memory, CPU 사용량 • JVM CPU 사용량 • Heap 메모리 사용량 장애/에러 • 시스템 장애 • 프로그램 에러
  14. 14. 대시보드 화면의 구성 (기본화면)
  15. 15. 대시보드 정보
  16. 16. 대시보드 정보 ⑦ Recent User 최근 사용자 카운트 ⑧ TPS 초당 수행 건수 ⑨ Elapsed Time 수행 시간 ⑩ Heap Used Heap 메모리 사용률 *새로고침, 최소화, 최대화 ⑦ ⑧ ⑨ ⑩ *
  17. 17. 대시보드 정보
  18. 18. 대시보드 정보
  19. 19. 대시보드 정보 임계치에 대한 알람 발생시 이를 감지, 해당 이벤트 를 슬랙, 텔레그램, E-mail 등을 통해 관리자에게 알림으로써 빠른 장애조치를 도움.
  20. 20. 대시보드 정보 액티브 서비스 : Java 애플리케이션이 현재 처리중인 트랜잭션 화면을 통해 사용자는 현 시점의 Java 어플리케이션 내부의 액티브 서비스 스냅 샷 정보를 확인할 수 있다. trace_ activeserivce_ yellow_time 3000 Active Thread Warning Time(ms) trace_ activeservice_ red_time 8000 Active Thread Fatal Time(ms)
  21. 21. 대시보드 정보
  22. 22. 대시보드 정보 ⑦ ⑦ ⑧ ⑨ ⑩ *
  23. 23. 대시보드 정보 ⑧ 어플리케이션에서 TPS(Transaction Per Second: 초당 처리건수)의 수치를 나타낸다. ⑦ ⑧ ⑨ ⑩ *
  24. 24. 대시보드 정보 ⑨ 플리케이션 Transaction의 수행시간(≒평균응답시간)⑦ ⑧ ⑨ ⑩ *
  25. 25. 대시보드 정보 ⑩ ⑦ ⑧ ⑨ ⑩ *
  26. 26. 대시보드 정보 개별 트랜잭션의 응답시간(ELAPSED) 뿐만 아니라, CPU소요시간. 응답시간 등의 값을 세로축으로 하고, 그 값을 시간의 변화(가로축)에 따라 점 형태의 분포도로 표현
  27. 27. Xlog 상세 정보 Xlog 화면 설명 안내 링크 Xlog Filter 원하는 조건의 XLog 점들만 보여지도록 하는 기능 only SQL SQL을 수행한 Xlog만 필터링 only API call 외부호출을 수행한 Xlog만 필터링 only error Error가 발생한 Xlog만 필터링 Search Xlog
  28. 28. Xlog Filter 빠른 필터 : SQL이 포함된 요청, API 호출이 포함된 요청, Error가 발생한 요청
  29. 29. Xlog Search (
  30. 30. Xlog - 우클릭 메뉴
  31. 31. Xlog 상세 정보(우클릭 메뉴)
  32. 32. Performance Counter 시간에 따라 변하는 값을 실시간 차트 형태로 보여 줌 (시계열 성능 메트릭) Object Request 원하는 시점에 사용자가 각 Object들의 특정 정보를 리스트 형태로 보여줌 대시보드 화면구성 – 차트의 종류
  33. 33. HOST(OS) 모니터링 HOST > Performance Counter 항 목 단 위 설 명 CPU % CPU 사용률 Memory | ActualUsed MB 실제 사용 메모리 Memory | Available MB 사용 가능 메모리 Memory | Total MB 전체 메모리 Memory % Host 별 메모리 사용률 Net | CLOSE_WAIT Cnt CLOSE 대기 Net | ESTABLISHED Cnt ESTABLISED 된 Connection 수 Net | FIN_WAIT Cnt FIN_WAIT 상태 Connection 수 Net | InBound Cnt InBound 패킷 수 Net | OutBound Cnt OutBound 패킷 수 Net | TIME_WAIT cnt TIME_WAIT 상태의 Connection 수 Swap | PageIn Page Swap 파일에 write한 Page 수 Swap | PageOut Page Swap 파일에 read한 Page 수 Swap | Total MB Swap 메모리 사이즈 Swap | Used MB Swap 메모리 사용량 Swap % Host 별 Swap 메모리 사용률
  34. 34. HOST(OS) 모니터링 HOST > Object request 항 목 설 명 Env OS의 환경변수 조회 Top 요청 시점의 Process 조회 Disk Usage Disk 사용량 조회
  35. 35. JAVA 모니터링 java > Performance Counter 항 목 단 위 설 명 Active Service Cnt 현재 처리중인 서비스 개수 Elapsed 90% Ms 상위 90% 서비스의 평균 응답시간 Elapsed Time ms 평균 응답시간 Error Rate % 에러가 발생한 서비스 비율 GC Count Cnt Garbage Collection 횟수 GC Time ms GC 수행에 소요된 시간 Heap Used Ms Heap 메모리 사용량 Perm % % Permanent Generation 사용 비율 Perm Used Mb Permanent Generation 사용량 ProcessCpu % JVM 프로세스 CPU 사용률 Recent User cnt 최근 5분 동안 방문한 Unique 사용자 수 Service Count cnt/min 서비스 호출 건수 TPS Tps 초당 트랜잭션 처리 건수 Heap Memory MB Heap 메모리 사용률 통계 Active Service EQ 실행 중인 서비스 이퀄라이저 Active Service Vertical EQ 실행 중인 서비스 가상 이퀄라이저 Active Service List 현재 실행중인 서비스 목록 Active Speed 현재 실행중인 서비스 속도 XLog sec 트랜잭션 수행 지표 24H Service Count cnt/min 24시간 서비스 호출 건수 Today Visitor 금일 방문자 수 Summary 요약정보
  36. 36. JAVA 모니터링 java > Object Request 항 목 설 명 Thread List 해당 Java Process의 Thread 목록 Active Service List 요청 시점에 실행중인 Service 목록 Loaded Class List 로드한 Class의 목록을 보여 줌 변경한 Hooking 옵션을 Runtime에 적용하기 위해 Class를 Redefine 하는 기능을 제공 Heap Histogram Heap Histogram을 보여줌 Thread Dump Thread Dump를 보여줌 Env JVM 의 환경변수를 조회 Socket 해당 Process에서 연결한 Socket의 정보를 보여줌 System.GC System.GC()를 호출 Heap Dump Heap dump를 생성 File Dump 위 기능들을 수행 하여 파일로 저장
  37. 37. 대시보드 화면구성 변경
  38. 38. Object 속성 변경
  39. 39. 서비스 연계 추적 http로 요청하는 서비스간 연결 추적이 가능 /agent.java/conf/scouter.conf 수정 필요 trace_interservice_enabled=true 추적 방법 1. XLog List에서 transaction 확인. 2. transaction의 txid를 선택하여 서비스 호출 연계 내용확인. 3. 서비스 연계 내용을 확인 후 그 하위의 연계를 확인하기를 원한다면, 해당 transaction의 call 연계 부분을 클릭하여 이후 서비스 연계를 확인 가능.
  40. 40. Service Dump 응답 지연과 같은 성능 장애 발생 시 상황 파악을 위한 Thread Dump 제공 (Multi thread 환경에서 thread 상태를 확인 하기 위해 사용)
  41. 41. Scouter Plugin Scouter 를 확장 가능하게 만들어주는 Plugin의 기능을 통하여, 특정 데이터를 선처리 하거나 업무적으로 의미 있는 데이터를 Xlog나 프로파일에 추가 가능 제공되는 Plugin 목록 Sample scouter-plugin-server-null : 수집데이터를 단순히 출력해 주는 sample plugin Alert scouter-plugin-server-email : Scouter에서 발생하는 alert를 email로 전송 scouter-plugin-server-telegram : Scouter에서 발생하는 alert를 telegram으로 전송 scouter-plugin-server-slack : Scouter에서 발생하는 alert를 slack으로 전송 그 외 line, dingtalk 연동 가능 Counter scouter-plugin-server-influxdb : Scouter의 성능 counter 데이터를 시계열 DB인 influxDB로 연동
  42. 42. Scouter Plugin Scouter 를 확장 가능하게 만들어주는 Plugin의 기능을 통하여, 특정 데이터를 선처리 하거나 업무적으로 의미 있는 데이터를 Xlog나 프로파일에 추가 가능 현재 지원되는 Alert의 종류 Agent의 CPU (warning / fatal) Agent의 Memory (warning / fatal) Agent의 Disk (warning / fatal) 신규 Agent 연결 Agent의 연결 해제 Agent의 재접속 응답시간의 임계치 초과 GC Time의 임계치 초과 Thread 갯수의 임계치 초과
  43. 43. E-mail 연동 Scouter Server Plugin 형태로 Email을 통해서 Alert 메시지를 Email으로 전송하는 기능 https://github.com/scouter-contrib/scouter-plugin-server-alert-email.git , ons-email-1.4.jar • Javax.mail-1.5.2.jar 소스 코드 빌드 후 target dir/lib 하위에 아래 라이브러리와 함께 activation-1.1.1.jar, commons-email-1.4.jar, javax.mail-1.5.2.jar scouter-plugin-server-alert-email-1.X.X.jar 파일을 $scouter_HOME/server/lib
  44. 44. E-mail 연동 server/conf/scouter.conf 설정 가이드 , ons-email-1.4.jar • Javax.mail-1.5.2.jar ext_plugin_email_send_alert Email 발송 여부 (true / false) - 기본 값은 false ext_plugin_email_debug 로깅 여부 - 기본 값은 false ext_plugin_email_level 수신 레벨(0 : INFO, 1 : WARN, 2 : ERROR, 3 : FATAL) - 기본 값은 0 ext_plugin_email_smtp_hostname SMTP 서버의 IP 또는 Domain - 기본 값은 smtp.gmail.com ext_plugin_email_smtp_port SMTP Port - 기본 값은 587 ext_plugin_email_smtpauth_enabled SMTP 인증 사용 여부 - 기본 값은 true ext_plugin_email_username Email 사용자 계정 ext_plugin_email_password Email 사용자 비밀번호 ext_plugin_email_ssl_enabled SSL 사용 여부 - 기본 값은 true ext_plugin_email_starttls_enabled STARTTLS 사용 여부 - 기본 값은 true ext_plugin_email_from_address Email 발신자 계정 ext_plugin_email_to_address Email 수신 계정(다중 사용자 지정 시 ',' 구분자 사용) ext_plugin_email_cc_address Email 참조 수신 계정(다중 사용자 지정 시 ',' 구분자 사용)
  45. 45. E-mail 연동 server/conf/scouter.conf 설정 가이드 , ons-email-1.4.jar • Javax.mail-1.5.2.jar ext_plugin_elapsed_time_threshold 응답시간의 임계치 (ms) - 기본 값은 0으로, 0일때 응답시간의 임계치 초과 여부를 확인하지 않는다. ext_plugin_gc_time_threshold GC Time의 임계치 (ms) - 기본 값은 0으로, 0일때 GC Time의 임계치 초과 여부를 확인하지 않는다. ext_plugin_thread_count_threshold Thread Count의 임계치 - 기본 값은 0으로, 0일때 Thread Count의 임계치 초과 여부를 확인하지 않는다. ext_plugin_ignore_name_patterns Alert 메시지 발송에서 제외할 NAME 패턴 목록 (',' 구분자 사용, * (wildcard) 사용 가능) ext_plugin_ignore_title_patterns Alert 메시지 발송에서 제외할 TITLE 패턴 목록 (',' 구분자 사용, * (wildcard) 사용 가능) ext_plugin_ignore_message_patterns Alert 메시지 발송에서 제외할 MESSAGE 패턴 목록 (',' 구분자 사용, * (wildcard) 사용 가능) ext_plugin_ignore_continuous_dup_alert 연속된 동일 Alert을 1시간 동안 제외 - 기본 값은 false
  46. 46. E-mail 연동 server/conf/scouter.conf 설정 가이드 , ons-email-1.4.jar • Javax.mail-1.5.2.jar
  47. 47. ElasticSearch 연동 Scouter Server Plugin 형태로 성능 counter 정보 와 XLOG 정보를 ElasticSearch 로 전송 , ons-email-1.4.jar • Javax.mail-1.5.2.jar
  48. 48. ElasticSearch 연동 설정 ext_plugin_es_enabled = true # elasticsearch 연동 plugin 사용 여부 ext_plugin_es_counter_index = scouter-counter # elasticsearch counter index 명 ext_plugin_es_xlog_index scouter-xlog # elasticsearch xlog index 명 ext_plugin_ex_duration_day = 90 # elasticsearch index 저장 기간 ext_plugin_es_https_enabled = https 사용 여부 (default : http 사용) ext_plugin_es_cluster_address = http target(elasticsearch) address (default : 127.0.0.1:9200) 엘라스틱서치를 클러스터의 경우 콤마로 구분 ex) 127.0.0.1:9200,127.0.0.1:9201 ext_plugin_es_id = (default : empty) ext_plugin_es_password = (default : empty) Deploy https://github.com/scouter-contrib/scouter-plugin-server-elasticsearch.git 소스 코드 빌드 후 target에 생성 되는 scouter-plugin-server-elasticsearch-x.x.x.jar 와 target/lib에 생 성되는 전체 library를 $scouter_HOME/server/lib 저장하고 scouter server를 재시작.
  49. 49. 키바나 - Scouter 대시보드 연동
  50. 50. T. 02-516-0711 E. sales@osci.kr 서울시강남구테헤란로83길32,5층(삼성동,나라키움삼성동A빌딩) THANK YOU

×