Google Fluentd Agent로 WAS 로그 수집하기
[01] Fluentd을 선택한 이유
현재 가상머신에서 로그는 일별로 수집되지만, 이 데이터를 효과적으로 활용하고 있지 못하였다.
구글 클라우드 플랫폼(GCP)을 사용하고 있음에도 불구하고, GCP의 강력한 로깅 관리 서비스를 제대로 활용하지 못했던 것이다.
시작은 간단하게라는 마음가짐으로 처음으로 생각한 방법은 ‘GCP 로깅을 활용해보자!’였다.
복잡한 설정 없이 간단히 수집 에이전트를 설치하고, 시스템의 health check 로그를 GCP 로깅에 수집해보기로 하였다
[02] Google Fluentd Agent 설치 및 설정
Google Fluentd Agent 설치는 간단하다.
1. curl 명령어를 이용하여 스크립트 다운로드 2. 다운로드 받은 스크립트 실행 3. 시스템 패키지 리스트 업데이트 4. Google 로깅 에이전트 설치 5. fluentd 추가 설정 설치 6. fluentd 서비스 실행 7. fluentd 서비스 상태 확인
curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh
sudo bash add-logging-agent-repo.sh
sudo apt-get update
sudo apt-get install google-fluentd
sudo apt-get install google-fluentd-catch-all-config-structured
sudo service google-fluentd start
sudo service google-fluentd status
Fluentd Agent가 설치되었으니, 로그 수집을 위한 추가 설정이 필요하다.
Fluentd의 설정 파일은 /etc/google-fluentd/google-fluentd.conf에 위치해있다.
/etc/google-fluentd/google-fluentd.conf
헤딩 conf 파일은 열어보면 여러 ‘’ 태그를 볼 수 있다.
<source>
@type prometheus
port 24231
</source>
<source>
@type prometheus_monitor
</source>
이 중 필요한 로그 수집 규칙을 추가해주면 되는데 나는 아래와 같이 설정을 추가하였다.
1. /service/tomcatLog/logback.log 파일에서 로그 수집하기 (path) 2. 수집한 정보는 /var/log/dev_was.pos 경로에 만들기 (pos_file) 3. GCP logging에는 ‘dev_was.log’란 이름으로 보이기 4. 로그를 수집할 때 ‘Workcheck’란 메시지가 포함된 로그만 수집하기
<source>
@type tail
format /^(?<message>.*)$/
path /service/tomcatLog/logback.log
pos_file /var/log/dev_was.pos
tag dev_was.log
<parse>
@type regexp
expression /^(?<message>.*Workcheck.*)$/
</parse>
</source>
- 설정 파일을 수정한 이후에는 꼭 Fluentd Agent를 재실행해주자
sudo service google-fluentd start
그리고 Spring Boot 애플리케이션에서는 ‘Workcheck’ 로그 수집을 위한 컨트롤러를 설정해야한다.
이 컨트롤러는 헬스 체크 요청을 받아 처리하고, 그 결과를 ‘Workcheck’ 로그로 남기도록 만들었다.
[03] 로그 수집 확인
모든 설정이 완료되었고 헬스 체크 요청이 10초 간격으로 보내지도록 설정했으니, GCP 로깅에서 로그가 제대로 수집되는지 확인해보자.
이제 GCP 로깅을 통해 실시간으로 시스템 로그를 확인할 수 있다.
로그는 시스템 운영에 있어 아주 중요한 자산이라고 생각한다. 나도 이제 시작이지만 GCP 로깅 서비스를 활용해보는 것을 강력히 권장한다.