26.Spring Boot実行器:Production-ready特性

5943 ワード

  • Spring Bootには多くの他の特性が含まれています。それらは生産環境への応用を監視し管理してくれます。HTTPエンドポイント、JMXまたはリモートshell(SSHまたはTelnet)を使って、アプリケーションを管理し、監視することができます。監査(Auditing)、健康(health)、およびデータ収集(metrics gathering)は、あなたのアプリケーションに自動的に適用されます。
  • production-ready特性を開く
  • spring-boot-actutorモジュールはSpring Bootのすべてのproduction-ready特性を提供します。この特性を有効にする一番簡単な方法は、spring-bootstarter-actuat-Starter POMへの依存を追加することです。
  • アクチュエータの定義:アクチュエータとは、ものを移動または制御するための機械装置のことである。小さな変更でアクチュエータが大量の運動をすることができます。
  • Mavenの項目に基づいてアクチュエータを追加したいなら、以下の「starter」依存を追加してください。
      
          
              org.springframework.boot
              spring-boot-starter-actuator
          
      
    
  • Graadleに対して、以下の声明を使用する。
    dependencies {
    compile("org.springframework.boot:spring-boot-starter-actuator")
    }
    
    端点
  • アクチュエータエンドポイントは、アプリケーションを監視し、アプリケーションと対話することを可能にする。Spring Bootには多くのエンドポイントが含まれています。自分のものを追加することもできます。例えば、healthエンドポイントは、アプリケーションの基本的な健康情報を提供する。
  • エンドポイント露出の方式は、あなたが採用する技術の種類によって異なります。ほとんどのアプリケーションはHTTPモニタを選択し、エンドポイントのIDはURLにマッピングされる。例えば、デフォルトの場合、healthエンドポイントは/healthにマッピングされる。
  • 下の端点はすべて利用可能です。
    ID
    説明
    敏感(Sensitive)
    aut config
    aut-configrationの報告を表示します。この報告はすべてのaut-configration候補およびそれらが適用されているか、または適用されていないかの理由を示します。
    true
    beans
    アプリケーション内のすべてのSpring Bensの完全なリストを表示します。
    true
    configprops
    すべての@ConfigrationProptiesの整理リストを表示します。
    true
    dump
    スレッドダンプを実行
    true
    エンv
    Spring Configrable Evironmentからの属性を暴露します。
    true
    health
    アプリケーションの健康情報を表示します(未認証接続でアクセスすると簡単な「status」が表示され、認証接続でアクセスするとすべての情報が表示されます。)
    false
    info
    任意のアプリケーション情報を表示します。
    false
    metrics
    現在のアプリケーションの「指標」情報を表示します。
    true
    mappings
    すべての@Request Mappingパスの整理リストを表示します。
    true
    shutdown
    アプリケーションを優雅にオフにすることができます。
    true
    トレイ
    trace情報を表示します(デフォルトは最新のHTTP要求です)
    true
    注:エンドポイントの露出によって、sensitiveパラメータが安全ヒントとして使用される場合があります。例えば、HTTPを使用してsensitiveエンドポイントにアクセスするには、ユーザ名/パスワードが必要である(ウェブセキュリティが有効にされていない場合は、そのエンドポイントへのアクセスが禁止されるように簡略化されるかもしれない)。
    エンドポイントをカスタマイズ
  • Spring属性を使用してエンドポイントをカスタマイズできます。エンドポイントをオンにするかどうかは、IDにも敏感に設定できます。例えば、以下のappication.propertiesは感度とbeansエンドポイントのidを変えて、shutdownも有効にしました。
      endpoints.beans.id=springbeans
      endpoints.beans.sensitive=false
      endpoints.shutdown.enabled=true
    
  • 注:プレフィックスendpoints++nameは、構成されたエンドポイントを一意に識別するために使用される。
  • デフォルトでは、shutdown以外のすべてのエンドポイントが有効になります。エンドポイントの有効性を指定するなら、endpoints.enabeled属性を使用できます。
  • 例えば、以下の構成はinfo以外のすべてのエンドポイントを無効にする。
        endpoints.enabled=false
        endpoints.info.enabled=true
    
    健康情報
  • 健康情報は、アプリケーションの動作状態を確認するために使用されることができる。それはよく監視ソフトによって人々に生産システムが停止するかどうかを知らせます。healthエンドポイント露出のデフォルト情報は、エンドポイントがどのようにアクセスされるかによって決まる。安全でない場合、未認証の接続は簡単な「status」情報だけを返します。セキュリティまたは認証された接続に関する他の詳細情報も提示される(具体的にはSection 41.6を参照すると、「HTTP Health endpoint access rections」)。
  • 健康情報は、あなたのアプリContactで定義されているすべてのHealthIndicator beansから集められたものです。Spring Bootにはat-configredのHealthIndicatorsが多く含まれています。あなたも自分のものを書くことができます。
  • 安全とHealthIndicators
  • HealthIndicatorsからの情報はしばしば性質的に敏感である。例えば、データベースサーバの詳細を外部に公開したくないかもしれません。したがって、未認証のHTTP接続を使用すると、デフォルトでは健康状態のみが暴露されます。すべての健康情報を暴露したいなら、endpoints.health.sensitiveをfalseに設定してもいいです。
  • 「サービス拒否」の攻撃を防ぐために、Health応答がキャッシュされます。endpoints.health.time-to-live属性を使ってデフォルトのキャッシュ時間(1000ミリ秒)を変更できます。
  • 自動配置のHealthIndicators
  • 以下のHealthIndicatorsはSpring Bootによって自動的に配置されます。
    名前
    説明
    Disc Space HealthIndicator
    低ディスク空間検出
    DataSourceHealthIndicator
    DataSourceから接続を取得できますか?
    Mongo HealthIndicator
    Mongoデータベースが利用可能かどうかを確認します(up)
    Rabbit HealthIndicator
    Rabbitサーバが利用可能かどうかを確認します(up)
    RedisHealthIndicator
    Redisサーバが利用可能かどうかを確認します(up)
    SolHealthIndicator
    Solrサーバが利用可能かどうかを確認します(up)
    カスタムHealthIndicatorsを作成します。
  • カスタム健康情報を提供したいです。HealthIndicatorインターフェースを実現したSpring beansを登録できます。health()方法の実現を提供し、Health応答を返す必要があります。Health応答は、1つのstatusと、展示のための任意の詳細を含む必要がある。
  • import org.springframework.boot.actuate.health.HealthIndicator;
    import org.springframework.stereotype.Component;
    @Component
    public class MyHealth implements HealthIndicator {
        @Override
        public Health health() {
            int errorCode = check(); // perform some specific health check
            if (errorCode != 0) {
                return Health.down().withDetail("Error Code", errorCode).build();
            }
            return Health.up().build();
        }
    }
    
  • は、Spring Bootによって予め定義されているStatusタイプを除いて、Healthはまた、新しいシステム状態を表すカスタムStatusを返すことができる。この場合には、HealthAgregatorインターフェースのカスタム実装を提供する必要があり、またはmanagerment.health.status.order属性構成を使用してデフォルトの実装を実現する必要がある。
  • は、例えば、新しいコードを仮定して、FATALのStatusがあなたのHealthIndicatorによって実装されています。重要度を設定するためには、下記の構成をapprationプロパティファイルに追加する必要があります。
     management.health.status.order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP
    
  • HTTPを使ってhealthエンドポイントにアクセスすると、カスタムstatusを登録したいかもしれません。そしてHealthMvcEntpointを使ってマッピングします。例えば、FATALをHttpStatus.SERVICE_にマッピングすることができます。UNAVAILABLE
  • カスタムアプリケーションinfo情報
  • Spring属性info.*を設定することにより、infoエンドポイント露出のデータを定義することができます。infoキーワードのEvironment属性はすべて自動的に露出されます。例えば、以下の構成をappication.properties:
  • に追加することができます。
    info.app.name=MyService
    info.app.description=My awesome service
    info.app.version=1.0.0
    
    Git提出情報
  • infoエンドポイントのもう一つの有用な特性は、プロジェクトの構築が完了したら、gitソース倉庫の状態に関する情報を発表することができます。あなたのjarにgit.propertiesファイルが含まれているなら、git.branchとgit.com mmit属性はロードされます。
  • は、Mavenユーザに対して、spring-boot-starter-parent POMは、git.propertiesファイルを生成することができるプリプロファイルプラグインを含む。簡単に以下の声明をPOMに追加する必要があります。
  • 
        
            
                pl.project13.maven
                git-commit-id-plugin
            
        
    
    
  • は、Graadleユーザに対して同様のプラグインgradle−gitを使用することができるが、属性ファイルを生成するためには少し多くの作業が必要であるかもしれないが、。