본문 바로가기
공부/프로그래밍

[centos7] pinpoint(docker) 서버 구축 및 was(tomcat-docker) 연결

by demonic_ 2019. 1. 15.
반응형


pinpoint 공식 홈페이지 주소

https://docs.ncloud.com/ko/pinpoint/pinpoint-1-2.html


pinpoint 모듈 다운로드 주소

https://github.com/naver/pinpoint/releases


pinpoint-docker 다운로드 주소

https://github.com/naver/pinpoint-docker



pinpoint 를 구축할 떄에는 그것을 수집하고 보여줄 서버와 수집대상이 되는 서버를 등록하는 작업을 나눠서 해야한다. 여기서는 도커를 이용하여 pinpoint 서버를 구축하고, 서버를 추가해보는 작업을 정리했다.




1. 핀포인트 서버 구축


1-1. 다운로드


도커를 이용해 설치할 것이기 떄문에 관련 코드가 있는 github으로 들어간다


- pinpoint-docker github 주소

https://github.com/naver/pinpoint-docker



해당 코드를 다운로드 받는다.


git clone https://github.com/naver/pinpoint-docker.git


도커에는 다음의 프로그램들이 포함되어 있다.


- Pinpoint-Web Server

- Pinpoint-Collector

- Pinpoint-Agent

- Pinpoint-Flink(to support certain feature)

- Pinpoint-Zookeeper

- Pinpoint-Hbase

- Pinpoint-QuickStart(a sample application, 1.8.1+)

- Pinpoint-Mysql(to support certain feature) This may take several minutes to download all necessary images.


위의 프로그램 중 부분적으로 선택해 실행할 수 있는데, 여기서 필요한 것은 3개밖에 되지 않는다. 

그런데 WEB서버의 경우 MySQL과 의존관계로 엮여있는 등 되어있어서, Pinpoint-QuickStart와 Pinpoint-Agent 만 제외시켰다.


Pinpoint-QuickStart 는 말 그대로 빠르게 등록하기 위한 일종의 샘플이고,

Pinpoint-Agent 는 등록할 에이전트(WAS 등)에 설치되어야할 것이기 때문.



제거하는 방법은 최상위경로에 있는 docker-compose.yml 파일에서 두개의 항목을 주석처리하거나 빼면 된다.(모두 다 띄워도 무방)





1-2. 실행


도커를 실행해보자


docker-compose up --build -d


? 실행이 안되는 경우


내 경우 다음의 두가지 에러가 났었는데 docker-runc 와 docker-proxy 였다.

내가 설치한 운영체제는 centos7 였고 yum 을 통해 docker를 설치 했었는데, 네이버가 제공하는 pinpoint-docker 는 docker-ce 기준으로 실행해야 되었다.


docker 가 3가지 종류가 있다. 

docker => Custom Support 

docker ce => Coummunity Edition

docker ee => Enterpirse Edition


다른버전의 도커가 설치되어 있다면 삭제하고 docker ce 버전을 설치하거나 docker를 커스터마이징 하면된다.


yum install docker-ce 



1-3. 방화벽 오픈


pinpoint 서버와 애플리케이션 서버가 같은경우, 또는 docker를 이용할 경우 방화벽이 열리므로 상관없겠지만, 

혹여 네트워크 대역을 달리해서 통신이 안될경우 다음의 방화벽을 등록해야 한다.


> 9994, 9995, 9996


모두 collector 가 사용하는 포트이며 그중에 9995 와 9996 은 udp 통신도 사용한다.

만약 등록하지 않으면 수집되지 않으니 반드시 등록해야 한다.


firewall-cmd --permanent --zone=public --add-port=9994/tcp

firewall-cmd --permanent --zone=public --add-port=9995/tcp

firewall-cmd --permanent --zone=public --add-port=9996/tcp

firewall-cmd --permanent --zone=public --add-port=9995/udp

firewall-cmd --permanent --zone=public --add-port=9996/udp

firewall-cmd --reload



사용하는 포트를 확인하는 방법은 도커 프로세스를 확인해 포워딩 된 포트를 확인하면 된다.


docker-compose ps


핀포인트 웹페이지를 띄워보자

설정을 건드리지 않았다면 기본 포트는 8079 이다.


포트를 변경하고 싶다면 최상위폴더에서 .env 파일을 연 후에 WEB_PAGE_PORT 값을 변경하면 된다.


vi .env


...

WEB_PAGE_PORT=8079

...






2. 핀포인트 클라이언트 설정


현재 기동중인 tomcat은 도커위에 돌고있다. 

그래서 pinpoint와 같이 설정하기 위해서는 컨테이너 안에 pinpoint를 넣어야 한다.


tomcat에 관련된 설정을 Dockerfile 과 docker-compose 파일을 이용했으며

pinpoint 설정을 위해 두개의 파일을 수정하여 설정을 완료했다.


하나씩 따라가보자.



2-1. 다운로드 & 폴더 이동


pinpoint-agent 를 다운로드 받는다.

https://github.com/naver/pinpoint/releases


여기서 다운로드 받아야할 파일은 pinpoiont-agent-[버전].tar.gz 이다.


다운로드 후 압축해제 한 다음 docker-compose 이 위치한  곳과 같은 레벨의 위치에 옮겨 놓는다.


[경로]/docker-compose.yml

[경로]/tomcat/

[경로]/pinpoint/



2-2. tomcat 실행파일 수정.


pinpoint 를 설정하기 위해선 환경설정을 추가해야 하고, 

그것을 catalina.sh 에 등록해놓아야 한다.


우선 tomcat/bin 폴더안에 다음의 파일을 생성한다


vi [경로]/tomcat/bin/pinpoint.env.sh


export VERSION=[다운로드 받은 버전]

export AGENT_PATH=/usr/local/pinpoint

export AGENT_ID=[에이전트 ID]

export APPLICATION_NAME=[어플리케이션 이름]


export CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"

export CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"

export CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"


AGENT_ID 와 APPLICATION_NAME 은 pinpoint 에서 중요하게 작용한다. 

AGENT_ID는 겹치지 말아야 하고, APPLICATION_NAME 은 그룹으로 묶이기 때문이다.


직접 등록해도 되지만 추후 오케스트레이션 구축을 위해서 도커에서 관련 값을 파라미터로 넘겨줄 수 있도록 수정했다.


docker-compose.yml 파일을 열어보자.


...

    build:

      context: .

      args:

      v_agent_id: "MOBILE_DEV_1"

      v_application_name: "MOBILE_DEV"

...


이번에는 Dockerfile 파일을 열어 다음처럼 설정했다.


...

# docker-compose 에 등록한 파라미터를 여기에 변수로 정의한다.

ARG v_agent_id

ARG v_application_name


# 환경변수에 등록한다.

ENV V_AGENT_ID $v_agent_id

ENV V_APPLICATION_NAME $v_application_name

...


위에서 수정한 pinpoint.env.sh 의 몇몇 부분을 변경하자


...

export AGENT_ID=$V_AGENT_ID

export APPLICATION_NAME=$V_APPLICATION_NAME

...


이번에는 catalish.sh 파일을 수정해 작성한 pinpoint.env.sh 를 등록한다


vi [경로]/tomcat/bin/catalina.sh


# 가장 윗쪽에 아래 줄을 추가하자

...

# Pinpoint 설정

source ./pinpoint.env.sh

...


이제 핀포인트가 설치되어 있는 ip를 등록하자.


vi [경로]/pinpoint/pinpoint.conf


# IP 변경은 여기. 기본값은 127.0.0.1 이다

profiler.collector.ip=[변경할 IP]


# collector 포트를 변경해야 한다면 다음의 3가지를 수정하면 된다.

profiler.collector.span.port=9996

profiler.collector.stat.port=9995

profiler.collector.tcp.port=9994


docker-compose.yml 에 설정한 파일과 pinpoint 폴더가 복사되도록 설정한다


vi docker-compose.yml


...

- volumes:

# 핀포인트 폴더

    - [경로]/pinpoint:/usr/local/pinpoint

    # catalina.sh, pinpoint.env.sh 파일 복사

    - [경로]/tomcat/bin/catalina.sh:/usr/local/tomcat/bin/catalina.sh

    - [경로]/tomcat/bin/pinpoint.env.sh:/usr/local/tomcat/bin/pinpoint.env.sh

...



이제 설정한 was 를 실행한 후에 핀포인트 웹으로 확인해보면 내가 띄운 서버가 보일것이다.




반응형

댓글