APM背景
随着微服务、云计算的发展,提升了应用的可用性、扩展性,同时也带来了运维、监控的复杂性,当我们需要从众多服务依赖中,查询出问题根源也越来越难。
系统的监控分为三个维度:
1、Metrics 指标性统计
一个服务的正确率、成功率、流量、TPS、响应时间等
2、Tracing 分布式追踪
从请求开始到结束,服务节点之间的调用链路
3、 Logging 日志记录
程序在执行的过程中间发生了一些日志,会一帧一帧地跳出来给大家去记录这个东西,这是日志记录
分布式追踪
分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
依据Google Dapper论文,众多分布式追踪开源软件出现,比如zipkin、skywalking.
分布式追踪的基本逻辑:
skywalking简介
- 官网:http://skywalking.apache.org/zh/
- github仓库:https://github.com/apache/skywalking
- 2015年开始开源,由原华为技术专家吴晟主导实现的专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统
- 专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计
- apache顶级项目
- 用户案例
特性
- 多种监控手段,语言探针和service mesh
- 多语言探针:Java、.NET Core、PHP、Node.JS、Go
- 支持多种数据存储方式: ElasticSearch、MySql、TiDB、H2、Sharding Sphere
- 强大的UI可视化界面
- 高性能、高可用:agent端探针性能消耗低,服务端支持多种集群部署方式
- 支持多种指标的监控告警
- 微核+插件式扩展的高扩展框架
同类型对比
同类型的开源APM产品有:美图点评的cat、韩国的pinpoint、老牌APM zipkin,综合比较skywalking是之中最值得推荐使用的产品。
skywalking优势
- 国内开源项目,社区成熟,且可与作者直接沟通
交流方式、自主解决问题:
qq群:392443393、901167865
github提交 issue
查阅 官方邮件列表 - 支持语言更多:Java、.NET Core、PHP、Node.JS、Go
- 支持java自动探针,代码无侵入,只要简单配置,就可以自动实现各种指标、调用链的埋点
- 众多存储选择:ElasticSearch、MySql、TiDB、H2、Sharding Sphere
- 扩展性:支持模块、插件的可拔插
- 支持java语言的几十种插件,例如:Tomcat、RabbitMq、Kafka,且易于二次开发
- 性能:比其他开源软件性能都强
详细的比较可以参考网友写的博文:
APM巅峰对决:skywalking P.K. Pinpoint
APM和调用链跟踪
部署与使用
核心概念
解决实际问题
参考:
小城故事多-跟着小程学微服务-自己动手扩展分布式调用链https://www.jianshu.com/p/17a015848dc1
Skywalking调研与初步实践https://www.jianshu.com/p/17a015848dc1
官网博客合集https://www.jianshu.com/p/17a015848dc1