Spring Boot App(2.0.0.M7)で設定したapplication.properties
management.endpoint.metrics.enabled=true
しかし、私がヒットしたとき
localhost:8080/actuator/metrics
404を受け取ります。
解決策は何ですか?
最終的にこのソリューションにつまずく前に少し苦労したため、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で導入された変更
/health
、/metrics
などのようなエンドポイントは、デフォルトのルートコンテキストで使用できなくなりました。これらは、今後http://{Host}:{port}/actuator
で入手できます。また、アプリケーションの他のすべてのエンドポイントが/hello
などの他のコンテキストで始まるかどうかは関係ありません。アクチュエータは/actuator
ではなく/hello/actuator
で使用できます。
/actuator
エンドポイントからの応答は、デフォルトで HATEOAS が有効になっています。 Spring Boot 2より前は、これが唯一のケースでした HATEOASがクラスパス上にあり、明示的に有効化されている場合 in application.yml
アクチュエータエンドポイントをHTTP経由で使用可能にするには、有効化と公開の両方が必要です。
デフォルトでは:
アプリケーションに存在し、設定されているSpring Securityに関係なく、/health
および/info
エンドポイントのみが公開されます。
/shutdown
を除くすべてのエンドポイントが有効になります(ただし、/health
および/info
のみが公開されます)
すべてのエンドポイントを公開したい場合(常に良いアイデアとは限りません)、management.endpoints.web.exposure.include=*
をapplication.properties
に追加することで公開できます。 yml-configurationsを使用している場合、ワイルドカードを引用することを忘れないでください。
endpoints.xyz
で始まる古いプロパティは廃止され、management.xyz
で始まるプロパティが優先されます私のために働いたのは、Spring Boot 2リリースで動作する次の(YAML形式)です:
management:
endpoints:
web:
exposure:
include: info, health, metrics
metrics:
export:
atlas:
enabled: false
また、特定のドキュメントを見つけることができます here
application.properties
ファイルに次の行を追加します。
management.endpoints.web.exposure.include=metrics
それで全部です。
application.properties
ファイルに以下の小道具を追加する必要があります。以下の小道具を追加するまで、私は同じ問題を抱えていました。
management.endpoints.beans.enabled=false
management.endpoints.web.exposure.include=*
YAMLでは「*」には特別な意味があるため、次の例に示すように、すべてのエンドポイントを含める(または除外する)場合は必ず引用符を追加してください。
management:
endpoints:
web:
exposure:
include: "*"
さて、解決策を見つけました。 application.propertiesに別の行を追加しました
management.endpoints.web.expose=*
ただし、アクチュエータの内部を固定することは重要です
ここをお読みください: https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html
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
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
が追加されていることに注意してください。