阿里云应用实时监控服务ARMS完全对接使用指南:从零构建全栈可观测体系

简介: 本文全面解析阿里云应用实时监控服务ARMS的对接与使用方法。从ARMS产品矩阵与服务开通入手,详细拆解接入中心统一接入流程,深入讲解Java应用通过探针无侵入接入、Python应用环境变量配置接入、Web前端通过CDN与npm方式接入等实战操作,并提供完整的代码示例与配置参数说明。系统阐述调用链采样策略、告警规则分层设计、统一告警管理、基于Grafana的自定义可观测大盘等高级功能。最后结合成本优化策略与常见问题排查,帮助读者构建从终端到后端、从基础设施到业务的全栈可观测体系。

1. ARMS产品概述与核心能力

应用实时监控服务ARMS是阿里云推出的一站式全栈可观测平台,覆盖浏览器、小程序、APP、分布式应用、容器等不同可观测环境与场景。ARMS的产品矩阵主要包括应用监控、前端监控、可观测链路OpenTelemetry版、Prometheus监控四大核心模块。

应用监控面向服务端应用,支持Java、Go、Python等主流语言,通过探针无侵入方式采集接口调用、JVM性能、数据库访问等数据。前端监控聚焦Web、H5、小程序等终端,监控页面加载速度、JS错误、API成功率等用户体验指标。可观测链路OpenTelemetry版提供分布式链路追踪能力,兼容OpenTelemetry、SkyWalking、Zipkin等主流链路框架。Prometheus监控则面向基础设施与云原生场景,提供容器、主机、中间件等监控能力。

需要先登录阿里云控制台,点击:阿里云控制台

2. 开通ARMS服务与接入中心概述

使用ARMS前需要先开通服务。新版计费模式下,计费项分为按写入的可观测数据量收费和按可观测功能收费两种模式。ARMS管理计费周期为1天,次日00:00开始计算前一天的资源消耗量,账单一般在扣费当天08:00前出账。新版计费每月提供一定的免费额度,具体为应用监控指标50GB、链路30天、剖析7天的免费存储权益。

ARMS支持通过接入中心和各子产品实例列表页面接入应用或组件。接入中心作为应用实时监控服务的统一接入入口,目前已提供100+组件的接入能力,涵盖Java应用监控、链路追踪、前端监控、容器监控、MySQL、Kafka、阿里云服务监控等。接入中心页面按基础设施、服务端应用、前端应用、数据库、中间件、人工智能六大类展示可接入的监控服务卡片,页面顶部提供搜索框以快速查找目标服务。

在实际接入时,可以任意选择接入中心或实例列表页面其中一种方式进行接入。接入中心的每一个选项即一个组件,每个组件负责以特定方式监控一类基础设施或服务,实现指标采集、数据可视化和告警规则等监控功能。

3. 应用监控接入实战

3.1 Java应用探针接入

对于Java应用,ARMS推荐使用自研探针接入,以获得更多功能支持和更好的探针稳定性保障。ARMS JavaAgent全面拥抱OpenTelemetry生态,探针底座基于OpenTelemetry框架进行了全新升级,并额外提供多种资源监控、性能诊断、应用安全等数据。探针支持更加灵活的调用链采样策略、白屏化探针管理、全方位自监控、动态功能降级等高阶特性。

Java应用接入的基本流程如下:首先在ARMS控制台的应用列表页面点击添加应用,选择Java语言,系统会生成对应的接入配置信息。然后根据应用部署方式选择对应的接入方案:对于ECS部署的应用,下载ARMS探针包并在Java启动命令中添加-javaagent参数。

以下是一个典型的Spring Boot应用通过-javaagent方式接入的启动命令示例:

java -javaagent:/path/to/arms-agent/arms-bootstrap-1.0.0-SNAPSHOT.jar -Darms.licenseKey=your_license_key -Darms.appName=your-app-name -Daliyun.javaagent.profileId=cn-hangzhou -jar your-app.jar

对于容器环境,需要在Dockerfile中集成探针。ARMS探针运行需要以下三个环境变量:ARMS_APP_NAME(ARMS控制台中显示的应用名称)、ARMS_LICENSE_KEY(应用接入凭证)、ARMS_REGION_ID(可观测数据上报的地域)。

以下是一个完整的多阶段构建Dockerfile示例:

# 多阶段构建Dockerfile
FROM maven:3.9-eclipse-temurin-17 AS builder
WORKDIR /build
COPY pom.xml .
RUN mvn dependency:go-offline -B
COPY src ./src
RUN mvn clean package -DskipTests -B
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY AliyunJavaAgent.zip /tmp/AliyunJavaAgent.zip
RUN apk add --no-cache unzip && \
    unzip /tmp/AliyunJavaAgent.zip -d /opt/ && \
    rm -f /tmp/AliyunJavaAgent.zip
ENV JAVA_TOOL_OPTIONS=\"-javaagent:/opt/AliyunJavaAgent/aliyun-java-agent.jar\"
ENTRYPOINT [\"sh\", \"-c\", \"java -Darms.licenseKey=${ARMS_LICENSE_KEY} -Darms.appName=${ARMS_APP_NAME} -Daliyun.javaagent.profileId=${ARMS_REGION_ID} -jar app.jar\"]

若ARMS_LICENSE_KEY为空,探针将静默失效,不影响应用正常运行。JVM最大堆内存需大于256MB,JDK版本支持1.8、11、17和21。

对于ACK容器服务环境,可以通过组件管理一键安装ARMS应用监控接入组件ack-onepilot。在ACK集群中,需要检查Pod的YAML配置中是否存在one-pilot-initcontainer这个init容器。同时需要为应用添加必要的标签:

labels:
  armsPilotAutoEnable: \"on\"
  armsPilotCreateAppName: \"your-app-name\"

或者在annotation中配置:

annotations:
  armsPilotAutoEnable: \"on\"
  armsPilotCreateAppName: \"your-app-name\"

3.2 Python应用接入

ARMS支持Python 3.10和Python 3.12自定义运行时环境,已预集成ARMS Python探针能力。只需通过配置环境变量和启动命令即可接入。配置步骤同样需要设置三个环境变量:

ARMS_APP_NAME={您的应用名称}
ARMS_REGION_ID={地域ID,如cn-hangzhou}
ARMS_LICENSE_KEY={从ARMS获取的LicenseKey}

启动命令修改为:

/opt/python/bin/aliyun-instrument python3 main.py

该启动器会在应用初始化前自动加载ARMS探针,实现零代码侵入的自动埋点。对于使用uvicorn的场景,建议改用gunicorn加UvicornWorker:

/opt/python/bin/aliyun-instrument gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 main:app

若代码中包含gevent协程,需额外添加环境变量GEVENT_ENABLE=true。

4. 前端监控接入实战

ARMS前端监控聚焦Web、H5、小程序等终端,监控页面加载速度、JS错误、API成功率等用户体验指标。使用ARMS前端监控来监控Web应用,必须先通过CDN或npm方式安装探针。

4.1 CDN方式接入

在ARMS控制台左侧导航栏选择前端监控,在接入中心面板的前端、移动端和用户端应用区域单击Web & H5。在接入Web & H5面板中输入自定义的应用名称,并选择需要的SDK扩展配置项。

异步加载方式是推荐的接入方式。复制提供的代码并粘贴至页面HTML的body内容的第一行。完整的HTML示例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset=\"utf-8\" />
    <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge,chrome=1\" />
    <meta name=\"viewport\" content=\"width=device-width\" />
    <title>ARMS</title>
  </head>
  <body>
    <script>
      !(function (c, b, d, a) {
        c[a] || (c[a] = {});
        c[a].config = {
          pid: 'xxx',
          appType: 'web',
          imgUrl: 'https://arms-retcode.aliyuncs.com/r.png?',
          sendResource: true,
          enableLinkTrace: true,
          behavior: true,
          useFmp: true,
          enableSPA: true
        };
        with (b) with (body) with (insertBefore(createElement('script'), firstChild))
          setAttribute('crossorigin', '', (src = d));
      })(window, document, 'https://sdk.rum.aliyuncs.com/v1/bl.js', '__bl');
    </script>
    <div id=\"app\"></div>
  </body>
</html>

异步加载又称为非阻塞加载,表示浏览器在下载执行JS之后还会继续处理后续页面。若对页面性能的要求非常高,建议使用此方式。但由于是异步加载,ARMS无法捕捉到监控SDK加载初始化完成之前的JS错误和资源加载错误。

4.2 npm方式接入

执行以下命令安装npm包:

npm install @arms/js-sdk --save

以BrowserLogger.singleton方式初始化SDK:

const BrowserLogger = require('@arms/js-sdk');
const __bl = BrowserLogger.singleton({
  pid: \"your-project-id\",
  appType: \"web\",
  imgUrl: \"https://arms-retcode.aliyuncs.com/r.png?\"
});

如需自定义用户标识,可在配置中加入uid字段:

const BrowserLogger = require('@arms/js-sdk');
const __bl = BrowserLogger.singleton({
  pid: \"your-project-id\",
  appType: \"web\",
  uid: 'xxx',
  imgUrl: \"https://arms-retcode.aliyuncs.com/r.png?\"
});

ARMS前端监控提供一系列SDK配置项,例如忽略指定URL、API、JS错误的上报、通过过滤URL中的非关键字符使页面聚类、通过随机采样上报来减小上报量并降低负载等。

5. 可观测链路OpenTelemetry版接入

ARMS支持多种方式接入OpenTelemetry Trace数据,可以将OpenTelemetry Trace数据直接上报至ARMS,或通过OpenTelemetry Collector转发。

接入步骤:登录ARMS控制台,在左侧导航栏单击接入中心,在服务端应用区域单击OpenTelemetry卡片。在OpenTelemetry配置面板中选择数据需要上报的地域,配置连接方式和上报方式,然后复制接入点和鉴权Token信息。

接入ARMS应用监控以后,ARMS探针对常见的Java框架进行了自动埋点,不需要修改任何代码就可以实现调用链信息的采集。如果需要在调用链信息中体现业务方法的执行情况,可以引入OpenTelemetry Java SDK,在业务代码中增加自定义埋点。

6. Prometheus监控接入

在开通ARMS之后,可以在ARMS中为ACK集群一键安装Prometheus监控插件,通过ARMS预定义的仪表板监控Kubernetes集群的众多性能指标。

对于ECS主机监控,在ARMS控制台的接入中心基础设施页面,单击主机监控,选择目标ECS所属的VPC,按照需求填写配置信息。可观测监控Prometheus版还提供了Remote Write标准接口,可以通过这个接口远程接入开源Prometheus的监控数据。

7. 告警规则与通知策略配置

告警管理支持将告警通知通过短信、电话、邮件、钉钉等方式发送给通知对象。

7.1 创建通知对象

以创建钉钉群机器人为例:登录ARMS控制台,在左侧导航栏选择告警管理,单击钉钉/飞书/企微页签,然后单击钉钉。在弹出的面板中设置名称、签名密钥(可选)、机器人地址等参数。如果配置了密钥则会通过加签的方式进行钉钉认证;如果没有配置密钥,默认使用关键字白名单的方式进行认证,白名单关键字为告警。

7.2 创建通知策略

通过设置通知策略,可以制定针对告警事件的匹配规则。当匹配规则被触发时,系统会以指定的通知方式向通知对象发送告警信息。在通知策略页面单击新建通知策略。在匹配规则区域设置告警事件的匹配规则。

静默策略优先于通知策略,即已被静默策略匹配到的告警事件将会被静默,无法再进行通知策略的事件匹配。在事件分组区域,可以设置告警事件是否需要分组。不需要分组时所有告警事件会以一条告警信息发送给处理人;设置分组字段时,字段内容相同的告警事件会汇总到同一告警发送通知。

ARMS系统自带的默认标签包括:

  • alertname:告警名称
  • clustername:集群名称
  • severity:告警等级(P1、P2、P3、P4)
  • _aliyun_arms_integration_name:集成名称
  • _aliyun_arms_alert_rule_id:告警规则ID
  • _aliyun_arms_alert_type:告警规则类型(101为Prometheus告警,5为应用监控告警,4为前端监控告警)

8. 自定义可观测大盘

ARMS控制台全面拥抱开源,针对高定制需求场景提供了基于Grafana加Prometheus的解决方案。可以在Grafana中添加应用监控数据源,然后配置自定义大盘。

可观测可视化Grafana版的免费共享版工作区不支持大盘编辑功能,如果要自定义大盘,必须创建付费版本的工作区。Grafana 9.0.x及以上版本支持使用ARMS告警管理。

9. 调用链采样与成本优化

对于绝大多数的分布式系统,不是每一条调用链都值得被可观测平台记录,因为其中包含大量重复的、低关注度的信息。ARMS提供丰富灵活的采样策略,可以围绕不同业务场景配置最合适的调用链采样策略,以达到成本最优、效果最佳的目的。

ARMS使用头部采样来最小化可观测数据的成本,同时保持链路的连贯性。ARMS支持两种头部采样策略:固定速率采样以指定百分比在入口服务处采样链路。ARMS探针默认将链路采集限制为每秒100条,以防止监控在流量高峰时影响应用性能。

可以在ARMS控制台指定应用下的采样设置区域调整固定采样率。在采样率设置字段输入百分比的数字部分即可,例如输入10代表采样10%。

成本优化方面还需要注意:按写入可观测数据量计费时,写入数据后各种数据类型享受不同天数免费存储权益。免费额度是按照阿里云账号级别计算,即该账号下子产品的不同应用或实例共享免费额度。每天每应用每个计费数据类型最小用量为0.1GB。

10. 常见问题排查

在ACK环境下Java应用接入ARMS后无数据时,可以按照以下步骤排查:

基础检查:进入ARMS控制台到应用列表,点击右上角设置到应用启停设置,确认数据采集是否被关闭。确认Agent总开关是否被关闭。如果是试用版,确认试用期是否已到期。

JVM监控数据检查:进入应用详情到JVM监控页面。如果没有JVM监控数据,可能是节点与控制台断连,需要检查网络连通性。如果有JVM监控数据但没有接口监控数据,需要确认当前应用有流量访问,确认应用内使用组件版本在ARMS支持范围内。如果探针版本较老(低于2.7.3.5),建议升级探针版本。

ACK接入相关检查:检查initContainer是否正常注入。检查initContainer日志,确认是否有异常退出。正常情况日志中应该出现以下内容:

[init] ack-onepilot k8s init ended. cost: 12.90225787s, error: <nil>

如果出现Error: container has runAsNonRoot and image will run as root错误,说明Pod配置了非root运行,需要去掉securityContext.runAsNonRoot: true配置。检查应用的重启时间是否在ack-onepilot安装之后。

网络要求方面,构建环境需能访问公网或阿里云内网,并开放TCP出方向端口:80、443、8080、8848、9092、9093、9990。

11. 最佳实践总结

生产环境使用ARMS建议遵循以下最佳实践:首先根据应用规模和数据量合理选择计费模式,小规模场景优先使用按量计费享受免费额度,大规模场景考虑购买资源包。其次合理配置调用链采样策略,对于核心交易链路使用较高采样率甚至全采样,对于非核心链路使用较低采样率以控制成本。第三,告警规则应分层设计,P1级别致命告警应立即通知,P2级别重要告警在工作时间通知,P3和P4级别告警可汇总后批量通知。第四,对于ACK环境优先使用组件管理一键接入。最后定期检查探针版本,及时升级到最新LTS版本以获得更好的性能和更多功能支持。

常见问题问答

问:ARMS支持哪些编程语言的应用监控?

答:ARMS应用监控支持Java、Go、Python等主流语言。Java应用通过探针无侵入方式接入,Python应用通过环境变量和启动命令配置接入,Go应用通过instgo编译工具接入。

问:ARMS前端监控的CDN和npm接入方式有什么区别?

答:CDN方式通过在页面HTML中插入script标签加载探针,支持异步加载和同步加载两种模式,适合传统Web应用。npm方式通过npm包管理器安装探针,以BrowserLogger.singleton方式初始化,适合现代前端工程化项目。

问:ARMS的调用链采样策略有哪些?如何配置?

答:ARMS支持固定速率采样策略,在入口服务处以指定百分比采样链路。可以在ARMS控制台指定应用下的采样设置区域调整固定采样率。ARMS探针默认将链路采集限制为每秒100条。

问:ARMS新版计费模式下有哪些免费额度?

答:应用监控指标每月50GB免费额度,存储90天;链路存储30天;剖析存储7天。可观测监控Prometheus版标准版指标每月50GB免费额度。免费额度按照阿里云账号级别计算。

问:ACK环境下Java应用接入ARMS后没有监控数据,应该从哪里开始排查?

答:首先检查ARMS控制台的数据采集开关是否关闭;然后检查Pod的initContainer是否正常注入;检查应用是否添加了armsPilotAutoEnable: on标签;确认应用重启时间在ack-onepilot安装之后;最后检查网络连通性和探针版本。

问:如何降低ARMS的使用成本?

答:可以通过以下方式降低成本:合理配置调用链采样率,对非核心链路使用较低采样率;购买预付费资源包以享受更低单价;注意免费额度的合理使用;对于容器服务监控,基础指标默认存储7天且免费;避免不必要的数据上报,通过SDK配置过滤无关URL和API上报。

相关文章
|
1月前
|
消息中间件 SQL 监控
阿里云物联网平台配置保姆级教程:从零开始打造你的IoT设备上云之旅
本文提供一份完整的阿里云物联网平台配置保姆级教程,涵盖从账号注册、开通服务、创建实例、定义产品与物模型、添加设备、获取证书,到设备端SDK集成、MQTT连接、数据上报、规则引擎配置、服务端订阅、OTA固件升级以及监控运维的全流程。文章详细解析了公共实例与企业版实例的选型建议、一机一密与一型一密的认证机制、物模型属性服务事件三维度设计、自定义Topic与系统Topic的区别、云产品流转的SQL解析器编写、AMQP服务端订阅的Node.js实现,并提供了C Link SDK和ESP32 Arduino两种设备端接入的代码示例。通过本文,读者可以系统掌握阿里云物联网平台的核心配置方法,快速实现设备安
|
存储 关系型数据库 MySQL
达梦(DM)数据迁移工具
讲述达梦数据库迁移工具使用
|
1月前
|
弹性计算 应用服务中间件 nginx
ONLYOFFICE Docker 部署教程:阿里云 ECS 搭建在线文档服务器
本文基于 Ubuntu 24.04 实测,详解 ONLYOFFICE Document Server 9.4.0.1 社区版的 Docker 部署:从镜像拉取、容器启动、example 测试页启用,到 Nginx 反代 + sub_filter 解决白屏与 400 错误,覆盖环境要求、排错要点及生产建议,助你快速验证在线编辑能力。
702 0
|
1月前
|
存储 弹性计算 人工智能
2026年阿里云服务器配置价格表(轻量、ECS、GPU)
2026年阿里云服务器价格体系覆盖轻量应用服务器、ECS云服务器、GPU计算型服务器三大核心品类,针对个人开发者、中小企业、企业级用户推出差异化配置与定价方案,同时提供包年包月、按量付费两种主流计费模式,新老用户均有专属优惠,整体价格透明且适配不同业务场景。以下从三大产品维度,详细梳理2026年阿里云服务器配置与价格明细,覆盖入门到高端全场景需求。
675 0
|
6月前
|
弹性计算 网络安全 异构计算
使用阿里云GPU服务器部署Qwen3-235B-A22B推理模型,基于ecs.ebmgn8v实例规格
本文介绍如何使用阿里云GPU服务器(ecs.ebmgn8v实例,8卡96GB显存)部署Qwen3-235B-A22B大模型,涵盖创建VPC、安全组、GPU实例、环境配置、模型下载、部署及推理测试全流程,费用约290元/小时。
|
1月前
|
前端开发 JavaScript API
阿里云多端低代码开发平台魔笔对接使用完全指南
本文系统性地阐述了阿里云多端低代码开发平台魔笔的对接使用全流程。从平台的核心定位与开通准备入手,深入剖析了集成资源与集成操作的双层架构,详细讲解了表达式语法、变量与前端函数等逻辑开发核心概念。文章重点介绍了密钥引用机制保障敏感数据安全、代码扩展与自定义组件满足个性化需求、模块化管理实现物料复用,以及集成流编排处理高复杂度业务逻辑。通过具体代码示例与操作指引,帮助开发者全面掌握魔笔平台与外部系统对接的方法论与实践技巧,实现高效、安全、可扩展的低代码应用开发。
|
1月前
|
人工智能 运维 监控
阿里云的 Agent Infra 长什么样
分享了团队在 Agent 工程化领域的完整思考与产品实践,从构建、部署到规模化运行,如何用一套 Agent Infra 覆盖智能体的开发-运行-治理-运维-优化全周期。
|
7月前
|
人工智能
阿里云建站费用价格表:万小智AI建站+云企业官网收费标准,网站搭建一站式
阿里云建站提供万小智AI建站与云企业官网两种服务。万小智为模板建站,698元起/年,买3年享8折,送.cn域名;云企业官网为定制建站,5480元起/年,专业设计,适合企业高端需求。均无需自购服务器,一键部署,省心高效。
429 0
|
10月前
|
运维 负载均衡 微服务