Technical Articles
SAP CP CF AppとApplication Loggingを使ってみた
SAP CP CF Appから出すログをApplication Loggingを使ってKibanaで見てみました。
仕事の合間にやっているので備忘録レベルです。
設定手順
1. Application Loggingインスタンス作成
CF cliでログインしてApplication Loggingのインスタンスを作成します。
cf login
cf create-service application-logs lite my-application-logs
2. CF App 作成
2.1. Java Project作成
mavenでSAP Cloud SDKのプロジェクトを作成します。
mvn archetype:generate "-DarchetypeGroupId=com.sap.cloud.sdk.archetypes" "-DarchetypeArtifactId=scp-cf-tomee" "-DarchetypeVersion=RELEASE"
途中のプロンプトでは以下を入力。”artifactId”に入力した”log-test”がApplication名です。
- groupId: com.sap.cloud.sdk.log
- artifactId: log-test
- version: 1.0-SNAPSHOT
- package: com.sap.cloud.sdk.log
2.2. Hello World変更
ログ出力部分を少し変えました。ログ出力のメッセージを変え、レベルをdebug, info, warn, errorの4種類出しています。
package com.sap.cloud.sdk.log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(HelloWorldServlet.class);
@Override
protected void doGet( final HttpServletRequest request, final HttpServletResponse response )
throws IOException
{
logger.debug("fukuhara: debug");
logger.info("fukuhara: info");
logger.warn("fukuhara: warn");
logger.error("fukuhara: error");
response.getWriter().write("Hello World!");
}
}
2.3. pom.xml変更
なぜかSAP Cloud SDKはusage-analytics-maven-pluginでよくエラーを起こします。バージョンを3.27から3.25に下げました。↓は一部抜粋
<plugin>
<groupId>com.sap.cloud.sdk.plugins</groupId>
<artifactId>usage-analytics-maven-plugin</artifactId>
<version>3.25.0</version>
<executions>
2.4. manifest.yml変更
env->SET_LOGGING_LEVEVLで、com.sap.cloud.sdkをDEBUGに下げます。
また、先に作ったサービスmy-application-logsをbindします。
---
applications:
- name: log-test
memory: 1024M
timeout: 300
random-route: true
path: application/target/log-test-application.war
buildpacks:
- sap_java_buildpack
env:
TARGET_RUNTIME: tomee7
SET_LOGGING_LEVEL: '{ROOT: INFO, com.sap.cloud.sdk: DEBUG}'
JBP_CONFIG_SAPJVM_MEMORY_SIZES: 'metaspace:128m..'
services:
- my-application-logs
2.5. CFへデプロイ
ビルドとCF cliを使ってCF appへデプロイします。
# プロジェクトルートディレクトリから
cd application && mvn clean package && cd .. && cf push
試してみる
デプロイされたアプリケーションのパス”/hello”ににブラウザからアクセスします。
「Hello World!」が返ってきて成功確認。
SAP Cloud CockpitでApplicationのメニューから「Logs」を選んで「Open Kinaba Dashboard」をクリックします。
Overview画面です。
検証・開発時使えそうなのは「Requests and Logs」のダッシュボードです。Requestが404などでFailしたログも見ることができます。
上の方にある検索窓を使うことで、ログをテキスト検索できます。