Post on 23-Jan-2018
俺とAmazon Elasticsearch Service とスポットインスタンス
2016-09-11
JAWS-UG金沢 x Kanazawa.rb Elastic勉強会
ふぁらお加藤
Profile
Name
ふぁらお加藤 / @PharaohKJ
BelongTo
JAWS-UG 金沢
Kanazawa.rb
Job & Works
PhalanXware (Freelancer)
OCR system com / .NET
ISDB-T MFC / Linux C++
Social Game PHP / Java
Information App AngularJS / CakePHP
Factory Automation .NET
目指すゴールなるべく「簡単に」「手軽に」「手間をかけずに」「金もなるべくかけずに」「勉強せず」上司や企画の方が見たとき「なるほど参考になる」と言うであろうグラフを出す。(※上司、企画が見る、言うとは言っていない)
本日学んだ結果、みんなが思うこと
すぐにでも試したい!マウス2クリックで!CLI 2コマンドぐらいで!
ああ〜Elasticsearch + Kibana
がすぐ欲しい〜
AWS ですぐ用意できますよ!
しかもちゃんとスケールできますよ
Elasticsearch
Serviceアイコン覚えよう
SaaSぽい感じ※AWSはXaaSとは絶対言わない
公式ページより
https://aws.amazon.com/jp/elastics
earch-service/
公式ページより2
https://aws.amazon.com/jp/elastics
earch-service/
実演します
まぁAWSのアカウントはみんな持ってるのでアカウント取得は割愛
やること
• 名前と Elasticsearchのバージョンを決める
• クラスタを構成する台数、マシンスペックを決める
• 遠いZONEに分散するか、などきめる
• ディスク容量を決める
• 接続制限を設定する(例えば、接続IPを指定)
以上を入力すればOK
実演!
https://ap-northeast-1.console.aws.amazon.com/es/home?region=ap-northeast-1
http://www.ugtop.com/spill.shtml
まぁ Elasticsearch できるとして何をやるか
俺の爆儲かりブログのアクセス解析をしよう
(爆儲かり具合を知りたいかたは30日飲み会ね)
んなもん Google Analytics でやるでしょ?
でも REST API のログとか解析したいやろ?そういう気持ちでみてね
例えばソシャゲ > ガチャ回ったタイミング集計EC > 商品売れたタイミング集計REST でリソースが操作されるタイミング集計
こういうのは運営イベントカレンダーとJOINして表示すると、企画さんにも便利だよね
CDNのログを S3 に保存しているので流し込もう
S3
(Storage)
CloudFront
(CDN)
配信
Elasticsearch
( ES & Kibana )
お客さん EC2 (VM)
logstash
ログ自動出力 取得 転送終わったら削除
集計
オペレータ
こういうログを変換して突っ込んで捨てるVM
スポットインスタンスを使いましょう!
AWSさんは超絶大量のVMがたくさんある
稼働率は100%ある?そんなわきゃない
供給側 AWSさん余ったVM、安くしておくから使ってくんない?
需要側俺ら余ったVM、安く使わせてくれない?
需要と供給で値段が常に上下しているVM
それがスポットインスタンス
普通との比較
• 超安い!(10分の1ぐらいのときもある)
• リクエスト方式なので指し値によってはできないこともある。通った場合も、+3分〜5分かかる。
• AWSさんが「需要あるし、値上げするわ」という金額が、こっちの指し値を上回ったら、削除される。
• 1時間-6時間削除しないでね、ってのもある。
実演
https://ap-northeast-
1.console.aws.amazon.com/ec2sp/v1/spot/dashboard?region=ap-
northeast-1
https://aws.amazon.com/jp/ec2/pricing/
できたらそこのにsshアクセスしてlogstashを使って流しこむ(認証情報と設定をファイルに書いて合計5コマンドぐらいでできる!)
input 入力 from S3
参考 : http://dev.classmethod.jp/server-side/elasticsearch/cloudfront-log-to-kibana/
filter 加工
参考 : http://dev.classmethod.jp/server-side/elasticsearch/cloudfront-log-to-kibana/
出力 to Elasticsearch
参考 : http://dev.classmethod.jp/server-side/elasticsearch/cloudfront-log-to-kibana/
全コマンド
• wget
https://download.elastic.co/logstash/logstash/pack
ages/centos/logstash-2.2.2-1.noarch.rpm
• sudo rpm -ivh logstash-2.2.2-1.noarch.rpm
• sudo /opt/logstash/bin/plugin install logstash-
output-amazon_es
• vi cloudfront.conf
• /opt/logstash/bin/logstash -f cloudfront.conf
流し込みが終わったら削除、リクエストも削除
ユースケースとして、夜間バッチ、ちょっとだけ計算させたい、試したい、とかむいてる
ハマったところ
• logstash から ES へのアクセス許可書き忘れてた
• prefix が全部、つまりレコード数が多いと確認するのにめちゃくちゃ時間がかかるので、まずは数ファイルで動作確認オススメ
• Kibana 側でレコードでてこない!と思ったら検索範囲が間違っていた
結果を使ってみましょう
https://search-myes-gqsutufvtflfzqyp2saq2bseoi.ap-northeast-
1.es.amazonaws.com/_plugin/kibana/
this month
Daily で useragent.device
this month
Daily で useragent.name
this month
円グラフ、useragent.device、name
爆儲かり具合がおわかりいただけただろうか
まとめ
• Elasticsearch + Kibana インスタンス簡単にスケールするものがAWSで得られる
• 一時作業にはスポットインスタンスを使うと安い!(みんなにはナイショだよ)
• 上司、企画が次のコンテンツ作りに活かせそうなのをKibanaで簡単に可視化できた
ふぁらお加藤
ご清聴ありがとうございました