K8s部署Spring Boot Admin,Actuator监控(不使用主机名通信)

21 篇文章 0 订阅
---------------- 特别感谢: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端
  1. 添加依赖

     <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>
    
  2. 启动类添加注解

    @EnableAdminServer

  3. 添加配置:

    spring:
    boot:
    admin:
    url: http://xxxxx.com:8080/xxx #访问admin所在服务的地址
    management:
    security:
    enabled: false #关掉security验证
    health:
    redis:
    enabled: false #关掉redis健康检查 依赖中由redis依赖会自动检查 这里关掉

client端
  1. 添加依赖

    <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>
    
  2. 添加配置:

    #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

坑点

  1. k8s如果服务之间只允许使用svc访问,不允许容器名访问,Admin就搜集不到除了本服务以外的其它服务的detail信息,注册可以看到

  2. 网上大部分K8s部署Spring Boot Admin教程都是开启了容器名访问或者有第三方的服务注册中心,或者使用K8s的服务注册中心,当注册中心没有时,就比较难受了

  3. 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/

  4. 中间还踩了一个坑: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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值