【未完】初心者がELK使って行動分析するまでの軌跡

#■目的説明
自分のケツを叩きたい。無料で。
ELK使ってみようず

#■当方スペック
Macユーザ。カッコつけて買ってUI分からず後悔してる
ElasticSearch? DomesticViolenceじゃなくて？
サーバ？クライアント？よく分からん
言語はPythonとVBAと日本語と英語は分かる！でも分かると使えるは別だよね！

#■参考文献
『データ分析基盤構築入門』技術評論社

#■材料
ELK
Rescuetime
(時間計測系の無料アプリ有名所、ManictimeはセキュアなんだけどMacだと有料、
 TMEtricはグラフ表記がHP上で見当たらないのでとりあえず↑)

#■成果（予定）
あーKibanaなら環境構築したことありますよ、と言える。
自分の怠惰さを見て、今日からは真面目に頑張ろうと思える
案外隙間時間あることに気づける

##■やること
　↓の入り口と出口を繋げて自分の時間のロスを色んな角度で分析する
　入り口：時間計測ツール『RescueTime』で計測
　出口：Kibanaで分析

##■やるメリット
　時間の無駄を見つけ出して生産効率を上げる

##■やる前に覚悟すること
　登録系作業が3回発生する
　インストール作業がパカスカ発生するので待ちが少々発生する

#■手順
1.JDK(Java動かすやつ)をInstall(所要時間：5分)
 入れてない人はOracle社のページからDL(下記ページ内でJDKへのリンクへ飛ぶ)
　https://www.oracle.com/downloads/

2.ElasticSearch(DB)とKibana(分析ツール)をInstall(所要時間：15分)
 Oracle社の中の人による易しいインストール動画があり癒される。
 https://www.elastic.co/jp/start

　起動まではしなくていいが、してたらターミナルの画面でcontrol+cで停止しておく

3.Fluentd(ログ収集ミドルウェア)を入れる・・(所要時間：15分)
　3-1.td-agentのインストール
　　※PC起動時に自動起動するようになる
　CentOSやAmazon Linux,Ubuntuは↓からcurl -Lでインストールする
　　https://toolbelt.treasuredata.com/
　自分はMacOSなのでこちら。DLしてWクリックでイントール
　　https://td-agent-package-browser.herokuapp.com/2/macosx
　Windowsは
　　https://td-agent-package-browser.herokuapp.com/3/windows

　公式サイト：https://www.fluentd.org/
　
　3-2.起動
  ※MacOS前提。
　Finderでtd-agent.plistを検索。
　ターミナルで下記をコピペ入力。末尾の半角スペースもコピーしてね
　Finderに表示されてるplistのファイルの絵をドラッグドロップでパス入力。Enter

```
sudo launchctl load 
```

　停止は

```
sudo launchctl unload 
```

　3-3.設定
　参考にしたのはここ
　http://tech.blog.surbiton.jp/fluentd_elastichsearch_kibana_2_fluentd_on_mac/

　Finderでコンフィグ（設定）を探し、バックアップのためにコピーする。名前は末尾に日付入れる。
　　・コンフィグファイル名
　　td-agent.conf

　元のファイルをメモエディタとかで開いて編集。

　　・編集内容

```
<source>

```

プラグイン追加
udo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-parser

4.RescueTime(時間計測ツール)　所要時間：10分
　4-1.DownLoad
　DLにはメルアドとパスワードを登録
　https://www.rescuetime.com/get_rescuetime

  Chrome使ってる人は拡張プラグインをブラウザ(Chrome)に入れる
　入れた後、Settingsからデスクトップツールも併用しているチェックボックスをonにする
  RescueTime for Chrome and Chrome OSで調べる

　スマホ用(無料)もあるのでアプリ販売サイトから入れる。

  4-2.Install
　PC,ブラウザ、スマホにインストールしたら、1で登録したメルアドとパスワードを入力して
　セキュリティの許可をしてトラッカーは準備完了。
　これ単品で結構分析できてしまう。
　が、3ヵ月分しかデータは溜められないので経年で調べたい時とか別途分析場所が必要

　4-3.データをアーカイブする
　--手動でデータをアーカイブする場合--
  自分が毎回手動はやだから書かない。
　Rescuetimeのアカウントセッティングの画面右下の方にアーカイブページへのリンクが
　あって、そこでアーカイブボタンを押したらDLできるのは見た。
　が、情報量も少なくて分析しづらい。どうせやるなら骨までやろうず

　--API(アプリと外を繋ぐ秘密の呪文)を使って自動化する場合--
  4-3.APIキーを取得する
　　ここ↓に各自のAPIキーが表示されているはず
　　https://www.rescuetime.com/anapi/manage

　4-4.データを収集するバッチ実行用プログラムを書く
　　Pythonしかできない君なのでPythonで。
　　ElasticSearchは内部でJSON形式でデータを持ってるらしい。
　　FluentdもJSON形式でデータを運ぶらしい。
　　RescueTimeはCSVとJSON形式で出力できるらしい。
　　ならシンプルにJSONとやらで出力するか。
　　Anaconda(なんか便利な環境整備ツール)のJupyter Notebook(コードエディタ)使って書く。

```
restim_apikey = "このダブルクォーテーションの間に自分のAPI-Keyを書く"
url = "https://www.rescuetime.com/anapi/data"
from urllib.request import urlopen, Request
import json
json_response = urllib.request.urlopen(url + "?key=" + restim_apikey + "&perspective=interval&interval=minute&format=json").read()
#時間の範囲指定するなら上の1行をコメントアウトして下の3行を有効にしてください
#time_start = "2019-07-10"
#time_end = "2019-07-11"
#json_response = urllib.request.urlopen(url + "?key=" + restim_apikey + "&perspective=interval&interval=minute&restrict_begin=" + time_start + "&restrict_end=" + time_end + "&format=json").read()
json_obj = str(json_response, 'utf-8')
restim_data = json.loads(json_obj)
for item in restim_data['rows']:
    print(item)
```
ってことで1行ずつ出力するとこまでは作ってみた。
このあとはそれをFluentdで送って、ElasticSearchに流し込めばいいんかな？
あれ？Pythonコード要らなかった？直接？いける？マジか
出来なかったら上のコードで直接データいじって分析してやりたいが・・ELK使いたい。。←しぶとい

5.
--以下未済：時間切れのため。8/1までにやる--
・出力内容をElasticsearchに流し込む。
　日次で天気情報とか日経平均も流し込んで行動分析に使う
・Kibanaで表示
以上

#■思ったこと
人より機械に向かってる時間の多い自分の、
日記が勝手に出来て、そこから行動分析できる感じかな。
これは捗る。