如何使用弹簧靴执行器?官方步骤无效

Posted

技术标签:

【中文标题】如何使用弹簧靴执行器?官方步骤无效【英文标题】:How can I use spring boot actuator? Official steps didn't work 【发布时间】:2021-05-31 20:08:36 【问题描述】:

我尝试使用 spring boot 执行器来观察我的简单应用程序,期望观察我办公室中的应用程序。

我原来的端点可以工作,但执行器的端点不能使用以下命令。

执行的命令:

gradle build java -jar build/libs/HelloWorld.jar curl http://localhost:8080/greet/hello -> “世界你好!”曾是 打印(预期) curl http://localhost:8080/health -> 状态 404,错误:不是 找到(意外)

虽然我编译了spring-boot-starter-actuator-1.5.6.RELEASE.jar,但似乎没有包含执行器的包。

你能告诉我出了什么问题吗?

我的环境:

在我的办公室开发服务器 Cent OS 7 Javac 1.8.0_101 弹簧靴 1.5.6 Gradle 4.6

我的应用程序的结构:

HelloWorld - build.gradle
           - setting.gradle
           - lib
           - src/main/java - Application.java
                           - GreetController.java 

这是我的代码:

build.gradle

buildscript 
    repositories 
        maven  url "http://192.168.131.247:8081/nexus/content/repositories/maven2/" 
    

    dependencies 
            classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE")
    
    dependencies 
        classpath fileTree('./lib') 
            include '**/*.jar'
        
    


apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'


sourceCompatibility = '1.8'
targetCompatibility = '1.8'

// configure project
configurations 
    provided
    //compile.exclude module: "spring-boot-starter-tomcat"

sourceSets 
    main.compileClasspath += configurations.provided
    test.compileClasspath += configurations.provided
    test.runtimeClasspath += configurations.provided


repositories 
    maven  url "http://192.168.131.247:8081/nexus/content/repositories/maven2/" 


dependencies 
    compile fileTree(dir: './lib', include: ['*.jar'])
    testCompile fileTree(dir: './lib', include: ['*.jar'])


springBoot 
    executable = true

settings.gradle

rootProject.name = 'HelloWorld'

lib目录

classmate-1.3.3.jar
commons-collections4-4.1.jar
commons-compiler-2.7.8.jar
commons-daemon-1.0.15.jar
commons-dbcp2-2.1.1.jar
commons-io-2.5.jar
commons-lang3-3.5.jar
commons-logging-1.2.jar
commons-validator-1.6.jar
diffutils-1.2.1.jar
ehcache-2.10.4.jar
hibernate-validator-5.3.5.Final.jar
httpclient-4.5.3.jar
httpcore-4.4.6.jar
jackson-annotations-2.8.0.jar
jackson-core-2.8.9.jar
jackson-databind-2.8.9.jar
jackson-dataformat-cbor-2.8.6.jar
jackson-dataformat-smile-2.8.6.jar
jackson-dataformat-yaml-2.8.6.jar
james-2.3.2.1.jar
janino-2.7.8.jar
jboss-logging-3.3.1.Final.jar
jcl-over-slf4j-1.7.25.jar
jcommander-1.48.jar
jna-4.4.0.jar
joda-time-2.9.5.jar
jopt-simple-5.0.2.jar
json-20140107.jar
json-smart-2.2.1.jar
junit-4.12.jar
lang-mustache-client-5.5.2.jar
libs.txt
log4j-api-2.7.jar
logback-classic-1.1.11.jar
logback-core-1.1.11.jar
lombok-1.16.18.jar
opencsv-4.1.jar
securesm-1.1.jar
slf4j-api-1.7.25.jar
snakeyaml-1.15.jar
spring-aop-4.3.10.RELEASE.jar
spring-beans-4.3.10.RELEASE.jar
spring-boot-1.5.6.RELEASE.jar
spring-boot-autoconfigure-1.5.6.RELEASE.jar
spring-boot-gradle-plugin-1.5.6.RELEASE.jar
**spring-boot-starter-actuator-1.5.6.RELEASE.jar**
spring-boot-starter-aop-1.5.6.RELEASE.jar
spring-boot-starter-jetty-1.5.6.RELEASE.jar
spring-boot-starter-test-1.5.6.RELEASE.jar
spring-boot-starter-web-1.5.6.RELEASE.jar
spring-context-4.3.10.RELEASE.jar
spring-context-support-4.3.10.RELEASE.jar
spring-core-4.3.10.RELEASE.jar
spring-data-commons-1.13.6.RELEASE.jar
spring-data-keyvalue-1.2.6.RELEASE.jar
spring-expression-4.3.10.RELEASE.jar
spring-oxm-4.3.10.RELEASE.jar
spring-test-4.3.10.RELEASE.jar
spring-tx-4.3.10.RELEASE.jar
spring-web-4.3.10.RELEASE.jar
spring-webmvc-4.3.2.RELEASE.jar
testng-6.10.jar
tomcat-embed-core-8.5.4.jar
tomcat-embed-el-8.5.16-sources.jar
tomcat-embed-el-8.5.16.jar
validation-api-1.1.0.Final.jar

Application.java

package com.example.app;

import java.util.Arrays;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class Application 
    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

GreetController.java

package com.example.app;

import java.io.IOException;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/greet")
public class GreetController 

    @GetMapping("/hello")
    public String greet ()
        return "Hello world!\n";
    

我关注了苏珊的评论,但也没有用。

我做了什么:

创建 src/profile/application.yml 更新 build.gradle

application.yml

endpoints:
  enabled: true
  sensitive: false
  health:
    enabled: true
    sensitive: false
  info:
    enabled: true
    sensitive: false
  loggers:
    enabled: true
    sensitive: false

在 build.gradle 中,我添加了以下几行

......
sourceSets 
    main.resources 
        srcDirs "src/profile"
    
    ......

......

【问题讨论】:

谢谢苏珊,但您的建议无效。发生了同样的错误。 为什么你有一个包含依赖项的 lib 文件夹而不是让依赖项解决这个问题?基本上击败了拥有这些的目的。您的依赖项很奇怪,因为它们包括 jetty 和 tomcat(它应该是两者之一而不是两者)。您还混合了模块版本(Jackson 和 Spring),这也很麻烦。看起来你试图在配置方面超越 gradle 依赖管理和 spring boot。最后,那些 starter 依赖项只包含用于依赖管理的 pom.xml/build.gradle 【参考方案1】:

它应该是 curl http://localhost:8080/actuator/health 除非您使用

更改执行器端点
management:
  endpoints:
    web:
      base-path: <endpoint>

在 yml 文件中也应该是这样的

endpoint
  health:
    enabled: true

不是endpoints

我遵循不同的方式来公开端点,如下所示,这也应该可以工作

management:
  endpoints:
      exposure:
        include: health,info

所以你的 application.yml 应该是这样的

endpoint:
  health:
    enabled: true
  info:
    enabled: true
  loggers:
    enabled: true

management:
  endpoints:
      exposure:
        include: health,info.loggers

【讨论】:

【参考方案2】:

在您的 application.properties 文件中添加以下内容

endpoints:
  enabled: true
  sensitive: false
  health:
    enabled: true
    sensitive: false
  info:
    enabled: true
    sensitive: false
  loggers:
    enabled: true
    sensitive: false

【讨论】:

以上是关于如何使用弹簧靴执行器?官方步骤无效的主要内容,如果未能解决你的问题,请参考以下文章

如何在项目中集成弹簧靴

如何将 angular2 与弹簧靴一起使用

带弹簧靴的执行器

如何在百里香弹簧靴中填充选择元素?

如何隐藏“孩子”:[]从弹簧靴中一对多关系中的最后一个孩子

观察后如何在弹簧靴中重置仪表指标