SplunkにTwitterのデータをぶちこむ。

# はじめに #
今日はSplunk用のサーバを作って、そこにTwitter APIから取得したストリームデータをぶち込んでいきたいと思います。

# Splunkサーバの用意 #
## スペック ##
Splunkサーバとして動作するマシンの要件は、公式の[スペックシート](http://docs.splunk.com/Documentation/Splunk/6.1.1/Installation/SystemRequirements)を参照すると

|Platform|Recommended hardware capacity/configuration|Minimum supported hardware capacity|
|:-------|:------------------------------------------|:----------------------------------|
|Non-Windows platforms|2x six-core, 2+ GHz CPU, 12 GB RAM, Redundant Array of Independent Disks (RAID) 0 or 1+0, with a 64 bit OS installed.|1x1.4 GHz CPU, 1 GB RAM|
|Windows platforms|2x six-core, 2+ GHz CPU, 12 GB RAM, RAID 0 or 1+0, with a 64 bit OS installed.|Pentium 4 or equivalent at 2 GHz, 2 GB RAM|

ということが書いてあります。今回は例によってCentOSを使っていくので、最小要件は`1x1.4 GHz CPU, 1 GB RAM`あたりですね。
というわけで仮想マシンのスペックとしては

- CentOS 6.5, 2core-CPU, 4GB memory, 500GB HDD, 1 NIC(nat-mode)

くらいにします。
Splunkではデータ蓄積も行うのでHDDを少し多めの500GBにしました。あと、NICは普段ブリッジにしてるんですがNATにしてみました。不都合があればそのときに再構築します。

## Splunkのインストール ##
では素のCentOSにSplunkをインストールしていきたいと思います。

```bash
yum install splunk-6.1.1-207789-linux-2.6-x86_64.rpm
```

基本的にこれで終わりです。rpmパッケージは事前にダウンロードして適当に仮想マシンへ転送しておきます。
Splunkのインストールができたら早速起動なんですが、Splunkの起動停止などはコマンドから実行します。

```bash
splunk start
splunk status
splunk stop
```

ただ、デフォルトだとこのsplunkコマンドのパスが通ってないので、.bashrcあたりにパス設定を書いておく必要があります。

```bash:.bashrc
export SPLUNK_HOME=/opt/splunk

PATH=$PATH:$HOME/bin:$SPLUNK_HOME/bin

export PATH
```

こんな感じ。これから分かるようにSplunk関係のファイルはこのSPLUNK_HOME以下に格納されるのでどんなのが並んでるか見てみてください。収集したデータもデフォルトではこの下に溜まっていきます。
ちなみに特に設定を変えなければこのディレクトリ以下を削除すればアンインストールできます。
さて、追記したらsourceでパスを通しましょう。そうするとSplunk関係のコマンドが見えるようになるはずです。

```bash
splunk start [--accept-license]
```

初回起動時にはライセンス同意事項の確認がずらりと出ます。最後に[y/N]で聞かれますが、問答無用で同意する場合は起動時に上の`--accept-license`オプションを付けてstartします。

また、Splunkはデフォルト設定ではOS起動時に立ち上がらないので、必要に応じてchkconfigあたりをいじるか`splunk enable boot-start`を実行しておきましょう。

ここまでで大体Splunkサーバの用意が終了です。iptablesとか場合によってはいじらないといけないかもしれませんが、とりあえず考えないことにします。

# Splunk Web UIにアクセス #
それではインストールしたばかりのSplunkに早速アクセスしてみましょう。
Splunk Web UIはサーバの8000番ポートで動いているので`http://<サーバIP>:8000`でアクセスすることができます。

* 別のクライアントマシンからアクセスしようとしたら何故か接続できませんでした。とりあえずteratermでSSH転送しときました。あとで調査します。 
    
【追記】`iptables -F`でセキュリティゆるくしたら見れるようになりました。CentOSはデフォルトではSSHしか通さないんですね。

![WS000009.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/38eb018c-2c83-36c1-c087-387d0fab7af8.jpeg)

デフォルトではadmin,changemeが管理者アカウントになっているのでそれでログインします。
ログイン後にパスワードを変更させられるので適当に変更しましょう。

![WS000010.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/2b97fc24-18f8-6e08-4ed6-b0ca356a40ac.jpeg)

これでめでたくSplunk Web UIにログインすることができました。

# Twitterデータの投入 #
では次はTwitterデータの投入を行っていきます。Twitterということで専用のAppが公開されているのでそれを使います。
ホーム画面下部の`他のAppを検索`ボタンをクリック。

すると色々なAppが見えると思うので、素直に画面右上の検索ボックスからTwitterで検索しましょう。
多分1件[App for Twitter Data](https://apps.splunk.com/app/1162/)というのが見つかると思うのでそれをインストールしましょう。ここで聞かれるアカウントは最初のrpm入手に使ったSplunk.com側のアカウントです。

インストール後、再起動したらSplunk Web UIのホーム画面にTwitterのAppが作成されているはずです。
あとはセットアップ画面から **Twitter API** のトークンたちを入力してやれば...
(Twitter APIの設定についてはこの後で説明します)

![WS000011.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/7bb64dab-941f-6fad-f7c0-3eb49744d6bf.jpeg)

この通りTwitterに関するデータがずらりと出てきます。

ただ、ここのデータはどうやらサンプルデータのようなので次回以降で自分のTLにする方法を探します。

# Twitter APIの設定 #
Twitterは外部にAPIを公開しており、そのAPIからTwitterデータの入手やAPI経由の投稿などが可能です。

Twitter APIの設定は[Developers](https://dev.twitter.com/)から行うことができます。
こちらから手持ちのアカウントでログインし、右上にある自分のアイコンから`My Applications` → `Create New App`ボタンで新しいAPIを作成することができます。

![WS000012.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/6f7b2018-cbcc-8fee-76b4-68d2646b578b.jpeg)

API名、API説明、使用するWebサイトURLが必須になっているのでそこを入力しましょう。
WebサイトURLは今回の例でいくと存在しないので適当でOKです。存在しなくても構いません。
APIが作成できたらAPIの管理画面に入って、API Keysタブに移動してください。

![WS000013.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/bd39c8ac-8490-d303-e592-0455f810951c.jpeg)

最初は上のApplication Settingsしか見えてないと思いますが、最初は赤で囲んだあたりに`Create my access token`というボタンがあるのでaccess tokenを生成してください。
少し時間がかかりますが、30秒くらいでaccess tokenが発行されると思います。右上の青で囲んだ`Test OAuth`ボタンで遷移した先にずらっとキーが並んでいなければaccess tokenが発行されていないのでもう少し待つか再作成をしてみてください。

# 他のAPIへの応用 #
今回はTwitter APIからデータを取得していますが、結局はTwitter用のSplunk Appを使っているので「 **じゃあ他のAPIからはどうデータ取るの？** 」って話になりますが、一般のAPIに関しては[REST API Modular Input](http://apps.splunk.com/app/1546/)を使うといいようです。
こちらについてはまた別の機会に試したいと思います。

→ [次回 : SplunkにTwitterのデータをぶちこむ(自分のタイムライン)。](http://qiita.com/t_nakayama0714/items/2ac1ac4c1c58270b96f7)

# 参考 #
参考にさせていただいたページです。

- [米麹の検証日記](http://ricemalt.blog98.fc2.com/blog-category-1.html)

    Splunkについて色々と試していらっしゃる方です。今回の内容ではその2までが含まれます。

- [How to Stream Twitter into Splunk in 10 Simple Steps](http://discoveredintelligence.ca/stream-twitter-splunk-10-simple-steps/)

    今回はTwitter Appを使ってデータを取得していますが、こちらでREST API Modular Inputを使ったデータ取得が紹介されています。