[Elastic Search] 트위터 데이터 실시간으로 수집, 시각화하기
개요
ELK (Elastic Search, Logstash, Kibana)를 이용하여 트위터 데이터들을 실시간으로 수집하고, 동적으로 시각화해본다.
설계
1. Twitter API key 발급
0) Twitter developer 가입
-> Twitter의 트윗를 수집하기 위해서는 Twitter API Key가 필요하다. 이에 다음 포스팅을 참고하여, Twitter API Key를 발급받았다.
1) API Key 신청
위 대시보드에서 API Key, API Key Secret, Access Token, Access Token Secret 총 4개의 인증 값을 발급받아야 한다.
2. Windows에 Elastic Search, Kibana, Logstash 설치
-> Kibana는 버전 7이상부터 많은 시각화 기능을 제공해 주기 때문에, Elastic Search, Kibana, Logstash 모두 7.14버전을 다운받는다.
* 다운로드 링크 첨부
3. logstash conf 파일 생성 - logstash-twitter.conf
settings | Input type | Required |
consumer_key | string | Yes |
consumer_secret | password | Yes |
follows | array | No |
full_tweet | boolean | No |
ignore_retweets | boolean | No |
keywords | array | No |
languages | array | No |
locations | string | No |
oauth_token | string | Yes |
oauth_token_secret | password | Yes |
proxy_address | string | No |
proxy_port | number | No |
rate_limit_reset_in | number | No |
use_proxy | boolean | No |
use_samples | boolean | No |
* 참고 자료
4. DB 연동 .. (X)
-> 처음 생각한 DB 연동은 Elastic Search를 통해 수집한 실시간 트윗 데이터들을 필요한 형태로 전처리하고, 이를 DB에 저장(output)하는 형태를 생각하였는데, Elastic Search는 output으로 DB를 주는 것보다 input으로 DB를 설정해서 DB에서 데이터를 가져오는 것 같다.
5. 참고자료
구현
0. logstash.yml 파일 수정
-> log의 내용을 파싱하는 것은 여러 번의 시행착오를 거칠 수 있으므로 conf 파일의 파이프라인 내용은 초기 작업에서 빈번하게 바뀔 수 있는데, 그때마다 파일 변경을 하고 logstash.bat을 다시 실행하는 방식은 매우 비효율적이다.
따라서, ./config/logstash.yml 설정 파일에서 다음과 같이 설정을 변경하면 3초마다 파이프라인이 지정된 conf 파일이 바뀌면 자동으로 다시 로드되도록 설정할 수 있다.
config.reload.automatic true
config.reload.interval: 3s
1. logstash-twitter.conf 파일 수정
-> logstash에서 트윗 데이터를 실시간으로 수집하기 위해, 다음과 같이 logstash의 conf 파일을 수정해 주어야 한다.
· logstash 수집 demo
"netflix" Keyword에 대해 트윗에서 실시간으로 수집한다. (멈춰있는 것으로 보이지만, Kibana 대시보드에서 /cat/indices 쿼리를 날려보면 인덱스가 생성되었고, 제대로 수집되고 있는 것을 확인할 수 있다)
* 수집중인 logstash 영상 추가
2. 수집한 실시간 트윗 데이터 분석
0) 수집 데이터 정보 조회
1) hashtags 키워드 분석
2) 트위터 메시지 조회
3) 트위터 사용자 언어(language) 분석
4) 트위터 사용자 지역(location) 분석
5) 트위터 사용자 지역, 언어 교차 분석 (langauge, location)
6) Dev Tool에서 Index 조회
* 기본적으로 설정된 트윗들을 사용하여 geo data를 수집하는 방법을 찾지 못해, 다른 방법을 시도해본다.
3. 트위터 실시간 트윗에 대한 geo data 분석
0) method 1: logstash.conf 파일 수정
-> logstash를 통해 실시간 트윗들을 수집할 때 full_tweet = true / false로 설정해도 geodata가 수집되지 않아 conf 파일을 바꿔보았다. 해당 코드를 수행하려면 Kibana에서 Template를 만들어 주어야 하는데, 애를 먹고 있는 상황
1) method 2: re-indexing 수행
-> 다음 포스팅에 해당 과정을 정리해두었다.. 결론은 실패 ㅜㅡㅜ