カメラマン(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を開いたら初期設定を行う必要があります。
Index name or pattern |
Kibanaで扱うIndex名を指定します。 今回の記事で作ったFluentdには test-apache-access をプレフィックに指定してあるので、「test-apache-access-*」を指定すればFluentdによって挿入されたデータ全てを扱うことができます。 |
---|---|
Time-field name | 時間列を指定します。logstash-formatで挿入した場合は「@timestamp」を指定すればOKです。 |
あとは思う存分データを可視化しましょう。Elasticsearch側の設定を弄っていないので不便な所がちょこちょこ出てくるかもしれませんが、気にしないでおきます。
Kibana3も入ってる
Amazon ESには地味にKibana3も入っており、KibanaのURLにある「kibana」を「kibana3」に置き換えれば使えます。
黒い画面が好きな方はこちらのほうが良いかもしれません。
しかし、Kibana4ほど親切設計ではないのと、既に後継のKibana4がリリースされているので、あまりおすすめはしません。
個人的に一番詰まった、Index設定のサンプルは以下の画像です。
こんな感じの黒さでダッシュボードを作成できます。Kibana4のテーマ選択機能まだかなぁ。
まとめ
EC2にElasticsearchをインストールするより、Amazon ESを使った方が早い・安い・簡単。
ちなみに、今回のケチケチした構成だと、1日100円かからない程度です。
インストール作業をすっ飛ばして、ElasticsearchやらKibanaやらで遊べます。
おまけ
Amazon ESの設定変更を行うと、裏側ではインスタンスの入替えが行われるようです。
アクセス制御の設定変更だけでも10分ほどかかりますので、設定変更は計画的に。