반응형
1. 도입 및 배경
- 서버 운영의 기본은 안정성이며, 특히 CPU, Memory, Disk 등의 리소스 사용량을 실시간으로 모니터링하는 것이 중요함.
- Prometheus는 시계열 데이터베이스로 메트릭을 수집하고 저장하며, Grafana는 이를 멋진 대시보드로 시각화하는 강력한 모니터링 도구임.
2. Prometheus & Grafana 작동 구조도 (인포그래픽)

3. 실전 구축 로그 (Implementation Log)
이전에 정리한 [Docker 필수 명령어 및 컨테이너 관리] 포스팅을 참고하여 컨테이너를 운용함.
**■ Step 1: Nginx 컨테이너 사전 준비 (HTTP 80) ** 최초 인증서 발급을 위해서는 Let's Encrypt 서버가 내 Nginx 서버의 80포트에 접속할 수 있어야 함.
YAML
# Prometheus & Grafana 컨테이너 예시 (또는 docker run)
version: '3.8'
services:
# 1. 웹 서버 (Nginx)
proxy:
image: nginx:latest
container_name: nginx_service
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./certbot/conf:/etc/letsencrypt
restart: always
# 2. 자동화 에이전트 (Python)
blogger-agent:
build: ./agent_code
container_name: blogger_bot
env_file: .env # API 키 등 보안 데이터 격리
depends_on:
- proxy
restart: on-failure
■ Step 2: Certbot 컨테이너 활용 인증서 발급 위 인포그래픽 속 'Left Zone'의 docker run certbot/certbot ... 명령어 부분.
Bash
docker run -it --rm \
-v ./certbot/conf:/etc/letsencrypt \
-v ./certbot/www:/var/www/certbot \
certbot/certbot certonly --webroot -w /var/www/certbot -d suminstory.net
[메모] suminstory.net은 사용자님의 도메인으로 대체해서 사용할 것. 이 과정에서 Let's Encrypt 서버가 내 80포트에 ACME Challenge를 수행함.
■ Step 3: Nginx SSL 설정 및 HTTPS 리다이렉트 인포그래픽 속 'Center' 및 'Right Zone' (HTTP --> HTTPS REDIRECT) 부분.
Bash
# nginx.conf 수정
server {
listen 80;
server_name suminstory.net;
return 301 https://$host$request_uri; # HTTP를 HTTPS로 리다이렉트
}
server {
listen 443 ssl; # 보안 포트
server_name suminstory.net;
ssl_certificate /etc/letsencrypt/live/suminstory.net/fullchain.pem; # 인증서
ssl_certificate_key /etc/letsencrypt/live/suminstory.net/privkey.pem; # 키
}
4. 자동 갱신 (Renewal)
Let's Encrypt 인증서는 만료 기간이 90일이므로 자동으로 갱신해 줘야 함. 인포그래픽 속 'Bottom' (CRONTAB RENEWAL) 부분.
Bash
# 리눅스 Crontab에 등록 (매월 1일 새벽 2시)
0 2 1 * * docker run -it --rm -v ./certbot/conf:/etc/letsencrypt -v ./certbot/www:/var/www/certbot certbot/certbot renew && docker restart nginx_proxy
5. 트러블슈팅 및 메모 (Troubleshooting)
Q1. certbot 발급 중 "Connection refused" 에러
- 원인: Let's Encrypt 서버가 내 Nginx의 80포트에 접속 못 함.
- 해결: 방화벽(UFW)에서 80포트가 열려 있는지 확인하고, **[SSH 포트 변경 기록]**에서 다뤘던 netstat -plnt로 80포트 리스닝 상태를 체크할 것.
Q2. 브라우저에서 "안전하지 않은 사이트" 경고
- 인증서 파일 경로나 파일 자체에 문제가 있는 것임. 인포그래픽 속 shield 아이콘이 깨진 상태. docker restart nginx_proxy로 재시작 후 docker logs로 Nginx 에러를 확인할 것.
6. 관련 기록 (Cross-References)
- [Ubuntu Server - Docker 필수 명령어 및 컨테이너 관리]: Docker 명령어 복습용.
- [Windows Server 2022 MSSQL Express 설치]: 나중에 이 MSSQL 포트(1433)도 Nginx 리버스 프록시 뒤에 숨길 때 참고.
반응형
'Server Story....' 카테고리의 다른 글
| 리눅스 서버 용량 확장: NFS 연결과 /etc/fstab 자동 마운트 완벽 가이드 (0) | 2026.04.01 |
|---|---|
| 리눅스 서버의 숨은 해결사: Logrotate로 디스크 풀(Full) 완벽 방지하기 (0) | 2026.04.01 |
| 리눅스 보안 심화: Fail2Ban으로 무차별 대입 공격(Brute Force) 차단하기 (0) | 2026.04.01 |
| Docker-Compose: 복잡한 서버 설정을 코드 한 줄로 관리하기 (0) | 2026.04.01 |
| Ubuntu Server - Nginx 컨테이너 HTTPS(SSL) 적용 및 Let's Encrypt 자동 갱신 (0) | 2026.03.31 |