1
2019年6月14日
第3回MUIT社とのIT技術交流会
Elasticsearchを使ってTwitter監視アプリの作成!
NoSQL活用のススメ
SOMPOシステムイノベーションズ株式会社
有坂祐一(ありさかゆういち)
Mail:yarisaka@sompo-sys-i.com
Twitter:@A1617Yuichi
2
目次
1.自己紹介
2.Elasticsearchとは?
3.環境構築
4.サーバメトリクス監視
5.Twitter監視
6.Elastic Cloudの紹介
7.まとめ
3
1.自己紹介
2001.4 株式会社日立システムアンドサービス
2015.4 株式会社日立製作所
2017.4∼ SOMPOシステムイノベーションズ株式会社(出向中)
金融機関向け業務システム開発に携わり、設計・開発・テストなどを経験。
開発言語はJava・COBOLなど。
現在はSOMPOグループの未来革新PJTで、DB周辺を担当。
DB製品はIBM DB2。
→ 今話題のElasticsearchとは何か?RDBMSでないNoSQLとは何か?が動機となり、
  1ヶ月間取り組みました。
4
2.Elasticsearchとは? Wikipediaから引用
・ElasticsearchはApache Luceneをベースとした、Javaで書かれた
全文検索ソフトウェアである。2010年2月にShay Banonによって初
版がリリースされた。オープンソースだが、現在はElastic社が中心
になって開発が進められている。
・圧倒的な全文検索スピードと利便性を誇る。Elasticsearchの内部
ではApache Luceneの全文検索をフル活用している。スケーラブ
ル,スキーマレス,マルチテナント(SaaS)を特徴とする。一方
で、トランザクション処理の信頼性はRDBMSほど重視していない。
・検索エンジン業界では最も人気がある。著名な導入例として、
Facebook, Netflix, GitHub, 日本経済新聞社, RICOH(社内基盤監視)
などがある。
7.1.1 /
2019年5月29日
2013 20192016
Elasticsearch
5
DB製品の人気ランキング https://db-engines.com
1. Oracle
2. MySQL
3. Microsoft SQL Server
4. PostgreSQL
5. MongoDB(NoSQL)
6. IBM DB2
7. Elasticsearch(NoSQL)
6
②実際に構築した環境
・Mac OS 10.14.1(Mac)
・Elastic Stack
 ・Elasticsearch 7.0.0
 ・Kibana 7.0.0
 ・Logstash 7.0.1
・Metricbeat 7.1.0
・Java SE 12.0.1
①書籍のサンプル環境
・CentOS7/Ubuntu16(Linux)
・Elastic Stack
 ・Elasticsearch 6.2.1
 ・Kibana 6.2.1
 ・Logstash 6.2.1
 ・Metricbeat 6.2.1
・Java SE 8
3.環境構築
Elasticsearch
実践ガイド
インプレス社
Qiita
技術情報
サイト
Linux環境。
バージョンが違う
Macにインストール。
公式サイトからダウン
ロード
製品の説明は
4. アプリ作成
でします
7
起動確認 Macターミナルから
・Elasticsearch
$ bin/elasticsearch
→ http://localhost:9200
・Kibana
$ bin/kibana
→ http://localhost:5601
・Logstash
$ bin/logstash -f config/logstash.conf
→ http://localhost:9600
・Metricbeat
$ ./metricbeat -e -c metricbeat.yml
→ ターミナルで確認。
・Kibana
 Elasticsearchに格納されたデータを
 ブラウザで可視化する。
・Elasticsearch
 Metricbeatから出力されたデータを
 JSON形式で保存する。
・Metricbeat
 サーバメトリクスの収集を行う。
 ここではローカルPCを設定。
8
4.サーバメトリクス監視
Kibana
Elasticsearch
Metricbeat
定義ファイル(system.yml)
Period: 10s
Metricsets:
cpu, load, memory, network, process
process_summary
サーバメトリクス
10s間隔で出力
インデックス名
(データベース名)
Metricbeat-7.1.0-YYYY.MM.DD-NNNNNN
http://localhost:5601
Dashboard名
[Metricbeat System] Host overview ECS
QueryDSL
(SQL)
10s間隔で検索
Elasticsearch実践ガイド 6-1-3 Beats
コーディングなし
9
実行結果
Kibana
Dashboard
ダッシュボード
(画面)が用意
されている
10
実行結果
Kibana
Dashboard
11
JSON形式。
RDBMSの表と比べ
ると見ずらい印象
データ確認
Kibana
DevTools
QueryDSL(SQL)を実行して、サーバメトリクスの1断面を取得する。
REST API
GET /インデックス名(DB)/タイプ名(表)/ドキュメント名(レコード)
12
5.Twitter監視
・Kibana
 Elasticsearchに格納されたデータを
 ブラウザで可視化する。
・Elasticsearch
 Logstashから転送されたデータを
 JSON形式で保存する。
・Logstash
 データを取り込み、変換して転送する。
 ここでは、Twitterにアクセスして、
 検索ワードにヒットするツイートを
 収集して、変換せずに転送する。   
Kibana
Elasticsearch
Logstash #検索ワード
keywords => [ 東京 , 神奈川 , 千葉 , 埼
玉 , 城 , 栃木 , 群
馬 , tokyo , kanagawa , chiba , saitama ,
ibaraki , tochigi , gunma ]
検索ワードにヒットする
ツイートを収集
インデックス名(DB名)
Tweets-kanto
http://localhost:5601
Dashboard名
Tweets-kanto-dash
5s間隔で検索
データ転送
13
実行前にやること
・Twitter
developerアカウント取得
→ https://developer.twitter.com
ツイートを取得可能にする。更新も可能。
・Logstash
・Twitter input pluginインストール
ツイートのフォーマットに対応する。
・定義ファイル(logstash.conf)の設定
検索ワードを指定する。
・Elasticsearch
インデックス(DB)定義の変更
最大フィールド数の拡張:1000 → 10000
使用目的などを英語
で記載する
input {
twitter {
# TwittrAPIの認証情報を入力
consumer_key => "XXXXXX"
consumer_secret => "XXXXXX"
oauth_token => "XXXXXX"
oauth_token_secret => "XXXXXX"
# 検索対象に含めるキーワードを配列で指定する
keywords => [ 東京 , 神奈川 , 千葉 , 埼玉 , 城 ,"栃木","群
馬", tokyo , kanagawa , chiba , saitama , ibaraki , tochigi , gunma ]
full_tweet => true
}
}
filter{}
output {
elasticsearch {
# ElasticSearchのホストパス
hosts => ["http://localhost:9200/"]
# インデックス名
index => tweets-kanto"
}
}
PUT /_template/template_tw
{
"index_patterns": "tweets-*",
"settings": {
"index.mapping.total_fields.limit": 10000
}
}
14
実行結果
Kibana
Discover 30秒単位(変更可)
でヒット件数がグラフ
表示される
15
ドキュメント(レ
コード)を開くと内
容を確認できる
「栃木」「群
馬」でヒット
実行結果
Kibana
Discover
16
Dashboard(画面)を作成してみた。
KibanaのVisualizationを開いて、Dashboardに表示するItemを作成する。
(1) Itemを選択する (2) Itemに変数(値)
を設定する
(3) 作成したItem
一覧
17
実行結果
Kibana
Dashboard
(1) 検索範囲(時刻)を
指定すると表示が切り替
わる
(2) ツイート件数、言
語設定を表示してみた。
キーワード別のグラフ
化は難易度が高く、今
回はできなかった
18
6.Elastic Cloudの紹介 https://cloud.elastic.co
・Elastic CloudはElastic社が提供するクラウドサービス。
 AWSとGCP上で、最新のElastic製品群を使ってシステム開発できる。幾つかサービスがあるが、
 ログ監視に適したElasticsearch Serviceを使ってみた(14日間の無料トライアル)。
AWS上の開発
画面
サンプルデータを実行
(KibanaのDashboard)
19
7. まとめ
・Elasticsearchの公式サイトは基本的に英語なので、翻訳ソフトが必須。
 また、バージョンアップが早いため、過去のアプリが動作しないことが多い。
 日本語の情報サイトを使って調べることが多かった。
・Elasticsearchはデータ収集と検索速度を長所とするDB製品である。
 収集したデータをどのように活用していくかがポイント。
 ①データ収集 → ②可視化 → ③分析 → ④活用 → ⑤自動化
・Elastic{ON} Tour TOKYO 2019年5月30日に参加した。
 ①クラスタ構成の最適化、②機械学習機能の活用、③地図分析機能の活用等の話題があった。
20
Elastic{ON} Tour TOKYO 2019年5月30日 https://www.elastic.co/jp/elasticon/tour/2019/tokyo
21
2019年6月14日
第3回MUIT社とのIT技術交流会
Elasticsearchを使ってTwitter監視アプリの作成!
NoSQL活用のススメ
有坂祐一
ありがとうございました!

Elasticsearchを使ったTwitter監視アプリ