docs(troubleshooting): clean up resolved items (upstream 8100, logrotate perms, healthcheck intervals); keep only active issues
This commit is contained in:
parent
f2be950723
commit
d78a96c113
@ -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,33 +85,45 @@ 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).
|
||||
|
||||
## 참고 사항
|
||||
- 현재 시스템은 대체로 정상 작동 중
|
||||
|
||||
@ -79,7 +79,6 @@
|
||||
- [적용] Nginx `/api`, `/admin` → `http://localhost:8100` (gateway) 라우팅 정정.
|
||||
- [적용] TLS 정책 강화: TLS1.2/1.3만 허용, 안전한 cipher/curve 지정.
|
||||
- [부분] Gateway HEALTHCHECK 빈도 완화 및 `/healthz` 정합화.
|
||||
- [보류] logrotate 권한 설정(서버 시스템 파일 수정 필요).
|
||||
- [보류] Slack 사용자 매핑 누락 및 rb8001 연결 안정화(별도 서비스 측 조치 필요).
|
||||
|
||||
## 다음 단계
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user