티스토리 뷰
여러 곳에서 데이터를 받아와 여러 곳으로 결과를 보내야 할 때가 있다. 다수의 입력을 받아 이러한 요구를 처리하는데 적합한 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 |