RTS TraceID是全局唯一请求标识符,用于对请求进行定位和问题排查,对提高客户的接入效率有至关重要的作用。本文详细为您介绍获取RTS TraceID的方式。
背景信息
在播放出现问题需要做问题定位时,使用用户IP地址、播放时间等信息来做问题定位是低效的,因为需要从海量的日志中捞取出现问题的日志。当同一个用户IP在同段时间内有多次播放行为时,运维难度将进一步增加。超低延时直播RTS为您提供TraceID方案,TraceID是每次播放行为的全局唯一标识符,基于该标识阿里云能够快速定位到问题。阿里云强烈建议将TraceID和您的客户端日志进行连接。
您可以通过以下方式获取RTS TraceID:
控制台日志获取RTS TraceID
前提条件
已开通日志服务SLS、创建Project和Logstore。具体操作请参见实时日志推送。
操作步骤
登录视频直播控制台。
在左侧导航栏选择
。单击实时日志推送页签,并单击创建实时日志推送服务。
配置Project名称、Logstore名称等参数,并选择播放域名进行日志采集,具体操作请参见实时日志推送。
登录日志服务SLS控制台。
在Project列表区域找到步骤4创建的Project,单击该Project名称,进入日志详情页面。
在日志中查找hit_info字段,包含ARTP标识代表该段日志属于RTS播放日志,其中uuid即为TraceID。
Demo播放获取RTS TraceID
移动端(Android/iOS)Demo播放
移动端Demo播放的具体操作请参考Demo体验教程。如下图所示,播放请求建联成功后,在RTS移动端播放器页面单击问题定位,查看弹窗中的详细信息,其中RequestId即为TraceID。
Web端(H5)Demo播放
移动端Demo播放的具体操作请参考Demo体验教程。如下图所示,播放请求建联成功后,在RTS Web端播放器页面单击问题定位,查看弹窗中的TraceID信息。
生产环境获取RTS TraceID
生产环境是指已经将SDK集成到客户的程序中,可以不再使用阿里云的Demo。
移动端(Android/iOS)生产环境
通过阿里云播放器SDK事件回调拿到traceId。
每一次低延时播放都会有一个traceId,可用于问题排查。
Android
//监听播放器 onInfo 回调,并解析 DemuxerTraceID 消息 mRtsAliPlayer.setOnInfoListener(infoBean -> { if (infoBean.getCode() == InfoCode.DemuxerTraceID) { String traceId = infoBean.getExtraMsg(); });
iOS
//监听播放器 onPlayerEvent 回调,并解析 DemuxerTraceID 消息 - (void)onPlayerEvent:(AliPlayer*)player eventWithString:(AVPEventWithString)eventWithString description:(NSString *)description { switch (eventWithString) { case EVENT_PLAYER_DEMUXER_TRACE_ID: { NSString *traceId = description; } break; default: break; } }
Web端(H5)生产环境
从信令请求响应结果中获取TraceID
H5的信令请求是一个HTTP POST请求,您可以从浏览器开发者工具的Network获取TraceID。如果拉流地址为
artc://player.alicdn.com/a/b_RTS
,对应的信令请求就是http(s)://player.alicdn.com/a/b_RTS
。进入RTS Web播放器。
在RTS Web播放器页面输入已开通超低延时直播的播流地址URL,例如
artc://player.alicdn.com/a/b_RTS
。单击开始拉流,播放RTS直播流。
按F12打开浏览器开发者工具,选择Network页签。
搜索信令请求
http(s)://player.alicdn.com/a/b_RTS
,在Response中查看TraceID。
阿里云Web播放器SDK
阿里云Web播放器SDK可以通过订阅
rtsTraceId
事件,获取到RTS TraceID。示例代码://当RTS拉流成功时触发,回调函数的参数中traceId为拉流的TraceId,source为当前RTS流的播放地址。 player.on('rtsTraceId', function(event) { console.log('EVENT rtsTraceId', event.paramData); })