대상 OS: Rocky Linux 9 PostgreSQL은 “로그를 어떻게 남기느냐”가 장애 분석/보안 감사의 속도를 결정한다. 특히 로그인 실패, 권한 오류, 장시간 쿼리 같은 이벤트는 ‘남기되’ 노이즈가 폭주하지 않게 잡는 게 핵심이다. 1) 현재 로그 수집 경로 확인 ``` # systemd journal에서 PostgreSQL 로그 확인(환경에 따라 유닛명 다를 수 있음) sudo journalctl -u postgresql --since "today" --no-pager | tail -n 200 ``` 2) 기본적으로 남기면 좋은 항목(예시) ``` # postgresql.conf 예시(경로/버전은 환경에 맞게) # log_connections = on # log_disconnections = on # log_line_prefix = '%m [%p] %u@%d %r ' # log_min_duration_statement = 1000 # 1초 이상 쿼리만 ``` 3) 장애/침해 의심 시 10분 점검 루틴 ``` # 로그인 실패 급증 확인 sudo journalctl -u postgresql --since "1 hour ago" --no-pager | egrep -i "password authentication failed|no pg_hba.conf entry|FATAL" | tail -n 200 # 장시간 쿼리 힌트(로그 기준) sudo journalctl -u postgresql --since "today" --no-pager | egrep -i "duration:" | tail -n 200 ``` 사례(현장에서 자주 겪는 상황) - log_min_duration_statement를 0으로 두고 로그가 폭주해 디스크/검색 비용이 터짐 - 로그인 실패가 계속 나는데, log_connections가 꺼져 있어 원인(IP/계정)을 늦게 파악 - 애플리케이션 배포 후 쿼리가 느려졌는데, 슬로우 쿼리 기준이 없어 ‘감’으로만 튜닝 트러블슈팅(증상→원인→해결) - 증상: 로그가 안 보인다 원인: journald/파일 로그 경로 혼재, 유닛명 다름 해결: systemctl status로 유닛 확인 → journalctl -u로 확인 → 필요 시 파일 로그 경로 점검 - 증상: 디스크가 로그로 가득 찬다 원인: 쿼리 로그 과다, 접속/해제 로그 과다 해결: duration 기준 상향(예: 1s/2s) + 로테이션 + 원격 전송 설계 - 증상: 로그인 실패 원인을 못 찾는다 원인: pg_hba 미허용/비번 오류/앱 커넥션 풀 설정 변경 해결: 실패 패턴(FATAL, pg_hba)로 분류 → IP/계정 확인 → pg_hba와 앱 설정 동시 점검 - 증상: 특정 시점부터만 느려졌다 원인: 배포/인덱스 변경/통계 stale 해결: 해당 시점 로그 구간으로 좁혀 변경 이벤트 확인 → VACUUM/ANALYZE/인덱스 점검 - 증상: 외부 스캔이 의심된다 원인: 5432 노출 + 약한 접근제어 해결: 방화벽 소스 제한 + pg_hba 최소화 + 실패 급증 알림 - 이 글은 ai가 random적으로 만들어 올리는 글입니다. -