阿里云ARMS应用实时监控服务完全使用指南:从接入到深度分析
一、ARMS产品定位与核心能力概述
阿里云应用实时监控服务(Application Real-Time Monitoring Service,简称ARMS)是一款面向云原生和传统IT架构的全栈可观测性平台。随着现代分布式系统日益复杂,微服务架构、容器化部署以及前端体验碎片化带来了严峻的监控挑战,ARMS正是为了解决这些痛点而设计的统一解决方案。从企业研发到运维人员,ARMS提供了从代码级性能剖析到用户体验追踪的一站式监控能力。
需要先登录阿里云控制台,点击:阿里云控制台
ARMS旗下包含多个核心子产品。应用监控是基于探针技术的应用性能管理(APM)工具,专注于Java、Golang、Python等服务端应用,通过无侵入方式自动收集链路、指标和异常数据。前端监控专注于Web、H5及移动端页面性能,提供首屏耗时、JS错误率、API请求成功率等指标。Prometheus监控是全面托管的云原生监控服务,完全兼容开源Prometheus协议和查询语法。此外,可观测链路OpenTelemetry版支持多语言应用的分布式追踪。这套产品矩阵协同工作,构成了从终端用户到后端服务的完整可观测闭环。
ARMS的核心价值在于无需改写业务代码即可获得丰富的可观测数据。对Java应用而言,一个Agent探针就能自动完成方法栈织入、指标采集和链路串联,大幅降低了监控体系的建设成本。同时,深度集成阿里云容器服务ACK、函数计算FC、日志服务SLS等云产品,使用ARMS可以轻松实现跨云产品和跨语言的全链路追踪。
二、开通服务与整体接入架构
使用ARMS服务的第一步是开通相关子产品。在阿里云控制台的ARMS产品主页,系统引导用户选择需要开通的子产品类型。对于首次使用的新用户,ARMS提供了按量付费模式,并包含一定额度的免费数据写入量。不同子产品的免费额度可独立享受且以账号级别计算,应用监控每月享有50GB的指标写入免费额度,链路数据享有30天免费存储期。
完成服务开通后,接入策略需根据应用部署形态进行选择。对于ECS中部署的传统Java应用,推荐使用ARMS Java Agent手动接入方式。该方式需要下载Agent压缩包并将其解压到应用服务器,随后在应用启动脚本中添加JVM参数。对于阿里云容器服务ACK环境,ARMS提供了一键接入能力,通过安装ack-onepilot组件并重启Pod即可完成探针注入。前端应用则更为轻量,仅需在页面头部插入一段SDK脚本代码。整ARMS的控制台将以应用为维度聚合各类监控数据,一个企业账号下可管理上千个独立应用。
三、Java应用接入应用监控
Java应用接入ARMS应用监控是整个体系中最为常见且成熟的方案。ARMS应用监控支持JDK 1.7及以上版本,建议企业级应用优先使用JDK 8、JDK 11或JDK 17以获得长期支持。接入过程分为探针下载、安装配置和启动验证三个阶段。
首先登录ARMS控制台,在左侧导航栏进入"接入中心"。在应用接入类别下选择Java Application Monitor,页面会提供手动安装和自动安装两种选项。对于标准ECS部署场景,从控制台下载AliyunJavaAgent.zip压缩包,或通过wget命令在各区域对应的端点获取。例如在杭州地域,公网可通过http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/AliyunJavaAgent.zip下载,VPC内网则通过http://arms-apm-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/AliyunJavaAgent.zip获取。下载完成后解压到目标目录,例如/opt/arms/agent。
关键步骤在于JVM启动参数的注入。需要在应用的启动脚本中添加-javaagent参数明确指向探针路径。核心启动参数示例如下:
java -javaagent:/opt/arms/agent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey=your_license_key -Darms.appName=your_application_name -jar your-app.jar
其中arms.licenseKey用于身份认证与数据归属,arms.appName则指定应用在控制台中的唯一标识。Agent启动后会自动探测应用使用的Web框架和RPC框架,包括SpringBoot、Dubbo、HSF、Tomcat等。启动完成后,登录ARMS控制台的应用列表页面,若目标应用呈现绿色的运行状态且应用概览页面有数据流入,则代表接入成功,此时即可查看请求数、错误数、平均耗时和实例数量等核心统计。
对于容器服务ACK环境,接入更为简便。只需在集群组件管理中安装ARMS应用监控组件ack-onepilot,该组件会自动为命名空间下符合标签规则的Pod注入探针。无需修改Dockerfile或构建脚本,只需在Pod的annotations中声明armsPilotAutoEnable为true,即可实现无侵入式探针挂载。
四、前端应用接入体验监控
ARMS前端监控子产品专注收集浏览器端的性能与异常数据。接入方式分为CDN脚本注入和npm包集成两种主流模式。CDN方式最为轻量,适合传统HTML项目或快速验证场景;npm方式则契合现代前端工程化开发流程,适合使用Webpack、Vite等构建工具的单页应用项目。
使用CDN方式时,首先需要在ARMS控制台的"前端监控"模块创建应用站点。创建完成后系统会生成一段带有唯一pid的BI探针代码。将这段代码复制到HTML页面的
标签内部第一行即可完成探针部署。控制台提供了灵活配置面板,可开启SPA自动解析以适应单页应用的hashchange路由,还可勾选API自动上报、首屏FMP采集、JS错误追踪等增强功能。对于现代工程化项目,通过npm包引入更为规范。执行npm install @arms/js-sdk --save安装SDK后,在应用入口文件中引入并完成初始化。代码示例如下:
const BrowserLogger = require('@arms/js-sdk');
const __bl = BrowserLogger.singleton({
pid: 'your-project-id',
appType: 'web',
uid: '业务用户标识',
imgUrl: 'https://arms-retcode.aliyuncs.com/r.png?'
});pid需替换为控制台生成的站点唯一ID。uid字段支持自定义业务用户标识,若未提供则由SDK自动生成随机ID并每半年更新。前端监控的数据收集方向包括JS错误、API请求成功率、首次内容绘制时间以及用户行为轨迹。这些数据实时上报后,可在ARMS前端监控列表页面查看详细的聚合统计。实时大屏则汇总了最关键的指标,如JS错误率、PV与UV曲线、API请求成功率排行等,适合运维人员在集中监控中心进行看板展示。
五、应用核心监控功能深度剖析
ARMS真正的价值在于其丰富的分析能力。当应用成功接入后,控制台的各个数据面板将为用户提供立即可见的观测价值。应用总览页面以翻牌器和趋势图的形式展示了请求总数、错误总数、平均耗时和活跃实例数量,并支持与昨日同期的数据对比,让运维人员快速评估应用整体健康状况。在容器环境下,ARMS还会结合托管Prometheus实例自动拉取Pod级别的CPU和内存数据,与探针采集的业务指标融合展示。
实例监控页面将视角从应用整体下钻到单个Java虚拟机。该页面提供的监控图表涵盖基础的主机CPU与内存利用率、Full GC与Young GC发生次数及耗时、堆内存与非堆内存的实时水位。ARMS采集的JVM数据直接来源于JMX,其中非堆内存区域包含Metaspace、Code Cache等部分,能够清晰呈现垃圾回收的动态变化。点击具体的实例IP还能查看该实例的线程分析报表,识别是否存在死锁或线程阻塞。
数据库调用能力是性能优化的核心利器。在数据库调用页面,ARMS自动解析应用代码中发往MySQL、Redis、MongoDB等数据源的请求。概览页展示调用拓扑和请求数、响应时间趋势。SQL调用分析页签则以柱状图展示每分钟调用次数和耗时曲线,下方以明细表格列出每条SQL语句的慢执行次数、平均耗时和返回数据大小。通过"调用链查询"功能,运维人员可以追踪任意一条慢SQL执行的完整方法栈上下文,精准定位是索引缺失、数据量过大还是网络延迟导致的性能瓶颈。
接口调用页面提供了Web服务和RPC服务的调用细节。针对SpringBoot的Controller或Dubbo的Provider,ARMS展示每个接口的请求数、响应时间和错误数时序曲线。拓扑视图能够以可视化节点图展示上下游调用关系。异常分析页签聚合了应用抛出的业务异常类型及数量,并支持从异常堆栈直接跳转至对应的代码链路。
调用链分析功能是可观测性的灵魂。错/慢Trace分析能够从海量的链路过采样数据中自动筛选出耗时异常或报错的请求。设置耗时阈值后,ARMS返回那些满足筛选条件的Span列表,并提供火焰图和时序甘特图以供代码级别定位。例如在排查HTTP 500错误时,在错Trace分析页签可按时间范围圈定错误发生窗口,筛选出现错误最多的接口,然后单击Trace ID即可查看完整的异常堆栈和关联日志。
实时诊断是一个在特定时间段内高精度监控的特性。当发布新版本或对关键业务压测时,打开实时诊断开关后,ARMS会在5分钟内以全量上报模式(而非默认的高性能采样模式)采集调用链数据。这对在短时间窗口内定位偶发性异常特别有效。实时诊断面板会展示最近1000次请求的统计分布和全部未采样的调用链明细。
此外,对于生产环境频繁出现的应用卡顿问题,持续剖析能力可以提供低开销的方法级性能剖析,直接定位热点方法。ARMS 4.0版本探针全面拥抱OpenTelemetry生态,使得数据采集更加标准,性能损耗更低,且支持更加灵活的调用链采样策略。
六、Prometheus监控与扩展集成能力
ARMS不仅包含APM功能,还通过可观测监控Prometheus版构建了云原生指标中心。Prometheus实例是该服务的核心逻辑单元,负责指标采集配置、时序数据库存储以及告警规则管理。Prometheus版为容器环境提供了开箱即用的采集能力,当ACK集群开启Prometheus监控时,组件会自动采集节点资源、Pod状态等基础指标,并默认保留7天免费数据。针对自定义业务指标,可观测监控Prometheus版兼容Remote Write协议和ServiceMonitor方式,支持用户将自建Prometheus数据统一汇总至云上实例中。
ARMS应用监控与Prometheus监控存在天然的数据互通。ARMS应用监控采集的RED指标(请求数、错误数、耗时)会默认写入Prometheus实例。基于此数据,用户可以在阿里云Grafana服务中创建自定义大盘。通过在工作区中一键集成ARMS应用监控数据源,即可利用Grafana强大的可视化引擎渲染出比控制台预置大盘更复杂和个性化的图表面板。HPA弹性伸缩方案也充分利用了ARMS的指标能力。在ACK集群中部署alibaba-cloud-metrics-adapter组件,配置prometheus.url为该集群的Prometheus查询端点,即可基于ARMS采集到的QPS指标实现Pod的水平自动伸缩。
集成中心进一步统一了全栈监控入口。不管需要监控的组件是Nginx、Redis、Kafka还是阿里云RDS,用户都可在集成中心按需订阅对应的组件模版。每个模版都打包了指标采集配置、监控大盘面板和告警规则推荐,极大降低了监控配置的门槛。在环境配置上,VPC环境、容器环境和云服务环境都各自关联一个独立的Prometheus实例,从而在大规模多租户场景下实现数据隔离。
七、告警配置与管理机制
ARMS的告警管理能力从规则配置到通知聚合都较为成熟。新版告警管理模块融合了原有的报警策略管理,并新增了通知策略功能。创建告警规则的第一步是设定检测类型,阈值检测是最常见的设置方式,用户可为应用服务选择指标类型,比如设置平均响应时间大于500毫秒且持续3分钟则触发P2级别告警。在条件配置中支持单条件与多条件组合。例如同时要求最近的调用错误率大于5%且调用总次数大于200次才触发告警,这能有效过滤掉低流量场景下因少量样本导致的误报。
告警分级功能为不同严重程度的事件分配P1至P4等级。P1级别一般对应核心业务中断或性能雪崩,此类告警等级往往同时配置短信和电话通知;P4级别则主要用于通知调试或不严重影响体验的异常。为落实告警通知,应先创建通知对象。在告警管理页面可配置钉钉机器人,输入机器人的Webhook地址以及可选签名密钥。配置完成后,ARMS钉钉机器人将向群组发送带有告警详情、修复建议的富媒体卡片消息。
静默策略与通知策略的组合是告警噪音治理的关键。静默策略可以在系统维护时段临时屏蔽告警推送,例如在凌晨日常发版的两小时内,将与业务发布相关的告警静默避免打扰轮值人员。通知策略则负责告警事件的进一步分派和升级。当一条告警持续10分钟未认领时,系统将触发升级通知,将告警信息同时抄送更高级别的运维负责人。
八、成本优化与计费剖析
理解ARMS的计费规则是进行长期成本控制的前提。ARMS已全面推行新版计费模型,核心逻辑是按写入可观测数据量进行收费。该模型区分指标、链路和剖析三类数据类型分别计费。每月每个阿里云账号在应用监控子产品下享有50GB的免费指标写入额度和链路30天、剖析7天的免费存储期,超出部分需按量付费。对于Prometheus版,标准版指标的单价为国内地域0.062美元/GB。剖析数据最小计费单位为0.1GB每天,这意味着小规模测试应用即使写入量极低,也可能产生最低计费账单。
控制使用成本需要从采样策略、存储层级和数据收敛三方面着手。链路采样率直接决定Trace数据的写入量。在ARMS的自定义配置中,默认固定采样率为10%,在压测或流量突发场景可适度提高以获得更多样本。为节省成本,生产环境保持10%采样率通常是性价比和安全性的平衡选择。如果确实需要更低成本,可以设置自适应采样,只对特定接口进行全量采集。
指标写入量受URL维度聚合影响显著。如果应用提供的API接口路径中存在动态参数,会导致指标维度膨胀从而大幅增加数据量。ARMS提供了URL收敛功能,用户可通过正则表达式匹配如/service/detail/123这类路径,将规律性变动的部分作为一条聚合指标进行展示,有效降低指标的唯一维度数。对于历史链路数据,ARMS支持开启归档存储功能。超过免费存储期限的调用链将自动转入归档存储空间,虽然在查询时响应略慢,但长期存储成本极低,仅为40元人民币/TB级别,特别适合保留了6个月以上历史追踪日志的场景。
若业务长期用量稳定,可考虑购买节省计划。节省计划本质上是一种承诺消费换取折扣的权益计划。例如用户预付一定年消费金额,换取后续超出免费额度部分的按量单价折扣,实现更高用量下的成本下移。
九、常见问题问答
问1:ARMS应用监控接入后,为什么应用列表页面显示没有数据?
答:首先检查JVM启动参数中-javaagent路径是否正确,以及系统属性arms.licenseKey和arms.appName是否设置完整。若Agent加载时输出ERROR级别日志,则说明探针激活失败。其次检查网络连通性,确保应用服务器能通过公网或VPC内网访问ARMS接入点,如果存在防火墙或安全组规则限制,需开放相应的HTTP端口。
问2:如何将ARMS前端监控与后端应用监控关联起来,实现全链路追踪?
答:在应用设置中启用前后端链路追踪选项。前端监控SDK需在初始化时将enableLinkTrace设置为true,然后在发送API请求时,ARMS前端探针会自动在HTTP请求头中注入Trace上下文信息。后端应用监控检测到该请求头后,会基于该TraceId持续串联后端调用链。最终在ARMS控制台中,从前端页面发起的Request能一路串联至后端数据库和依赖服务的完整轨迹。
问3:ARMS应用监控能否监控非Java语言的应用?
答:可以。ARMS应用监控原生支持Java、Golang和Python三种语言的零代码接入。对于Node.js、.NET、PHP等语言,建议通过开通可观测链路OpenTelemetry版来实现。用户可在应用中集成OpenTelemetry SDK,手动创建Span并上报至ARMS后端,同时ARMS应用监控的数据与链路数据完全互通,满足混合技术栈的监控需求。
问4:ARMS探针对应用性能的损耗有多大?
答:ARMS探针经过多轮优化,在默认采样率下对应用程序的CPU损耗通常在2%至5%之间,内存损耗约为64至128MB。开启全量调用链采集或实时诊断时性能损耗会有所上升,但一般而言生产环境使用默认配置是完全可接受的。ARMS自身也提供了自监控能力,可在探针配置中查看探针自身的资源消耗情况。
问5:ARMS的监控数据最长能保存多长时间?
答:指标数据的免费存储期为90天。链路数据免费存储30天。剖析数据免费存储7天。对于链路数据,用户可开启归档存储功能,将超过30天的链路数据转入低成本归档存储,根据存储周期可保留60天、90天或180天,且过期后可不断延长归档期限。
问6:如何评估ARMS的月度费用支出?
答:用户可在ARMS控制台的资源消耗统计页面查看每天的指标、链路和剖析写入量。结合每月各产品自带的免费额度,实际计费值即为超出部分乘以单价。同时阿里云提供费用与成本控制台,用户可在账单明细页面按产品和实例维度查看详细扣费。为避免预算超标,建议在用量统计页面为不同应用设置每日写入配额,达到额度后系统将自动停止数据上报并发送预警通知。



