Application Insights を使用するように Spring Boot Initializer アプリを構成するConfigure a Spring Boot Initializer app to use Application Insights

この記事では、 Spring Initializr を使用して Spring Boot アプリケーションを作成する方法について説明します。This article walks you through creating a Spring Boot application using Spring Initializr. これにより、Azure Application Insights Spring Boot Starter を使用してクラウド上の Java アプリケーションをエンドツーエンドで監視します。It uses Azure Application Insights Spring Boot Starter for end-to-end monitoring of Java applications on cloud.

前提条件Prerequisites

この記事の手順を実行するには、次の前提条件を満たす必要があります。The following prerequisites are required in order to complete the steps in this article:

  • Azure サブスクリプション。An Azure subscription. Azure サブスクリプションをまだお持ちでない場合は、MSDN サブスクライバーの特典を有効にするか、無料の Azure アカウントにサインアップしてください。If you don't already have an Azure subscription, you can activate your MSDN subscriber benefits or sign up for a free Azure account.
  • サポートされている Java Development Kit (JDK)。A supported Java Development Kit (JDK). Azure での開発時に使用可能な JDK の詳細については、https://aka.ms/azure-jdks を参照してください。For more information about the JDKs available for use when developing on Azure, see https://aka.ms/azure-jdks.
  • Apache Maven バージョン 3.0 以降。Apache Maven, version 3.0 or later.
  • 現在、Application Insights Spring Boot スターターでは、Web Flux と Netty API はサポートされていませんWeb Flux and Netty APIs are not currently supported with the Application Insights Spring Boot starter.

Spring Initializr を使用してカスタム アプリケーションを作成するCreate a custom application using Spring Initializr

  1. https://start.spring.io/ を参照します。Browse to https://start.spring.io/.

  2. JavaMaven プロジェクトを生成するように指定し、自分のアプリケーションのグループアーティファクトの名前を入力して、依存関係セクションで Web 依存関係を選択します。Specify that you want to generate a Maven project with Java, enter the Group and Artifact names for your application, and then select web dependency in the dependencies section.

    基本的な Spring Initializr オプション

    注意

    Spring Initializr では、グループアーティファクトの名前を使用してパッケージ名を作成します (例: com.example.demo)。Spring Initializr will use the Group and Artifact names to create the package name; for example: com.example.demo.

  3. ボタンをクリックして、プロジェクトを生成します。Click the button to Generate Project.

  4. メッセージが表示されたら、ローカル コンピューター上のパスにプロジェクトをダウンロードします。When prompted, download the project to a path on your local computer.

  5. ファイルをローカル システム上に展開したら、カスタム Spring Boot アプリケーションの編集を開始できます。After you have extracted the files on your local system, your custom Spring Boot application will be ready for editing.

    カスタム Spring Boot プロジェクト ファイル

Azure で Application Insights のリソースを作成するCreate an Application Insights Resource on Azure

  1. https://portal.azure.com/ で Azure を参照し、 [+新規] をクリックします。Browse to Azure at https://portal.azure.com/ and click +New.

    Azure

  2. 管理ツールApplication Insights の順にクリックします。Click Management Tools, and then click Application Insights.

    Azure

  3. [Application Insights の新しい リソース] ページで、以下の情報を指定します。On the New Application Insights Resource page, specify the following information:

    • Application Insights のリソースの名前を入力してください。Enter the Name for your Application Insights resource.
    • [アプリケーションの種類] として [Java Web アプリケーション] を選択します。Choose the Application Type to Java Web Application.
    • [サブスクリプション][リソース グループ][場所] を指定します。Specify your Subscription, Resource group and Location.
    • リソースを Azure にピン留めしたい場合は、[ダッシュボードにピン留めする] オプションを選択します。Select Pin to dashboard option, if you would like to pin the resource on your Azure.

    これらのオプションを指定したら、 [作成] をクリックして Application Insights リソースを作成します。When you have specified these options, click Create to create your Application Insights resource.

    Azure

  4. リソースが作成されると、Azure のダッシュボードの他、 [すべてのリソース] ページにも表示されます。Once your resource has been created, you will see it listed on your Azure Dashboard, as well as under the All Resources pages. それらの場所のいずれかでリソースをクリックすると、Application Insights リソースの概要ページを開くことができます。You can click on your resource on any of those locations to open the overview page of the Application Insights resource. この概要ページから、インストルメンテーション キーをコピーしてください。From this overview page please copy the instrumentation key.

    Azure

Application Insights を使用するように、ダウンロードした Spring Boot Initializer を構成するConfigure your downloaded Spring Boot Application to use Application Insights

  1. アプリのルート ディレクトリで POM.xml ファイルを見つけ、dependencies セクションに次の依存関係を追加します。Locate the POM.xml file in the root directory of your app, and add the following dependency in its dependencies section.
 <dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>applicationinsights-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>
  1. アプリの resources ディレクトリ内で application.properties ファイルを探すか、まだ存在しない場合はファイルを作成します。Locate the application.properties file in the resources directory of your app, or create the file if it does not already exist.

    application.properties ファイルを探す

  2. テキスト エディターで application.properties ファイルを開き、そのファイルに次の行を追加し、サンプルの値を適切な資格情報を含む適切なプロパティで置き換えます。Open the application.properties file in a text editor, and add the following lines to the file, and replace the sample values with the appropriate properties with appropriate credentials:

    # Specify the instrumentation key of your Application Insights resource.
    azure.application-insights.instrumentation-key=[your ikey from the resource]
    # Specify the name of your springboot application. This can be any logical name you would like to give to your app.
    spring.application.name=[your app name]
    

    Application Insights の微調整の方法については、Application Insights Spring Boot Starter の Readme を参照してください。For more ways to fine-tune Application Insights, refer to Application Insights Springboot starter readme.

    注意

    PROD や DEV など、別のプロファイルでは、異なる Application Insights インストルメンテーション キー (異なるリソースなど) を使用してください。追加情報については、Spring Boot のプロファイル固有のプロパティに関する記事を参照してください。Use different Application Insights instrumentation keys (such as different resources) for different profiles like PROD, DEV, etc. Refer to Spring Boot Profile Specific Properties for additional information.

  3. application.properties ファイルを保存して閉じます。Save and close the application.properties file.

  4. パッケージのソース フォルダーの下に controller という名前のフォルダーを作成します。次に例を示します。Create a folder named controller under the source folder for your package; for example:

    D:\Microsoft\demo\src\main\java\com\example\demo\controller

    または-or-

    /users/example/home/demo/src/main/java/com/example/demo/controller

  5. TestController.java という名前の新しいファイルを controller フォルダー内に作成します。Create a new file named TestController.java in the controller folder. テキスト エディターでそのファイルを開き、次の行を追加します。Open the file in a text editor and add the following code to it:

     package com.example.demo;
    
     import com.microsoft.applicationinsights.TelemetryClient;
     import java.io.IOException;
     import org.springframework.beans.factory.annotation.Autowired;
     import org.springframework.web.bind.annotation.GetMapping;
     import org.springframework.web.bind.annotation.RequestMapping;
     import org.springframework.web.bind.annotation.RestController;
     import com.microsoft.applicationinsights.telemetry.Duration;
    
     @RestController
     @RequestMapping("/sample")
     public class TestController {
    
         @Autowired
         TelemetryClient telemetryClient;
    
         @GetMapping("/hello")
         public String hello() {
    
             //track a custom event  
             telemetryClient.trackEvent("Sending a custom event...");
    
             //trace a custom trace
             telemetryClient.trackTrace("Sending a custom trace....");
    
             //track a custom metric
             telemetryClient.trackMetric("custom metric", 1.0);
    
             //track a custom dependency
             telemetryClient.trackDependency("SQL", "Insert", new Duration(0, 0, 1, 1, 1), true);
    
             return "hello";
         }
     }
    

    com.example.demo は実際のプロジェクトのパッケージ名に置き換えてください。Replace com.example.demo with the package name for your project.

  6. TestController.java ファイルを保存して閉じます。Save and close the TestController.java file.

  7. 自分の Spring Boot アプリケーションを Maven でビルドし、実行します。Build your Spring Boot application with Maven and run it. 例:For example:

    mvn clean package
    mvn spring-boot:run
    
  8. Web ブラウザーを使用して http://localhost:8080/sample/hello を参照することによって Web アプリをテストするか、curl が使用可能な場合は次の例のような構文を使用します。Test the web app by browsing to http://localhost:8080/sample/hello using a web browser, or use the syntax like the following example if you have curl available:

    curl http://localhost:8080/sample/hello
    

    サンプル コントローラーからの "hello!"You should see the "hello!" メッセージが表示されます。message from your sample controller displayed. Application Insights によって自動的にこの要求が収集され、テレメトリ項目として送信されます。その際、コントローラー ロジックで指定されている、この要求に関連付けられたカスタム イベント、カスタム メトリック、カスタム依存関係、およびカスタム トレースも送信されます。Application Insights will automatically collect this request and send it as a telemetry item with its associated custom event, custom metric, custom dependency, and custom trace as specified in the controller logic.

    このデータは、数秒後に Azure に表示されます。After a few seconds you should see the data on Azure.

    Azure

[アプリケーション マップ] タイルをクリックし、大まかなコンポーネントと、それらの間の相互作用を確認します。Click on the Application Map tile to view high-level components and their interaction with each other. ここで、アプリケーション全体の概要を把握することをお勧めします。This is a recommended place to get a high level overview of entire application. Spring Boot の各マイクロサービスは、Spring のアプリケーション名によって認識されます。Each Spring Boot Microservice is recognized by the spring application name. これは忘れずに設定してください。Remember to set it.

Azure

log4j ログを Application Insights に送信するように Springboot アプリケーションを構成するConfigure Springboot Application to send log4j logs to Application Insights

  1. プロジェクトの POM.xml を開き、次を使用して dependencies セクションに追加/変更します。Modify the POM.xml file of the project and add/modify the dependencies section with following.
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-spring-boot-starter</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-logging-log4j2</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>
  1. POM.xml ファイルを保存して閉じます。Save and close the POM.xml file.

  2. \Src\main\resources フォルダーに、log4j2.xml という新しいファイルを作成し、構成します。In \src\main\resources folder, create a new file log4j2.xml and configure it. 例:For example:

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration packages="com.microsoft.applicationinsights.log4j.v2">
  <Properties>
    <Property name="LOG_PATTERN">
      %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
    </Property>
  </Properties>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <ApplicationInsightsAppender name="aiAppender">
    </ApplicationInsightsAppender>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <AppenderRef ref="Console"  />
      <AppenderRef ref="aiAppender"  />
    </Root>
  </Loggers>
</Configuration>
  1. 上記のように Spring Boot アプリケーションをビルドし、もう一度実行します。Build and run the Spring Boot application again as shown above.

数秒で、すべての Spring ログが Azure で利用できることを確認できます。Within a few seconds, you should see all the spring logs being available on Azure.

Azure

Analytics ポータルでは、詳細なログ メッセージを確認したり、分析を実行したりできます。You can even look at the detailed log messages and do analysis on Analytics Portal.

Azure

次の手順Next steps

Spring および Azure の詳細については、Azure ドキュメント センターで引き続き Spring に関するドキュメントをご確認ください。To learn more about Spring and Azure, continue to the Spring on Azure documentation center.

その他のリソースAdditional Resources

Azure での Spring Boot アプリケーションの使用の詳細については、次の記事を参照してください。For more information about using Spring Boot applications on Azure, see the following articles:

Application Insights では、外部の依存関係を自動収集できます。また、依存関係と着信要求との相関関係も自動収集できます。Application Insights supports automatic collection of external dependencies and its correlation with incoming requests. 現在、Oracle、MsSQL、MySQL、および Redis の自動収集がサポートされています。Currently we support autocollection of Oracle, MsSQL, MySQL and Redis. 自動収集の有効化の詳細については、Application Insights Java エージェントの使用方法に関するページをご覧ください。For more details on enabling autocollection please follow the article how to use Application Insights Java agent.

Azure Application Insights とその監視機能の詳細については、 Application Insights のホーム ページをご覧ください。For more information about Azure Application Insights, and its monitoring capabilities, see the Application Insights home page.

Application Insights Spring Boot Starter の追加の構成の詳細については、こちらのリンクを参照してください。For more information about additional configuration details of Application Insights Spring Boot Starter, please refer to this link.

機能要求や潜在的なバグについては、GitHub リポジトリで問題を開いてください。For feature requests and potential bugs, please open issues on our GitHub repository.

Java での Azure の使用の詳細については、「Java 開発者向けの Azure」および「Azure DevOps と Java の操作」を参照してください。For more information about using Azure with Java, see the Azure for Java Developers and the Working with Azure DevOps and Java.

Spring Framework は Java 開発者のエンタープライズ レベルのアプリケーション作成を支援するオープンソース ソリューションです。The Spring Framework is an open-source solution that helps Java developers create enterprise-level applications. このプラットフォーム上で構築される特に知られたプロジェクトの 1 つが Spring Boot です。これによって、スタンドアロンの Java アプリケーションの作成方法が簡略化されます。One of the more popular projects built on top of that platform is Spring Boot, which provides a simplified approach for creating stand-alone Java applications. Spring Boot を使い始めた開発者を支援するために、https://github.com/spring-guides/ では、サンプルの Spring Boot パッケージがいくつか用意されています。To help developers get started with Spring Boot, several sample Spring Boot packages are available at https://github.com/spring-guides/. 基本的な Spring Boot プロジェクトの一覧から選択するだけでなく、 Spring Initializr は、開発者がカスタム Spring Boot アプリケーションの作成を開始できるように支援します。In addition to choosing from the list of basic Spring Boot projects, Spring Initializr helps developers get started with creating custom Spring Boot applications.