Fluent-bit + CloudWatch 로깅 시스템 구축

Jiumn·2025년 6월 25일

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

Fluent bit

  • 오픈소스 멀티플랫폼 로그 프로세서
    • 로그 프로세서: 시스템, 애플리케이션 또는 서비스에서 발생하는 이벤트를 기록하는 로그 데이터를 수집, 처리, 분석하는 시스템 또는 도구
  • Fluent bit는 C언어로 작성돼 매우 가볍고 메모리와 CPU 사용량이 적다.

Fluent bit Data Pipeline

  • Fluent bit는 intput - parser - filter - buffer - route - output과 같은 데이터 파이프라인을 통해 로그를 전달한다.
  • 각 단계의 옵션은 Fluent bit 설정 파일에서 설정할 수 있다.

Fluent bit 설치

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

flent-bit.conf 환경 설정 파일

  • sudo vim /etc/fluent-bit/fluent-bit.conf 명령어로 편집기를 연다.
  • 디폴트로 service, input, output 옵션 항목이 추가되어 있다. 이 항목들을 변경 및 필요에 따라 앞서 본 Data Pipeline을 추가한다.

input

  • fluent bit이 어떤 로그를 수집해야 하는지를 지정하는 것

  • input 플러그인 종류 예시 (name 항목)

    이름하는 일예시
    tail파일을 계속 읽음/var/log/myapp.log 같은 로그파일을 매일 체크
    systemd시스템 메시지 읽음컴퓨터 부팅하거나 꺼질 때 메시지 가져옴
    http외부에서 받은 메시지를 수신누군가 인터넷으로 메시지를 보내면 받아줌
    cpuCPU 사용량 수집컴퓨터가 얼마나 열심히 일하는지 측정

    -> pm2 로그를 수집하는 경우 tail이 필요하다.

output

  • 출력을 어디로 할지 정하는 것

  • output 플러그인 종류 예시 (name 항목)

    이름하는 일보내는 곳
    stdout그냥 화면에 보여줌터미널에 출력
    http인터넷 주소로 보냄웹서버 API 등
    elasticsearch엘라스틱서치로 보냄로그 검색엔진
    cloudwatch_logsAWS 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
  • 나머지 파이프라인의 경우 선택적으로 추가하면 된다. 우선 초기 세팅을 하고 나중에 차차 추가를 해보자.

AWS IAM 역할 부여

  • fluent bit가 cloudwatch로 로그를 전달할 수 있도록 역할을 부여해준다.
  • CloudWatchLogsFullAccess 역할을 생성한 후, 로그를 보낼 EC2에 해당 역할을 연결한다.

Fluent bit 서비스 시작

sudo systemctl start fluent-bit
sudo systemctl enable fluent-bit

모든 프로세스를 끝낸 후 AWS 콘솔에 접속한다. cloudwatch 로그 그룹을 들어가보면 환경 설정 파일에 지정한 log_group_name이 표시되고 그 안에 로그 log_stream_name으로 표시되는 것을 확인할 수 있다.

profile
Back-End Wep Developer. 꾸준함이 능력이다. Node.js, React.js를 주로 다룹니다.

0개의 댓글