文档中心>腾讯客户端性能分析>SDK 接入指南>iOS 应用场景>功能配置>原生层网络监控、大模型 SSE 监控以及默认拨测监控

原生层网络监控、大模型 SSE 监控以及默认拨测监控

最近更新时间:2025-09-12 10:31:32

我的收藏
注意:
从5.4.6版本开始,原生层网络监控开始加入了大模型 SSE 监控,该功能随原网络监控功能同时开启。
全链路监控实际效果以及页面配置请参见 全链路监控
原生网络监控默认监控所有 URL,可通过上面的黑白名单接口来决定是否进行过滤,在同时设置了域名白名单和域名黑名单接口的时候,只有域名白名单的设置才会生效,建议优先使用白名单设置。
从5.4.9版本开始,开启默认拨测功能后会根据网络监控的慢错结果进行执行,执行结果参照移动拨测。

功能说明

原生层网络监控是基于 NSURLSession 通过 hook 对网络请求进行的一种监控能力,包括状态跟踪、响应处理、错误捕获等。
大模型 SSE 监控是通过扩展 NSURLSession 的代理方法及数据流任务配置,实现对 SSE(Server-Sent Events)的持续事件流监控,包括实时数据接收。
默认拨测监控是基于 NSURLSession 进行网络请求后,根据不同的网络状态,包括但不限于慢错条件后而触发拨测功能的监控。

相关接口

@interface QAPMConfig : NSObject
/**
取得 QAPM 配置的共享实例,修改实例的属性必须在调用 QAPM 启动函数之前执行
@return QAPMConfig 的共享实例
*/
+ (instancetype)getInstance;

#pragma mark *** 全链路监控相关接口的设置***
/**
该字段用于设置全链路监控,默认值为 NO,如果设置为 YES 有以下几点需要注意
1、业务网络请求的 requestHeader 会增加 sw8、traceparent 相关协议下的 value 值,如果业务自行组建了全链路监控则可以设置为 NO
2、客户服务端可能有防跨越、防注入保护功能、header 信息增加后可能会导致服务端无法返回正确信息的风险,需要服务端放开 Nginx 配置开启、可参照 https://cloud.tencent.com/document/product/248/87108链接下的步骤3
*/
@property (nonatomic, assign) BOOL isOpenTrace;
/**
全链路监控,只有在上述 isOpenTrace 开关为 YES 时以下参数设置才会生效
以下四种方式在使用的时候建议只使用注入或者忽略其中的一种设置
设置不需要注入(忽略)请求头的请求 url
*/
@property (nonatomic, copy)NSArray<NSString *> *injectTraceIgnoreUrls;
/**
设置不需要注入(忽略)请求头的请求 RegExp
*/
@property (nonatomic, copy)NSArray<NSString *> *injectTraceIgnoreUrlsByRegex;
/**
设置需要注入请求头的请求 url
*/
@property (nonatomic, copy)NSArray<NSString *> *injectTraceUrls;
/**
设置需要注入请求头的请求 RegExp
*/
@property (nonatomic, copy)NSArray<NSString *> *injectTraceUrlsByRegex;


#pragma mark ***原生网络监控相关接口的设置***
/**
* 设置网络请求的响应 header 黑名单,在黑名单中的 header key 将不会采集上报
*/
- (void)addHttpBlackHeader:(NSArray<NSString *> *)blackHeader;
/**
* 设置域名白名单,如果设置了,则只有白名单中的域名请求才监控
*/
-(void)addHttpWhiteDomain:(NSArray<NSString *> *)whiteDomain;
/**
* 设置域名黑名单,如果设置了,在黑名单中的域名将不会监控
*/
-(void)addHttpBlackDomain:(NSArray<NSString *> *)blackDomain;

#pragma mark ***SSE 大模型监控相关接口的设置***
/**
* 设置当前大模型名称
*/
-(void)setCurrentLLM:(NSString*)llmName;


#pragma mark ***默认拨测相关接口的设置***
/**
是否打开默认拨测开关,默认设置为 NO,设置为 YES 后,会打开默认拨测功能
*/
@property (nonatomic, assign) BOOL isDefaultDialEnable;

@end


代码示例

以原生网络监控设置接口为例,在进行 QAPM 的 SDK 初始化 时加入如下代码。
/**
* 网络监控功能的相关接口设置
*
/
//设置域名黑名单,以下域名将不会被监控
[[QAPMConfig getInstance] addHttpBlackDomain:@[@"www.qq.com"]];

//设置域名白名单,只有白名单中的域名才会被监控
[[QAPMConfig getInstance] addHttpWhiteDomain:@[@"www.baidu.com"]];

//设置响应 header 黑名单,在黑名单中的 header key 将不会采集上报
[[QAPMConfig getInstance] addHttpBlackDomain:@[@"authorization"]];

/**
* SSE大模型监控的相关接口设置
*
/
// 设置当前大模型名称
[[QAPMConfig getInstance] setCurrentLLM:@"hunyuan"];


/**
* 全链路监控相关接口的设置
*
/
// 设置为 YES 后,将打开全链路监控开关
[QAPMConfig getInstance].isOpenTrace = YES;
//设置需要注入请求头的请求 url,以下域名将会被注入请求头
[QAPMConfig getInstance].injectTraceUrls = @[@"www.qq.com"];

//设置不需要注入请求头的请求 url,以下域名将不会被注入请求头
[QAPMConfig getInstance].injectTraceIgnoreUrls = @[@"www.baidu.com"]

//设置需要注入请求头的请求 RegExp,以下 RegExp 将会被注入请求头
[QAPMConfig getInstance].injectTraceUrlsByRegex = @[@"www\\\\.qq\\\\.com"];

//设置不需要注入(忽略)请求头的请求 RegExp,以下 RegExp 将不会被注入请求头
[QAPMConfig getInstance].injectTraceIgnoreUrlsByRegex = @[@"www\\\\.baidu\\\\.com"];

/**
* 默认拨测相关接口的设置
*
/
//设置为 YES 后,会打开默认拨测功能的开关
[QAPMConfig getInstance].isDefaultDialEnable = YES;

校验功能是否正常

检索 Plugin:42。原生网络监控数据聚合上报,每1min上报一次,如打印以下日志,则代表原生网络监控数据上报成功。

大模型 SSE 监控数据请求一条上报一条,如打印以下日志,则代表大模型 SSE 监控数据上报成功。
"category" : "PERF_NET_SSE"

注意:
大模型 SSE 监控需要发起对应的 SSE 监控请求,否则无效。
SDK 只负责抓取网络请求的相关信息,问题数据由后台分析,如慢请求(请求时间大于 xxs),网络错误(请求响应码 > 400)。