ブログ

【SAP BTP】SAP Cloud Logging Service実践編 その2:メトリクス監視してみよう

この記事をSNSでシェア!

前回のブログでは、ロギングフレームワークの導入方法と、Cloud Logging Service(CLS)へのアプリケーションログの収集について解説しました(前回のブログは後述のリンクを参照)。

今回は実践編その2として、メトリクスデータの監視方法についてご紹介させていただきます。

SAP Cloud Logging Service 関連ブログ

CLS関連のブログを以下の通り掲載しております。目的に応じてご参照ください。

  1. 【SAP BTP】新サービス「SAP Cloud Logging Service」を使ってみた
  2. 【SAP BTP】SAP Cloud Logging Service実践編 その1:アプリケーションログ収集の応用
  3. 【SAP BTP】SAP Cloud Logging Service実践編 その2:メトリクス監視してみよう(本記事
  4. 【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に追加します。

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

YAML
- 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経由でのメトリクス収集を有効化します。

YAML
- 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」がついたデータがDashboardsVisualizeに追加されます。

 


OpenTelemetryによって生成されたダッシュボードと各データの概要

1)Otel Span and Logs
SAP管理下のサーバースパン(リクエスト)とログの間の相関関係を示したダッシュボード

データ詳細
Server Spansサーバー側のDuration情報
LogsOtel経由で出力されたアプリケーションログ

 

 

2)[Otel] JVM Metrics
OpenTelemetry経由で取り込まれたJVMメトリクスを示したダッシュボード

データ詳細
MemoryJVMで計測されたメモリの使用量
Garbage CollectionJVMで計測されたGarbage Collectionの発生件数(件数、時間)
CPUJVMで計測されたCPU稼働率
ClassesJVMで計測されたロード/非ロードのクラス数
ThreadsJVMで計測された実行されているプラットフォーム上のスレッド数

 

 

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サービスを使用した開発にも取り組んでいます。
この記事をSNSでシェア!