# 2. 일상 운영 [목차로 돌아가기](./README.md) --- ## [운영] 전체 서비스 상태 확인 ```bash # 핵심 서비스 상태 한번에 확인 sudo systemctl status nginx php8.4-fpm mysql redis-server supervisor node_exporter # PM2 프로세스 상태 pm2 status # 열린 포트 확인 sudo ss -tlnp ``` ## [CI/CD] 전체 서비스 상태 확인 ```bash # 모든 핵심 서비스 상태 한 번에 확인 sudo systemctl status nginx jenkins gitea mysql prometheus grafana-server node_exporter # 개별 서비스 상태 sudo systemctl status jenkins sudo systemctl status gitea ``` --- ## 시스템 리소스 모니터링 양쪽 서버 공통 명령어: ```bash # 메모리 사용량 free -h # 디스크 사용량 df -h # CPU 및 프로세스 (실시간) htop # 로드 평균 (즉시 확인) uptime # 스왑 사용량 swapon --show # 열린 포트 확인 sudo ss -tlnp # 프로세스별 메모리 사용량 (상위 10개) ps aux --sort=-%mem | head -11 ``` **[CI/CD] 디스크 사용량 상세:** ```bash sudo du -sh /var/lib/jenkins /var/lib/gitea /var/lib/prometheus /var/lib/mysql /var/log 2>/dev/null ``` --- ## 로그 확인 ### [운영] Nginx ```bash # 접근 로그 (실시간) sudo tail -f /var/log/nginx/api.sam.it.kr.access.log sudo tail -f /var/log/nginx/sam.it.kr.access.log sudo tail -f /var/log/nginx/mng.codebridge-x.com.access.log # 에러 로그 (실시간) sudo tail -f /var/log/nginx/api.sam.it.kr.error.log sudo tail -f /var/log/nginx/sam.it.kr.error.log # 최근 에러 50줄 sudo tail -50 /var/log/nginx/api.sam.it.kr.error.log ``` ### [운영] PHP-FPM ```bash sudo tail -f /var/log/php8.4-fpm.log ``` ### [운영] Laravel ```bash # API 로그 sudo tail -f /home/webservice/api/shared/storage/logs/laravel.log # Admin(MNG) 로그 — storage/logs가 shared 심링크가 아니므로 current 경로 사용 sudo tail -f /home/webservice/mng/current/storage/logs/laravel.log # API Stage 로그 sudo tail -f /home/webservice/api-stage/shared/storage/logs/laravel.log # Queue Worker 로그 sudo tail -f /home/webservice/api/shared/storage/logs/queue-worker.log ``` ### [운영] PM2 (Next.js) ```bash # 운영 로그 pm2 logs sam-front --lines 50 # Stage 로그 pm2 logs sam-front-stage --lines 50 # 에러 로그만 pm2 logs sam-front --err --lines 50 ``` ### [운영] Supervisor ```bash sudo supervisorctl status sudo tail -f /home/webservice/api/shared/storage/logs/queue-worker.log ``` ### [운영] MySQL ```bash sudo tail -f /var/log/mysql/slow.log sudo tail -f /var/log/mysql/error.log ``` ### [CI/CD] Jenkins ```bash sudo journalctl -u jenkins -f sudo journalctl -u jenkins --since "1 hour ago" ``` ### [CI/CD] Gitea ```bash sudo journalctl -u gitea -f sudo tail -f /var/lib/gitea/log/gitea.log ``` ### [CI/CD] Prometheus / Grafana ```bash sudo journalctl -u prometheus -f sudo journalctl -u grafana-server -f ``` ### [CI/CD] Nginx / MySQL ```bash sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/mysql/error.log ``` ### 시스템 로그 (공통) ```bash # 시스템 전체 로그 (최근) sudo journalctl -xe --no-pager | tail -50 # 특정 서비스 로그 sudo journalctl -u 서비스명 --since "1 hour ago" ``` --- ## SSL 인증서 확인 (공통) ```bash # 전체 인증서 목록 및 만료일 sudo certbot certificates # 자동 갱신 타이머 상태 sudo systemctl status certbot.timer # 갱신 테스트 (실제 갱신하지 않음) sudo certbot renew --dry-run ``` --- ## [CI/CD] 네트워크 연결 확인 ```bash # 운영서버 연결 ping -c 3 211.117.60.189 ssh sam-prod "echo 'prod OK'" # 개발서버 연결 ping -c 3 114.203.209.83 ssh sam-dev "echo 'dev OK'" # 웹 서비스 응답 확인 curl -sI https://ci.sam.it.kr | head -5 curl -sI https://git.sam.it.kr | head -5 curl -sI https://monitor.sam.it.kr | head -5 ``` --- ## 일일 점검 스크립트 ### [운영] ```bash echo "=== 서비스 ===" && \ for s in nginx php8.4-fpm mysql redis-server supervisor node_exporter; do printf "%-20s %s\n" "$s" "$(systemctl is-active $s)" done && \ echo "=== PM2 ===" && pm2 status && \ echo "=== 메모리 ===" && free -h | grep Mem && \ echo "=== 디스크 ===" && df -h / | tail -1 && \ echo "=== SSL ===" && sudo certbot certificates 2>/dev/null | grep "Expiry Date" ``` ### [CI/CD] ```bash echo "=== 서비스 ===" && \ for s in nginx jenkins gitea mysql prometheus grafana-server node_exporter; do printf "%-20s %s\n" "$s" "$(systemctl is-active $s)" done && \ echo "=== 메모리 ===" && free -h | grep Mem && \ echo "=== 디스크 ===" && df -h / | tail -1 && \ echo "=== SSL ===" && sudo certbot certificates 2>/dev/null | grep "Expiry Date" ```