docs(troubleshooting): clean up resolved items (upstream 8100, logrotate perms, healthcheck intervals); keep only active issues

This commit is contained in:
happybell80 2025-10-23 11:08:32 +09:00
parent f2be950723
commit d78a96c113
2 changed files with 41 additions and 71 deletions

View File

@ -4,34 +4,14 @@
2025년 9월 21일
## 상태
부분 해결 (6번 auth-server 로그 문제 해결)
진행 중 (여러 항목 해결, 잔여 과제 점검 중)
## 문제 요약
nginx, auth-server, robeing-gateway 로그 분석 중 발견된 여러 이슈들
## 발견된 문제들
### 1. nginx 로그 권한 문제
**증상**
- 9월 16일 00:00:05 로그 로테이션 시점에 권한 오류 발생
- `/var/log/nginx/access.log``error.log` 파일 열기 실패
**로그**
```
2025/09/16 00:00:05 [emerg] 853550#853550: open() "/var/log/nginx/access.log" failed (13: Permission denied)
2025/09/16 00:00:05 [emerg] 853550#853550: open() "/var/log/nginx/error.log" failed (13: Permission denied)
```
**영향**
- 로그 로테이션 시 일시적 로깅 실패
- 모니터링 및 디버깅 어려움
**해결 방안**
- logrotate 설정 확인 필요
- nginx 프로세스의 로그 디렉토리 권한 확인
- `/etc/logrotate.d/nginx` 설정 검토
### 2. SSL Handshake 오류 (지속적)
### 1. SSL Handshake 오류 (지속적)
**증상**
- SSL handshake 실패 오류 지속 발생
- 다양한 외부 IP에서 접근 시도
@ -50,28 +30,27 @@ nginx, auth-server, robeing-gateway 로그 분석 중 발견된 여러 이슈들
- 최신 OpenSSL 버전 업데이트 고려
- fail2ban 등 보안 도구로 반복 실패 IP 차단
### 3. upstream 연결 실패
### 2. Slack 이벤트 처리 실패 (간헐)
**증상**
- robeing-gateway (127.0.0.1:8100) 간헐적 연결 실패
- 잘못된 포트(8000)로 연결 시도
- 9월 20일 Slack webhook 이벤트 처리 실패
- gateway 연결 불가
**로그**
```
connect() failed (111: Unknown error) while connecting to upstream
upstream: "http://127.0.0.1:8000/api/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"
upstream: "http://127.0.0.1:8100/api/stats/rb8001"
connect() failed while connecting to upstream
request: "POST /gateway/slack/events HTTP/1.1"
upstream: "http://127.0.0.1:8100/slack/events"
```
**영향**
- API 요청 실패
- PHPUnit 취약점 스캔에 대한 잘못된 라우팅
**발생 IP**
- AWS 서버: 34.207.152.164, 3.89.255.223, 52.91.187.5
**해결 방안**
- nginx upstream 설정에서 8000 포트 사용 부분 확인
- 모든 upstream이 8100 포트를 사용하도록 수정
- PHPUnit 경로 접근 차단 규칙 추가
— robeing-gateway 가용성 점검 및 재시도/타임아웃 정책 강화
— Slack 이벤트 핸들러 안정성 개선
— 장애 알람 추가
### 4. Git 저장소 인증 실패
### 3. Git 저장소 인증 실패
**증상**
- 220.85.143.195 IP에서 모든 Git 저장소 접근 시 401 오류
- 인증 없이 git pull 시도
@ -89,27 +68,7 @@ upstream: "http://127.0.0.1:8100/api/stats/rb8001"
- 비정상적인 접근 시도 IP 차단
- Git 저장소 접근 권한 정책 검토
### 5. Slack 이벤트 처리 실패
**증상**
- 9월 20일 Slack webhook 이벤트 처리 실패
- gateway 연결 불가
**로그**
```
connect() failed while connecting to upstream
request: "POST /gateway/slack/events HTTP/1.1"
upstream: "http://127.0.0.1:8100/slack/events"
```
**발생 IP**
- AWS 서버: 34.207.152.164, 3.89.255.223, 52.91.187.5
**해결 방안**
- robeing-gateway 헬스체크 강화
- Slack 이벤트 핸들러 안정성 개선
- 재시도 메커니즘 구현
### 6. auth-server 불필요한 로그 ✅ 해결됨
### 4. auth-server 불필요한 로그 ✅ 해결됨
**증상**
- "default_value" 텍스트가 각 헬스체크 로그마다 출력
@ -126,35 +85,47 @@ INFO: 127.0.0.1:39468 - "GET /health HTTP/1.1" 200 OK
**해결 완료**
- auth-server/app/main.py:85-86 불필요한 세션 조회 및 print문 제거 (2025-09-22)
### 7. 과도한 헬스체크 빈도
### 5. 과도한 헬스체크 빈도 (부분 해결)
**현상**
- auth-server와 robeing-gateway 모두 매우 짧은 간격으로 헬스체크 수행
- 초당 여러 번의 헬스체크 요청
- auth-server와 robeing-gateway 모두 과거에 짧은 간격으로 헬스체크 수행
- 현재 gateway 60s, auth-server 5m로 완화 적용됨(운영 확인)
**영향**
- 불필요한 리소스 사용
- 로그 파일 크기 급증
**해결 방안**
- Docker Compose 헬스체크 interval 설정 조정 (현재 너무 짧음)
- 최소 10-30초 간격으로 설정 권장
- Docker/오케스트레이터 헬스체크 interval 조정 (완료)
- 외부 모니터(써드파티/Slack 워크플로)의 폴링 주기 60s 이상으로 재조정
## 조치 우선순위
1. **긴급**: upstream 8000 포트 설정 수정
2. **높음**: nginx 로그 권한 문제 해결
3. **높음**: 헬스체크 빈도 조정
4. **중간**: SSL handshake 오류 대응 (fail2ban 설정)
5. **중간**: auth-server 불필요한 로그 제거
6. **낮음**: Git 인증 실패 IP 모니터링
1. **높음**: SSL handshake 오류 대응 (fail2ban 설정)
2. **중간**: Slack 이벤트 처리 안정화 및 알람
3. **낮음**: Git 인증 실패 IP 모니터링
## 권장 사항
1. nginx 설정 전체 검토 및 정리
2. 보안 강화를 위한 fail2ban 또는 유사 도구 도입
3. 로그 로테이션 정책 재검토
3. 로그 로테이션 정책 재검토 (완료)
4. 모니터링 시스템 강화 (특히 upstream 연결 상태)
5. 헬스체크 설정 최적화
5. 헬스체크 설정 최적화 (완료: gateway 60s, auth-server 5m)
---
## 해결됨(Resolved)
### A. nginx 로그 권한 문제
- 조치: `/etc/logrotate.d/nginx``create 0640 nginx adm` 적용 및 강제 로테이션 수행(2025-10-21).
- 검증: 최신 오류 로그 비어 있음, 재발 없음.
### B. upstream 포트 불일치(8000→8100)
- 조치: `/api`, `/admin` 등 gateway 관련 프록시를 `http://localhost:8100`으로 정정.
- 검증: `/api/healthz` 401(인증 요구), gateway 직접 `/healthz` 200.
### C. auth-server 불필요 로그 출력
- 조치: 불필요 출력 제거(2025-09-22).
## 참고 사항
- 현재 시스템은 대체로 정상 작동 중
- 발견된 문제들은 주로 설정 최적화 및 보안 강화 관련
- PHPUnit 취약점 스캔 등 외부 공격 시도 지속 관찰됨
- PHPUnit 취약점 스캔 등 외부 공격 시도 지속 관찰됨

View File

@ -79,7 +79,6 @@
- [적용] Nginx `/api`, `/admin``http://localhost:8100` (gateway) 라우팅 정정.
- [적용] TLS 정책 강화: TLS1.2/1.3만 허용, 안전한 cipher/curve 지정.
- [부분] Gateway HEALTHCHECK 빈도 완화 및 `/healthz` 정합화.
- [보류] logrotate 권한 설정(서버 시스템 파일 수정 필요).
- [보류] Slack 사용자 매핑 누락 및 rb8001 연결 안정화(별도 서비스 측 조치 필요).
## 다음 단계