Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
rasai
Advisor
Advisor

はじめに

本ブログはSAP Cloud Logging Service(CLS)に触れたことがないがBTPにはある程度慣れているエンジニア向けにCLSを紹介します。特に本ブログでは、CLSの機能のうちでもCloud Foundryに関する機能を中心に紹介します。

本ブログで紹介されている内容は2023/12/23時点の内容です。CLSは2023/12にリリースされたばかりの製品であるために、ブログで紹介される内容以外の機能などもブログリリース後に順次追加されている可能性があります。詳しくはWhat's New for SAP Business Technology Platformなどをご確認ください。


SAP Cloud Logging Serviceとは

CLSはOpenSearchをベースに用意されたBTPのCloud FoundryやKyma向けのオブザーバビリティサービスです。OpeanSearchはElasticsearchからforkしたソフトウェアであるために、どちらもKibanaダッシュボードでログやメトリクスを監視できます。これはOpenSearchを利用するCLSもElasticsearchを利用するSAP Application Logging Service(ALS)と同様の見た目のダッシュボードを提供することを意味します。これにより、既存のALSユーザも特別なトレーニングなどなしにCLSのダッシュボードを操作可能です。

CLSはALSに比べ、多くの機能が追加されています。例えば、閾値を設定してトリガーさせる通知ランダムカットフォレスト(RCF)を利用した異常検知、ダッシュボードのカスタムやログの保管期間設定などの機能がCLSには追加されています。通知機能はSAP Alert Notifiation Serviceなどの他サービスとの連携も可能です。ログの保管期間は最大で90日間です。

 

Cloud Logging Serviceのはじめかた

CLSのサービスインスタンスを作成し、作成したインスタンスに対して各アプリケーションからログやメトリクスを転送できるように設定します。CLS操作のためのユーザ管理の観点から、サービスインスタンス作成時にはSAP Identity Authentication(IAS)を連携することが推奨されます。しかしIASを連携せずに(IdPなどを使ってCLSに対して外部ユーザを連携なしに)CLSを使用開始することも可能です。

作成したCLSのインスタンスにログを転送するには、ログをCLSのインスタンスのAPIに投げ込む必要があります。ログをCLSのAPIに転送するにはsyslog drainの仕組みを利用するか、CLSのAPIに対応するログライブラリ(Java / NodeJS)を使用します。

CLSのインスタンスにメトリクスを転送するには、Telegrafもしくは Spring Boot Actuatorを利用します。

 

Cloud Logging Serviceの導入手順の紹介

本ブログでは以下のパターンのCLS導入手順を紹介します。このパターンはALSからCLSに移行する際に最もシンプルに(少ない労力で)完結できるパターンです。

 

紹介パターン
    • IASを使用しないCLSのインスタンス

    • syslog drainを利用したアプリケーションログの転送

前提条件
    • CLSのEntitlementが作業対象のサブアカウントに割り当てられていること

    • Cloud Foundryが有効化され、ログを監視するアプリケーションが既にあること

    • cf cliを使用可能な環境があること

 

手順1. CLSインスタンスの作成

cf create-service cloud-logging <service-plan> <instance_name>を実行し、CLSのインスタンスを作成します。このときservice-planにはdevstandardおよびlargeの3つの選択肢があります。それぞれの詳細はdiscovery centerをご参照ください。一度インスタンス作成した後のプラン変更はできません。このコマンド実行時にログの保管期間(retention period)なども設定可能です。例えば、以下のように設定します。

cf create-service cls-trial standard cloud-logging -c '{
  "retention_period": 14,
  "backend": {
    "max_data_nodes": 10,
    "api_enabled": false
  },
  "ingest": {
    "max_instances": 10
  },
  "saml": {
    "enabled": false
  }
}'
 
手順2. サービスキーの作成

cf create-service-key <service-instance> <service-key>を実行し、サービスキーを生成します。作成したキーの内容はcf service-key <service-instance> <service-key>で確認します。例えば、以下のように実行します。

cf create-service-key cls-trial cls-key
cf service-key cls-trial cls-key Getting key cls-key for service instance cls-trial as <logged-in user>... {   "backend-endpoint": "backend-sf-xxxxxxxx-416c-4524-b361-xxxxxxxxxxxx.cls-02....ondemand.com",   "backend-password": "XXXXXXXXXXXXXX",   "backend-username": "openDistro_a2d4be37-1f7f-4568-896b-xxxxxxxxxxxx",   "ingest-endpoint": "ingest-sf-xxxxxxxx-416c-4524-b361-xxxxxxxxxxxx.cls-02....ondemand.com",   "ingest-password": "XXXXXXXXXXXXXX",   "ingest-username": "XXXXXXXXXXXXXX",   "dashboards-endpoint": "dashboards-sf-xxxxxxxx-416c-4524-b361-xxxxxxxxxxxx.cls-02....ondemand.com",   "dashboards-password": "XXXXXXXXXXXXXX",   "dashboards-username": "openDistro_a2d4be37-1f7f-4568-896b-xxxxxxxxxxxx",   "ingest-mtls-endpoint": "ingest-mtls-sf-xxxxxxxx-416c-4524-b361-xxxxxxxxxxxx.cls-02....ondemand.com",   "ingest-mtls-cert": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----",   "ingest-mtls-key": "-----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----",   "ingest-mtls-client-ca": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----", }
 
手順3. syslog drainの設定

cf create-user-provided-service <user-provided-service-name> -l https://<ingest-username>:<ingest-password>@<ingest-endpoint>/cfsyslogを実行し、syslog drainよりログ転送できるように設定します。

 

手順4. syslog drainとアプリケーションの結び付け

cf bind-service <app-name> <service-instance>を実行し、作成したsyslog drainの設定を用いてアプリケーションよりログ転送できるようにします。

 

補足

syslog drainではなくライブラリからのログ転送を利用する場合、手順2でサービスキーを作成した代わりにアプリケーションに直接CLSのインスタンスをバインドします。これにより、アプリケーションの環境変数にendpointやuser name、passwordの情報が格納されるため、ログ転送ライブラリが作成したCLSインスタンスにログ転送可能です。

 

おわりに

本ブログではCLSの概要とCLSを利用する手順の一例を紹介しました。より詳細な情報は公式Helpページなどをご参照ください。本ブログでは大きく割愛しましたが、CLSはOpenTelemetoryを使って監視にオブザーバビリティを導入することも可能です。また、何かご質問があればSAPの日本語コミュニティページなどに投稿してください。

CLSとよいSAP開発ライフを!

 

 

1 Comment
kaori_oiwa
Explorer
0 Kudos

@rasai 様

ブログ記事拝読させていただきました。
弊社のデモ環境を使って検証し、従来のALSで利用出来ていた機能がCLSにも実装されていることまでは確認できました。

CLSからの追加機能について質問させていただきたいのですが、
BTP内のアプリケーション以外のサービス(例:HANA CloudやWorkflow等)のログも
CLSに集約してエラー時に通知するようなことは可能でしょうか?
(ブログ内に「通知機能はSAP Alert Notifiation Serviceなどの他サービスとの連携も可能」という記載がありましたが
連携の方向がSAP Alert Notifiation Service→CLS、CLS→SAP Alert Notifiation Serviceのどちらなのか分からなかったため)

現在アプリケーションのログをALSで、サービスログをSAP Alert Notifiation Serviceで管理しているので
それがCLSに一元化できるのであればメリットがあると感じております。
ご回答のほどよろしくお願いいたします。