신비한 개발사전
CW Agent의 로깅 timestamp가 고정 값인 이슈 해결법 본문
서버 애플리케이션에서 찍는 로그를 AWS 콘솔에서 보기 위해 CW Agent를 EC2 인스턴스에 설치했다. CW Agent는 지정한 로그 파일의 내용을 읽어와 아마존 CloudWatch에서 볼 수 있도록 해준다.
공식 문서의 안내에 따라 내 EC2 인스턴스 운영체제에 맞는 CW Agent를 설치하고 돌리니 CloudWatch에 Logback으로 로깅한 기록이 뜨기 시작했다.
근데 이유를 알 수 없는 문제가 발생했다.

💥 CW Agent가 로그를 가져오는 timestamp 칼럼의 값들이 다 똑같이 찍힌다..
처음엔 추적할 로그 파일이 이미 있는 상태에서 CW Agent가 가동하면 기존 로그들을 한꺼번에 읽어올 테니까 같은 시간으로 뜨는 거라고 생각했다.
그런데 이후에 새로 찍히는 로그의 timestamp도 확인해봤는데, 여전히 2025-08-05T06:01:36.000 이었다.
원인과 해결 방법
결국 동료의 도움을 받아 주범을 찾을 수 있었다. CW Agent의 config.json 설정 파일에 명시된 timestamp_format 프로퍼티로 인해 시간 값이 고정되는 것이었다.
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/ubuntu/actions-runner/_work/2025-moitz/2025-moitz/backend/logs/info/application.log",
// ...
"timestamp_format": "%Y-%m-%d %H:%M:%S" // 문제되는 프로퍼티
}
]
}
}
}
}
Config 파일에서 timestamp_format을 제외했더니 아래와 같이 제대로 된 로깅 timestamp가 기록되는 것을 확인했다.

AWS 문서를 찾아보니, timestamp_format 설정을 한 것 자체가 문제가 아니라 timestamp_format에 입력한 포맷과 매칭되는 timestamp 값이 내 로그 메세지에 없어서 임의의 값으로 채워졌던 것으로 보인다.
timestamp_format – Optional. Specifies the timestamp format, using plaintext and special symbols that start with %. If you omit this field, the current time is used. If you use this field, you can use the symbols in the following list as part of the format.
애초에 Optional한 프로퍼티여서 포함시키지 않아도 무방하다. 또한 본 프로퍼티에서 사용하는 포맷팅 양식은 우리가 보편적으로 사용하는 것과 달라서, timestamp_format을 제대로 적용하려면 서버쪽 코드에서도 시간 표현식을 수정해줘야 한다.
만약 내부 정책상 특정 포맷을 반드시 따라야 한다면 일관성을 맞춰 설정하면 되지만, 그게 아니라면 config 파일과 서버 양쪽 다 번거롭게 건드릴 필요는 없을 것 같다.
'Infrastructure' 카테고리의 다른 글
| 로그 파일 삭제범 검거 과정 2편 (0) | 2025.10.09 |
|---|---|
| 로그 파일 삭제범 검거 과정 1편 (0) | 2025.09.28 |
| Nginx로 스팸 요청 걸러내기 (0) | 2025.09.11 |
| 아마존 CloudWatch와 애플리케이션 로그 연동하기 (0) | 2025.08.06 |