微服务应用健康监控架构设计及实施

Posted 云原生兴趣小组

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务应用健康监控架构设计及实施相关的知识,希望对你有一定的参考价值。


架构设计


本实践也可作为监控一体化集成的示例,通过将其他异构监控平台的数据指标定义和归集,实现监控集中一体化的展示和告警。


Spring boot Admin 中默认含有所有微服务应用的Actuator健康状态,理论上我们可以通过从 Spring boot Admin 中获取这些数据,然后通过集成 Micrometer 组件,将这些数据定制为指标,暴露出来。


并且在 Kubernetes 集群内,通过 Annotation 标识此应用的,纳入 Prometheus 的服务发现之中,从而指标被自动 Pull 入库 Prometheus。


最后,我们再通过 Grafana panel ,特别是有意思的 TrafficPanel 插件,将这些数据直观、便捷的展示出来,以此达到对服务监视的目的。


同时,在Promentheus 中,我们可以非常方便的为这些微服务健康状态变更的应用,添加对应的告警通知。





开发和实施


分析和排查 Spring boot Admin 中,微服务Actuator 应用健康信息列表

微服务应用健康监控架构设计及实施


找到后,下载官网源码,查看spring boot admin 源码如下微服务应用健康监控架构设计及实施


继续查看

微服务应用健康监控架构设计及实施

开发的应用状态数据列表服务微服务应用健康监控架构设计及实施


开发基于如上列表服务对应的,指标定义和暴露业务实现

微服务应用健康监控架构设计及实施            


基于最新的springboot 及 cloud dependency 依赖管理, 这里有个坑,Hoxton下 Euereka对于文件size的限制,不再是MB为单位,需要转换为纯数字类型,在apollo中

           微服务应用健康监控架构设计及实施            

另外micrometer本身的 Gauge 不支持多label 指标,需要使用MultGauge,官网没有相关资料,查看代码后发现的


微服务应用健康监控架构设计及实施


Spring security 里面,对于prometheus 指标予以放行微服务应用健康监控架构设计及实施


相关Apollo 配置示例

#是否开启admin认证访问控制admin.endpoint.security.enable = true
spring.security.basic.enabled = truespring.security.user.name = adminspring.security.user.password = admin
#开启端点management.endpoints.web.exposure.include = *#management.endpoints.web.exposure.include = prometheus,health,info,metricmanagement.endpoints.health.show-details = ALWAYS
management.metrics.tags.application = ${spring.application.name}

#用户名元数据(admin使用)eureka.instance.metadata-map.user.name = ${spring.security.user.name}#密码元数据,admin使用eureka.instance.metadata-map.user.password = ${spring.security.user.password}


容器部署后,指标展示如下:

           微服务应用健康监控架构设计及实施            

SIT容器部署后,指标被成功采集到 Prometheus 时序库

           微服务应用健康监控架构设计及实施            

配合 Granafa 的 TrafficLight 展示,各微服务应用的监控状态

(Trafficlight 插件存在Bug, 开发者停更了,后续需要二次开发优化)



效果展示



 


以上是关于微服务应用健康监控架构设计及实施的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core with 微服务

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计

泰涨知识 | 从0到1了解微服务架构设计及使用(下篇)

实施微服务架构的关键技术

Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!