基于Spring Cloud Eureka的Spring Boo

作者: moneyoverf1ow | 来源:发表于2019-01-18 15:24 被阅读21次

    1.服务端

    ·springboot配置

    server.port=8081
    \#服务名
    spring.application.name=admin
    \#注册中心
    eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka
    eureka.instance.prefer-ip-address=true
    eureka.instance.metadata-map.management.context-path=/actuator
    eureka.client.healthcheck.enabled=true
    eureka.instance.health-check-url-path=/actuator/health
    eureka.instance.status-page-url-path=/actuator/info
    eureka.instance.home-page-url-path=/
    eureka.instance.lease-renewal-interval-in-seconds=5
    eureka.client.registry-fetch-interval-seconds=5
    
    \#暴露actuator的所有端点
    management.endpoints.web.exposure.include=*
    management.endpoint.logfile.external-file=${LOG_PATH}/@log.project@/system.log
    \#health endpoint是否必须显示全部细节。默认情况下, /actuator/health 是公开的,并且不显示细节
    management.endpoint.health.show-details=always
    
    \#配置登录名,密码和安全策略
    spring.profiles.active=secure
    spring.security.user.name=admin
    spring.security.user.password=password
    
    spring.jmx.default-domain=admin
    
    /#企业微信通知
    qyweixin.access-token.url=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s
    qyweixin.send-message.url=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s
    qyweixin.agent-id=1000002
    qyweixin.corp-id=wwea31e8b044
    qyweixin.corp-secret=XzikoaSgmAS2nBNYciczWElBbHKyO-Qdg
    
    simplecache.volume=10
    simplecache.defaultExpireMillis=60000
    

    ·核心依赖

    由于是基于eureka的监控,所以主要有两个依赖,一是eureka client,一是admin server。

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-server</artifactId>
            </dependency>
    

    ·看看依赖的包里面都有什么

    主要看admin server这个依赖:

    image

    ·依赖的作用

    基于eureka的方式在spring-boot-admin-server-cloud这个包里。看看它的核心类:

    image image

    是一个listenter,用来监听spring容器中的eureka client产生的各种事件,主要还是心跳,每次心跳都会刷新自己的服务列表。spring在eureka client外封装了一层,重写了eureka client的onCacheRefreshed()方法,在其定时被调用时发布一个心跳事件,根据这个事件更新服务列表。

    image

    监控的各项指标,包括线程,内存等等,都是通过各个客户端的spring boot actuator暴露的endpoints来获取的。admin server有一个代理接口,监控轮询这个接口来获取相应的指标数据:

    image

    InstancesProxyController:

    代理客户端actuator暴露的接口,流程就是:监控前端->proxyController->客户端/actuator/xxx

    画了一个流程图帮助理解:

    image

    通过eureka client从服务中心拉取服务列表,在刷新缓存时发布一个心跳,listener监听心跳,从eureka client获取到最新的服务列表,更新自己的服务仓库。管理员监控时访问代理接口,接口中通过最新的实例信息,访问实例暴露的接口,获取实例当前的状态。

    ·可选依赖

            <!—JMX管理-->
            <dependency>
                <groupId>org.jolokia</groupId>
                <artifactId>jolokia-core</artifactId>
            </dependency>
    

    ·自定义通知:

    admin提供了许多通知监控的服务当前状态方式,包括邮箱通知,opsgenie等等。也支持自定义通知,实现方式就是,继承AbstractEventNotifier,重写其doNotify方法:

    • extends AbstractEventNotifier
    • override doNotify(InstanceEvent event, Instance instance)

    我这里,注册了一个企业微信账号,绑定到微信实现了微信的通知。通过微信获知服务下线和内存使用率异常等信息。

    2.客户端

    客户端注册到eureka服务中心,即可被监控。

    最后,参考代码和配置见administrator.git

    相关文章

      网友评论

        本文标题:基于Spring Cloud Eureka的Spring Boo

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