
前回のブログでは、ロギングフレームワークの導入方法と、Cloud Logging Service(CLS)へのアプリケーションログの収集について解説しました(前回のブログは後述のリンクを参照)。
今回は実践編その2として、メトリクスデータの監視方法についてご紹介させていただきます。
SAP Cloud Logging Service 関連ブログ
CLS関連のブログを以下の通り掲載しております。目的に応じてご参照ください。
- 【SAP BTP】新サービス「SAP Cloud Logging Service」を使ってみた
- 【SAP BTP】SAP Cloud Logging Service実践編 その1:アプリケーションログ収集の応用
- 【SAP BTP】SAP Cloud Logging Service実践編 その2:メトリクス監視してみよう(本記事)
- 【SAP BTP】SAP Cloud Logging Service実践編 その3:収集したデータを分析・ログを一元管理してみよう
前提条件

全体構成やCLSの構築については「【SAP BTP】新サービス「SAP Cloud Logging Service」を使ってみた」で解説した通りです。実践編では主に以下のポイントで解説します。
・ロギングフレームワークと組み合わせたログ出力とCLSへの送信(実践編その1で解説)
・OpenTelemetryを使用したメトリクスデータの収集(本記事で解説 ※上図の赤枠部分)
・ダッシュボードやアラート機能を使用したデータ活用(実践編その3で解説)
OpenTelemetryの導入とメトリクス収集
CLSでは、Telegraf、Spring Boot Actuator、OpenTelemetry等を利用してメトリクスデータを監視することができます。今回はOpenTelemetryを使った導入手順をご紹介します。
※Telegrafを使用した導入手順はSAPブログを参照
メトリクスとは
メトリクスとは、システムの実行時に取得されたサービスの測定値のことで、CPU稼働率、メモリ使用率、サービスのリクエスト数などがこれに含まれます。
これらのメトリクスデータを収集することでシステムのデータを可視化し、システム内で生じている問題の特定と解決に必要な時間を短縮することが可能です。
OpenTelemetryとは
OpenTelemetryとは、テレメトリデータと呼ばれる独自形式のデータを作成、収集、管理するためのオープンソースのツールでCloud Native Computing Foundation(CNCF)によって開発されました。
テレメトリデータにはトレース、メトリクス、ログが含まれており、システム内部状態の可視化に活用することができます。
OpenTelemetryを利用する利点は、多くのプログラミング言語に対応している、収集されるデータがテレメトリデータとして統一されていることでシステムの変更に適応できるなどがあります。
データ | 詳細 |
---|---|
トレース | 個々の処理を表すスパンによって構成されたデータ構造 |
メトリクス | 処理実行時に取得される、システムの状態を表す測定値 |
ログ | 処理実行時に発生したイベントやエラーに関する記録 |
設定手順
CLSインスタンス設定の確認
BTP CockpitにあるCLSのインスタンス設定で、「ingest-otlp」を有効にしているか確認します。


※有効でない場合、以下①~④の手順で「ingest-otlp」を有効化およびサービスキー作成とアプリケーションバインドを再度設定する必要があります
①インスタンスの「ingest-otlp」を有効化します。


②サービスキーを作成します。


③アプリケーションバインドを削除し、再度作成します。

④インスタンスの「View Credentials」をクリックします。

次の情報が生成されていることを確認します。
・ingest-otlp-cert
・ingest-otlp-endpoint
・ingest-otlp-key
・server-ca



OpenTelemetry Agentを導入しデプロイ
対象アプリケーションにOpenTelemetry Agentを導入するため一部のプログラムファイルを修正します。
① pom.xmlに追加します。
<dependency>
<groupId>com.sap.hcp.cf.logging</groupId>
<artifactId>cf-java-logging-support-opentelemetry-agent-extension</artifactId>
<version>3.8.2</version>
</dependency>
② mta.yamlを修正します。
構成プロパティを追加します。
1.JBP_CONFIG_JAVA_OPT: {OpenTelemetry Agent実行用コマンド(バージョンはpom.xmlで指定しているバージョンに合わせます)}
2. OTEL_METRICS_EXPORTER:otlp
3. OTEL_TRACES_EXPORTER:otlp
- name: startprj_cap
type: java
path: startprjCap
properties:
SPRING_PROFILES_ACTIVE: develop
JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']"
JBP_CONFIG_SAP_MACHINE_JRE: '{ use_offline_repository: false, version: 17.+ }'
JBP_CONFIG_JAVA_OPTS: "[from_environment: false, java_opts: '-javaagent:META-INF/.sap_java_buildpack/otel_agent/opentelemetry-javaagent.jar -Dotel.javaagent.extensions=BOOT-INF/lib/cf-java-logging-support-opentelemetry-agent-extension-3.8.2.jar']"
OTEL_METRICS_EXPORTER: otlp
OTEL_TRACES_EXPORTER: otlp
CLSの設定箇所にingest_otlpを設定し、Open Telemetry経由でのメトリクス収集を有効化します。
- name: startprj-cloud-logging-service
type: org.cloudfoundry.managed-service
parameters:
service-name: cls-test
service: cloud-logging
service-plan: dev
config:
ingest_otlp:
enabled: true
③ 対象アプリケーションをデプロイします。
// 1.プログラムを実行可能なアプリケーションにパッケージ化
mbt build
// 2.対象の環境にログイン
cf login -a [APIエンドポイント(例:https://api.example.com)]
// 3. 1で生成された.mtarファイルをデプロイする
cf deploy mta_archives/startprjCap_0.0.1.mtar
出力確認
OpenSearchにアクセスし、収集されたデータを確認します。
タイトルに「OTel」がついたデータがDashboardsやVisualizeに追加されます。


OpenTelemetryによって生成されたダッシュボードと各データの概要
1)Otel Span and Logs
SAP管理下のサーバースパン(リクエスト)とログの間の相関関係を示したダッシュボード
データ | 詳細 |
---|---|
Server Spans | サーバー側のDuration情報 |
Logs | Otel経由で出力されたアプリケーションログ |

2)[Otel] JVM Metrics
OpenTelemetry経由で取り込まれたJVMメトリクスを示したダッシュボード
データ | 詳細 |
---|---|
Memory | JVMで計測されたメモリの使用量 |
Garbage Collection | JVMで計測されたGarbage Collectionの発生件数(件数、時間) |
CPU | JVMで計測されたCPU稼働率 |
Classes | JVMで計測されたロード/非ロードのクラス数 |
Threads | JVMで計測された実行されているプラットフォーム上のスレッド数 |

3)[Otel] Metrics Explorer
OpenTelemetry経由で取り込まれたメトリクスデータを示したダッシュボード
データポイントの概要を提供し、様々なフィルタリングが可能です。
データ | 詳細 |
---|---|
Raw Data | システムの状態の計測に使用された元データ |
Gauge Preview | ある時点でのシステムの状態を計測した値(CPU使用率、温度など) |
Sums Preview | 一定期間に計測されたシステムの状態の累積合計値と変化率 |

最後に
いかがでしたでしょうか?
本記事ではSAP Cloud Logging Serviceの実践編②として、OpenTelemetryを利用したメトリクスの取得方法を解説させていただきました。私自身メトリクスデータを扱うのは今回が初めてでしたが、メトリクスデータをうまく活用することでアプリケーションの改善や、問題の原因特定が可能となります。SAP Cloud Logging ServiceとOpenTelemetryを使用したメトリクス収集方法についても、情報が少なかったため参考になれば幸いです。
次回は実践編③として収集したデータの活用について解説します。
投稿者プロフィール

-
2023年より新卒入社、
主にVue.js、Java(SpringBoot)、 AWSを使用した開発を行っています。
最近ではSAPサービスを使用した開発にも取り組んでいます。