APM 组件选型

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 常用监控手段:按监控层次分:业务监控、应用监控和基础监控等;按监控日志来源分:基于日志文件监控、基于数据库监控和基于网络监控等;按监控领域分:前端监控、后端监控、全链路监控、业务间监控等;按监控目标分:系统故障监控、业务指标监控、应用性能监控、用户行为监控、安全合规监控等。

监控之 what&why


常用监控手段


  • 按监控层次分:业务监控、应用监控和基础监控等;
  • 按监控日志来源分:基于日志文件监控、基于数据库监控和基于网络监控等;
  • 按监控领域分:前端监控、后端监控、全链路监控、业务间监控等;
  • 按监控目标分:系统故障监控、业务指标监控、应用性能监控、用户行为监控、安全合规监控等。


监控首先要解决的是目标设定,到底要解决什么问题,关注什么指标。


我们的定位是APM 即应用性能监控。


解决微服务架构下:

  • 服务间依赖关系梳理、查询
  • 全局依赖关系拓扑
  • 调用链跟踪、拓扑、查询
  • 服务响应时间监测(最长、最短、平均)
  • 服务JVM性能监测和告警
  • Dashboard(图表展示)


进而解决

  • 服务问题快速诊断、定位
  • 对于自己的调用情况,方便作容量规划,同时对于突发的请求也能进行异常告警和应急准备


打造监控闭环:监控不是目的,目的是告警,告警不是目的,目的是解决问题。


APM

APM被作为一个细分领域的IT解决方案行业被单独提出来还是在近几年的事情,大概在2010年左右。 厂商有:appdynamics、听云、OneAPM等


40.png


41.png


APM五大维度


image.png


  • 终端用户体验
    衡量从用户请求到数据再返回的流量传输是捕获最终用户体验(EUE)的一部分。此测量的结果称为实时应用程序监视(又称自顶向下监视),它具有被动和主动两个组件。被动监控 通常是使用网络端口镜像实现的无代理设备。主动监控 由预定义的合成探针和Web机器人组成,用于报告系统可用性和业务事务(即业务方自行埋点)。
  • 应用架构映射
    应用程序发现和依赖关系映射(ADDM)解决方案用于自动执行将事务和应用程序映射到底层基础架构组件的过程。
  • 应用事务的分析
    关注用户定义的事务或对业务社区有一定意义的URL页面定义。
  • 深度应用诊断
    深度应用诊断(DDCM)需要安装代理,通常针对中间件,侧重于Web,应用程序和消息服务器。
  • 数据分析
    获得一组通用的度量标准以收集和报告每个应用程序非常重要,然后标准化有关数据并呈现应用程序性能数据的常见视图。


APM被形象的称为应用程序的私人医生,越来越收到企业的青睐,比起通过日志方式记录关键数据显然要更加实用,APM主要包含如下核心功能:


  • 应用系统存活检测
  • 应用程序性能指标检测(CPU利用率、内存利用率等)
  • 应用程序关键事件检测
  • 检测数据持久化存储并能够多维度查询
  • 服务调用跟踪
  • 监控告警


一般做法


下面三个维度是有重合部分的,比如JVM监控等。


43.png


先看一下演进的历史:


  • Logging:ELK
  • Metrics:Prometheus
  • tracing:本文选型


44.png


由于pinpoint和skywalking从工作原理、性能、功能等方面很像,由于我们不需要追求那么好的UI,以及考虑到社区和apache的背书在这两者中我们选择了skywalking。而Uber的jaeger较新相对来说社区和文档的支持没有前者友好,就不在我们的选型范围了。


我们的选型主要针对 zipkin cat 和skywalking进行



CAT
Zipkin
Apache Skywalking
调用链可视化

聚合报表
非常丰富

较丰富
服务依赖图 简单 简单
埋点方式
侵入 侵入 非侵入,运行期字节码增强
VM指标监控



告警支持


多语言支持
java/.Net/C/C++/NodeJS/Python/Go等
丰富
java/.Net/NodeJS/PHP/Go
存储机制
Mysql,本地文件,HDFS(调用链) 可选in memory,mysql,ES(生产),Cassandra(生产) H2,ES(生产),mysql,TIDB等
社区支持
主要在国内,点评、美团
文档丰富,国外主流
Apache支持,国内社区好
国内案例

点评、携程、陆金所、拍拍贷等

京东、阿里定制不开源

华为、小米、当当、微众银行

APM
Yes
No
Yes
祖先源头
eBay CAL
Google Dapper
Google Dapper
同类产品
暂无
Uber jaeger,Spring Cloud Sleuth
Naver Pinpoint
GitHub starts(2020.7)
13.7k
13.2k
14k
亮点
企业生产级,报表丰富 社区生态好
非侵入,Apache背书
不足
用户体验一般,社区一般
APM报表能力弱
时间不长,文档一般


基于以上,我的建议是:

  • zipkin欠缺APM报表能力,不建议
  • 企业生产级,推荐CAT
  • 关注和试点 Skywalking
  • 用好调用链监控,难点在于后期的企业定制化和自研能力


相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
SQL 存储 数据采集
ARMS在APM工具选型中的实践
当前的系统在数字化转型需求以及互联网架构实施的影响下,越来越普遍地使用了微服务架构,我们在享受微服务带来的好处(开发效率高, 独立部署, 水平扩展, 故障与资源隔离等等)外,也带来测试,事务,应用监控等各方面的困难。
3790 9
ARMS在APM工具选型中的实践
|
3月前
|
移动开发 监控 Android开发
Android & iOS 使用 ARMS 用户体验监控(RUM)的最佳实践
本文主要介绍了 ARMS 用户体验监控的基本功能特性,并介绍了在几种常见场景下的最佳实践。
442 13
|
5月前
|
运维 监控 数据可视化
ARMS的微服务监控
【8月更文挑战第23天】
84 6
|
8月前
|
监控 Java 索引
APM Server监控
APM Server监控
|
5月前
|
监控 前端开发 JavaScript
ARMS的Web应用监控
【8月更文挑战第23天】
79 8
|
8月前
|
Kubernetes 监控 安全
Kustomize 生产实战 - 注入监控 APM Agent
Kustomize 生产实战 - 注入监控 APM Agent
|
5月前
|
监控 JavaScript 前端开发
ARMS的移动应用监控
【8月更文挑战第23天】
95 6
|
1月前
|
监控 开发工具 Android开发
ARMS 用户体验监控正式发布原生鸿蒙应用 SDK
阿里云 ARMS 用户体验监控(RUM)推出了针对原生鸿蒙应用的 SDK。SDK 使用 ArkTS 语言开发,支持页面采集、资源加载采集、异常采集及自定义采集等功能,能够全面监控鸿蒙应用的表现。集成简单,只需几步即可将 SDK 接入项目中,为鸿蒙应用的开发者提供了强有力的支持。
|
2月前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
52 3
|
5月前
|
Prometheus 监控 前端开发
ARMS设置监控规则
【8月更文挑战第24天】
156 9