Elastic Stackでマイクロサービス運用を楽にするには？ - Elastic Stackの入門と活用 -2019/01/25
Community Engineer @Elastic
Jun Ohtani @johtani!1about••!2

Me, Jun Ohtani / Community Engineer‒ lucene-gosenコミッター‒

データ分析基盤構築入門 共著‒

http://blog.johtani.info

Elastic, founded in 2012
‒ Products: Elasticsearch, Logstash, Kibana, Beats
Elastic APM,
Elastic Cloud, Swiftype
Professional services: Support & development subscriptions
Trainings, Consulting, SaaS

アジェンダ• マイクロサービスとは？
• Elastic Stackとは？
• 様々な観点からのアプリケーションの監視• さらに色々試してみるには？

!3

マイクロサービスとは!4マイクロサービス (Wikipedia)

https://ja.wikipedia.org/wiki/マイクロサービス!5モノリシック v.s. マイクロサービス!6

マイクロサービス？？？

!7

Elastic Stackとは？

!8

ElasticStack

Kibana

可視化、管理Elasticsearch

保存、検索、分析

Beats

Logstash

インジェストApplication
SearchMetrics

ElasticStack

Site
SearchEnterprise
SearchLogging

APM

Business
Analytics

Security
Analytics

Futureソリューション

Kibana

可視化、管理Elasticsearch

保存、検索、分析

Beats

Logstash

インジェストAppSearchMetrics

ElasticStack

Site
SearchEnterprise
SearchLogging

APM

Business
Analytics

Security
Analytics

Futureソリューション

Kibana

可視化、管理Elasticsearch

保存、検索、分析

Beats

SaaS
Elastic Cloud

Logstash

インジェストSelf Managed
Elastic CloudEnterpriseStandalone

デプロイApplicationSearchMetrics

Elastic
Stack

Site
SearchEnterprise
SearchLogging

APM

Business
Analytics

Security
Analytics

Futureソリューション

Kibana

可視化、管理Elasticsearch

保存、検索、分析

Beats

SaaS
Elastic Cloud

Logstash

インジェストSelf Managed
Elastic CloudEnterpriseStandalone

デプロイ

!13

Beats軽量データシッパー

ソースからデータを転送

転送しElasticsearchに集約

変換とパースのため
Logstashに転送

Elastic Cloudに転送

Libbeat: カスタムbeatsのためのAPIフレームワーク

30以上のコミュニティbeats
14

The Beats family

Packetbeat

Metricbeat

Winlogbeat

Network data

Metrics

Windows Event Logs

Auditbeat

FilebeatHeartbeat

Audit data

Log files

Uptime monitoring+40
community
Beats

!16

Logstash
データ加工パイプライン

全ての形式、サイズとデータソースの投入

パースと動的なデータ変換

あらゆる出力にデータ転送

安全で暗号化されたデータ入力

独自のパイプライン処理の作成

200以上のプラグイン

17

!18

Elasticsearch
Heart of the Elastic Stack

分散型、スケーラブル

高可用性

マルチテナント

開発者フレンドリー

リアルタイム、全文検索

アグリゲーション19

Elasticsearchとは？

フリーワード検索!21

絞り込み!22

ハイライト!23

ソート!24ページング!25

集計!26

サジェスト!27

Elasticsearch in 10 seconds• スキーマフリー、分散ドキュメントストア、REST & JSON
• オープンソース: Apache License 2.0• 設定なしで簡単に試すことが可能• Javaで実装。拡張も容易!28

簡単なCRUD

データ登録curl -XPUT localhost:9200/books/book/1 -d '{"title" : "Elasticsearch - The definitive guide","authors" : "Clinton Gormley","started" : "2013-02-04","pages" : 230}'30

データ更新curl -XPUT localhost:9200/books/book/1 -d '{"title" : "Elasticsearch - The definitive guide","authors" : [ "Clinton Gormley", "Zachary Tong" ],"started" : "2013-02-04","pages" : 230}'31

データ削除
curl -X DELETE localhost:9200/books/book/1

データの取得curl —X GET localhost:9200/books/book/1
curl —X GET localhost:9200/books/book/1/_source!32検索 - Query DSL
curl -XGET ‘localhost:9200/books/doc/_search' -d '{"query": {"bool": {"must": [{ "match": { "title":"Search"}},{ "match": { "content": "Elasticsearch" }}],"filter": [{ "term": { "status": "published" }},{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}'
!33

分散構成、
スケール

シャードとレプリカ
node 1orders
1

2

3

4

products
1
2!35

curl -X PUT localhost:9200/orders -d '{"settings.index.number_of_shards" : 4"settings.index.number_of_replicas" : 1}'

curl -X PUT localhost:9200/products -d '{"settings.index.number_of_shards" : 2"settings.index.number_of_replicas" : 0}'

シャードとレプリカ
node 1

node 2orders

orders

1

2

1

2

3

4

3

4

products
1!36

products2

自動的な分散node 1

node 2

node 3ordersordersorders1

2
4

products
1!37

2
3products
2

1
3

4

products

!38

Kibana
Window into the Elastic Stack

可視化と分析

地理空間

カスタマイズとレポートの共有

グラフ探索

Elastic Stackへのセキュアなアクセスと管理

カスタムAppsの作成

39

Kibana 6!40

Elastic Stackの構成
Beats

Log
Files

Elasticsearch

KibanaWire
Data

Instances
Nodes

Metrics your{beat}Distributed
Message
Queue

Kafka!41

DataStoreWeb
APIs

SocialSensors

Logstash

Nodes

QueuesStorage

Metrics

Notification

アプリケーションの監視ポイント!42

監視ポイント•

外形監視•

メトリック（メトリクス）•!43

サーバー、アプリケーション•ログ•

アプリケーションのリリースタイミング•

分散トレーシング

外形監視
•

!44

死活監視
•

プロセス

•

HTTPサーバー

•TCP

•

ICMP

Heartbeat

Lightweight
Shipper for
UptimeMonitoringメトリック•サーバー••

アプリケーション••

リクエスト数、コネクション数、処理時間

コンテナー
•

!46

CPU、メモリ、ディスク、ネットワークI/O、プロセス数

コンテナ数

Metricbeat

Collect system
and application
metrics

Metricbeatlots of modules

Metricbeat モジュール
●
●
●
●
●
●
●
●
●
●
●
●

!49

Aerospike module
Apache module
Ceph module
Couchbase moduleDocker module
Dropwizard module
Elasticsearch module
Etcd module
Golang module
Graphite module
HAProxy module
HTTP module

●
●
●
●
●
●
●
●
●
●
●
●

Jolokia module
Kafka module
Kibana module
Kubernetes module
kvm module
Logstash module
Memcached module
MongoDB module
Munin module
MySQL module
Nginx module

●
●
●
●
●
●
●
●
●
●

PHP_FPM module
PostgreSQL module
Prometheus module
RabbitMQ module
Redis module
System module
uwsgi module
vSphere module
Windows module
ZooKeeper module

ログ

!50•

アクセスログ•システムログ•

認証ログ•スローログ•アプリケーションログ

Filebeattail log fromﬁleFilebeat

many modules

Filebeat modules - v6.4.2•

Apache2 module•

MySQL module•

Auditd module•

Nginx module•

Icinga module•

Osquery module•

IIS module•

PostgreSQL module•

Kafka module•

Redis module•

Logstash module•

System module•

MongoDB module•

Traefik modulewinlogbeat

Welcometo 1998

winlogbeat

Now

Packetbeat

Capture thePacket

Packetbeat

Capture thePacketアプリケーションのリリースタイミング!58•

バグフィックスリリース•

新機能リリース•

新サービス開始•

サーバー増強分散トレーシング!59•

マイクロサービス•

1つのリクエストに対して複数のプロセスが関係•

アプリケーションパフォーマンスモニタリングの1つ!60

Elastic APM!61

Distributed Tracing
Beta | Basic (free)
全ての計測されたサービスを見るための統合されたビュー
サブコンテキスト内のトレースに遷移
OpenTracing 互換そのほかの便利な機能!63•

Infra UI•

Logs UI•

Machine Learning•

Alerting

Infrastructure Solution
Beta | Basic (free)

インフラオペレーター向けに特化
1000を超えるインフラの構成を俯瞰
Kubernetes、Docker のネイティブサポー
ト
メトリック、ログ、APM ビューへのドリル・ダウン
アドホックおよび構造化検索Logs Solution
Beta | Basic (free)

ライブでログのトラブルシューティングを助ける軽量なログビューアー
コンソールのような表示(tail -fのような)ライブ・ログ・ストリー
ミング
履歴ログの無限スクロール
アドホックおよび構造化検索

!66

!67

!68

さらに活用するには？

!69

!70

!71

その他の使い方!72

データの登録方法!73•

Kibanaのサンプルデータ（6.4から）•LogstashでJDBC input•

LogstashでCSV•

Filebeatでアクセスログ•

Metricbeatでメトリック•

PacketbeatでMySQL/PostgreSQLのパケット解析

Kibanaのサンプルデータ（>= 6.4.0）!74

ワンクリックでデータ登録!75

LogstashでJDBC Input
Elasticsearch

KibanaInstances
Nodes

Logstash

Nodes

DataStore!76

JDBC Input!77

LogstashでCSV
Elasticsearch

KibanaInstances
Nodes

Logstash

Nodes

CSVFile!78

CSV filter!79

Filebeatでアクセスログ
Beats

Elasticsearch

Log
Files

Instances
Nodes

!80

KibanaFilebeatでアクセスログ!81•

2つのElasticsearchプラグインをインストールしてElasticsearchを起動•

Filebeatのapache2モジュールを有効化•

modules.d/apache2.ymlにアクセスログのパスを設定•

setupコマンドを実行してからFilebeatを起動

Metricbeatでメトリック
Beats

Elasticsearch

KibanaInstances
Nodes

Metrics

Metricbeatでメトリック!83•

Metricbeatのsystemモジュールを有効化•

setupコマンドを実行してからFilebeatを起動

PacketbeatでMySQL、PostgreSQLのパケット解析
Beats

Elasticsearch

Wire
Data

Instances
Nodes

!84

Kibana参考文献• Elasticsearch - The Definitive guide‒

http://www.elastic.co/guide/en/elasticsearch/guide/current/index.html• 書籍（日本語）!85‒

データ分析基盤構築入門‒

Elasticsearch実践ガイド

参考文献
•

入門 監視―モダンなモニタリングのためのデザインパターン
Mike Julian 著、松浦 隼人

訳

https://www.oreilly.co.jp/books/9784873118642/!86参考サイト•ユースケース• https://www.elastic.co/use-cases• Discuss（Webフォーラム）• https://discuss.elastic.co•

Elastic{ON}のビデオと資料• https://www.elastic.co/elasticon/videos• サポートメニュー• https://www.elastic.co/subscriptions!87Thank you!
● Web : https://www.elastic.co/jp/● Forums : https://discuss.elastic.co/● Twitter : @johtani