프로필사진
김핑9
Ping9
Recent Posts
Recent Comments
Link
«   2024/05   »
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 29 30 31
Archives
Today
Total

티스토리 뷰

ELK 스택으로 네이버 검색 API를 사용하여 Elasticserach로 데이터를 수집해보자. (API 호출 -> Elasticsearch에 insert 가 목표)

한국어로 된 레퍼런스가 별로 없어서 아주 귀찮고 힘들었다...

Elasticsearch / Logstash / Kibana 설치 및 사용법은 나중에 추가로 올리든지 하고

기본적으로 이 세가지가 설치되어 있고, localhost로 실행되어 있는 것을 전제로 진행한다.

 

1. Logstash Input/Output plugin 설치

네이버 검색 API를 호출하여 Elasticsearch에 데이터를 넣기 위해서는 제일 먼저 Logstash의 Input/Output plugin을 설치해야한다.

Logstash의 기본적인 구조가 파이프라인을 연결해서 데이터를 가져오는 거라 API - Elasticsearch 파이프라인을 연결해야 하기때문.

Elasticsearch 가이드에 친절하게 영어로 나와있긴 하지만 결론은 Http_poller input plugin / Elasticsearch output plugin 설치가 필요하다.

설치방법은 아주 간단하다. logsatsh-plugin을 이용해 원하는 plugin을 설치하면 된다.

Logstash 설치경로의 bin 폴더(예: C:\logstash-7.4.0\bin)에서 cmd를 실행하여 아래 명령어를 입력하면 끝.

// http_poller input plugin 설치
logstash-plugin install logstash-input-http_poller
// elasticsearch output plugin 설치
logstash-plugin install logstash-output-ealsticsearch

 

실행결과는 아래 캡쳐화면이다. (windows powershell 이라 앞에 .\가 붙었다. 그냥 cmd에선 안써도 됨)

혹시나 다른 input/output plugin이 필요하다면 아래 가이드에서 확인하면 된다.

input plugin 가이드 : https://www.elastic.co/guide/en/logstash/current/input-plugins.html

output plugin 가이드 :  https://www.elastic.co/guide/en/logstash/current/output-plugins.html

 

2. Logstash 파이프라인 연결을 위한 config 파일 작성

Elasticsearch 홈페이지에 영어로 가이드가 되어있고 추가로 블로그를 참고했다.

http_poller 가이드 : https://www.elastic.co/guide/en/logstash/current/plugins-inputs-http_poller.html

참고 블로그 : https://captcha.tistory.com/44

위에서 cmd를 실행한 경로와 동일하게 logstash\bin 폴더로 이동하여 config 파일을 하나 만든다.

// logstash-naver.config 내용
input {
  http_poller {
    urls => {
	    naver => {
            method => get
            url => "https://openapi.naver.com/v1/search/blog.json?query=iphone"
            headers => {
                "X-Naver-Client-Id" => "Client Id 입력"
                "X-Naver-Client-Secret" => "Client Secret 입력"
            }
		}
    }
    request_timeout => 60
    schedule => { cron => "* * * * * UTC " }
    codec => "json"
    metadata_target => "http_poller_metadata"
  }
}

output {
  elasticsearch {
    index => "naver_sample"
  }
}

네이버 검색 API는 Client Id/Secret을 필요로 하기 때문에 headers에 해당 내용을 입력했고

url은 네이버 블로그를 대상으로 'iphone' 키워드로 검색하도록 임의로 넣어주었다. (해당 내용은 네이버 api 가이드 참고)

config 파일 내에 한글이 있으면 compile 에러인지 뭔지 에러가 나는 것 같아서 일단 영어로만 넣어준다. (추후에 더 알아봐야할듯)

 

3. Logstash 실행

이제 실행만 하면 된다.

logstash\bin 경로에서 cmd를 실행하여 아래 명령어를 입력한다.

logsatsh -f logstash-naver.config // 본인이 생성한 config 파일 이름 입력

먼저 테스트를 위해 config파일에서 output을 stdout으로 변경하여 실행해 보았다.

그럼 아래와 같이 데이터를 잘 불러온다.

데이터가 잘 들어오는걸 확인했으니 config 파일에 output을 다시 elasticsearch로 변경하여 실행한다.

그리고 Kibana에서 확인해보면,

똑같이 데이터가 잘 들어간다.

 

데이터를 가공/활용하는건 나중에 추가로 하고 오늘은 네이버 API와 Elasticsearch 연결까지만 진행했다.

연관검색어 찾고 이런것도 해볼 수 있을듯.

반응형
댓글