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 를 실행한 후에 핀포인트 웹으로 확인해보면 내가 띄운 서버가 보일것이다.
'공부 > 프로그래밍' 카테고리의 다른 글
[nginx] permission 에러 (0) | 2019.01.18 |
---|---|
[centos7] sudo 사용 시 PATH에 잡히지 않아 실행이 안되는 문제 (0) | 2019.01.16 |
[centos7] LVM(Logical Volumn Manager) 확장 (0) | 2018.12.26 |
[centos7-docker] 용량이 가득 찼을 경우 처리, docker 경로 변경 (2) | 2018.12.25 |
[Centos7-Mariadb] 데이터베이스 통째로 옮기기 (0) | 2018.12.20 |
댓글