K8s部署Spring Boot Admin,Actuator监控(不使用主机名通信)
---------------- 特别感谢:wang dayu 同学整理 ----------------集成说明1.由于环境上部署无法访问pod地址,需要将client的客户端服务 url和管理网址进行转换覆盖pod的地址2.插件需要严格遵守与springboot,springcloud版本兼容性,具体对应关系请参考该地址:https://blog.csdn.net/q283614346/art
---------------- 特别感谢:wang dayu 同学整理 ----------------
集成说明
1.由于环境上部署无法访问pod地址,需要将client的客户端服务 url和管理网址进行转换覆盖pod的地址
2.插件需要严格遵守与springboot,springcloud版本兼容性,
具体对应关系请参考该地址:
https://blog.csdn.net/q283614346/article/details/121146721
以下集成案例以springboot 版本1.5.7.RELEASE,springcloud 版本Dalston.SR4 ,Springboot admin 1.5.5为准。
3.springboot1.5默认暴露所有端点。Springboot2.0需要添加以下配置暴露端点
management:
endpoints:
web:
exposure:
include: "*"
4.相关几个参数差异比对
spring boot 1.5:
#要注册的服务端地址
spring.boot.admin.url
#client的客户端服务url
spring.boot.admin.client.service-url
#client的管理网址
spring.boot.admin.client.management-url
spring boot 2.0:
#要注册的服务端地址
spring.boot.admin.client.url
#client的客户端服务url
spring.boot.admin.client.instance.service-url
#client的管理网址
spring.boot.admin.client.instance.management-url
官网地址:
https://codecentric.github.io/spring-boot-admin/1.5.7/#_notifications
https://codecentric.github.io/spring-boot-admin/2.3.1/#_notifications
Spring boot Admin 1.5.5 集成案例
server端
- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.5.5</version>
</dependency>
- 启动类添加注解
@EnableAdminServer
- 添加配置:
spring:
boot:
admin:
url: http://xxxxx.com:8080/xxx #访问admin所在服务的地址
management:
security:
enabled: false #关掉security验证
health:
redis:
enabled: false #关掉redis健康检查 依赖中由redis依赖会自动检查 这里关掉
client端
- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.5.5</version>
</dependency>
- 添加配置:
#springboot admin注册中心 填写上面Server端的访问地址
spring.boot.admin.url=http://xxx.com:8080/xxx
#要注册的客户端服务 url,可以覆盖k8s pod的url 这里是本服务的地址
spring.boot.admin.client.management-url=http://aaaa.com:8080/bbb
#要注册的客户端健康 URL,可以覆盖k8s pod的url,在注册表中必须是唯一的。 这里是本服务的health check地址
spring.boot.admin.client.health-url=http:/aaaa.com:8080/bbb/health
#要注册的管理网址,可以覆盖k8s pod的url 这里是本服务的地址
spring.boot.admin.client.service-url=http:/aaaa.com:8080/bbb/
#关闭验证
management.security.enabled=false
#忽略redis健康检查
management.health.redis.enabled=false
坑点
- k8s如果服务之间只允许使用svc访问,不允许容器名访问,Admin就搜集不到除了本服务以外的其它服务的detail信息,注册可以看到
- 网上大部分K8s部署Spring Boot Admin教程都是开启了容器名访问或者有第三方的服务注册中心,或者使用K8s的服务注册中心,当注册中心没有时,就比较难受了
- K8s没有开启服务注册中心,不允许容器名访问,就要把下面的配置配好:
#要注册的客户端服务 url,可以覆盖k8s pod的url 这里是本服务的地址
spring.boot.admin.client.management-url=http://aaaa.com:8080/bbb
#要注册的客户端健康 URL,可以覆盖k8s pod的url,在注册表中必须是唯一的。 这里是本服务的health check地址
spring.boot.admin.client.health-url=http:/aaaa.com:8080/bbb/health
#要注册的管理网址,可以覆盖k8s pod的url 这里是本服务的地址
spring.boot.admin.client.service-url=http:/aaaa.com:8080/bbb/
- 中间还踩了一个坑:1.5.5版本的3中的配置比2.x版本的少一个
instance
。
网上好多都是2.0以后的Spring boot Admin组件的client配置,我看了下当前引入的client的配置源码,才知道1.x和2.x的区别——差一个instance
1.x:
package de.codecentric.boot.admin.client.config;
//此处省略 import
@ConfigurationProperties(
prefix = "spring.boot.admin.client"
)
public class AdminClientProperties {
private String managementUrl;
private String managementBaseUrl;
private String serviceUrl;
private String serviceBaseUrl;
private String healthUrl;
@Value("${spring.application.name:spring-boot-application}")
private String name;
private boolean preferIp = false;
private Map<String, String> metadata = new HashMap();
}
2.x:(来自:https://codecentric.github.io/spring-boot-admin/2.4.3/#spring-boot-admin-client/)
更多推荐
所有评论(0)