EFK(ELK) Stack

Hyejin Beck·2023년 11월 13일

로그란?

Log 란, 컴퓨터가 수행하는 도중 유의미한 내용을 파일로 남기는 기록을 말합니다.

로그의 내용

로그에는 보통 다음 내용이 들어가야 합니다.

  1. 로그를 남긴 시간
  2. 로그 레벨 (심각성의 정도)
    1. TRACE: 어플리케이션에서 어떤 상황이 일어나는지 상세한 내용을 보고 싶을 때 남기십시오. 라이브러리의 내부 동작을 주로 TRACE로 남기는 경우가 많습니다.
      1. 예) network handshake 내용. service discovery 과정.
    2. DEBUG: 디버깅 용도로 남기는 로그입니다. 어플리케이션의 개발 단계에서 유의미한 정보를 주로 남기십시오.
    3. INFO: 단순 정보를 남기는 용도입니다.
    4. WARN: 시스템의 주요 기능을 제공 못하는 것은 아니지만, 반복해서 발생한다면 원인을 파악하거나 해소해야 하는 로그입니다.
    5. ERROR: 시스템의 주요 기능을 제공 못하게 된 경우입니다. 발생한 경우 빠르게 원인을 파악하거나 해소해야 하는 로그입니다.
    6. FATAL: 시스템이 이용 불가능하게 된 경우입니다.
      1. 예) Memory Crash, Disk Full
  3. 로그 내용
  4. 로그가 발생한 위치
    1. 로그를 남긴 패키지, 클래스의 정보는 필수로 남겨야 합니다.
    2. 로그가 WARN, ERROR라면, 해당 로그가 발생한 코드의 위치(정확한 Line)를 알 수 있다면 문제점을 파악하는 데 도움이 많이 됩니다.

로그를 수집하는 이유

로그가 파일에 남아있다면 문제가 될 때 찾아보면 될텐데, 왜 수집이 필요할까요?

  1. 시스템(HW)에 장애가 나면 로그파일에 다시 접근할 수 없을 수 있습니다.
  2. 사용하는 프로그램이 많아지거나, 인스턴스의 수가 많다면 일일이 들어가서 확인하기 어렵습니다.
  3. 필터링, 그룹, 검색 등을 이용하여 로그를 활용하여 더 신뢰성 있는 시스템을 만들 수 있습니다.

Fluentd로 로그 파싱하고 보내기

Fluentd 설치하기

https://docs.fluentd.org/installation/before-install 해당 매뉴얼을 따라서 시스템 설정을 변경하셔야 합니다. 자신의 값에 따라서 리부팅을 해야 할 수도 있습니다.

sudo apt update
sudo apt install build-essential -y

Ruby gem 설치

sudo apt install rubygems -y
sudo apt install ruby-dev -y
sudo gem install fluentd --no-doc
sudo gem install etc json oj webrick
  • ruby version 때문에 실패할 수도 있습니다. 실패하면 안내대로 추가 설치를 진행하고 다시 시도합니다.
gem install yajl-ruby -v 1.4.1
ls 

확인해줍니다.

cd working/ 
ls

~/working 상태에서 진행해줍니다.

fluentd directory 세팅

fluentd --setup ./fluent
cd fluent/

~/working/fluent 상태에서 해줍니다.

ls
fluentd -c ./fluent.conf -vv &

그러고 enter 눌러줘야 합니다.

fluentd 테스트

echo '{"json":"message"}' | fluent-cat debug.test

Process종료

pkill -f fluentd

enter 눌러주면 종료 됩니다.

profile
데이터기반 스토리텔링을 통해 인사이트를 얻습니다.

0개의 댓글