티스토리 뷰
지난 장에서 매우 간단한 파이프라인을 만들어 테스트했다. 허나 현실에선 파이프라인은 간단치 않다. 일반적으로 하나 이상의 입력을 가지며 필터와 출력 또한 한 개 이상이다.
이번 장에서, 파일비트를 이용해 아파치 웹 로그 인풋을 만들고 특정하고 구체적인 필드 포맷을 갖는 로그를 만들기 위해 분석하며(parse) 이를 탄성조사 클러스터에 전달할 것이다. 명령줄에 파이프라인 설정을 정의하기보단 설정 파일을 만들 것이다.
시작하기 전에 학습 자료를 다운받자. 압축은 풀어라.
Logstash에 Filebeat를 통해 로그를 전달하기 위한 설정
파이프라인을 만들기 전에 Filebeat를 설정해서 Logstash로 로그를 보내도록 하자. Filebeat클라이언트는 가볍고 서버 파일로부터 로그를 수집해 Logstash에 로그를 전달하기 위한 도구이다. 신뢰성과 낮은 지연을 목적으로 설계되었다. Beats input 플러그인에 필요한 건 Logstash 인스턴스뿐이다.
※일반적으로는 Filebeat는 Logstash를 구동하는 인스턴스와는 별도로 구분된 머신에서 구동시킨다. 여기서만 학습을 위해 같은 머신에서 구동한다.
Beats input 플러그인은 이제 기본적으로 내장되어 있다. 로그 파일이 있는 머신에 Filebeat를 설치하기 위해 적당한 패키지를 다운받아라. 상세 정보를 더 알기 원한다면 여기를 참고하길.
설치 방법
sudo apt-get update && sudo apt-get install filebeat
설치 끝났으면 설정하면 된다. filebeat.yml 파일을 열어라. Filebeat를 설치한 경로에 있으며 내용을 아래와 같이 바꿔라. paths가 아파치 로그 파일인 logstash-tutorial.log를 명시하도록 주의하며 바꿔라.
filebeat.prospectors: - input_type: log paths: - /path/to/file/logstash-tutorial.logoutput.logstash: hosts: ["localhost:5043"]
파일에 대한 절대 경로 또는 파일들에 대한 경로도 가능하다.
저장해.
설명의 복잡도를 줄이고자 TLS/SSL 설정은 안했다.
이제 로그 파일이 위치한 머신에서 아래 명렁어를 입력하여 Filebeat를 구동하여라.
sudo ./filebeat -e -c filebeat.yml -d "publish"
Filebeat 소켓은 5043포트로 연결을 진행한다. Logstash 인스턴스가 구동되고 있지 않다면 연결 실패 메시지가 출력될 것이다.
Filebeat를 받기 위한 Logstash 설정
다음, 말 그대로 Beats로부터 입력 받기 위한 Logstash 설정을 진행한다.
# The # character at the beginning of a line indicates a comment. Use # comments to describe your configuration. input { } # The filter part of this file is commented out to indicate that it is # optional. # filter { # # } output { }
이 뼈대는 기능이 없다. input이나 output이나 설정된 게 없으니까.
이걸 복사해서 Logstash가 설치된 디렉터리에 있는 first-pipeline.conf 파일 안에 넣어라.
그리고 Beat입력을 받기 위해 first-pipeline.conf 의 input 영역에 아래를 추가한다.
beats { port => "5043" }
잠깐동안, 출력은 표준출력을 이용해보자.
stdout { codec => rubydebug }
다 됐나? first-pipeline.conf 의 내용은 아래와 같아야 한다.
input { beats { port => "5043" } } # The filter part of this file is commented out to indicate that it is # optional. # filter { # # } output { stdout { codec => rubydebug } }
설정에 오류가 없는지 확인하려면 아래 명령을 쓰면 된다.
bin/logstash -f first-pipeline.conf --config.test_and_exit
--config.test_and_exit 옵션을 주면 설정 파일에 에러가 있는 경우 상세로그를 출력할 것이다. 테스트에 문제가 없었다면 구동하라.
bin/logstash -f first-pipeline.conf --config.reload.automatic
--config.reload.automatic 옵션(이거 없었는데)을 주면 설정 파일이 변경되어도 자동 탐지 후 변경 사항을 적용한다.
모든게 잘 돌아간다면 출력되는 내용은 아래처럼 보여야 한다.
{ "@timestamp" => 2016-10-11T20:54:06.733Z, "offset" => 325, "@version" => "1", "beat" => { "hostname" => "My-MacBook-Pro.local", "name" => "My-MacBook-Pro.local" }, "input_type" => "log", "host" => "My-MacBook-Pro.local", "source" => "/path/to/file/logstash-tutorial.log", "message" => "83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] \"GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1\" 200 203023 \"http://semicomplete.com/presentations/logstash-monitorama-2013/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"", "type" => "log", "tags" => [ [0] "beats_input_codec_plain_applied" ] } ...
보이면 잘 돈단거다.
'Logstash' 카테고리의 다른 글
복합줄 처리 & 출력 플러그인 (0) | 2017.08.01 |
---|---|
Logstash로 로그 분석2 (필터) (0) | 2017.08.01 |
기본 개념과 첫 간단 예제 (0) | 2017.08.01 |
설치 (0) | 2017.08.01 |
Logstash Getting started V5.5 (0) | 2017.08.01 |