'2025/12'에 해당되는 글 1건

  1. 08:29:47 AWS rds postgres query기록 남기기

현재 log_statment 조회:
psql에서(아무 db에서) 
> SHOW log_statement;
==> 보통은 이것만 세팅하면 됨. 
 (이거 세팅 하면 log_min_duration_statement값에 상관없이 다 찍힘)


🔹 pgaudit 없이 “누가 어떤 query 실행했는지” 남기는 log_statement 최소 세팅

핵심은 두 가지야:

  1. 쿼리를 로그로 남기고(log_statement / log_min_duration_statement)
  2. 로그에 유저명을 찍게 만드는 것(log_line_prefix)

1) RDS 파라미터 그룹에서 바꿀 것

RDS > Parameter groups에서 해당 Postgres 파라미터 그룹 편집해서 대략 이렇게:

 
-- 필수
log_statement = 'none'          -- 또는 'mod' / 'ddl' / 'all' 중 선택
log_min_duration_statement = 0  -- 또는 N ms (느린 쿼리만)

-- 유저/DB 정보 찍기 위해
log_line_prefix = '%t [%p] %u %d %h '
  • %u : 유저명 (누가)
  • %d : DB명
  • %h : 클라이언트 호스트(IP)
  • %t : 시간
  • %p : 프로세스 ID

“정말 다 보고 싶다”면

log_statement = 'all'
log_min_duration_statement = -1
 

모든 쿼리가 “유저 + 쿼리 내용” 형태로 CloudWatch/로그에 다 찍힘.
(트래픽 많으면 로그 엄청 늘어나는 건 주의!)

“쓰기류만 보고 싶다”면 (실무에서 많이 씀)

 
log_statement = 'mod'           -- INSERT/UPDATE/DELETE만
log_min_duration_statement = -1

→ SELECT는 안 찍고, 데이터 변경 쿼리만 유저와 함께 기록.


🔹 그럼 로그는 어떻게 생기냐?

설정이 잘 되면 RDS 로그/CloudWatch에 이런 식으로 찍혀:

 
2025-12-04 10:23:45 [12345] appuser mydb 10.0.0.12 LOG:  statement: SELECT * FROM orders WHERE id = 1;
2025-12-04 10:24:01 [12346] admin   mydb 10.0.0.13 LOG:  statement: UPDATE users SET ...;

이 한 줄만으로:

  • 누가(appuser/admin)
  • 어느 DB에서(mydb)
  • 어디서(10.0.0.12)
  • 어떤 SQL을(SELECT/UPDATE …)

까지 다 파악 가능.


🔹 pgaudit vs 기본 로그 비교

항목                                기본 로그 (log_statement 등)                          pgaudit
설정 난이도 비교적 간단 조금 더 복잡 (확장 설치/설정)
볼 수 있는 내용 쿼리 텍스트 + 유저 쿼리 + 권한/객체 단위 Audit 정보
용도 “누가 어떤 SQL 날렸냐” 수준 컴플라이언스/보안 감사용(정교한 audit)

지금 말한 것처럼

“누가 어떤 query를 날렸는지만”
알고 싶은 거라면 기본 로그 설정만으로 충분하고, 훨씬 간단해.


🔚 요약

  • 정말 간단하게 하고 싶다 → pgaudit 말고 log_statement + log_line_prefix로 해결
  • 최소 세팅 예:
     
  • RDS 파라미터 그룹 변경 후, 인스턴스 Reboot 한 번 해주면 적용됨.
log_line_prefix = '%t [%p] %u %d %h '
log_statement = 'all'  -- or 'mod'
log_min_duration_statement = -1

원하면

  • “운영 서비스에 최소 영향만 주는 추천값”
  • “CloudWatch에서 해당 유저만 필터링해서 보는 법” 은 추가 필요.

    [변경방법]
    1. 데이터베이스 선택 후 아래->구성 탭에서 확인하고

    2. 데이터베이스 수정을 눌러 아래 그림에서 파라미터 변경하면 됨.

    3. 그 후에 rds instance REBOOT: (1~2분 서비스 중단) 이 필요함.

Posted by yongary
,