本ブログはSAP Cloud Logging Service(CLS)に触れたことがないがBTPにはある程度慣れているエンジニア向けにCLSを紹介します。特に本ブログでは、CLSの機能のうちでもCloud Foundryに関する機能を中心に紹介します。
本ブログで紹介されている内容は2023/12/23時点の内容です。CLSは2023/12にリリースされたばかりの製品であるために、ブログで紹介される内容以外の機能などもブログリリース後に順次追加されている可能性があります。詳しくはWhat's New for SAP Business Technology Platformなどをご確認ください。
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日間です。
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を利用します。
本ブログでは以下のパターンのCLS導入手順を紹介します。このパターンはALSからCLSに移行する際に最もシンプルに(少ない労力で)完結できるパターンです。
IASを使用しないCLSのインスタンス
syslog drainを利用したアプリケーションログの転送
CLSのEntitlementが作業対象のサブアカウントに割り当てられていること
Cloud Foundryが有効化され、ログを監視するアプリケーションが既にあること
cf cliを使用可能な環境があること
cf create-service cloud-logging <service-plan> <instance_name>を実行し、CLSのインスタンスを作成します。このときservice-planにはdev、standardおよび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 } }'
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-----", }
cf create-user-provided-service <user-provided-service-name> -l https://<ingest-username>:<ingest-password>@<ingest-endpoint>/cfsyslogを実行し、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開発ライフを!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
6 | |
6 | |
6 |