Amazon Elasticsearch ServiceとFluentdで遊ぶ

記事タイトルとURLをコピーする

カメラマン(ryの竹永です。

秋になり、気温的にも湿度的にも良い具合に過ごしやすいがため良い感じに眠い日が続いています。

睡眠時間を稼ぐためにAmazon Elasticsearch Service(Amazon ES)を使って、Elasticsearchサーバーづくりをサボってみました。

前回のおさらい

ElasticsearchとS3にApacheのログをつっこむ、Fluentd環境をつくりました。

良くも悪くもベタな構成ですが、ElasticsearchがEC2上で動いているのが気に喰わないので、Amazon ESで置き換えます。

とりあえずは立ち上げる

普通に立ち上げようと思ったら、AWS公式ブログを見れば一発です。

とはいえ、ここで説明しないと記事の長さがあまりにも短くなりそうなので、立ち上げまでの道のりを画像を交えて記録しておきます。

いつもどおりManagement Consoleに行って、Get started的なボタンを押しておきます。
トップ画面


「名前をつけろ」と言われたので適当にいれます。Endpointの一部になるので、アレな名前は避けたほうが良さそうです。
名前入力


次に進むとノード設定をいじれます。カメラレンズのせいでお財布が寒いので、最低スペックを指定しておきます。
Enable dedicated master と Enable zone awareness はノードをいっぱい使う必要がでてくるので無視します。
ノード設定


ストレージ設定も最低スペックにします。Magneticもたまにはいいものです。
ストレージ設定


自動スナップショットの設定はベタに15:00 UTC(JSTだと0時)にしましたが、お好みでいじくってください。
詳細設定は見なかったことにして次に行きます。
スナップショット設定


次に行くとアクセス制御の設定ができます。
テンプレートが便利なので基本的にはそれを使えばなんとかなりそうです。
アクセスポリシー設定


設定が終わって次に行くと、いつもどおりの確認画面が出てきますので、斜め読みしつつConfirm and createしました。
レビュー画面


作るのに10分くらいかかるようなので、この間にTL監視業務でねこ画像の収集をして心を癒やします。
作成中


心の中でねこをもふもふし終わる頃には出来上がっていました。プラグインのインストールの手間もなく、クラスタ監視が出来て、Kibanaが使えるので良い感じです。
できた


前回の記事の裏側で行われていた僕の頑張りはどこへいってしまったのか。

Fluentdでデータを投げ込む

ElasticsearchもできたのでFluentdの設定をします。

前回 td-agent.conf に書いたElasticsearch関連の設定は下記のようなものでした。

  <store>
    type elasticsearch
    host 172.31.6.111
    port 9200
    type_name access_log
    logstash_format true
    logstash_prefix test-apache-access
    flush_interval 10
  </store>

host と port の行を消して下記のように hosts を追加します。

  <store>
    type elasticsearch
    hosts https://search-hogera-xxxxxxxxdummyxxxxxxxxx.ap-northeast-1.es.amazonaws.com
    type_name access_log
    logstash_format true
    logstash_prefix test-apache-access
    flush_interval 10
  </store>

あとは下記コマンドのように設定のリロードを行えばAmazon ESにデータが突っ込まれます。

$ sudo service td-agent reload

さらっとEndpointをコピペしていますが、何もしなくてもHTTPSで通信できます。
自分でESサーバーを立てた時は証明書すらも作りたくありませんでしたが、これは楽ちんです。

Kibanaをつかう

さっそく、Amazon ESで用意されているKibana4を使ってみます。

クラスタ詳細画面にあるKibanaへのリンクをクリックするだけです。
Endpointの後ろに /_plugin/kibana/ と追加してブラウザで開いても大丈夫です。

Kibanaを開いたら初期設定を行う必要があります。
Kibana4 Index


Index name or pattern Kibanaで扱うIndex名を指定します。
今回の記事で作ったFluentdには test-apache-access をプレフィックに指定してあるので、「test-apache-access-*」を指定すればFluentdによって挿入されたデータ全てを扱うことができます。
Time-field name 時間列を指定します。logstash-formatで挿入した場合は「@timestamp」を指定すればOKです。

あとは思う存分データを可視化しましょう。Elasticsearch側の設定を弄っていないので不便な所がちょこちょこ出てくるかもしれませんが、気にしないでおきます。
Kibana4 dashboard


Kibana3も入ってる

Amazon ESには地味にKibana3も入っており、KibanaのURLにある「kibana」を「kibana3」に置き換えれば使えます。

黒い画面が好きな方はこちらのほうが良いかもしれません。
しかし、Kibana4ほど親切設計ではないのと、既に後継のKibana4がリリースされているので、あまりおすすめはしません。

個人的に一番詰まった、Index設定のサンプルは以下の画像です。
Kibana3 Index


こんな感じの黒さでダッシュボードを作成できます。Kibana4のテーマ選択機能まだかなぁ。 Kibana3 dashboard

まとめ

EC2にElasticsearchをインストールするより、Amazon ESを使った方が早い・安い・簡単。

ちなみに、今回のケチケチした構成だと、1日100円かからない程度です。
インストール作業をすっ飛ばして、ElasticsearchやらKibanaやらで遊べます。

おまけ

Amazon ESの設定変更を行うと、裏側ではインスタンスの入替えが行われるようです。
アクセス制御の設定変更だけでも10分ほどかかりますので、設定変更は計画的に。
なんか多い