Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゼロコードで実現! - OpenTelemetryとOCI APM Agentによる簡単アプリ...

ゼロコードで実現! - OpenTelemetryとOCI APM Agentによる簡単アプリケーション監視 - / Zero-Code Observability with OpenTelemetry and OCI APM

Avatar for oracle4engineer

oracle4engineer

May 24, 2025
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Introduction Takuya Niita Principal Cloud Engineer Oracle Corporation Japan 2

    Copyright © 2025, Oracle and/or its affiliates • 日本オラクル株式会社 ソリューションアーキテクト部 • AppDev/Container/FaaS/(a little)ML…(GPU) • Oracle Cloud Hangout Café メンバー • Oracle Groundbreakers Advocate • 前職はSIer • Oracle歴: 6年 takuya_0301
  2. Agenda Copyright © 2025, Oracle and/or its affiliates 3 3

    OCI APM と OpenTelemetry 2 OpenTelemetry 5 まとめ 4 Mushop によるデモ 1 Observability(監視) はなぜ必要?
  3. Observability = 監視? そもそも監視とは…?? • サービスやアプリケーションの健全性の確認 • 障害やトラブル発生時のトラブルシューティング、原因調査 • キャパシティ分析

    • サービス利用者の行動分析… など技術的側面からビジネス運用に至るまで多岐にわたる分析調査のこと 5 Copyright © 2025, Oracle and/or its affiliates 利用ユーザに影響を与えない=ユーザ体験を損なわないようにすることが目的
  4. よくある監視 = 「何が起きたのか」(過去)の把握 1. サービスの起動状態 • サービスやサーバが動いているかの死活監視 • Ping(ICMP)/HTTPなどでのヘルスチェック 2.

    リソース(CPU/メモリ/ディスク/ネットワーク)の健全性 • CPU使用率、メモリ使用量、ディスク容量、ネットワークトラフィックなど • 閾値(しきい値)ベース 3. ログファイル監視 • エラーログやアクセスログの収集と分析 • キーワードやパターンによるフィルタリング • e.g. Error や Failed などの単語を検索 6 Copyright © 2025, Oracle and/or its affiliates
  5. 「よくある監視」の課題 1. 事前に想定される事象しか検知できない(未知の事象には対応できない) • サーバが落ちる、リソースが枯渇する、エラーが発生する… 2. 症状は見えるが、原因の特定に時間がかかる or 特定が難しい or

    特定できない • リソース指標やヘルスチェック結果により発生した事象を確認は可能 • 「なぜそれが起きたのか?」の特定を大量のログから分析 • 特に分散システムでは、より大量ログから… 3. システムの全体像が見えない • 取得する指標やログからシステムの全体像は掴みにくい • 相互のサービスやコンポーネントの連携や関係がわかりにくい 7 Copyright © 2025, Oracle and/or its affiliates
  6. Observability(可観測性) = Observe(観測する) + Ability(能力) そもそも監視は・・・ ユーザに影響を与えない、ユーザ体験を損なわないようにすることが目的… 1. 「未知」を「既知」に •

    システムを詳細に観測できることで、未知の事象にも対応 2. 因果関係の分析 • リクエストの流れを追跡し、遅延や障害がどこで発生しているかを特定 3. データ駆動(生成AIの活用) • 「なぜこの現象が起きているのか」やその他自由な質問にAIが回答できるデータを収集(=>AIOps) 8 Copyright © 2025, Oracle and/or its affiliates 既に起こったこと(過去)に対する対処や調査分析だけでは不十分 今(現在)起こっていること、これから(未来)起こりそうなことも把握して対処すべき
  7. Observability の最も重要なテレメトリ Metrics • システムのパフォーマンスを測定する定量的な値 Log • システム内で発生した具体的なイベントの記録 Trace •

    リクエストが複数サービスを横断する経路と時間 9 Copyright © 2025, Oracle and/or its affiliates Metrics Trace Log Trace / Log / Metrics 間の相互紐付けが重要
  8. Observability で課題になりやすいこと 10 Copyright © 2025, Oracle and/or its affiliates

    監視対象 監視基盤 管理や実装が煩雑になりがち… 監視基盤A 監視基盤B 監視基盤C
  9. OpenTelemetry テレメトリを収集/生成、エクスポート(転送)するための標準プロトコルとそのツールキット • CNCF(Cloud Native Computing Foundation)プロジェクトであり、OpenTracing と OpenCensus という2つの先行プロジェ

    クトが2019年に統合して誕生 • この2つのプロジェクトでは、実装方式やテレメトリデータを監視基盤に送信する方法が標準化されていな かった • 監視基盤としての機能(テレメトリデータの保存や可視化など)に関する方式はスコープ外 • OpenTelemetry の実装プロダクトに委任 • OpenTelemetry に準拠する製品例 • Grafana Tempo • OCI Application Performance Monitoring • Datadog…. • Amazon X-Ray • Google Cloud Trace • Azure Monitor Application Insights • … 12 Copyright © 2025, Oracle and/or its affiliates
  10. Trace と Metrics の紐付け Trace に紐づくメトリクスの可視化 • Trace には属性 (“Attributes”)

    と呼ばれるKey-Valueのペアをメタデータとして付与可能 • メタデータをもとに関連するメトリクスに遷移可能 • 属性は手動で紐づけることも可能だが、 OpenTelemetry Agent や 関連ライブラリのエージェントが自動で付与するこ ともある エクザンプラー(Exemplar)を利用したメトリクス • メトリクスに付与できる標本のこと • Observability(OpenTelemetry) の文脈では標本として Trace ID やエラーログを付与することが多い • 標本をもとにメトリクスからトレースへ遷移可能 14 Copyright © 2025, Oracle and/or its affiliates 紐付け 紐付け
  11. Trace と Log の紐付け Trace に紐づくログの可視化 • ログメッセージ内に Trace ID

    を埋め込み • ログメッセージ内の Trace ID をもとに Trace に遷移可能 • 実装方法は言語に依存(OpenTelemetry により規定) • Java の場合、OpenTelemetry Java Agent と SLF4J/Logback や Log4j2 を利用することで Trace IDを埋め込み 15 Copyright © 2025, Oracle and/or its affiliates 2025-04-10T08:35:42.126660771 traceId: f700955b941efdc6672f66542f90e675 spanId: 5dd4792bad791127 Hello World 紐付け
  12. Database Observability Database の OpenTelemetry を利用した監視 • OpenTelemetry がサブコンポーネントとしてプラグインを提供 •

    https://github.com/open-telemetry/opentelemetry-collector-contrib • ベンダーや製品依存の実装をまとめたレポジトリ • 具体的には以下のプロダクト • Oracle Database • MySQL • PostgreSQL • SQL Server …. • Databaseのエンドポイント/ユーザ名/パスワードを指定し、テレメトリを収集 • JDBC ドライバーの OpenTelemetry Provider を利用した監視も可能 • 実行された SQL ステートメントや DB ユーザなどを取得可能 • Oracle JDBC Driver の OpenTelemetry Provider もあり 16 Copyright © 2025, Oracle and/or its affiliates
  13. OCI APM と OpenTelemetry Oracle Developer Day 2025 T1-3 17

    Copyright © 2025, Oracle and/or its affiliates
  14. OCI Application Performance Monitoring(APM) OpenTelemetry 対応の可観測性ソリューション 18 Copyright © 2025,

    Oracle and/or its affiliates • 分散トレーシング • トレース・データとしてトランザクション時間やエラー比率など様々な情報が自動的に計測 • ユーザー自身で計測するトレース範囲を指定することも可能 • 用途に応じた様々実装方式 • リアルユーザー・モニタリング • ブラウザのページ・ロードやパフォーマンスを記録 • Java アプリケーション・サーバー・モニタリング • JMX メトリクスに関連する情報を記録 • 可用性モニタリング(合成モニタリング) • 定期的にアプリケーションの稼働状況を調査 Application Performance Monitoring リアルユーザー モニタリング アプリケーション サーバー モニタリング 分散トレーシング 合成モニタリング
  15. OCI Application Performance Monitoring(APM) OpenTelemetry 対応の可観測性ソリューション Application Performance Monitoring リアルユーザー

    モニタリング アプリケーション サーバー モニタリング 分散トレーシング 合成モニタリング • 可用性モニタリング(合成モニタリング) • 定期的にアプリケーションの稼働状況を調査 • 分散トレーシング • トレース・データとしてトランザクション時間やエラー比率など様々な情報が自動的に計測 • ユーザー自身で計測するトレース範囲を指定することも可能 • 用途に応じた様々実装方式 • リアルユーザー・モニタリング • ブラウザのページ・ロードやパフォーマンスを記録 • Java アプリケーション・サーバー・モニタリング • JMX メトリクスに関連する情報を記録 OCI APM Agentを利用する ソリューションにフォーカス…!! 19 Copyright © 2025, Oracle and/or its affiliates
  16. OCI APM Agent( Browser / Java / .NET ) APM

    Browser Agent • ユーザがブラウザで操作したイベント、トレースやパフォーマンスを記録 • フロントエンドアプリケーションに専用のJavaScriptを埋め込むことで実現 APM Java Agent • Javaアプリケーションサーバー(Oracle WebLogic Server/ Spring Boot/Tomcat/Jetty/JBoss Application Server)の トレース や JMX メトリクスを記録 • JMX メトリクスはデフォルトで設定済みのダッシュボードで可視化可能 • javaagentにより実現(=> コード改修不要!!) APM .NET Agent • .NET Framework(4.6.2以上)、.NET 6以上で実装されたアプリケーションのトレースを記録 • Import-Moduleを利用して実現(=> コード改修不要!!) 20 Copyright © 2025, Oracle and/or its affiliates
  17. OCI APM Agent( Browser / Java / .NET ) APM

    .NET Agent • .NET Framework(4.6.2以上)、.NET 6以上で実装されたアプリケーションのトレースを記録 • Import-Moduleを利用して実現(=> コード改修不要!!) 21 Copyright © 2025, Oracle and/or its affiliates APM Browser Agent • ユーザがブラウザで操作したイベント、トレースやパフォーマンスを記録 • フロントエンドアプリケーションに専用のJavaScriptを埋め込むことで実現 APM Java Agent • Javaアプリケーションサーバー(Oracle WebLogic Server/ Spring Boot/Tomcat/Jetty/JBoss Application Server)の トレース や JMX メトリクスを記録 • JMX メトリクスはデフォルトで設定済みのダッシュボードで可視化可能 • javaagentにより実現(=> コード改修不要!!) 今回はここにフォーカス…!!
  18. フロントエンドパフォーマンス監視 with OCI APM APM Browser Agentによるリアルユーザーモニタリング • ページビュー、ユーザーセッション、Apdex※スコア、利用デバイス/ブラウザ/OS などを可視化

    • カスタム属性を構成することにより、独自メトリクスのモニタリングも可能 ※:Webアプリケーションやサービスのユーザー満足度を測るための、業界標準の指標 22 Copyright © 2025, Oracle and/or its affiliates
  19. Trace と Metrics の相関関係 with OCI APM トレースから JMX メトリクスへの遷移

    • ヒープ使用量、GC(ガベージコレクション)、CPU使用率などのメトリクス情報を可視化 23 Copyright © 2025, Oracle and/or its affiliates トレースの詳細からワンクリック 該当のAPサーバの JMX メトリクス
  20. Trace と Log の相関関係 with OCI APM トレース ID やスパン

    ID をもとにトレース ID からログへの遷移 • 特定のトレースに紐づいたログのみを可視化(事前設定※が必須) ※https://docs.oracle.com/ja-jp/iaas/application-performance-monitoring/doc/configure-drilldown-configurations.html 24 Copyright © 2025, Oracle and/or its affiliates トレースの詳細からワンクリック 該当のトレースIDに紐づくログ
  21. Database Observability with OCI APM JDBC Driver のトレース 25 Copyright

    © 2025, Oracle and/or its affiliates JDBC スパンをクリック JDBC に関するメトリクスを確認可能
  22. 【番外編】Database Observability with OCI APM Database Management / Ops Insights

    と トレースとの連携 • トレース から Database Management の Performance Hub およびOps Insights の SQL インサイト機能を利用して SQLパフォーマンスを監視および分析が可能(Oracle Database / HeatWave) • 事前設定が必須※ ※ https://docs.oracle.com/ja-jp/iaas/application-performance-monitoring/doc/configure-drilldown-configurations.html 26 Copyright © 2025, Oracle and/or its affiliates Performance Hub のイメージ トレースの詳細からワンクリック 該当のSQL IDに関するパフォーマンス
  23. MuShop with APM Oracle が公開している Cloud Native アーキテクチャサンプル アプリケーション “MuShop”

    • OCI の主要サービスを組み合わせることで、スケーラブル かつ疎結合なサンプル EC サイト • OKEでのアプリケーション管理、API Gateway による サービス公開、OCI Functions を活用したサーバーレス 処理など多彩な OCI のサービスを利用 • 各サービスが独立して動作するため、スケーラビリティや 拡張性が高い • MuShop の商品購入シナリオをもとに Observability を OCI APM で実践…!! 28 Copyright © 2025, Oracle and/or its affiliates
  24. まとめ 監視(Observability)の本質と既存の監視システムの課題 • 監視(Observability)は、ユーザ体験を損なわないようにすることが目的 • 従来の監視では、想定される事象のみの検知、分散システムでは原因特定が困難、システム全体が把握しづらい • これからの監視は、「過去に起こったこと」だけではなく、「今(現在)起こっていること」、「これから(未来)起 こりそうなこと」も把握して対処すべき OpenTelemetry

    の活用 • テレメトリを収集/生成、エクスポート(転送)するための標準プロトコルとそのツールキット • Metrics / Log / Trace を主要なテレメトリシグナルとして持つ • それぞれのテレメトリは独立して監視するのではなく、相関関係を探ることが重要 OCI APMでの Observability の実践 • OpenTelemetry に準拠したサービスでフロントエンド(ブラウザ)からデータベースまで一貫して監視 • Agentを利用することで、ゼロコードで簡単に Observability 環境を実装 • OCIのデータベース監視サービスを利用すればSQLパフォーマンスの監視や分析も可能 30 Copyright © 2025, Oracle and/or its affiliates
  25. 参考情報 OpenTelemetry • 公式ドキュメント • https://opentelemetry.io/ja/ • Oracle Cloud Hangout

    Cafe(OCHaCafe) Season9 #5 • https://speakerdeck.com/oracle4engineer/shi-jian-opentelemetry • Oracle Cloud Hangout Cafe(OCHaCafe) Season4 #6 • https://speakerdeck.com/oracle4engineer/oracle-cloud-hangout-cafe-observabilityzai-ru-men OCI 関連サービス群 APM: https://www.oracle.com/jp/manageability/application-performance-monitoring/ Database Management: https://www.oracle.com/jp/manageability/database-management/ Logging Analytics: https://www.oracle.com/jp/manageability/logging-analytics/ Operation Insight: https://www.oracle.com/jp/manageability/ops-insights/ APMとOps Insightsの連携: https://blogs.oracle.com/oracle4engineer/post/oci-ops-insights 31 Copyright © 2025, Oracle and/or its affiliates
  26. 32 Copyright © 2025, Oracle and/or its affiliates OCI Cloud

    Native に特化した書籍を発売予定!! 3.ハンズオンで学ぶ OCI Cloud Native 3-1. ハンズオン概要 3-1-1. MuShop について 3-1-2. MuShop のアーキテクチャ 3-1-3. MuShop のサービス 3-1-4. MuShop における自動化 3-1-5. MuShop とオブザーバビリティ 3-2. ハンズオンの準備と実践 3-2-1. OCI Free Trail の取得 3-2-2. MuShop セットアップ準備 3-2-3. 本書専用カスタマイズ MuShop 3-2-4. MuShop の IaC と CI/CD 3-2-4-1. OCI Resource Manager による IaC 3-2-4-2. OCI DevOps による CI/CD 3-2-4-3. MuShop 利用ガイダンス 3-2-4-4. ハンズオン環境の破棄 3-3. MuShop のオブザーバビリティ 3-3-1 メトリクス監視 3-3-2. ログ監視 3-3-3. パフォーマンス監視 2.OCI におけるクラウドネイティブを学ぶ 2-1. OCI とクラウドネイティブ 2-1-1. OCI の概要と特徴、クラウドネイティブサービス 2-1-1-1. OCI の概要と特徴 2-1-1-2. OCI におけるクラウドネイティブとクラウドネイティブサービス 2-2. OCI クラウドネイティブサービス 2-2-1. 開発フレームワーク 2-2-1-1. Helidon 2-2-1-2. Micronaut 2-2-2. アプリケーション実行基盤 2-2-2-1. OCI Kubernetes Engine 2-2-2-2. OCI Container Instances 2-2-2-3. OCI Functions 2-2-3. API管理 2-2-3-1. OCI API Gateway 2-2-4. メッセージング 2-2-4-1. OCI Streaming 2-2-4-2. OCI Queue 2-2-5. 開発・運用管理 2-2-5-1. OCI Resource Manager 2-2-5-2. OCI DevOps 2-2-5-3. OCI Registry 2-2-6. オブザーバビリティ 2-2-6-1. OCI Monitoring 2-2-6-2. OCI Logging 2-2-6-3. OCI Application Performance Monitoring 2-2-7. データベース 2-2-7-1. Autonomous Database 2-2-7-2. OCI データストアアラカルト 1.クラウドネイティブを学ぶ 1-1. クラウドネイティブとは? 1-1-1. クラウドネイティブの定義 1-1-1-1. Cloud Native Computing Foundation(CNCF)について 1-1-1-2. CNCFが定義するクラウドネイティブ 1-1-1-3. NIST が定義するクラウドコンピューティング 1-1-1-4. クラウドネイティブにおける自動化 1-1-1-5. クラウドネイティブを実現する道しるべ 1-1-1-6. クラウドネイティブとは? 1-1-2. DevOps 1-1-2-1. DevOps とは? 1-1-2-2. DevOps を実現する手法 1-1-2-3. コンテナアプリケーション開発 1-1-2-4. CI/CD 1-1-3. マイクロサービス 1-1-3-1. マイクロサービスとは? 1-1-3-2. コンテナアプリケーションとマイクロサービス 1-1-3-3. ビジネス市場とマイクロサービス 1-1-4. Infrastructure as Code 1-1-4-1. Infrastructure as Code とは? 1-1-5. オブザーバビリティ 1-1-5-1. クラウドネイティブにおけるオブザーバビリティ 1-1-5-2. オブザーバビリティを支えるプライマリー・シグナル 1-1-6. データベース 1-1-6-1. クラウドネイティブにおけるデータベース Oracle Cloud Hangout Café メンバー【市川、仁井田、川村、野中】が執筆、古手川(監修) ※上記内容は発売時に変更となる可能性があります。