Kubernetes微服务监控体系
微服务公共关注点
监控分类和适用场景
监控是微服务架构的核心关注点之一。
目前有4种主流的微服务监控方式:
- Metrics 度量指标监控,格式为[time,value],由某个指标的一组[time, value]也称作时间序列time series。
- counter 计数器,具有累加特性,例如,注册登录数;
- Gauge 测量仪,表示某个时间点对某个数值的测量,比方说当前内存的使用量。
- Histogram 直方图,统计计算出来的一组数值。
- Label, Metrics上可以打上标签 key:values。比方说应用名称 app: petclinic, 机器IP ip: 192.168.19.11; 标签,可以对metrics进行过滤,或者聚合运算。 - Logging 日志, 把日志收集起来,就可以集中的监控和告警。日志有两种。
- Structured 有结构,key/value结构,便于检索,直观。
- Unstructured 无结构,日志在一个字符串当中。 - Tracing 调用链监控,当用户在网站上发起一个请求,到最后收到响应,该请求响应在网站后台微服务之间的调用踪迹。用户每次请求都会产生一个调用链,把调用链收集起来就能集中的监控和分析。
- Span 是某个节点上的某个函数调用,把Span收集起来,就可以把调用关系恢复呈现出来。微服务应用的依赖关系异常复杂,Metrics,Logging的监控都无法监控这种依赖关系。调用链监控是微服务监控的重要手段。 - Healthchecks 健康检查,定期检查某个应用的健康状态,是一种简单而且有效的监控手段。
监控方式对比
对比 | Metrics | Logging | Tracing |
---|---|---|---|
CapEx 前期搭建成本 | Medium | Low | High |
OpEx 后期运维成本 | Low | High | Medium |
Reaction 发现问题的灵敏性 | High | Medium | Low |
Investigation 排查问题根源的有效性 | Low | Medium | High |
下图所示,左边为告警灵敏度,右边为问题根本原因排查。
微服务监控体系
微服务4层监控体系:
- 系统层,系统运维同学负责。
- 应用层,基础架构与中间件同学负责。
- 业务层,业务开发人员与产品经理合作负责。
- 端用户体验层,用户体验研发团队负责,或外包。
小结
四种主要微服务监控手段:
- Metrics 告警,趋势预测
- Logging 排查问题,错误告警
- Tracing 性能分析,排查问题
- Healthcheck 告警
四层微服务监控体系:
- 系统层(计算/网络/存储/OS - EFK/Prometheus)
- 应用层(框架/App/DB/Cache/中间件 - EFK/Prometheus/Skywalking)
- 业务层(注册/登录/下单/支付 - EFK/Prometheus)
- 端用户体验层(end to end 延迟/可用性 - SaaS监控/商业方案-听云)