美文网首页spring cloudspringboot
配置spring-boot-actuator时候遇到的一些小问题

配置spring-boot-actuator时候遇到的一些小问题

作者: LOC_Thomas | 来源:发表于2017-01-09 12:31 被阅读17494次

前言

spring-boot-actuator是一个spring-boot提供的用于监控组件,只需要在代码中加入依赖就可以了

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

遇到的一些小问题

1.可以加入依赖

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

来保证actuator暴露接口的安全性,可以通过 -u 'user:password' 方式来访问basic auth

2.如果项目依赖的是springmvc框架,并且基础的配置文件是 application.yaml的话,可以增加 application.properties 文件来配置安全性的配置.

3.如果加入了security依赖,则所有的接口默认都需要被验证,如果只想 /admin路径下的请求进行验证,则需要加入配置

security.basic.enabled=true
security.basic.path=/admin
security.user.name=admin
security.user.password=password

4.如果项目依赖的是非springmvc框架的话, 需要在依赖中加入mvc的依赖

<dependency>    
  <groupId>org.springframework</groupId>    
  <artifactId>spring-webmvc</artifactId>
</dependency>

5.如果management.security.enabled的值是false的话,除开health接口还依赖endpoints.health.sensitive的配置外,其他接口都不需要输入用户名和密码了。

6.actuator暴露的health接口权限是由两个配置: management.security.enabledendpoints.health.sensitive组合的结果进行返回的。

management.security.enabled endpoints.health.sensitive Unauthenticated Authenticated
false false Full content Full content
false true Status only Full content
true false Status only Full content
true true No content Full content

7.actuator组件里面除开上面提到的metrics和health接口以外,还有很多默认的其他接口,如果它默认的接口不能满足你的需求的话,还可以通过继承它的 AbstractEndpoint 类来实现自己的Endpoint

最后附加一个配置文件例子:

security.basic.enabled=true
security.basic.path=/admin    #针对/admin路径进行认证
security.user.name=admin     #认证使用的用户名
security.user.password=password   #认证使用的密码
management.security.roles=SUPERUSER

management.port=11111   #actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
management.context-path=/admin   #actuator暴露接口的前缀
management.security.enabled=true   #actuator是否需要安全保证

endpoints.metrics.sensitive=false   #actuator的metrics接口是否需要安全保证
endpoints.metrics.enabled=true

endpoints.health.sensitive=false  #actuator的health接口是否需要安全保证
endpoints.health.enabled=true

相关文章

网友评论

  • 87eb915b0268:按楼主实现:1.5.9版本
    security:
    basic:
    enabled: true
    path: /admin #针对/admin路径进行认证
    user:
    name: admin #认证使用的用户名
    password: password #认证使用的密码
    role: SUPERUSER
    management:
    security:
    roles: SUPERUSER
    enabled: true #actuator是否需要安全保证
    port: 11111 #actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
    context-path: /admin #actuator暴露接口的前缀
  • zjlxrong:你好,请问一下,如果springboot+jersey后,怎么使用actuator, 我试了访问/info,一直是404错误。谢谢
    LOC_Thomas:@蓉_e4b3 应该是少配置了什么配置, 可以好好检查下, 这个jersey+springboot我是弄过的, 加上actuator是没有问题的
    zjlxrong:@LOC_Thomas 还是不行,找了很久,没有对应的解决方法。因为我们要求jax-rs规范,所以集成了jersey。
    LOC_Thomas:可以看看 第4点
    如果项目依赖的是非springmvc框架的话, 需要在依赖中加入mvc的依赖
  • Me1rfa丶:这里加个说明,在设置security之后,默认写在controller里通过@RestMapping对外暴露的接口也会被权限保护,访问时会要你输入账号密码。所以楼主的配置文件里,才写了security.basic.path=/admin和management.context-path=/admin这2个属性,表示只针对actuator对外的暴露的端点应用权限管理。
    Docs4dev:可以在eureka客户端添加以下两个配置项:
    eureka.instance.statusPageUrlPath
    eureka.instance.healthCheckUrlPath
    Me1rfa丶:@LOC_Thomas 不用客气,不知道楼主有没有使用Spring Boot Admin(SBA)这个东东,我在使用SBA时遇到一些问题。在结合这个配置文件配置了management.context-path==/admin之后,所有对外的actuator端点访问前都需要加上/admin,例如health由/health变成/admin/health。在SBA Server端那里通过配置spring.boot.admin.discovery.converter.management=/admin之后可以正常获取到除/health以外的所有端点的数据。比如env,metrics等等。目前还没有找到好的解决方法。
    LOC_Thomas:是的, 可能我这里写得不是很清楚。 多谢老铁!
  • 壞尐囝:在windows下,怎么用-u的方式?
    另外我在Linux下用-u也没通过验证
    LOC_Thomas:curl -u
  • 一个节点:最后附加的配置文件太有价值了,没想到管理端还可以重新配置端口 赞一个
    Me1rfa丶:文档上有说,中文翻译地址:https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/V.%20Spring%20Boot%20Actuator/47.%20Monitoring%20and%20management%20over%20HTTP.html 英文文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html

本文标题:配置spring-boot-actuator时候遇到的一些小问题

本文链接:https://www.haomeiwen.com/subject/tpthbttx.html