본문 바로가기

모니터링 도구/Pinpoint

Pinpoint를 EKS에 적용하기

# Pinpoint를 EKS에 적용하기

- 구성도는 아래와 같다.

- 위의 구성도를 간략하게 설명하자면 아래와 같다.

① pod가 생성될때 아래의 옵션값을 가지고 PinpointAgent를 실행한다.

- 사전작업 내역은 아래와 같다. 사전 작업은 EFS에 Pinpoint Agent가 설치 되어 있어야 한다.

- EFS에 Pinpoint를 설치하는 방법은 여러가지 방법이 있는데 내가 사용한 방법은 EFS만 마운트 시킨 pod를 우선 올린 후 pod 내부로 접근한다. pod 내부로 접근을 하면 공유된 폴더 경로에 접근을 할 수 있고, 공유된 폴더의 경로에 Pinpoint Agent 및 기타 실행 파일을 다운로드 받는다. 그리고 해당 경로를 아래의 env: 의 javaagent의 경로로 지정을 해주면 해당 pod가 실행될때 javaagent의 경로에 있는 jar 파일을 물고 올라가는 형태이다.

실행 옵션은 아래와 같다. 버전은 2.2.0버전을 사용 했지만 최신버전이 2.5.0 버전을 사용하는 방법은 동일하다.

- 아래의 env: 옵션을 pod를 실행하는 deployment.yaml 파일에 정의해 주면 된다.

        env:
          - name: JAVA_TOOL_OPTIONS
            value: >-
              -javaagent:/usr/share/pinpoint-server/pinpoint-agent-2.2.0/pinpoint-agent-2.2.0/pinpoint-bootstrap-2.2.0.jar
              -Dpinpoint.config=/usr/share/pinpoint-server/pinpoint-agent-2.2.0/pinpoint-agent-2.2.0/pinpoint-root.config
              -Dpinpoint.applicationName=test-api
              -Dpinpoint.agentName=test-api
              -Dpinpoint.container

② 실행된 pod는 PinpointAgent jar 파일을 함께 물고 올라가고, agent jar 파일을 실행 하면서 Pinpoint Server와 통신을 한다. 정상적으로 통신이 이루어지면 Pinpoint Server에 수집하는 정보를 보내게 된다.

- 아래는 Spring이 실행될때 Pinpoint도 함께 실행되는 로그를 확인한 결과이다.

- 옵션은 아래와 같다.

applicationName: Pinpoint에 연결된 많은 프로젝트들 중, 프로젝트를 구분짓기 위한 ID.
예를들어 스케일아웃하여 여러 EC2로 구성되어 있더라도 같은 프로젝트라면 이 값을 모두 같은 값으로 한다.
agentId: 같은 PINPOINT_APPLICATION_NAME 내에서 각 서버들을 구분하기 위한 ID.
config: 앞서 수정한 config를 명시해서 적용되도록 하는 값.

01-16 08:01:38.336 INFO  PinpointStarter: pinpoint agent [com.navercorp.pinpoint.profiler.DefaultAgent] starting...
01-16 08:01:41.506 INFO  PinpointStarter: pinpoint agent started normally.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.5)

③ 실행된 pod는 Pinpoint Server에게 Agent로 부터 수집한 내용을 전송한다.

- 전송된 내용은 아래와 같다.

④ 유저는 웹으로 제공된 URL 주소로 접속하여 위와 같은 정보를 확인 할 수 있다.