ELK 스택을 구축하고 EC2 사양 부족으로 결국 AWS 서비스로 가능한 로깅 시스템을 다시 찾았다. 일단 간단하게 pm2 로그를 대시보드로 볼 수 있다고 해서 Fluent-bit과 CloudWatch log 조합으로 로깅 시스템을 다시 구축하기로 했다.


curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
sudo ln -s /opt/fluent-bit/bin/fluent-bit /usr/local/bin/fluent-bit
sudo vim /etc/fluent-bit/fluent-bit.conf 명령어로 편집기를 연다.fluent bit이 어떤 로그를 수집해야 하는지를 지정하는 것
input 플러그인 종류 예시 (name 항목)
| 이름 | 하는 일 | 예시 |
|---|---|---|
tail | 파일을 계속 읽음 | /var/log/myapp.log 같은 로그파일을 매일 체크 |
systemd | 시스템 메시지 읽음 | 컴퓨터 부팅하거나 꺼질 때 메시지 가져옴 |
http | 외부에서 받은 메시지를 수신 | 누군가 인터넷으로 메시지를 보내면 받아줌 |
cpu | CPU 사용량 수집 | 컴퓨터가 얼마나 열심히 일하는지 측정 |
-> pm2 로그를 수집하는 경우 tail이 필요하다.
출력을 어디로 할지 정하는 것
output 플러그인 종류 예시 (name 항목)
| 이름 | 하는 일 | 보내는 곳 |
|---|---|---|
stdout | 그냥 화면에 보여줌 | 터미널에 출력 |
http | 인터넷 주소로 보냄 | 웹서버 API 등 |
elasticsearch | 엘라스틱서치로 보냄 | 로그 검색엔진 |
cloudwatch_logs | AWS CloudWatch로 보냄 | AWS 로그 모니터링 |
file | 파일에 저장함 | 특정 경로의 텍스트파일 |
-> cloudWatch로 보낼 경우 cloudwatch_logs 플러그인이 필요하다.
cloudWatch로 pm2 로그를 보내는 경우 환경설정 파일을 다음과 같이 구성한다.
생략
...
[INPUT]
name tail
path /home/ubuntu/.pm2/logs/[로그파일명].log
tag [식별자].log
[OUTPUT]
name cloudwatch_logs
match [식별자].log
region ap-northeast-2
log_group_name [cloudWatch 로그 그룹에 표시될 이름]
log_stream_name [cloudWatch 로그 스트림으로 표시될 이름]
auto_create_group trueloudWatch 로그 그룹이 없는 경우 자동으로 생성]
fluent-bit -c /etc/fluent-bit/fluent-bit.conf
sudo systemctl start fluent-bit
sudo systemctl enable fluent-bit
모든 프로세스를 끝낸 후 AWS 콘솔에 접속한다. cloudwatch 로그 그룹을 들어가보면 환경 설정 파일에 지정한 log_group_name이 표시되고 그 안에 로그 log_stream_name으로 표시되는 것을 확인할 수 있다.