使用spring-boot-admin监控CAS服务


spring-boot-admin对服务的监控比较容易实现,先通过注册中心获取服务信息,然后发送监控请求到boot提供的endpoints收集监控信息再展示到UI。之所以专门写对与CAS的服务监控,是因为CAS的监控不同于一般的服务。

实现对CAS的监控遇到了很多坑,太不同于一般服务了。

spring-boot-admin监控CAS服务遇到的坑

spring-boot-admin监控CAS坑一

CAS对endpoints做了包装,所有的endpoints都加了/status前缀,并且加了安全拦截器。

官方文档

https://apereo.github.io/cas/5.2.x/installation/Monitoring-Statistics.html

CAS安全拦截器

这就要求监控采集发送请求时添加/status,并且能通过安全拦截器。

spring-boot-admin监控CAS坑二

CAS服务是使用的https协议。

spring-boot-admin收集监控信息时是通过【服务IP:port/url】的形式发送请求,而https安全协议是不允许IP访问的,所以请求都被拒绝了。

spring-boot-admin监控CAS坑三

spring-boot-admin在进行监控时,需要获取management的信息,而这个信息是从eureka.instance.metadata-map中获取的,而非management.xxx中获取。

http://codecentric.github.io/spring-boot-admin/1.5.4/#_converting_serviceinstances_into_monitored_applications

spring-boot-admin监控CAS服务实现流程

首先单独配置CAS服务的management信息,解决CAS对endpoints的封装问题,用于单独访问

#取消management安全验证

management.security.enabled: false

#单独配置management的context-path

management.context-path: /status

management.add-application-context-header: false

#单独配置监控端口

management.port: 30003

#禁用management的ssl

management.ssl.enabled: false

然后配置CAS的IP安全策略,解决CAS对/status的安全拦截器的检查

cas.adminPagesSecurity:

    #CAS监控授权的IP,测试时127.0.0.1是必须的,第一个配置本机IP。如果是生产环境只需要配置jbone-sm-admin的IP即可
    
    ip: (172\.16\.180\.163)|(127\.0\.0\.1)
    
    actuatorEndpointsEnabled: true

最后配置eureka实例,解决spring-boot-admin获取监控地址问题

eureka.instance:

    metadata-map:
    
    management.context-path: ${management.context-path}
    
    management.port: ${management.port}

PS:鬼知道在实现的过程中有多坑,查了多少资料,但总能见到彩虹,只不过是雨下的或大或小,或长或短。

 

原创文章,转载请注明出处:转载自小马过河 - 使用spring-boot-admin监控CAS服务


Jbone

Spring Cloud实战项目jbone正在开发中, jbone功能包括服务管理、单点登录、系统管理平台、内容管理平台、电商平台、支付平台、工作流平台等子系统。欢迎关注!

GitHub 码云
马军伟
关于作者 马军伟
写的不错,支持一下

先给自己定个小目标,日更一新。