9月21日、
Elastic テクニカルワークショップに行ってきた!のでメモメモ
■自己紹介など
■はじめに
・Elasticsearchとは
全文検索エンジン
・特徴
スケールアウト
スキーマレス
マルチテナント
・今最も注目されている検索エンジン
ダウンロード増えている(1億件突破)
製品体系
OSS:Elasticスタック
kibana
Elasticsearch
Logstash
Beats
有償:X-pack
Elastic cloud
・Acroquestとは
OEMパートナー
・Elastic{ON} Tour
カンファレンス。メインはサンフランシスコ
日本はアメリカに次ぐ世界2番目の参加
Acroquestは世界で3番目に参加者の多い会社
T3ブログ?
■ハンズオン
・自己紹介
・概要説明
データの収集・加工・転送
1収集
2加工Logstash
3転送
ElasticSearchへのでーたとうにゅう
Kibanaで可視化
X-Packを使ってみる
セキュリティ
モニタリング
アラーティング
レポーティング
グラフ
マシーンラーニング→LTで
・ハンズオンの前に
解凍
JAVA_HOMEの設定
・Elastic cloud
Elastic search,KibanaをAWSへ
https://www.elastic.co/cloud
新規の場合
トライアル:try it out
メールアドレスを入れる
メールを受信したら、Verify Email and Accept TOSをクリック
パスワード画面になるので、パスワード入力
アカウント作っている人は、ここからログイン
新規に作る「Create Cluster」(左側)
size:変更できない
プラットフォーム:AWS リージョン(変更可能)
ハイアベイラビリティ:データセンター 1データセンター
バージョン:デフォルト
(以下使わないので飛ばす)
Name:名前 自由に
Createをクリックすると、パスワードがでる。覚えておくこと
Configu のMonitoringを
Disableを自分のクラスタ(this cluster)を選択してUpdate
Kibana endpointをクリックすると、認証画面が出てくる
→Logstashは、クラウドにはない。ローカルで実行
・Logstashとは
ログを集める。外部へ転送
多数の公式プラグイン
設定ファイルを書いておく
input { stdin {} }
filter {}
output {
stdout{
codec => rubydebug
}
}
・演習1 つかってみる
logstashのフォルダにいって
logstash.confを作成、上記の内容を書く
logstashのフォルダまでcdして
bin\logstash -f logstash.conf
なにかいろいろでるけど、最終的に
[2017-09-21T13:53:22,010][INFO ][logstash.agent ] Successfully started
Logstash API endpoint {:port=>9600}
がでる。
Hello world
といれると
{
"@version" => "1",
"host" => "USER-PC",
"@timestamp" => 2017-09-21T04:58:46.597Z,
"message" => "Hello,world!\r"
}
みたいなのが出てくればOK
・演習2 Filterの設定
grok filter追加
filterに
grok {
match => {
"message" =>'%{HTTPDATE:date} %{IP:ip} <%{DATA:msg}>'
}
}
追加
3.22/Mar/2014:16:38:00 -0700 183.60.215.50 <This>
と入力
{
"date" => "22/Mar/2014:16:38:00 -0700",
"msg" => "This",
"@timestamp" => 2017-09-21T05:06:19.814Z,
"ip" => "183.60.215.50",
"@version" => "1",
"host" => "USER-PC",
"message" => "3.22/Mar/2014:16:38:00 -0700 183.60.215.50 <This>\r"
}
というかんじででる。
<<解説>>
・match マッチする
そのあと正規表現
・演習3 geoip 地理情報
grokのあとに
geoip{
source => "ip"
}
を記入
3.22/Mar/2014:16:38:00 -0700 183.60.215.50 <This>
と入力
{
"date" => "22/Mar/2014:16:38:00 -0700",
"msg" => "This",
"@timestamp" => 2017-09-21T05:12:09.701Z,
"geoip" => {
"city_name" => "Guangzhou",
"timezone" => "Asia/Shanghai",
"ip" => "183.60.215.50",
"latitude" => 23.1167,
"country_name" => "China",
"country_code2" => "CN",
"continent_code" => "AS",
"country_code3" => "CN",
"region_name" => "Guangdong",
"location" => {
"lon" => 113.25,
"lat" => 23.1167
},
"region_code" => "44",
"longitude" => 113.25
},
"ip" => "183.60.215.50",
"@version" => "1",
"host" => "USER-PC",
"message" => "3.22/Mar/2014:16:38:00 -0700 183.60.215.50 <This>\r"
}
とでる。
・ここまでのまとめ
収集:画面から
加工:Logstash
出力:画面に
これから
収集:CSVから
加工:Logstash
出力:クラウドに転送
・Elasticsearchとは
内部的 JSONで Luceneを内包
分散検索エンジン
RESTful API
データの集計:集計関数 geo_distance
・用語の確認
ドキュメント:RDBの1レコード
インデックス:RDBのテーブル→タイプが廃止されるので
マッピング:ドキュメントの形式(RDBのDDL)
フィールド
フィールドのタイプ
→自動的に生成、明示的にマッピングできる
・今回
KibanaのConsole(むかしのせんす)で
マッピング定義
Kibanaの画面に
ユーザー名:elastic
パスワード:さきほどのパスワード
dev Toolsを選択 get to workをクリックすると、console
左にリクエストを書くと、右にレスポンス
左側にマッピングを張り
実行ボタン(三角形)をクリックする
"acknowledged": true と出てくればOK
・転送
complete.confをひらく
outputのhosts
type ..\qdlog.csv | bin\logstash -f ..\complete.conf
点がいっぱいでる
・可視化するデータの説明
qdlog Quick Draw ミャンマーの福引アプリ
・kibana
index patternを設定する
management の indexpatternを選択
indexpattern qdlog-*
Time Filter field name @timmestamp
でcreateボタンをクリック
なんか一覧出る
Discover 右上 Last 15 minitesをクリック
absoluteで期間指定でGo
searchとなったあと、
棒グラフが表示される
Visualization→パネルの1枚1枚
(1)Metricsを利用し、ユニークユーザー
Visualizeをクリック
+をクリック
42 Metricをクリック
qd-logをクリック
左側で、いろいろ変えられる
Aggregation Unique Count
Field appUserID
実行
saveをクリック
名前を付けて、Save
(2)「Data Tables」で上位
Visualizeをクリック
+をクリック
data tablesをクリック
qd-logをクリック
bucketsでsplit Rows
Aggregation Terms
Field appUserID
(3)Line Chart
Visualizeをクリック
+をクリック
Lineをクリック
qd-logをクリック
Y-Axisは変更なし
X-AxisをDate Histogramへ
sub backetを指定して、キャリアごとにわける
(4)Coodinate Map
Add A filterで絞り込める
・Dashboardをつくる
+クリック
add
一覧がでてきたら、必要なものクリック
→ダッシュボードでフィルタをかけることができる
・まとめ
基本的な流れ
このあとx-pack
・X-Packとは
有償サブスクリプション。まとめて
セキュリティ
認証
権限
追加管理
→デモ
ユーザーにロールをつけて、アクセス権限する
LDAP,ADとも連携できるが、ロールを作ることもできる(デフォルトあり)
インデックスごと
クラスターごと
KianaのManagementのSecurityで、ロールもユーザーも、作成・設定できる
→ユーザーのロールにkibana userを入れないとkibanaが見れない
アラーティング(ウォッチャー)
セキュリティ侵害
ソーシャルメディアで話題になってる
ログにクレジットカード番号
などなど。。
watchに定義する
トリガー:どのタイミングで
インプット:条件判定
コンディション:実行するか
アクション:振る舞い
→これらをJSONで設定
KianaのManagementのElasticsearchのWatcherを選択
Watch JSONにトリガー、インプット、コンディション、アクションをJSONで書く
Simulateでシミュレーションできる
モニタリング
状況を見れる
watcherとくみあわせるといい
レポーティング
ダッシュボード
グラフ
関連度の強さ
■事例紹介
・
マイクロソフト
USGS
星野リゾート
・マイクロソフト
MSN searchの基盤
・USGS
国の機関
Twitterストリーム分析
・そのほか
NASA
ebay
WikiMedia
ゴールドマンサックス
・用途
せきゅりてぃ
検索
ログ分析
→高い価値を見出す
経営情報の可視化
星野リゾート
・動画
・星野リゾートの事例
・まとめ
その場で変えていける
可視化には、ノウハウ必要
■LT
・Elastic {ON} 2017 San Francisco
バージョン5での新機能
x-pack マシーンラーニング
UIの大幅な強化
・X-Packマシンラーニング
異常検知:データの傾向を学習
インフルーエンサー
なんで異常なのかの判定
デモ
航空機の座席予約のレスポンス
Machine Lerningを選択
JOB:シングルで
Creare Job
JOB:マルチで
→インフルーエンサー:複数の軸をまたがって見える
ぷりらーとが作っていた
ユースケース
・Logstash Pipeline Visualizer
Logstashのきょどうをkibanaで見える
Kibanaのモニタリングの画面から
・タイムシリーズビジュアルビルダー
KibanaのVisualizeの中にある
・まだ実装されていない(バージョン6)
Elastic search SQL
Kibana Canvas:表現の幅が広がる
・もうひとつ
Taste of Tech Topic T3ブログ
http://acro-engineer.hatenablog.com/
Q&A
・6は?
正式アナウンスまだ
去年は10月に出た
・データ互換は?
公式ホームページでアナウンス
5から6は、システム止めずにバージョンアップ
・異常検知
精度を測る指標→自前の機械学習と比較したり
■本格導入に知っておきたい1つのこと
・OSSだから、タダだから・・・ただより高いものはない
→教育、人材、カスタマイズ
・商用利用ならサブスクリプションは必須
安心
安全
説明責任
・サブスクリプションはケースバイケース
・えらすてょっくでも、アクロクエストでもいいよ