アプリケーション(パフォーマンス)
監視入門 - Elastic編

A presentation at とちぎRuby会議08 in June 2019 in Tochigi, Japan by Jun Ohtani

Slide 1

Slide 1

アプリケーション(パフォーマンス) 監視入門 - Elastic編 Jun Ohtani, Developer | Evangelist 2019/06/29 とちぎRuby会議 08

Slide 2

Slide 2

スライドについて • スライドは公開してます 2

Slide 3

Slide 3

about • 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 3

Slide 4

Slide 4

Kibana、ログだけじゃないし 監視系の話もできないとなぁ

Slide 5

Slide 5

5

Slide 6

Slide 6

これだ! (インスパイアされてみました)

Slide 7

Slide 7

アジェンダ • 監視とは? • Elastic Stackとは? • 様々な観点からのアプリケーションの監視 • さらに色々試してみるには? 7

Slide 8

Slide 8

監視とは?

Slide 9

Slide 9

Subtitle sentence case (Open Sans 18pt) 9

Slide 10

Slide 10

Subtitle sentence case (Open Sans 18pt) 10

Slide 11

Slide 11

マイクロサービス (Wikipedia) Subtitle sentence case (Open Sans 18pt) https://ja.wikipedia.org/wiki/マイクロサービス 11

Slide 12

Slide 12

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

Slide 13

Slide 13

マイクロサービス??? 13

Slide 14

Slide 14

Elastic Stackとは?

Slide 15

Slide 15

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

Slide 16

Slide 16

デモサイト GCEインスタンス 16 GCEインスタンス APM Ruby Heartbeat Filebeat Filebeat Metricbeat Metricbeat Packetbeat Packetbeat Auditbeat Auditbeat

Slide 17

Slide 17

デモサイト https://www.johtani.dev 17

Slide 18

Slide 18

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

Slide 19

Slide 19

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

Slide 20

Slide 20

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

Slide 21

Slide 21

Heartbeat Lightweight Shipper for Uptime Monitoring

Slide 22

Slide 22

Uptime UI Dedicated Uptime Monitoring UI for Kibana

Slide 23

Slide 23

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

Slide 24

Slide 24

Metricbeat Collect system and application metrics

Slide 25

Slide 25

Metricbeat lots of modules

Slide 26

Slide 26

Metricbeat モジュール 26 ● ● ● ● ● ● ● ● ● ● ● ● ● ● Aerospike module Apache module aws module Ceph module Couchbase module couchdb module Docker module Dropwizard module Elasticsearch module envoyproxy 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 mssql module Munin module MySQL module Nats module ● ● ● ● ● ● ● ● ● ● ● Nginx module PHP_FPM module PostgreSQL module Prometheus module RabbitMQ module Redis module System module traefik module uwsgi module vSphere module Windows module ZooKeeper module

Slide 27

Slide 27

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

Slide 28

Slide 28

Filebeat tail log from file

Slide 29

Slide 29

Filebeat many modules

Slide 30

Slide 30

Filebeat modules - v7.0.0 • Apache module • Auditd module • Elasticsearch module • haproxy module • Icinga module • IIS module • Iptables module • Kafka module • PostgreSQL module • Kibana module • Redis module • Logstash module • Santa module • MongoDB module • Suricata module • MySQL module • System module • Nginx module • Traefik module • Osquery module • Zeek (Bro) Module

Slide 31

Slide 31

winlogbeat Welcome to 1998

Slide 32

Slide 32

winlogbeat Now

Slide 33

Slide 33

Packetbeat Capture the Packet

Slide 34

Slide 34

Packetbeat Capture the Packet

Slide 35

Slide 35

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

Slide 36

Slide 36

Time Series Visual Builder Annotations on Visualization

Slide 37

Slide 37

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

Slide 38

Slide 38

38

Slide 39

Slide 39

サポート言語 • Node.js • Python • Ruby • Go • Java • .NET • RUM - Real User Monitoring JavaScript Agent 39

Slide 40

Slide 40

Elastic APM 40

Slide 41

Slide 41

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

Slide 42

Slide 42

Deployment Dashboards OSS Beats App - Basic (free) Logs Metrics Packets … Logstash Datastore JMX OSS APM Agents #42 OSS APM Server Elasticsearch Kibana

Slide 43

Slide 43

APM Ruby Agent Framework Support • Ruby on Rails >= 4.x • Sinatra and Rack compatible frameworks 43

Slide 44

Slide 44

APM Ruby Agent with Rails How to use with Rails • Add elastic-apm gem in Gemfile • Create elastic_apm.yml file under config dir • See reference for other configurations https://www.elastic.co/guide/en/apm/agent/ruby/current/ configuration.html 44

Slide 45

Slide 45

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

Slide 46

Slide 46

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

Slide 47

Slide 47

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

Slide 48

Slide 48

Slide 49

Slide 49

Slide 50

Slide 50

Slide 51

Slide 51

さらに活用するには?

Slide 52

Slide 52

52

Slide 53

Slide 53

53

Slide 54

Slide 54

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

Slide 55

Slide 55

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

Slide 56

Slide 56

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

Slide 57

Slide 57

Thank you! ● ● ● ● Sample: https://github.com/johtani/monitoring-ruby-app Web : https://www.elastic.co/jp/ Forums : https://discuss.elastic.co/ Twitter : @johtani