티스토리 뷰

Logstash

복합줄 처리 & 출력 플러그인

효자발 2017. 8. 1. 14:08

 

 여러 곳에서 데이터를 받아와 여러 곳으로 결과를 보내야 할 때가 있다. 다수의 입력을 받아 이러한 요구를 처리하는데 적합한 Logstash 파이프라인이 있다.

트위터 피드와 파일피트 클라이언트에서 입력을 받아 엘라스틱서치 클러스터로 파일을 직접 전송하는 파이프라인을 만들어 볼 거란다.

트위터 피드 읽기

 

 twitter 입력 플러그인만 있으면 된다. 설정을 하기 위해 몇가지 정보를 입력한다.

  • consumer key : 트위터 앱을 유일하게 식별할 키
  • consumer secret : 트위터 앱 비밀번호
  • keywords : 피드를  찾기 위한 하나 이상의 키워드
  • oauth token : 트위터 앱 계정을 식별하기 위한 키
  • oauth token secret : 트위터 앱 계정에 대한 패스워드

https://dev.twitter.com/apps를 방문하면 고객 키와 비밀 키, 접근 키와 비밀 키를 어떻게 얻을 수 있는지 알 수 있다. 잘 모르면 먼저 해당 문서를 본 뒤, 작성하라.

전에 했던 것처럼 설정 파일을 만들어야 한다. 이번엔 second-pipeline.conf 라 명명하자. 만든 설정 파일에 input 영역에다 밑의 내용을 추가한다.

    twitter {
        consumer_key => "enter_your_consumer_key_here"
        consumer_secret => "enter_your_secret_here"
        keywords => ["cloud"]
        oauth_token => "enter_your_access_token_here"
        oauth_token_secret => "enter_your_access_token_secret_here"
    }

Logstash로 로그를 보내는 FileBeat 설정하기

  파일 비트를 설치한 뒤, filebeat.yml을 설정한다. 해당 파일은 Filebeat 설치 경로에 있으며 찾았으면 내용을 아래와 같이 바꾼다. 단, paths는 당신에게 알맞은 형태로 변경해야 한다.

filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/*.log 
  fields:
    type: syslog 
output.logstash:
  hosts: ["localhost:5043"]

Filebeat가 처리할 파일/파일들에 대한 절대경로

해당 event에 대한 syslog 출력값을 갖는 type 필드 추가

저장한다.

 이제 Logstash 설정 파일인 second-pipeline.conf 에다가 다음 입력 플러그인을 추가한다.

    beats {
        port => "5043"
    }

Logstash 데이터를 File로 쓰기

 file 출력 플러그인으로 수신한 데이터를 곧장 파일로 출력할 수 있다. 아래의 출력 플러그인을 추가하자.

    file {
        path => "/path/to/target/file"
    }

다수의 엘라스틱서치 노드에 데이터 보내기

  아래와 같이 출력 플러그인을 추가한다.

output {
    elasticsearch {
        hosts => ["IP Address 1:port1", "IP Address 2:port2", "IP Address 3"]
    }
}

비-마스터(non-master) 노드의 아이피를 사용한다.

테스트

이 시점에서 second-pipleline.conf 파일은 아래와 같이 작성됬을 터.

input {
    twitter {
        consumer_key => "enter_your_consumer_key_here"
        consumer_secret => "enter_your_secret_here"
        keywords => ["cloud"]
        oauth_token => "enter_your_access_token_here"
        oauth_token_secret => "enter_your_access_token_secret_here"
    }
    beats {
        port => "5043"
    }
}
output {
    elasticsearch {
        hosts => ["IP Address 1:port1", "IP Address 2:port2", "IP Address 3"]
    }
    file {
        path => "/path/to/target/file"
    }
}

설정된 내용인 즉슨, 트위터 피드에서 데이터를 읽어들이고, 파일비트에서도 데이터를 읽어들인다. 이 정보를 엘라스틱서치 클러스터에 보내고 파일도 만들어낸다.

가져올 로그 데이터가 있는 머신에서 Filebeat를 먼저 구동한다.

sudo ./filebeat -e -c filebeat.yml -d "publish"

 구동되면 5043 포트에 연결을 시도할 것이다. Logstash 가 켜져 있지 않으면 실패 메시지가 뜰 것이니 두려워 말라.

Logstash의 설정이 타당한지 검증하려면 아래의 명령을 수행한다.

bin/logstash -f second-pipeline.conf --config.test_and_exit

  --config.test_and_exit(이거 없었는데) 옵션을 사용하면 설정 파일을 분석해서 에러가 있는 경우 보고한다. 무사히 타당성을 검증받았다면 Logstash를 실행시켜라.

bin/logstash -f second-pipeline.conf

grep 유틸리티를 사용하여 설정한 파일의 경로를 찾는다.

grep syslog /path/to/target/file

엘라스틱서치 질의문을 구동한다.  

curl -XGET 'localhost:9200/logstash-$DATE/_search?pretty&q=fields.type:syslog'
 

단, $DATE 부분을 현재 날짜를 YYYY.MM.DD 포맷으로 치환하여 입력하라.

트위터 피드의 데이터를 보기 위해 아래 질의를 수항한다.

curl -XGET 'http://localhost:9200/logstash-$DATE/_search?pretty&q=client:iphone'

다시, $DATE 부분을 현재 날짜를 YYYY.MM.DD 포맷으로 치환하여 입력하라.

 

이상은 튜토리얼의 일종이다. 본 위키에 명시된 프로젝트에서는 사용되지 않을 내용이지만, 흐름과 문맥을 파악하기 위한 용도로 서술하였다.

'Logstash' 카테고리의 다른 글

Logstash로 로그 분석2 (필터)  (0) 2017.08.01
Logstash로 로그 분석  (0) 2017.08.01
기본 개념과 첫 간단 예제  (0) 2017.08.01
설치  (0) 2017.08.01
Logstash Getting started V5.5  (0) 2017.08.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함