핀포인트는 정말 좋은 툴이다. 그런데 로그를 보면 쿼리가 어떻게 돌았는지, 서버단에서 프로세스가 어떤 순서로 진행되었는지 모두 보여준다. 그래서 외부에 노출하기가 굉장히 꺼려진다. 그래서 nginx를 통해서만 접속이 가능하게끔 하였고, IP를 통제하였다. 다만 몇가지 변수가 있다.
1) nginx 도 도커를 이용하고 싶었지만, 그럴경우 localhost:[port] 로 접근할 수 없다. 결국 하나마나한 상황.
2) nginx 와 pinpoint 를 하나로 엮는 도커이미지를 만드는 것도 괜찮을거라 생각했지만 그렇게까지 할 시간적 여유가 없어서 가상서버에 설치하는 것으로 마무리했다.
3) 이렇게 구축할 경우, Realtime Active Thread Chart 가 안나오니 구축에 참조.
관련포스팅:
[pinpoint-docker] Realtime Active Thread Chart 안나오는 문제
http://lemontia.tistory.com/809
만약 핀포인트를 설치하지 않았다면 아래 포스팅 참조.
- [centos7] pinpoint(docker) 서버 구축 및 was(tomcat-docker) 연결
https://blog.naver.com/varkiry05/221441388036
1. pinpoint-docker 설정 변경
별다른 설정이 없다면 port 가 외부노출 된다.
docker-compose 파일을 수정해서 localhost 로만 WEB 포트에 접근이 가능하도록 수정한다.
기본포트인 8079 로 띄운다.(root 폴더의 .env 에 8079로 설정되어 있다. 변경하고 싶으면 직접 입력해 바꿔도 상관없다.)
vi docker-compose.yml
...
pinpoint-web:
...
ports:
- "9997:9997"
- "127.0.0.1:${WEB_PAGE_PORT:-8080}:8080"
# 기존 0.0.0.0 오픈을 막고 위의 것으로 대체한다.
# - "${WEB_PAGE_PORT:-8080}:8080"
...
...
pinpoint-docker 를 새로 띄운다.
docker-compose down
docker-compose up --build -d
2. nginx 설치 및 포워딩
yum 을 이용해 설치한다.
yum install nginx -y
설정파일을 수정한다.
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
# pinpoint 연결
upstream tomcat-list {
server localhost:8079;
}
server {
# nginx 가 80포트 감시
listen 80;
server_name localhost;
# 특정 IP만 허용, 그외 모두 차단
allow [접속을 허용할 IP 등록];
deny all;
# 80 포트로 들어오는 모든 요청을 'tomcat-list' 로 보냄
location / {
proxy_pass http://tomcat-list;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
80 포트 방화벽을 해제한다.
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload
nginx 를 실행한다.
systemctl start nginx
그럼 이제 정상적으로 나오는 것을 확인할 수 있다.
다만 위에서 언급한것처럼 Realtime Active Thread Chart 는 Closed connection 이 뜬다.
'공부 > 프로그래밍' 카테고리의 다른 글
[nginx] rewrite 했을때 405 에러(POST 가 GET 으로 요청되는 경우) (0) | 2019.01.24 |
---|---|
[AWS] ssh 접속이 안될 경우(timeout) (5) | 2019.01.22 |
[pinpoint-docker] Realtime Active Thread Chart 안나오는 문제 (0) | 2019.01.19 |
[nginx] permission 에러 (0) | 2019.01.18 |
[centos7] sudo 사용 시 PATH에 잡히지 않아 실행이 안되는 문제 (0) | 2019.01.16 |
댓글