web-dev-qa-db-ja.com

Spring Boot 2-アクチュエータメトリックエンドポイントが機能しない

Spring Boot App(2.0.0.M7)で設定したapplication.properties

management.endpoint.metrics.enabled=true

しかし、私がヒットしたとき

localhost:8080/actuator/metrics 

404を受け取ります。

解決策は何ですか?

18
Dachstein

最終的にこのソリューションにつまずく前に少し苦労したため、OPの答えをより多くの情報で強化したいと思います.Spring Boot 2でのアクチュエータの動作の変更について多くの混乱があるようです

何が変わっていないか

spring-boot-starter-actuatorへの依存関係を含める必要があります

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

HTTPを介してアクチュエータエンドポイントにアクセスする場合は、依存関係をspring-boot-starter-webに追加する必要もあります。

あなたのPOMの依存関係は次のようになります

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

Spring Boot 2で導入された変更

  1. /health/metricsなどのようなエンドポイントは、デフォルトのルートコンテキストで使用できなくなりました。これらは、今後http://{Host}:{port}/actuatorで入手できます。また、アプリケーションの他のすべてのエンドポイントが/helloなどの他のコンテキストで始まるかどうかは関係ありません。アクチュエータは/actuatorではなく/hello/actuatorで使用できます。

  2. /actuatorエンドポイントからの応答は、デフォルトで HATEOAS が有効になっています。 Spring Boot 2より前は、これが唯一のケースでした HATEOASがクラスパス上にあり、明示的に有効化されている場合 in application.yml

  3. アクチュエータエンドポイントをHTTP経由で使用可能にするには、有効化と公開の両方が必要です。

    デフォルトでは:

    • アプリケーションに存在し、設定されているSpring Securityに関係なく、/healthおよび/infoエンドポイントのみが公開されます。

    • /shutdownを除くすべてのエンドポイントが有効になります(ただし、/healthおよび/infoのみが公開されます)

  4. すべてのエンドポイントを公開したい場合(常に良いアイデアとは限りません)、management.endpoints.web.exposure.include=*application.propertiesに追加することで公開できます。 yml-configurationsを使用している場合、ワイルドカードを引用することを忘れないでください。

  5. endpoints.xyzで始まる古いプロパティは廃止され、management.xyzで始まるプロパティが優先されます

完全なドキュメントについては、 公式ドキュメント および 移行ガイド も参照してください。

49
senseiwu

私のために働いたのは、Spring Boot 2リリースで動作する次の(YAML形式)です:

management:
  endpoints:
    web:
      exposure:
        include: info, health, metrics
  metrics:
    export:
      atlas:
        enabled: false

また、特定のドキュメントを見つけることができます here

7
tbo

application.propertiesファイルに次の行を追加します。

management.endpoints.web.exposure.include=metrics

それで全部です。

7
Jeen

application.propertiesファイルに以下の小道具を追加する必要があります。以下の小道具を追加するまで、私は同じ問題を抱えていました。

management.endpoints.beans.enabled=false
management.endpoints.web.exposure.include=*
4
Krish

YAMLでは「*」には特別な意味があるため、次の例に示すように、すべてのエンドポイントを含める(または除外する)場合は必ず引用符を追加してください。

management:
  endpoints:
    web:
      exposure:
        include: "*"
3
Dilan

さて、解決策を見つけました。 application.propertiesに別の行を追加しました

management.endpoints.web.expose=*

ただし、アクチュエータの内部を固定することは重要です

ここをお読みください: https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html

2
Dachstein

micrometer docs .Spring Boot 2.0.xは、Spring Boot Actuatorを介してMicrometerをサポートしています。
エンドポイントmetricは、アプリケーションに関する機密データを公開する可能性のあるエンドポイントをデフォルトで無効にするというSpring Boot 2のリトマステストに従って、デフォルトで無効になっています。以下を設定することで有効にできます:

management.endpoints.web.exposure.include:メトリック

/actuator/metricsに移動すると、使用可能なメーター名のリストが表示されます。

それらにアクセスするには、次のようなものを使用します。 http:// localhost:8080/actuator/metrics/jvm.memory.used

1
makson

Spring Boot 1.5.15から2.1.4へのアップグレードと同じ問題がありました

pom.xmlのSpring Bootアクチュエーターの元の依存関係を変更する必要がありました。

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

に:

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

starterにWord artifactIdが追加されていることに注意してください。

1
disposedtrolley