프로메테우스 모니터링 시스템 구축하기 2
이번 단락은 그라파나를 설치하고 리버스 프록시를 사용하여 그라파나 포트(3000)로 접속하지 않고 http 포트 번호인 80포트로 접속하도록 설정함과 동시에 SSL 인증서를 적용하는 내용입니다.
그라파나 설치
# 그라파나 컨피그 경로 및 파일 생성
mkdir -p /grafana/data /grafana/config
touch /grafana/config/grafana.ini
# UID 472 접근 권한 설정
chown -R 472:472 /grafana/data
# 그라파나 컨테이너 실행
docker run --net=host --name=grafana -d \
-v /grafana/config:/etc/grafana -v /grafana/data:/var/lib/grafana grafana/grafana:8.1.2
# 그라파나 설정 파일
vi grafana.ini
...
[server]
protocol=https
https_addr=0.0.0.0
http_port=3000
domain=grafana.speedycdn.net
enforce_domain=false
cert_file=/etc/grafana/grafana.crt
cert_key=/etc/grafana/grafana.key
# SSL 인증서 및 RSA PRIVATE KEY 저장
vi /grafana/config/grafana.crt
... 인증서
vi /grafana/config/grafana.key
... 프라이빗 키
# init 폴더 및 파일 생성
mkdir -p /provisioning/dashboards/dashboards.yaml
mkdir -p /provisioning/datasources/datasources.yaml
mkdir -p /provisioning/notifiers/notifiers.yaml
mkdir -p /provisioning/plugins/plugins.yaml
# 경로 확인
tree /grafana/config/provisioning
├── dashboards
│ └── dashboards.yaml
├── datasources
│ └── datasources.yaml
├── notifiers
│ └── notifiers.yaml
└── plugins
└── plugins.yaml
# 그라파나 컨테이너 재시작
docker restart grafana
Nginx 설치
80
->443
: redirection443
->3000
: port binding
# nginx 설치
sudo apt-get update
sudo apt-get install nginx
# nginx 컨피그 파일 설정
sudo vi /etc/nginx/conf.d/default.conf
...
server {
listen 80;
server_name grafana.speedycdn.net;
# http 요청의 경우 301 응답 코드 반환 / https 리다이렉트
return 301 https://$host:3000$request_uri;
}
server {
listen 443 ssl;
server_name grafana.speedycdn.net;
ssl_certificate /grafana/config/grafana.crt;
ssl_certificate_key /grafana/config/grafana.key;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
location / {
proxy_pass https://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
# nginx 파일 적용
nginx -s reload
# nginx 재시작
# sudo service nginx restart
systemctl restart nginx
# nginx 상태 확인
systemctl status nginx