Elastic Stackでマイクロサービス運用を楽にするには? - Elastic Stackの活用 -

A presentation at NoOps Meetup Tokyo #4 in February 2019 in Tokyo, Japan by Jun Ohtani

Slide 1

Slide 1

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

Slide 2

Slide 2

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

Slide 3

Slide 3

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

Slide 4

Slide 4

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

Slide 5

Slide 5

マイクロサービス (Wikipedia) https://ja.wikipedia.org/wiki/マイクロサービス !5

Slide 6

Slide 6

モノリシック v.s. マイクロサービス !6

Slide 7

Slide 7

マイクロサービス??? !7

Slide 8

Slide 8

Elastic Stackとは? !8

Slide 9

Slide 9

Elastic Stack Kibana 可視化、管理 Elasticsearch 保存、検索、分析 Beats Logstash インジェスト

Slide 10

Slide 10

Application Search Metrics Elastic Stack Site Search APM Enterprise Search Logging Business Analytics Security Analytics Future ソリューション Kibana 可視化、管理 Elasticsearch 保存、検索、分析 Beats Logstash インジェスト

Slide 11

Slide 11

App Search Site Search Metrics Elastic Stack APM Enterprise Search Logging Business Analytics Security Analytics Future ソリューション Kibana 可視化、管理 Elasticsearch 保存、検索、分析 Beats SaaS Elastic Cloud Logstash インジェスト Self Managed Elastic Cloud Enterprise Standalone デプロイ

Slide 12

Slide 12

Application Search Site Search Metrics Elastic Stack APM Enterprise Search Logging Business Analytics Security Analytics Future ソリューション Kibana 可視化、管理 Elasticsearch 保存、検索、分析 Beats SaaS Elastic Cloud Logstash インジェスト Self Managed Elastic Cloud Enterprise Standalone デプロイ

Slide 13

Slide 13

!13

Slide 14

Slide 14

Beats 軽量データシッパー ソースからデータを転送 転送しElasticsearchに集約 変換とパースのため Logstashに転送 Elastic Cloudに転送 Libbeat: カスタムbeatsのた めのAPIフレームワーク 30以上のコミュニティbeats 14

Slide 15

Slide 15

The Beats family Packetbeat Metricbeat Winlogbeat Network data Metrics Windows Event Logs Auditbeat Filebeat Audit data Log files Heartbeat Uptime monitoring +40 community Beats

Slide 16

Slide 16

!16

Slide 17

Slide 17

Logstash データ加工パイプライン 全ての形式、サイズとデータソー スの投入 パースと動的な データ変換 あらゆる出力に データ転送 安全で暗号化された データ入力 独自のパイプライン処理 の作成 200以上のプラグイン 17

Slide 18

Slide 18

!18

Slide 19

Slide 19

Elasticsearch Heart of the Elastic Stack 分散型、スケーラブル 高可用性 マルチテナント 開発者フレンドリー リアルタイム、全文検索 アグリゲーション 19

Slide 20

Slide 20

Elasticsearchとは?

Slide 21

Slide 21

フリーワード検索 !21

Slide 22

Slide 22

絞り込み !22

Slide 23

Slide 23

ハイライト !23

Slide 24

Slide 24

ソート !24

Slide 25

Slide 25

ページング !25

Slide 26

Slide 26

集計 !26

Slide 27

Slide 27

サジェスト !27

Slide 28

Slide 28

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

Slide 29

Slide 29

簡単なCRUD

Slide 30

Slide 30

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

Slide 31

Slide 31

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

Slide 32

Slide 32

データ削除 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

Slide 33

Slide 33

検索 - Query DSL curl -XGET ‘localhost:9200/books/doc/_search’ -d ‘{ “query”: { “bool”: { “must”: [ { “match”: { “match”: ], “filter”: [ { “term”: { “range”: ] } } }’ !33 { “title”: “Search” }}, { “content”: “Elasticsearch” }} { “status”: “published” }}, { “publish_date”: { “gte”: “2015-01-01” }}}

Slide 34

Slide 34

分散構成、 スケール

Slide 35

Slide 35

シャードとレプリカ node 1 orders 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 }’

Slide 36

Slide 36

シャードとレプリカ node 1 node 2 orders orders 1 2 1 2 3 4 3 4 products 1 !36 products 2

Slide 37

Slide 37

自動的な分散 node 1 node 2 node 3 orders orders orders 1 2 4 products 1 !37 2 3 products 2 1 3 4 products

Slide 38

Slide 38

!38

Slide 39

Slide 39

Kibana Window into the Elastic Stack 可視化と分析 地理空間 カスタマイズと レポートの共有 グラフ探索 Elastic Stackへの セキュアなアクセスと管理 カスタムAppsの作成 39

Slide 40

Slide 40

Kibana 6 !40

Slide 41

Slide 41

Elastic Stackの構成 Beats Log Files Elasticsearch Kibana Wire Data Instances Nodes Metrics your{beat} Distributed Message Queue Kafka !41 Data Store Web APIs Social Sensors Logstash Nodes Queues Storage Metrics Notification

Slide 42

Slide 42

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

Slide 43

Slide 43

監視ポイント • 外形監視 • メトリック(メトリクス) • !43 サーバー、アプリケーション • ログ • アプリケーションのリリースタイミング • 分散トレーシング

Slide 44

Slide 44

外形監視 • !44 死活監視 • プロセス • HTTPサーバー • TCP • ICMP

Slide 45

Slide 45

Heartbeat Lightweight Shipper for Uptime Monitoring

Slide 46

Slide 46

メトリック • サーバー • • アプリケーション • • リクエスト数、コネクション数、処理時間 コンテナー • !46 CPU、メモリ、ディスク、ネットワークI/O、プロセス数 コンテナ数

Slide 47

Slide 47

Metricbeat Collect system and application metrics

Slide 48

Slide 48

Metricbeat lots of modules

Slide 49

Slide 49

Metricbeat モジュール ● ● ● ● ● ● ● ● ● ● ● ● !49 Aerospike module Apache module Ceph module Couchbase module Docker 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

Slide 50

Slide 50

ログ !50 • アクセスログ • システムログ • 認証ログ • スローログ • アプリケーションログ

Slide 51

Slide 51

Filebeat tail log from file

Slide 52

Slide 52

Filebeat many modules

Slide 53

Slide 53

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

Slide 54

Slide 54

winlogbeat Welcome to 1998

Slide 55

Slide 55

winlogbeat Now

Slide 56

Slide 56

Packetbeat Capture the Packet

Slide 57

Slide 57

Packetbeat Capture the Packet

Slide 58

Slide 58

アプリケーションのリリースタイミング !58 • バグフィックスリリース • 新機能リリース • 新サービス開始 • サーバー増強

Slide 59

Slide 59

分散トレーシング !59 • マイクロサービス • 1つのリクエストに対して複数のプロセスが関係 • アプリケーションパフォーマンスモニタリングの1つ

Slide 60

Slide 60

!60

Slide 61

Slide 61

Elastic APM !61

Slide 62

Slide 62

Distributed Tracing Beta | Basic (free) 全ての計測されたサービスを見るための 統合されたビュー サブコンテキスト内のトレースに遷移 OpenTracing 互換

Slide 63

Slide 63

そのほかの便利な機能 !63 • Infra UI • Logs UI • Machine Learning • Alerting

Slide 64

Slide 64

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

Slide 65

Slide 65

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

Slide 66

Slide 66

!66

Slide 67

Slide 67

!67

Slide 68

Slide 68

!68

Slide 69

Slide 69

さらに活用するには? !69

Slide 70

Slide 70

!70

Slide 71

Slide 71

!71

Slide 72

Slide 72

その他の使い方 !72

Slide 73

Slide 73

データの登録方法 !73 • Kibanaのサンプルデータ(6.4から) • LogstashでJDBC input • LogstashでCSV • Filebeatでアクセスログ • Metricbeatでメトリック • PacketbeatでMySQL/PostgreSQLのパケット解析

Slide 74

Slide 74

Kibanaのサンプルデータ(>= 6.4.0) !74

Slide 75

Slide 75

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

Slide 76

Slide 76

LogstashでJDBC Input Elasticsearch Kibana Instances Nodes Logstash Nodes Data Store !76

Slide 77

Slide 77

JDBC Input !77

Slide 78

Slide 78

LogstashでCSV Elasticsearch Kibana Instances Nodes Logstash Nodes CSV File !78

Slide 79

Slide 79

CSV filter !79

Slide 80

Slide 80

Filebeatでアクセスログ Beats Elasticsearch Log Files Instances Nodes !80 Kibana

Slide 81

Slide 81

Filebeatでアクセスログ !81 • 2つのElasticsearchプラグインをインストールしてElasticsearchを起動 • Filebeatのapache2モジュールを有効化 • modules.d/apache2.ymlにアクセスログのパスを設定 • setupコマンドを実行してからFilebeatを起動

Slide 82

Slide 82

Metricbeatでメトリック Beats Elasticsearch Kibana Instances Nodes Metrics

Slide 83

Slide 83

Metricbeatでメトリック !83 • Metricbeatのsystemモジュールを有効化 • setupコマンドを実行してからFilebeatを起動

Slide 84

Slide 84

PacketbeatでMySQL、PostgreSQLのパケット解析 Beats Elasticsearch Wire Data Instances Nodes !84 Kibana

Slide 85

Slide 85

参考文献 • Elasticsearch - The Definitive guide ‒ http://www.elastic.co/guide/en/elasticsearch/guide/current/ index.html • 書籍(日本語) !85 ‒ データ分析基盤構築入門 ‒ Elasticsearch実践ガイド

Slide 86

Slide 86

参考文献 • 入門 監視 ―モダンなモニタリングのためのデザインパターン Mike Julian 著、松浦 隼人 訳 https://www.oreilly.co.jp/books/9784873118642/ !86

Slide 87

Slide 87

参考サイト • ユースケース • 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

Slide 88

Slide 88

Thank you! ● Web : https://www.elastic.co/jp/ ● Forums : https://discuss.elastic.co/ ● Twitter : @johtani