常见问题

最近更新时间:2024-06-21 17:51:01

我的收藏

选型相关

应用性能监控支持什么语言?

应用性能监控 APM 遵循 OpenTelemetry 协议标准,理论上支持接入所有语言编写的应用。用户可以从开源社区获取对应的接入方案,将监控数据上报到应用性能监控 APM 服务端。对于常见的语言,例如 Java、Go、Python 等,帮助文档中提供了详细的接入指引;其他语言请参考 OpenTelemetry 社区 API & SDK 列表

接入应用是否需要修改代码?

应用性能监控支持多种接入方案,由于编程语言之间特性上的差异,接入工作量也存在比较大的差别。
Java 语言有最成熟的自动接入方案,针对常用的架构和组件都做了自动埋点,埋点覆盖范围非常高,接入过程中可以实现零代码侵入。
Python、Node.js、PHP 等语言也有自动接入方案,但在埋点覆盖度低于 Java 语言,可能需要修改代码引入自定义埋点。
C++、Erlang 等语言暂时没有自动接入方案,需要修改代码手动接入。

应用性能监控支持什么框架和组件?

理论上支持所有的框架和组件。自动接入方案对常用的框架和组件进行了自动埋点,但对于其他框架和组件,用户也可以修改代码引入自定义埋点,具体请参考特定语言的接入方案。

可以接入部署在其他云的应用吗?

应用性能监控支持混合云部署的场景,只需要确保网络连通性,就可以接入部署在其他云以及线下数据中心的应用。您可以选择通过公网接入点进行上网,或通过腾讯云私有网络等方案上报到内网接入点。

接入应用需要用到的探针和 SDK 由谁提供?

针对 Java 语言,应用性能监控 APM 提供腾讯云增强版 OpenTelemetry Java 探针(TencentCloud-OTel Java Agent),在埋点密度、高阶诊断、性能保护、企业级能力等方面做了重要的增强。接入其他语言应用需要用到的探针和 SDK 由开源社区提供,腾讯云应用性能监控 APM 不参与开源探针和 SDK 的演进与迭代。

探针需要打到容器镜像中吗?

确保应用能够访问到探针文件即可,不一定需要打到容器镜像中。

是否兼容 OpenTracing 协议?

OpenTracing 标准与 OpenCensus 标准合并后,诞生了 OpenTelemetry 协议标准。应用性能监控 APM 遵循 OpenTelemetry 协议标准,所以可以兼容 OpenTracing 协议。

之前使用 Skywalking,如何迁移到应用性能监控?

应用性能监控已兼容 Skywalking 协议标准,您只需要修改上报地址,并在 Resource 的参数中填入业务系统的 Token,即可完成迁移。

之前使用开源 OpenTelemetry 方案,如何迁移到应用性能监控?

应用性能监控已兼容 OpenTelemetry 协议标准,您只需要修改上报地址,并在 Resource 的参数中填入业务系统的 Token,即可完成迁移。

是否支持通过 OpenTelemetry 协议标准上报指标(Metrics)和日志(Logs)?

OpenTelemetry 协议标准中定义了链路、指标、日志三种遥测数据,应用性能监控支持链路(Traces)数据的上报,并在服务端通过链路数据计算各类指标。应用性能监控目前不支持指标(Metrics)和日志(Logs)数据的上报,在通过 OpenTelemetry 方案接入的时候,建议您关闭 Metric Exporter 和 Log Exporter。

接入相关

需要自行下载探针和 SDK 吗?

对于部署在容器服务 TKE 上的 Java、Python、Node.js 应用,APM 提供自动接入方案,可以在应用部署到 TKE 之后实现探针自动注入,方便应用快速接入。其他情况下,请自行下载探针和 SDK 并安装。

通过 TKE 环境自动接入,同一个 TKE 集群的应用可以上报到不同业务系统吗?

可以的。TKE 集群在安装 tencent-opentelemetry-operator 的时候,需要指定默认业务系统。在应用工作负载中,可以通过添加 cloud.tencent.com/apm-token 这个 annotation 上报到特定的业务系统。如果应用工作负载不设置 cloud.tencent.com/apm-token,则上报到默认业务系统。

通过 TKE 环境自动接入,同一个 TKE 集群的应用可以上报到不同地域吗?

不可以。TKE 集群在安装 tencent-opentelemetry-operator 的时候,需要指定接入点。应用级别不能指定接入点。

APM 控制台安装 tencent-opentelemetry-operator 失败

tencent-opentelemetry-operator 的安装与更新由 TKE 应用市场来承担,缺少权限、资源不足、集群故障、集群版本不满足要求等情况都有可能导致安装失败,请前往 TKE 应用中心检查安装失败的原因。

tencent-opentelemetry-operator 安装成功,但还是接入失败

请确保语言以及框架的版本符合要求。此外,请确保 annotation 添加在工作负载的 spec.template.metadata.annotations 中,而不是 metadata.annotations

可以跨地域接入吗?

可以,只要网络是连通的,就能实现跨地域接入。可以选择公网接入,或引入申请私有连接(Private Link)来打通VPC网络。

通过 TKE 环境自动接入,可以跨地域吗?

可以。

可以自定义应用实例名吗?

在接入的时候,通过设置 Resource 的 host.name属性,就能自定义应用实例名。在大多数场景下,IP 地址都可以作为应用实例名,但如果系统中的 IP 地址存在重复的情况,就需要使用其他唯一标识定义实例名称,例如主机 IP + 容器名的方式。

通过 OpenTelemetry-Python 接入 Python 应用,在控制台看到的实例名不是 IP 地址

OpenTelemetry-Python 方案没有自动获取 IP 地址作为实例名,请通过 Resource 的 host.name属性进行主动设置。

Java 应用可以直接使用 OpenTelemetry 社区的探针吗?

可以,但不推荐。应用性能监控 APM 提供腾讯云增强版 OpenTelemetry Java 探针(TencentCloud-OTel Java Agent),在埋点密度、高阶诊断、性能保护、企业级能力等方面做了重要的增强。推荐使用腾讯云增强版 OpenTelemetry Java 探针,如果直接使用 OpenTelemetry 社区的探针,会存在一定的功能缺失。

控制台功能相关

什么是业务系统?

业务系统用于分类管理应用,每个业务系统有唯一的 Token,应用接入的时候需要指定 Token。可以在业务系统级别设置存储时长、上报限额等参数,也可以基于业务系统实现权限管理和分账,不同业务系统之间的监控数据完全隔离。

如何划分业务系统?

由于不同业务系统之间的监控数据完全隔离,可以基于隔离原则划分业务系统。如果两组应用之间不可能存在相互调用关系,可以把它们划分到2个业务系统中进行管理。按不同的环境划分业务系统是一种典型的使用场景,可以为开发环境、测试环境、生产环境各创建一个业务系统。另外一种典型的使用场景是按业务域划分业务系统,前提是这些业务域之间不存在相互调用。

如何理解应用?

在应用性能监控 APM 中,应用是最重要实体,多个使用相同应用名接入的进程,会表现为相同应用下的多个实例。所以应用是一个逻辑组合,在微服务架构中,可以等同为一个服务,包含多个对等的实例。

可以在多个业务系统中使用同一个应用名吗?

可以。

可以通过日志关联功能将日志输出到 CLS 吗?

日志关联功能实现了日志与链路的关联查询,方便用户定位问题。用户需要自行接入腾讯云日志服务 CLS,并在日志体中输出 trace_id 字段。

接入了 Go 应用,为什么无法使用应用诊断功能?

应用诊断功是腾讯云增强版 OpenTelemetry Java 探针(TencentCloud-OTel Java Agent)的增强能力,目前只能用于 Java 应用。

数据相关

有数据上报成功,但是有些服务在 APM 拓扑图上显示灰色

如果一个服务在所选时间段内没有收到请求,我们从“服务提供者”的视角会认为这个服务不活跃,将该服务显示为灰色。

P99为什么比最大耗时还要大?

应用性能监控 APM 基于线性分布假设算法计算分位数,其结果是预估值,并不能保持精确;而最大耗时一定是精确的。此算法与 Prometheus 计算分位数采用的算法是一致的,是业界普遍采用的算法,具体可以参考 Prometheus 分位数误差。当样本数比较少的时候,可能会出现P99大于最大耗时的情况。

为什么只有链路数据,没有指标数据?

可能和 Span 类型的缺失有关,请确保上报的 Span 都设置了span.kind,且取值为 Client, Server, Consumer, Producer, Internal之一。

为什么会出现断链的情况?

如下几种情况会导致调用链中断:
1. 腾讯云增强版 OpenTelemetry Java 探针实现了应用保护机制,在应用负载特别高的时候,临时关闭了数据上报。
2. 腾讯云增强版 OpenTelemetry Java 探针限制了每秒最多上报5000条 Span,超过的部分会被丢弃。
3. 探针或 SDK 的自动埋点机制没有覆盖到相关的框架或组件,需要通过自定义埋点进行增强。

什么情况下会触发腾讯云增强版 OpenTelemetry Java 探针的应用保护机制?

说明
引入采样机制,丢弃部分链路
关闭数据上报
触发阈值
恢复阈值
触发阈值
恢复阈值
内存使用率
65%
70%
75%
70%
CPU 使用率
80%
75%
90%
85%

什么是 Apdex ?

Apdex 全称是 Application Performance Index,是由 Apdex 联盟开发的用于评估应用性能的工业标准。Apdex 标准从用户的角度出发,对应用响应时间的表现,转为可量化范围为0 - 1的满意度评价。

Apdex 的计算规则是什么?

首先根据应用性能评估确定应用响应时间的最低门槛为 Apdex 阈值,然后根据实际响应时间获得3种不同的性能表现:
满意(Satisfied):应用响应时间低于或等于 Apdex 阈值。
可容忍(Tolerating):应用响应时间大于 Apdex 阈值,但同时小于或等于4倍的 Apdex 阈值。
沮丧(Frustrated):应用响应时间大于4倍的 Apdex 阈值。
Apdex =(满意数+可容忍数/2)/ 总样本量

费用相关

应用性能监控如何收费?

应用性能监控提供多种计费方式,建议参考 应用性能计费概述

应用性能监控可以免费试用吗?

可以。新用户有15天试用期,15天内上报限额为1亿 Span,链路存储时长为7天。

什么情况下适合套餐包(预付费)计费模式?

需要满足如下条件:
1. 套餐包仅支持北京、上海、广州3个地域。
2. 套餐包模式下,链路将按10%比例进行采样,保留全部异常链路,而且不会影响指标的准确性。
3. 用户对 Agent 的数量有明确的预期。
4. Agent 的平均数据上报量比较大,导致按量付费模式成本比较高。

套餐包模式中的 Agent 怎么理解?

一个 Agent 对应一个接入 APM 的应用进程。

Agent * Hour 是什么意思?

Agent * Hour 是套餐包模式的计费单位。每个应用进程接入 APM 后,每个小时将消耗1个 Agent * Hour,举例:10个应用进程接入 APM,每天将消耗10*24=240个 Agent * Hour。

套餐包可以叠加购买吗?

可以,确保在有效期内用完就行。

链路数据存储多久?

试用期默认存储7天,正式计费后您可以按需选择30天以内的任意时长。

指标数据存储多久?

30天。