자신의 트윗 데이터를 Kibana로 시각화하여 당시의 심경을 되돌아 본다

대지각 죄송합니다. 조금 기술적으로 망설이고 말고 마음이 부러져 버렸습니다…

Twitter는 htps : // 라고 해서 r. 코 m / 세친 gs / 요 r_와 r_ 여기에서 자신의 모든 트윗 데이터를 얻을 수 있습니다.
이것을 Kibana로 시각화하고 싶습니다.

데이터 가공



트윗, 이미지, 동영상 등 많은 그리운 데이터를 얻을 수 있습니다.
트윗은 tweet.js 하지만 그래서 본문뿐만 아니라 언제 어느 클라이언트에서 등 다양한 정보를 얻을 수 있습니다.
파일 이름에서 예상했듯이 이것은 JavaScript 코드에서 json이 아닙니다.

난폭합니다만 다음과 같이 json 으로 합니다.
# brew install gnu-sed
gsed -i -e "s/^window.YTD.tweet.part0 =//" tweet.js
jq -c '.[]' tweet.js > tweet_jsonlines.json

이것으로 tweet_jsonlines.json 에 완성되는 것은 JSON Lines 등이라고 불리는 형식으로, 1행에 1개의 json가 쓰여져 있는 파일이 됩니다.

환경 구축



앞에 된장으로 합니다만, 5분만에 가능한 Elastic stack(Elasticsearch, Logstash, Kibana) 환경 구축 를 참조해 주세요.

이번은 /usr/share/logstash/work 에 json lines(1행에 1JSON)를 두고 읽어 보겠습니다.
디폴트라면 port 5000 에서 기다리고 있으므로, docker-elk를 사용하여 과거의 CloudTrail 로그를 빨리 분석해 보았습니다 | Developers.IO 과 같이 하는 편이 환경 구축은 편하네요.
이번과 같은 「대량의 트윗 데이터를 넣고 싶다」와 같은 케이스라고 늦을 것 같다, 라고 생각해 파일로부터 읽도록(듯이) 해 보았습니다.
(나의 트윗은 3만건 정도로 전혀 고집하는 곳은 아닙니다만…)

작업 디렉토리를 Docker와 호스트에서 공유하도록 합니다.
diff --git a/docker-compose.yml b/docker-compose.yml
index a590b5b..491da23 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -40,6 +40,10 @@ services:
         source: ./logstash/pipeline
         target: /usr/share/logstash/pipeline
         read_only: true
+      - type: bind
+        source: ./logstash/work
+        target: /usr/share/logstash/work

파일을 로드하는 설정을 합니다.
Kibana에서는 timestamp 에 datetime 을 넣으면 취급하기 쉽습니다만, Twitter의 created_atSat Oct 26 09:56:24 +0000 2019 의 형식이므로 그대로는 문자열로서 다루어져 버립니다.
date filter 를 사용해 포맷을 지정해, date time 로서 취급하도록(듯이) 하고 있습니다.

logstash/pipeline/logstash.conf
input {
  file {
    codec => "json"
    path => ["/usr/share/logstash/work/*.json"]
    sincedb_path => "/usr/share/logstash/work/since"
    start_position => "beginning"
  }
}

filter {
  date {
    match => [ "created_at", "EEE MMM dd HH:mm:ss Z yyyy" ]
      target => "timestamp"
  }
}

output {
  elasticsearch {
    hosts => "elasticsearch:9200"
      user => "elastic"
      password => "changeme"
      index => "tweet%{+YYYYMMdd}"
  }
  # 読み込まれない!などはデバッグ出力を見ると良い
  # stdout { codec => rubydebug }
}

방금 만든 tweet_jsonlines.jsonworks 아래에 일어나 Docker를 다시 시작합니다.

확인



우선 Elasticsearch에 삽입 확인에서. 아래에서 확인할 수 있습니다.


tweet20191222 의 Docs Count가 트윗 수와 거의 일치했습니다.

키바나



색인 패턴 만들기 .
쓰레기가 남아 있습니다만, tweet* 라고 보았습니다.
Kibana는 복수의 Elasticsearch index를 좋은 느낌으로 정리해 주는군요.
로그 등은 날짜별로 index 를 만들거나 하면 좋을 것 같습니다.

Kibana로 시각화



http://localhost:5601/app/kibana#/discover 를 살펴봅니다.

트윗 수 전환




트윗 수의 전환. 2012년은 지금보다 활발합니다.
내 블로그의 2012년 항목 를 보면, 낚시에 가거나, 공작을 하거나, 프로그램 쓰고 발표하고 있었습니다.

피곤했던 시기




full_text 疲 에서 검색하여 지친 것 같은 데이터를 찾아 보았습니다.
마찬가지로 2012년은 피곤했던 모양.

좋아하는 Twitter 클라이언트





http://localhost:5601/app/kibana#/visualize/ 에서 source (Twitter 클라이언트)를 집계해 봅니다.
왠지 트위터 웹은 잘 되어 있다. Feather도 좋아했고, 지금은 힘들어도 좋아했습니다.

요약



더 이상 내 분석을 해도 흥미롭지 않으므로 이 근처로합시다. 여러분, 독자적인 커트에서 자기 분석해 보는 것은 어떻습니까?
저도 Kibana는 별로 사용한 적이 없고, 탐구입니다만, 이것은 만져 기억하는 계의 툴인 느낌이 듭니다.
강한 사람과 함께 한 번 만져 보면 좋을 것 같다고 생각했습니다.

좋은 웹페이지 즐겨찾기