生产就绪
配置中心
调用链监控
结构化日志structlog4j
结构化日志, 日志记录json格式的数据方便后续查找统计等, 示例项目采用的是structLog4j
项目地址: https://github.com/jacek99/structlog4j
本质上是对Log4j的一层简单封装, 是个好东西!!! 但也要评估一下序列化成对象对性能的影响
集中异常监控Sentry
项目地址: https://github.com/getsentry/sentry
官网: https://docs.sentry.io/platforms/java/
Sentry是异常监控(error tracking)和告警平台,和普通日志比起来,异常日志相对少。Sentry可以独立部署,内部有各种优化(缓存/异步/限流/分组等),保证高性能处理异常日志。
如果要做普通日志采集或者分析的话,ELK是不错选择,ELK可以分布式部署,根据你的容量可以按需扩容。
EFK+K8S 日志监控
在k8s上进行日志收集建议使用EFK, 如下图
- 在k8s的每个节点都有一个fluentd节点, 可以拉取容器中的日志文件, 然后直接写入es
- 建议在中间加一个kafka做一层缓冲, 而且当es升级时, 可以先将日志缓存在kafka
- 建议自己开发一层Log Parser对日志做一些解析过滤, 然后写入es, 最后通过kibana查看
- kibana也有日志告警的功能
Prometheus+K8s Metric监控告警
- springboot2.0内置Mictrometer以及Actuator, 开启后暴露Metrics端点, 里面有springboot自身支持的Metrics, 比如容器的性能数据, 也可以通过Micrometer去增加一些埋点, 统计业务的metrics
- prometheus可以通过k8s发现节点上的服务, 然后即可定义规则去抓取Metrics, 然后一方面可以通过Alert Manager进行告警, 另一方面可以通过Grafana展示
SkyWalking+K8s 调用链监控
- SkyWalking支持字节码注入, 需要springboot镜像基于SkyWalking Agent的基础镜像即可
- SkyWalking Agent中会暴露一个SkyWalking Collector的url, 调用链数据会传到collector上, 最后存在es中, 同时SkyWalking也有dashboard展示数据