275 Views
May 28, 21
スライド概要
Elastic apm overview transforming into cloud native application
https://cloudonair.withgoogle.com/events/google-cloud-day-digital-21?talk=d2-gl-27
クラウド ネイティブへの移行における Elastic APM の概要
クラウド ネイティブ アーキテクチャと数百または数千のマイクロ サービスがユーザー エクスペリエンスを形成する場合、アプリケーション パフォーマンス モニタリング ( APM ) は、現代の組織の成功にとってますます重要になっています。SPA フロントエンドと Google Cloud バックエンドで構成したサンプルアプリを通じて、Elastic APM や Elastic Observability の最新機能の概要をご紹介します。エージェントの設定、ElasticStack へのデータのストリーミング、分散トレース、サービスマップ、機械学習などの機能を是非ご覧ください。
取り上げる主な Google Cloud 製品 / サービス
Cloud Functions
Kubernetes Engine (GKE)
FPT ジャパン エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー Microsoft で13年間、テクニカルエバンジェリストとして .NET、C#、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け技術啓発活動 (DevRel) 。Dell、Accenture、Elastic、VMware 等での DevRel 後、2024年11月1日より現職で DevRel 活動を開始。NVIDIA との戦略的協業 AI GPU クラウド、Azure/AWS/GC 上の AI &データ関連サービスのマーケティング、プリセールス、教育、関連新規サービス開発。元内閣官房 IT 総合戦略室 政府 CIO 補佐官(兼務)、元デジタル庁 ソリューションアーキテクト(兼務)。
クラウド ネイティブへの移⾏における Elastic APM の概要 鈴⽊ 章太郎 Elastic テクニカルプロダクトマーケティングマネージャー/エバンジェリスト 内閣官房 IT 総合戦略室 政府 CIO 補佐官
⾃⼰紹介 鈴⽊ 章太郎 Technical Product Marketing Manager/Evangelist Elastic 2003年マイクロソフト⼊社。公共営業部⾨の担当アーキテクトとして .NET の技術啓発活動に従事。 2006年開発者向けマーケティング部⾨に異動、テクニカルエバンジェリストと して iOS/Android や Microsoft Azure の開発者向け技術啓発活動 を10年にわたり担当。 ⽇本マイクロソフト退社後は、Dell、Accenture 等を経て、2020年6⽉か らは Elastic で開発者向け技術啓発活動に携わる。 内閣官房 IT 総合戦略室 政府 CIO 補佐官。
1. Elastic 概要 アジェンダ 1. クラウド ネイティブ アプリと Observability / APM 1. Elastic on Google Cloud サンプルアプリご紹介 1. まとめ
Elastic 概要
About Elastic Elastic 会社概要 Distributed by design 2012 年設⽴ IPO 2018, NYSE: “ESTC” 40 カ国以上で 2,000 ⼈の従業員 3 億 5,000 万以上のダウンロード、 12,000 以上の企業での採⽤ 世界の #1 データベース検索エンジン (DB-Engines)
3 Solutions, 1 Stack, Deploy Anywhere 3 つのソリューション Elastic エンタープライズサーチ Elastic オブザーバビリティ Elastic セキュリティ 可視化 & 管理 Kibana Elastic スタックで実現 Beats 豊富なデプロイ選択肢 蓄積、検索、分析 Elasticsearch Logstash Elastic Cloud Elastic Cloud Enterprise SaaS (AWS/Azure/GCP) IaaS (クラウド & オンプレ) Elastic Cloud on Kubernetes Kubernetes (クラウド & オンプレ) 収集
事例︓三井住友 DS アセット マネジメント株式会社 アナリストが利⽤する資産運⽤での⾼速情報検索に向け Elasticsearch を導⼊。 35 種類のデータソースを Elasticsearch に集約し、圧倒的な検索パフォーマンスで業務を⽀援 https://www.elastic.co/jp/customers/smd-am
膨⼤なデータ処理とリアルタイム性を要求 される配⾞マッチング検索で Elastic を活⽤ 1 秒あたりのデータ投⼊件数︓ 85 万から 130 万メッセージ 1 ⽇あたりのデータ投⼊量︓ 12 TB 1 秒あたりのドキュメント スキャン︓1 億から 40 億のドキュメント数 データサイズ︓ 1 PB クラスター サイズ︓ 700 台の Elasticsearch インジェスション パイプライン︓100 + Data パイプライン ジョブ 2018 年 4 ⽉の Qcon での Uber 様 講演より https://www.infoq.com/presentations/uber-elasticsearch-clusters/
なぜ Elasticsearch なのか︖ 企業では主にリレーショナル データベースを使⽤してデータを 格納 • • • • テーブルを簡単に結合し必要なデータベースからこのデータを取得できる しかし、時間の経過とともに、データベースとテーブルが肥⼤化して、数百万のデータセットを含む ⼤規模なデータベースになると、操作を実⾏できなくなる ⼀⽅、Elasticsearch は、数百万のドキュメントを数秒で簡単に検索できる Elasticsearch は柔軟で強⼒、オープンでフリーな分散型 リアルタイム検索及び分析エンジン • • • • Elasticsearch はドキュメントベースのデータベースでデータを JSON 形式で保存(⾮正規 化) Elasticsearch は、アプリケーションの強⼒な検索ツールとして使⽤できる インデックス、ドキュメント、フィールド等を作成し、データを Elasticsearch にプッシュで、検索 の準備が整う Elasticsearch の 2 つのユニークで重要な機能 • • • ⽔平スケール ⾼可⽤性 Elasticsearch
Elasticsearch の概念 - インデックス・ドキュメント・フィールド • • • • • • Elasticsearch は分散ドキュメント ストア 保存されるデータの最⼩単位が ドキュメント ドキュメントは、フィールドと呼ばれる 複数の属性を持つ インデックスはドキュメントの集合 Elasticsearch の 概念 具体例 SQL Server, MySQL, postgreSQL 等 インデックス 書籍データが格納 され る場所 テーブル ドキュメント 書籍データ レコード フィールド 書籍タイトル、著者、 ISBN、出版⽇、等 カラム RESTful Web サービスの設計原則に従って設計 HTTP メソッドを使って CRUD による⼀通りのドキュメント操作が可能 https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
CQRS(コマンドクエリー責任分離)との関係 • • 「コマンド クエリ責務分離 (CQRS)パターンは、データ ストアの読み取り操作と更新操作を分離します。 アプリケーション内に CQRS を実装すると、そのパフォーマンス、スケーラビリティ、セキュリティが最⼤化される場合があります。 CQRS への移⾏によって⽣ まれる柔軟性により、システムは時間の経過と共にさらに進化し、更新コマンドでドメインレベルのマージ競合が発⽣することを防ぐこと ができます。」 Elasticsearch はこのアーキテクチャに極めて整合性⾼い Cloud Function https://docs.microsoft.com/ja-jp/azure/architecture/patterns/cqrs
⽇本語のサジェスト機能を実装する際の課題と Elasticsearch を使⽤してこれらの課題を克服する⽅法 https://www.elastic.co/jp/blog/implementing-japanese-autocomplete-suggestions-in-elasticsearch … ⽇本語のサジェストの例 詳細な説明に⼊る前に、⽇本語のサジェスト機能の実装例を⾒ てみましょう。 主な要件 •ユーザーが検索キーワードを⼊⼒すると、関連する候補が表⽰さ れる。例︓「⽇本」と⼊⼒すると、「⽇本」、「⽇本 地図」、「⽇本 ⼈⼝」などが提案される。 •不完全な検索キーワードを⼊⼒した場合でも、関連する候補が 表⽰される。例︓「にほn」と⼊⼒すると、「⽇本」、「⽇本 地図」、 「⽇本の⼈⼝」などが提案される。 •タイプミスした場合でも、意味の通る候補が提案される。例︓「に hん」、「にっほん」、「⽇本ん」と⼊⼒すると、「⽇本」、「⽇本 地 図」、「⽇本の⼈⼝」などが表⽰される。 •候補となる単語が、キーワードが検索された回数が多い順に⼀ 覧表⽰される。 ...
無料かつオープンな アプリケーションパフォーマンス監視 https://www.elastic.co/jp/apm https://www.elastic.co/guide/en/apm/agent/rum-js/5.x/react-integration.html
今回のデモアプリの全体像 Mobile App Flutter App プロジェクト Cloud Functions Firebase Firestore Dart Elastic Client Kubernetes Engine https://google-cloud-daydigital-2021.es.asianortheast1.gcp.cloud.es.io: 9243 Filebeat VSCode Web (SPA) App https://(URL)/ Reactive Search Client Elastic APM Agent MySQL Metricbeat Elastic Cloud northeast1-b リージョン マスターノード x 1 データノード x 2 ML ノード x 1
クラウド ネイティブ アプリと Observability / APM
ソフトウェアの開発⽅法とデリバリーは常に進化 CI / CD サーバレス コンテナ オーケストレーション マイクロ サービス クラウド
Kubernetes の課題 Dev Ops Infrastructure
Kubernetes の課題 Containe r Runtime
現状 ー 典型的なオブザーバビリティのツール群 運用: ログ監視 ログツール ウェブログ アプリログ データベース ログ コンテナログ 運用: 開発チーム インフラ監視 メトリック ツール コンテナ指標 ホスト指標 データベース指標 ネットワーク指標 ストレージ指標 APM ツール リアルユーザー監視 トランザクション パフォーマンス監視 分散トレーシング 運用: サービス監視 アップタイム ツール 可動性 応答時間 ビジネス チーム ビジネスツール ビジネス KPI
Elastic のオブザーバビリティへのアプローチ 開発、運用、ビジネスチーム ログデータ 指標データ APM データ アップタイム ビジネス データ ータ 全ての運用にまつわるデータを、 一つの強力なデータストアに集約 - Elasticsearch デ
Elastic の Observability へのアプローチ ログ、指標、トレースを1つのチャートで見る
Elastic on Google Cloud サンプルアプリご紹介
Elastic と Google Cloud を用いた オブザーバビリティ(可観測性) 参考アーキテクチャ Serverless Cloud Function App Engine Filebeat or Functionbeat Elastic Cloud Cloud Pub/Sub Others Operations Compute Engine Kubernetes Engine Filebeat Logstash Cloud Storage Filebeat or Functionbeat Custom Logs VPC Flow Logs
今回のデモアプリの全体像 Mobile App Flutter App プロジェクト Cloud Functions Firebase Firestore Dart Elastic Client Kubernetes Engine https://google-cloud-daydigital-2021.es.asianortheast1.gcp.cloud.es.io: 9243 Filebeat VSCode Web (SPA) App https://(URL)/ Reactive Search Client Elastic APM Agent MySQL Metricbeat Elastic Cloud northeast1-b リージョン マスターノード x 1 データノード x 2 ML ノード x 1
Kubernetes に Elastic Observability を適用したサンプル MySQL APM packetbeat metricbeat filebeat Elastic Search Service (Elastic Cloud) or Google Kubernetes Engine Elastic Cloud on Kubernetes (ECK)
Elastic Observability on Google Cloud の運用 • • • • • • ハイブリッド環境:特定クラウドに依存しない 長期ログ保管: 容量無制限 Kibana を使った豊富なダッシュボードと分析 すぐ使えるダッシュボード セキュリティ分析のための ECS & SIEM UI オブザーバビリティ(可観測性) ‒ • • ログ、メトリック、APM、アップタイム 豊富で強力なアラート 機械学習
Google Cloud 用モジュール Filebeat Google Cloud モジュール https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-modulegooglecloud.html • • • • 監査ログ VPC フローログ ファイアウォール ログ Stackdriver から Google Pub/Sub トピックシンクにエクスポート Filebeat Google Pub-Sub Input https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-input-googlepubsub.html Google Cloud Pub / Sub トピックからメッセージを読む Metricbeat Google Cloud Platform モジュール https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modulegooglecloud.html
Kubernetes のログを収集 Deployment options Node 1 Node 2 Node n Filebeat Filebeat Filebeat Filebeat DaemonSet
Kubernetes ログの集約
./filebeat modules enable kubernetes
-
クラスター レベルのログ
サービスレベルのログ (例:nginxのログ)
-
-
Auto-discovery
processors:
- add_kubernetes_metadata:
host: <host_name>
kube_config: ${HOME}/.kube/config
アプリのログ
全てコンテナのログを tail
add_kubernetes_metadata でログをエンリッチ
各イベントは下記の情報が追加される
-
Pod Name
Pod UID
Namespace
Labels
Kubernetes のメトリックスを収集 Deployment options Node 1 Node 2 Node n Metricbeat Metricbeat Metricbeat Metricbeat DaemonSet
Kubernetes メトリックスの集約 ./metricbeat modules enable kubernetes - Kubernetes モジュール pod と service の監視 - - メトリックスのソース - - Cluster、 pod、 container のメトリックス Auto-discovery によるアプリ メトリックス Kubelet (heapster, cAdvisor) kube-state-metrics apiserver controller-manager scheduler proxy Prometheus module (beta) 一元的な Kibana UI
Metricbeat Autodiscover ひとつ残らず集める - コンテナ上でアプリを実行していると、 監視対象が動的になる Autodiscover により、設定の変化にも 柔軟に対応可能になる Template を指定する事で autodiscover はコンテナの起動から監視を関しできる Node 1 Logs Nginx Metrics Elasticsearch
ヒントベース auto-discovery
-
Metricbeat はヒントを元にコンテナから
取得すべき情報を判断する
設定も自動で反映
-
-
Logs, Metrics, Modules
次の文字列で始まる Pod の annotation
か Docker ラベルを元に hint を探す
co.elastic.metrics
-
9 種類のヒント
-
co.elastic.metrics/module
co.elastic.metrics/hosts
co.elastic.metrics/metricsets
co.elastic.metrics/raw
...
metricbeat.autodiscover:
providers:
- type: kubernetes
hints.enabled: true
annotations:
co.elastic.metrics/module: prometheus
co.elastic.metrics/metricsets: collector
co.elastic.metrics/hosts: '${data.host}:9090'
co.elastic.metrics/period: 1m
機械学習 (Machine Learning) データの異常や外れ値を見つけたり、傾向に基づいて予測 • ボタンをクリックするだけのシンプルな操作で、Elasticsearch のデータか ら 新しいインサイトを抽出 • 限りなく運用性にすぐれた 機械学習 • Elasticsearch と Kibana で直接、簡単に使えるよう設計 簡単にメタデータを補足 異常と外れ値を、瞬時に検 出 教師あり機械学習を手軽に運用
Elastic APM APM は Elastic Stack に エンドユーザー体験とアプリケ ーション レベルの監視を追加 • APM データの上での検索体験を重視 • Elastic Stack の「もう一つのインデック ス」 対応言語 ● Python ● Java ● Node.js ● Go ● Ruby ● .NET ● RUM ● PHP
一カ所での全般的オブザーバビリティ(可観測性) エンドユーザーの体験とアプリケーション レベルの監視をスタックに追加 RUM
分散トレーシング 複数サービス間でのトレースとマッピング • エンドツーエンドの表示を確認し 個々のトランザクションに移動 • サービス間のエンドツーエンドの トレース ID の概念に依拠 • Open Tracing API との互換性 • W3C トレースコンテキスト仕様 との整合性
まとめ
まとめ • • • • • • • • • • • Elastic 概要 クラウドネイティブ アプリと Observability/APM Elastic on Google Cloud サンプルアプリご紹介 Elastic Stack へのデータストリーミング Kubernetes File Beat, Metric Beat, APM Agent APM Agent 設定 分散トレース サービスマップ 機械学習 まとめ
リソース 公式ドキュメント https://www.elastic.co/guide/index.html Elastic APM Agent https://www.elastic.co/guide/en/apm/agent/index.html Reactivesearch https://opensource.appbase.io/reactivesearch/ 優れた React 検索エクスペリエンスを迅速に構築する方法 https://www.elastic.co/jp/blog/how-to-build-great-react-search-experiences-quickly GKE サンプルソリューション GitHub レポジトリ https://github.com/michaelhyatt/k8s-o11y-workshop 関連ブログ https://www.elastic.co/jp/blog/kubernetes-observability-tutorial-k8s-cluster-setup-demo-app-deployment https://www.elastic.co/blog/kubernetes-observability-tutorial-k8s-log-monitoring-and-analysis-elastic-stack https://www.elastic.co/blog/kubernetes-observability-tutorial-k8s-metrics-collection-and-analysis https://www.elastic.co/blog/kubernetes-observability-tutorial-k8s-monitoring-application-performance-with-elasticapm
アプリケーション開発 オンデマンド ウェビナー特集 • Elastic の Search API を Visual Studio Code でコーディングする (1) - (3) • Elastic Cloud で Azure Kubernetes Serviecs の様々な Log/Metrics/APM を 可視化する • ASP.NET Core 3.x Web アプリのログを Elastic Cloud で収集・分析してみよう︕ https://www.microsoft.com/ja-jp/events/top/apps-innovation-webinars.aspx
Thank you for your attention!