본문 바로가기

프로젝트/Pinpoint, Scouter 구축(APM)

[비공개][포팅 메뉴얼] 스카우터(Scouter), 핀포인트(Pinpoint) 설치 가이드 - 1

목차

    핀포인트(Pinpoint)의 경우 문서가 길어져 분리하였다.

    다음 링크를 참조할 것 : https://csg1353.tistory.com/169

     

    [포팅 메뉴얼] 스카우터(Scouter), 핀포인트(Pinpoint) 설치 가이드 - 2

    현재 문서는 Pinpoint의 설치 가이드이다. Scouter의 경우 이전 문서에 존재한다. 다음 링크를 참조할 것 : https://csg1353.tistory.com/168 [포팅 메뉴얼] 스카우터(Scouter), 핀포인트(Pinpoint) 설치 가이드 - 1 핀

    csg1353.tistory.com

     

     

     

    이번 포스팅에서는, Scouter와 Pinpoint를 Linux 환경에 구축하는 메뉴얼을 작성하였다.

    환경 사양의 경우 다음과 같다.

     

    구축 환경 Diagram과 Flow

    전체 다이어그램

     

    Scouter 수집 Flow

     

     

    설치 환경 및 설치 버전

    - CentOS 7 / windows 11(Scouter window Client) 

    - Java 1.8

     

    <Pinpoint>

    Pinpoint v2.3.3

     

    Release v2.3.3 · pinpoint-apm/pinpoint

    Security Patch Release Fix Log4j2 Security Vulnerabilities CVE-2021-45105, CVE-2021-45046 Agent : log4j 2.12.3 Server module : log4j 2.17.0 Release Notes [#8510] Backport: Bump Log4j 2.17.0 b...

    github.com

    Hbase 1.4.6

    Flink 1.6.2

     

    <Scouter>

    Scouter v2.20.0

     

    Release v2.20.0 · scouter-project/scouter

    Notification execute the command to run scouter client for Mac(OSX) xattr -cr scouter.client.app The following JAVA environment variable must be added to dynamically load SCRIPT PULGIN in a JAVA P...

    github.com

    Scouter paper 2.6.4

     

    Release 2.6.4 · scouter-contrib/scouter-paper

    Support for using the Scouter multi-collector server #259 Choose one of multiple collection servers. Add real-time control option #260 Preload time, refresh time. Add Topology Network nod...

    github.com

     

     

     

    1. Scouter 설치

     

    1-1. 구조

     

    스카우터는 간단하게 다음과 같은 구조를 이루어진다.

     

    1. Collector(Server) : 

    agent들이 측정한 값들을 수집하는 메인 서버를 의미한다.

     

    2. agent.java / agent.host :

    측정을 원하는 서버 내부의 tomcat(java.agent)과 환경(java.host)의 정보를 가져온다. 해당 서버에 agent들을 설치하고, Collector Server와 연동시킨다.

     

    3. Client :

    Collector가 수집하고 정리한 데이터들을 사용자들이 볼 수 있도록 Client나 paper web의 형태로 보여준다.

     

    1-2 : 기본 환경 설정(포트)

     

     

    기본적으로 적용해야 할 포트는 아래와 같다. 물론, conf를 통해 변경할 수 있다.

     

    1. 6100 TCP/UDP :

    기본적으로 스카우터는 Collector가 agent의 정보를 받기 위해 '6100' 포트를 사용한다.

    UDP 포트도 열어주어야 한다.

     

    2. 6188 

    Scouter Paper web에서 사용할 기본 연결 주소

     

    1-3 : Scouter 설치

     

    Scouter 사이트에서 버전에 맞는 스카우터를 받아 압축을 풀어줄 것.

     

    https://github.com/scouter-project/scouter/releases

     

    Releases · scouter-project/scouter

    Scouter is an open source APM (Application Performance Management) tool. - scouter-project/scouter

    github.com

     

    Asset ->  scouter-all-2.20.0.tar.gz를 받아 Linux에서 압축 해제한다.

    sudo tar -xvf '파일'

     

    Asset -> scouter.client.product-win32 .. 역시 Windows 위에 다운로드한다.

    이는 Windows에서 실행할 클라이언트이다.

     

    다시 리눅스로 돌아가서, 여기서는 편의에 따라 /opt/scouter/ 경로에 설치하였다.

     

     

     

    1-3-1 Collector 실행

     

    /opt/scouter/server의 startup.sh 파일을 실행하여 서버를 가동할 수 있다.

    sudo ./startup.sh

     

     

     

    단, 가끔 failed to run command `java' 라는 에러가 날 때가 있는데, 이는 java 경로를 인식하지 못해서이다.

    이 경우 에디터를 통해 ./startup.sh 파일에서 export로 경로를 지정하여 수정하자.

     

    #!/usr/bin/env bash
    
    
    export JAVA_HOME="원래 자바 경로"
    export PATH=$JAVA_HOME/bin:$PATH
    
    echo "(테스트용 출력)Java Path : " $JAVA_HOME
    
    nohup java -Xmx1024m -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib > nohup.out &
    sleep 1
    tail -100 nohup.out

     

     

    실행 후 nohup log를 확인하여 성공 여부를 파악할 수 있다.

     

     

    ps -ef | grep scouter 로도 확인 가능하다

     

    1-3-2 Agent 실행( host )

    파악을 원하는 서버에 agent.host와 agent.java 파일을 설치하고, conf 파일을 통해 연결 후 실행하여 Collector와 연동할 수 있다.

     

    측정하려는 서버 내부의 agent.host 폴더에 들어가서 Conf 파일을 수정해주자.

     

     

    ### scouter host configruation sample
    net_collector_ip=Collector 주소
    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

     

     

    이후 agent.host 내부의 host.sh를 실행하여 agent를 실행할 수 있다.

     

    1-3-3 Agent 실행( java )

    host와 마찬가지로, conf 파일을 수정해야 한다.

     

    ### scouter java agent configuration sample
    obj_name=이름
    net_collector_ip=마찬가지로 컬렉터 주소
    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
    
    ## Scouter paper
    counter_interaction_enabled=true #Paper 관련 설정

     

    java agent는 host처럼 독자적으로 실행하는 것이 아니라, 연관된 Tomcat 실행 시 tomcat이 이 agent(사실 jar 파일이다)를 연관하여 실행하게 동작해야 한다.

     

     

    (scouter.agent.jar 파일이 agent 본체이다)

     

    측정을 원하는 서버의 tomcat / bin / catalina.sh를 들어가서 스크립트를 추가하자.

     

     

    '# ----- Execute The Requested Command -----------------------------------------' 라인(실행 구문) 위쪽에 코드를 집어넣어야 한다.

    혹은 setenv.sh로 집어넣어도 상관없다.

     

    #Scouter Agent Setting
    SCOUTER_AGENT_DIR="/opt/scouter/agent.java" #agent java 경로(.jar까지 경로가 아님. 베이스 주소 변수이다.)
    COLLECTOR_SERVER_IP="192.168.56.1" # Collector 주소
    export JAVA_OPTS="$JAVA_OPTS -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar" #사실상 이것이 전체 경로
    export JAVA_OPTS="$JAVA_OPTS -Dscouter.config=${SCOUTER_AGENT_DIR}/conf/scouter.conf"
    #export JAVA_OPTS="$JAVA_OPTS -Dnet_collector_ip=${COLLECTOR_SERVER_IP}"

     

     

    해당 값 저장 후 tomcat을 다시 시작하면 agent jar 파일이 실행될 것이다. grep으로도 확인 가능하다.

    ps -ef | grep agent.java

     

    1-4 Scouter windows client

    Collector의 저장 값을 Client를 통해서 확인할 수 있다.

    이를 위해 기본적인 연결을 해 줄 것이다.

     

    1-4-1 환경 변수

    기본적으로 Scouter client는 Eclipse를 기반으로 만들어졌기에, Java 11 이상의 jdk가 필요하다.

    만약 기본 환경 변수가 1.8이라면, scouter 실행 파일 아래의 scouter.ini에서 다음과 같이 jdk 경로를 따로 지정해줄 수 있다.

     

    -vm 사용, 위치를 명확하게 집어줄 것.

    -startup
    plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.400.v20211117-0650
    -data
    @user.home/scouter
    -vm
    C:\Program Files\Java\openlogic-openjdk-11.0.21+9-windows-x64\bin\javaw.exe
    -vmargs
    -Xms128m
    -Xmx1024m
    -XX:+UseG1GC
    -Dosgi.requiredJavaVersion=11

     

     

    1-4-2 클라이언트 로그인 

     

    처음 시작시 아이디와 비밀번호를 입력하라 하는데, admin / admin으로 로그인 가능하다.

     

     

    로그인 이후 서버의 트랜잭션이 걸릴만한 요청 실행 시 정상적으로 로그가 발생하는 것을 확인할 수 있다.

     

    1-5. Scouter paper web

    https://scouter-contrib.github.io/scouter-paper/manual.html

     

    Paper

    레이아웃 관리 PAPER와 METRIC이 결합된 정보와 PAPER의 크기와 위치 정보 전체 레이아웃이라고 정의합니다. 이러한 레이아웃 정보를 우측 상단의 LAYOUT 버튼을 클릭하여, 관리할 수 있습니다. 기본적

    scouter-contrib.github.io

     

     

    paper는 Embedded와 StandAlone 방식이 있다.

    이 방식을 주의해서 사용할 것. (다른 정리 내용도 그렇지만, 방식에 따라 설정 및 실행 방법이 다르다.)

     

    - Paper에서 기본 포트는 6188인데 Scouter의 webapp(API를 제공하는)의 기본 포트이다. (StandAlone)

    - 6180 포트는 scouter에서 webapp을 독립 실행(standalone mode) 하지 않고 scouter collector 서버에 포함(embedded)된 형태로 실행한 경우의 포트이다.

     

    1-5-1. 환경 설정 webapp

    /opt/scouter 내부에 기본적인 파일을 저장했었다.

    webapp에 파일을 풀어주어야 하는데, 이전에 말했던 2가지의 방식이 있어 webapp의 경로가 두 개가 있다.

    /scouter/wepapp과, /scouter/server/wepapp이다. 이번 실행의 경우는 /scouter/wepapp 폴더를 사용하여 부트하였다.

     

     

     

    extweb 하위에 압축을 푼 paper 파일을 복사한다. index의 경우 이전에도 존재하긴 하나, 덮어써도 상관없다.

     

    이후 webapp 하위의 ./startup.sh를 통해 paper를 실행하고, 서버 주소:6188 domain으로 이동 시 정상적으로 paper가 실행되는 것을 확인할 수 있다. 혹은 curl을 통해서 확인도 가능하다.

     

     

    만약 java를 찾을 수 없다면, 마찬가지로 이전 케이스와 같이 script 내에 export 경로를 추가하거나 환경 변수를 조절할 것.