微服务应用健康监控架构设计及实施
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 = true
spring.security.user.name = admin
spring.security.user.password = admin
#开启端点
management.endpoints.web.exposure.include = *
#management.endpoints.web.exposure.include = prometheus,health,info,metric
management.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, 开发者停更了,后续需要二次开发优化)
效果展示
以上是关于微服务应用健康监控架构设计及实施的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)