*time.geekbang.org/course/intr…
课程和背景介绍
课程重点是:微服务和云原生架构,运用Spring boot 和 kubernetes。_________________________________________________________________________________________________
可运维架构设计和实践
软件工程阶段可划分为:需求分析 -> 架构设计 -> 实现测试 -> 部署运维 。在部署运维之前,我们必须确保生产就绪(production ready)。生产就绪包含:功能测试OK,配置管理,日志监控,Metrics监控,健康检查(spring 内置),性能测试OK,高可用考量,扩展升级考量(灰度测试,蓝绿部署等),安全性考量,调用链监控。
配置管理
列出了3中工具:Apollo,SpringCloudConfig,K8s ConfigMap
调用链监控
演进史:
2002 eBay CAL 第一个调用链监控工具
2010 Google Dapper论文 开启了调用链监控工具
2012 Twitter Zipkin 参考Google论文,并开源了项目
2015 Apache Skywalking 参考了Google论文,用Java开发
列出了3中工具:CAT,Zipkin,Skywalking
结构化日志和审计日志
结构化日志是有结构的,可以是json的,structlosg4j就是java平台的结构化日志库。
审计日志是记录关键操作的,也可以用于debug. 比如作为一个提供接口的微服务,可以在每一次调用某个接口的时候,可以记录是哪个服务调用的,哪个用户ID,操作的目标类型,目标ID,更新的内容。审计日志也可以是结构化的,便于管理。
除了ELK (Elastic search, logbash, kibana)可以收集和管控日志,还可以用Sentry(集中异常监控).
监控架构的设计
EFK + K8s
推荐使用fluentd做日志收集,日志直接打印到console上,fluentd会收集所有docker中的日志。在发送给elk之前,可以在中间加一层kafka,目的是日志如果过大的话,可以通过kafka削弱对elk的压力。自己可以开发一个Log Parser,来做一个日志的过滤和解析,然后发送给elastic search。最后用kibana来查询elastic search中的日志。
Prometheus + K8s
Prometheus是业界metrics监控和告警的标配。用Micrometer即成Spring自带的Actuator来做数据收集。Prometheus是有发现服务的功能的。最后通过Alert manager做警告。用grafana做页面显示。
SkyWalking + K8s
SkyWalking是字节码注入。需要在应用中安装Skywalking Agent. 在java -jar启动的时候,需要带上。也可以直接用带有Skywalking Agent的基础镜像。是非侵入的,不用自己埋点。最后调用链存储在elastic saerch中。
_________________________________________________________________________________________________
cover了课程第七章的内容