A presentation at NoOps Meetup Tokyo #4 in in Tokyo, Japan by Jun Ohtani
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
Elastic Stack Kibana 可視化、管理 Elasticsearch 保存、検索、分析 Beats Logstash インジェスト
Application Search Metrics Elastic Stack Site Search APM Enterprise Search Logging Business Analytics Security Analytics Future ソリューション Kibana 可視化、管理 Elasticsearch 保存、検索、分析 Beats Logstash インジェスト
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 デプロイ
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 デプロイ
!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 Filebeat Audit data Log files Heartbeat 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” : “authors” “started” “pages” : “Elasticsearch - The definitive guide”, : “Clinton Gormley”, : “2013-02-04”, 230 }’ 30
データ更新 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
データ削除 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”: { “match”: ], “filter”: [ { “term”: { “range”: ] } } }’ !33 { “title”: “Search” }}, { “content”: “Elasticsearch” }} { “status”: “published” }}, { “publish_date”: { “gte”: “2015-01-01” }}}
分散構成、 スケール
シャードとレプリカ 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 }’
シャードとレプリカ node 1 node 2 orders orders 1 2 1 2 3 4 3 4 products 1 !36 products 2
自動的な分散 node 1 node 2 node 3 orders orders orders 1 2 4 products 1 !37 2 3 products 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 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
アプリケーションの 監視ポイント !42
監視ポイント • 外形監視 • メトリック(メトリクス) • !43 サーバー、アプリケーション • ログ • アプリケーションのリリースタイミング • 分散トレーシング
外形監視 • !44 死活監視 • プロセス • HTTPサーバー • TCP • ICMP
Heartbeat Lightweight Shipper for Uptime Monitoring
メトリック • サーバー • • アプリケーション • • リクエスト数、コネクション数、処理時間 コンテナー • !46 CPU、メモリ、ディスク、ネットワークI/O、プロセス数 コンテナ数
Metricbeat Collect system and application metrics
Metricbeat lots of modules
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
ログ !50 • アクセスログ • システムログ • 認証ログ • スローログ • アプリケーションログ
Filebeat tail log from file
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 Welcome to 1998
winlogbeat Now
Packetbeat Capture the Packet
Packetbeat Capture the Packet
アプリケーションのリリースタイミング !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 Kibana Instances Nodes Logstash Nodes Data Store !76
JDBC Input !77
LogstashでCSV Elasticsearch Kibana Instances Nodes Logstash Nodes CSV File !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 Kibana Instances 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
NoOps Meetup Tokyoの第4回で発表した時の資料です。 発表時にはOSCの資料をもとに、少し変更したものを使用しましたが、基本は一緒なのでOSCの資料を掲載しています。
Elasticが提供しているElastic Stackを、アプリケーションの監視にどのように活用できるのか?という紹介です。
Here’s what was said about this presentation on social media.
@johtani から、Elastic Stack のお話
— 午後のあえとす(あたたかい美味しい無能) (@aetos382) February 5, 2019
大谷さん@johtani のセッション開始
— Yoichi Kawasaki (@yokawasa) February 5, 2019
“Elastic Stackでマイクロサービス運用を楽にするには?” #NoOpsJP pic.twitter.com/bFWtBBmqSU
■ Elastic Stackでマイクロサービス運用を楽にするには? @johtaniさん
— kusuwada (@kusuwada) February 5, 2019
今日はどういう人達が参加しているの?
→ インフラと開発が多め。そういえば今日はスーツの人が多い。
マイクロサービスやってる?
→ 少なめ。どこで問題が起きているのかがわかりにくくなりがち。#NoOpsJP
社内SEって聞かれなかったな・・・
— 央 (@sogaoh) February 5, 2019
NoOpsからはまだ遠いのかな・・・#NoOps
コンサル/インフラ/開発/セキュリティ
— kusuwada (@kusuwada) February 5, 2019
でしたね。社内SEは開発&インフラに入るのかも?
"マイクロサービスで起きた障害の原因究明はまるで殺人ミステリーのようだ"
— kusuwada (@kusuwada) February 5, 2019
ということで監視しよう。監視ポイント(入門 監視より)https://t.co/HgHXoM4CvQ
・外形監視
・メトリック
・サーバー、アプリケーション
・ログ
・アプリケーションのリリースタイミング
・分散トレーシング#NoOpsJP
Elasticの製品を使うと色々お手軽に可視化できる。代表的なサービスを使っていれば自動で出せる。APM+Kibana使えば、スローな箇所の解析も簡単。開発者にどこがイケてないかのフィードバックもしやすい。
— kusuwada (@kusuwada) February 5, 2019
APM: Application Performance Monitoringhttps://t.co/iG8tYs0ScF
※APM自体はOSS。#NoOpsJP
あー、そういうくくりもありましたね。次は聞くようにします!
— Jun Ohtani (@johtani) February 5, 2019
ということで、本日の元にした資料です!/ https://t.co/bTatN96JHR #NoOpsJP
— Jun Ohtani (@johtani) February 5, 2019
「Elasticの製品の宣伝に来たが、入門 監視 良かった。」
— kusuwada (@kusuwada) February 5, 2019
やはり「入門 監視」に入門せねば。今の所、良かったという感想しか聞かない。#NoOpsJP
はー、終わった。入門監視良かったですよ!って宣伝セッションでした。 #NoOpsJP
— Jun Ohtani (@johtani) February 5, 2019
個人的には社内SEもっと増えて欲しいって思ってます。
— Jun Ohtani (@johtani) February 5, 2019
#NoOpsJP 忘れてました。ステッカーを入口へ向かう途中の机に置いてあるので、ぜひお持ち帰りください!
— Jun Ohtani (@johtani) February 5, 2019
新しいコミュニティに顔を出すのはやはり新鮮な気持ちになれるし、どんどんやっていきたい。新しいことしてないと楽しくないしなー
— Jun Ohtani (@johtani) February 5, 2019
ちょっとは参考になる話ができたかなぁ? #NoOpsJP
— Jun Ohtani (@johtani) February 5, 2019
あー。オブザバビリティって軸でちょっと違うこと考えてみるか
— Jun Ohtani (@johtani) February 5, 2019