iOS/tvOS 应用数据采集
应用数据采集到观测云后,可以通过观测云控制台进行自定义配置场景和配置异常检测事件。
数据类型
观测云的用户访问监测包括六种数据类型:
iOS SDK 直接上报的 RUM 数据类型为 view、resource、error、long_task、action;session 为会话维度数据,基于 SDK 上报的 RUM 数据聚合生成
| 类型 |
描述 |
| session |
用户会话信息记录,当前会话中,将会基于会话维度用户页面、资源、操作、错误、长任务相关访问数据。 |
| view |
每次用户访问移动端应用程序的页面时,都会生成一个查看记录。当用户停留在同一页面上时,资源,长任务,错误和操作记录将通过 view_id 属性链接到相关的 RUM 视图。 |
| resource |
用户访问页面时,加载的资源信息记录。 |
| error |
移动应用程序发出的异常或崩溃。 |
| long_task |
对于应用程序中任何阻塞主线程超过指定持续时间阈值的任务,都会生成一个长任务事件。 |
| action |
记录移动应用程序中的用户活动(应用程序启动,点击,滑动,后退等)。每个动作都附加有唯一的 action_id。 |
全局属性
用户访问监测的场景构建和事件告警都可以通过下面的全局属性进行查询。
SDK 属性
| 字段 |
类型 |
描述 |
sdk_name |
string |
采集器名称,固定名称:
df_macos_rum_sdk
df_ios_rum_sdk
df_tvos_rum_sdk
df_android_rum_sdk |
sdk_version |
string |
采集器版本信息 |
sdk_pkg_info |
object |
SDK 包信息 |
应用属性
| 字段 |
类型 |
描述 |
app_id |
string |
必填,用户访问应用唯一 ID 标识,在观测云控制台上面创建监控时自动生成。 |
application_uuid |
string |
应用程序 UUID,iOS SDK 从主 Mach-O UUID 中获取 |
env |
string |
必填,环境字段。属性值:prod/gray/pre/common/local。其中: prod:线上环境 gray:灰度环境 pre:预发布环境 common:日常环境 local:本地环境 |
version |
string |
必填,版本号。 |
service |
string |
可选,所属业务或服务的名称。固定名称:
df_rum_ios
df_rum_tvos
df_rum_android
df_rum_windows
df_rum_linux |
用户 & 会话属性
| 字段 |
类型 |
描述 |
userid |
string |
未登录用户使用随机 uuid 作为 userid,登录用户使用应用后台生成的用户 id。 |
user_name |
string |
可选,用户名称。 |
user_email |
string |
可选,用户邮箱。 |
session_id |
string |
会话 id,未操作 15 分钟以上,会生成一个新的 session_id。 |
session_type |
string |
会话类型。参考值:user & synthetics user:RUM 功能产生的数据; synthetics:headless 拨测产生的数据。 |
is_signin |
boolean |
是否是注册用户,属性值:T & F。 |
session_has_replay |
boolean |
当前会话是否关联 Session Replay 数据,开启 Session Replay 相关能力后,View、Resource、Error、Long Task、Action 可写入该字段 |
custom_keys |
string |
RUM 自定义属性 key 列表 |
设备 & 分辨率属性
| 字段 |
类型 |
描述 |
device |
string |
移动设备厂商 |
model |
string |
移动设备型号 |
device_uuid |
string |
移动设备唯一 ID, 使用UIDevice.identifierForVendor 生成 |
os |
string |
操作系统信息 |
os_version |
string |
操作系统版本 |
os_version_major |
string |
操作系统主要版本 |
screen_size |
string |
屏幕分辨率 |
arch |
string |
CPU 架构,例如 arm64、arm64e、x86_64 |
地理 & 网络属性
| 字段 |
类型 |
描述 |
ip |
string |
用户访问IP地址 |
isp |
string |
运营商 |
network_type |
string |
网络连接类型,属性值参考: wifi & 2g & 3g & 4g & 5g & unknown(未知网络)& unreachable(网络不可用) |
country |
string |
国家 |
country_iso_code |
string |
国家 iso_code |
province |
string |
省 |
city |
string |
城市 |
自定义属性
除全局属性以外,还可以通过自定义属性(SDK 支持用户打自定义的 tag 数据)构建场景和配置事件告警。自定义属性是非全局属性,通过自定义属性,可以跟踪用户访问应用的整个过程,定位和发现用户受影响的访问情况,监控用户访问性能。
其他数据类型属性
Session
Session 为会话维度数据,通常由服务端基于 SDK 上报的 RUM 数据生成或聚合,不是 iOS SDK 单独直接上报的 measurement
属性
| 字段 |
类型 |
描述 |
session_id |
string |
会话 id |
session_type |
string |
会话类型。参考值:user & synthetics user:RUM 功能产生的数据; synthetics:headless 拨测产生的数据。 |
session_referrer |
string |
会话来源。一般是记录来源的页面地址。 |
session_first_view_id |
string |
当前会话的第一个页面的 view_id |
session_first_view_name |
string |
当前会话的第一个页面的 URL |
session_last_view_id |
string |
当前会话的最后一个访问页面的 view_id |
session_last_view_name |
string |
当前会话的最后一个页面的URL |
统计指标
| 字段 |
类型 |
描述 |
time_spent |
number(ns) |
当前会话持续时长 |
session_view_count |
number |
当前会话关联 view_id 个数 |
session_error_count |
number |
当前会话产生错误个数 |
session_resource_count |
number |
当前会话加载资源个数 |
session_action_count |
number |
当前会话用户操作次数 |
session_long_task_count |
number |
当前会话产生长任务次数 |
View
属性
| 字段 |
类型 |
描述 |
view_id |
string |
每次访问页面时产生的唯一 ID |
view_referrer |
string |
页面来源,页面的父级 |
view_name |
string |
页面名称 |
session_has_replay |
boolean |
当前 View 所属会话是否关联 Session Replay 数据 |
指标
| 字段 |
类型 |
描述 |
loading_time |
number(ns) |
页面加载时间 |
time_spent |
number(ns) |
页面停留时间 |
is_active |
boolean |
判断用户是否还在活跃状态,参考值: true & false |
session_sample_rate |
number |
RUM Session 采样率 |
session_on_error_sample_rate |
number |
未命中 RUM Session 采样时,发生错误后补采样的采样率 |
session_replay_sample_rate |
number |
Session Replay 采样率,开启 Session Replay 相关能力后出现 |
session_replay_on_error_sample_rate |
number |
发生错误后补采样 Session Replay 的采样率,开启 Session Replay 相关能力后出现 |
sampled_for_error_session |
boolean |
当前 Session 是否因错误采样策略被采样 |
sampled_for_error_replay |
boolean |
当前 Session Replay 是否因错误采样策略被采样 |
session_error_timestamp |
number(ns) |
错误采样命中时的错误发生时间 |
session_replay_stats |
object |
当前 View 关联的 Session Replay 统计信息 |
统计指标
| 字段 |
类型 |
描述 |
view_error_count |
number |
每次页面加载时发生的错误次数 |
view_resource_count |
number |
每次页面加载时请求的资源个数 |
view_long_task_count |
number |
每次页面加载时产生的长任务个数 |
view_action_count |
number |
页面查看过程中操作的次数 |
view_update_time |
number |
View 更新次数 |
view_long_task_rate |
number |
View 期间长任务耗时占比 |
监控指标
| 字段 |
类型 |
描述 |
cpu_tick_count |
number |
可选,该页面 CPU 跳动次数 |
cpu_tick_count_per_second |
number |
可选,每秒平均 CPU 跳动次数 |
fps_avg |
number |
可选,页面平均每秒帧数 |
fps_mini |
number |
可选,页面最小每秒帧数 |
memory_avg |
number |
可选,页面内存使用平均值 |
memory_max |
number |
可选,页面内存峰值 |
Resource
View 属性
| 字段 |
类型 |
描述 |
view_id |
string |
每次访问页面时产生的唯一 ID |
view_referrer |
string |
页面来源,页面的父级 |
view_name |
string |
页面名称 |
Action 属性
| 字段 |
类型 |
描述 |
action_id |
string |
用户页面操作时产生的唯一 ID |
action_name |
string |
操作名称 |
action_type |
string |
操作类型(冷热启动,click 点击等操作) |
Resource 属性
| 字段 |
类型 |
描述 |
resource_url |
string |
资源 URL |
resource_url_host |
string |
资源 URL 域名部分 |
resource_url_path |
string |
资源 URL path 部分 |
resource_url_query |
string |
资源 URL query 部分 |
resource_url_path_group |
string |
资源 URL path 分组 |
resource_type |
string |
资源的类别 |
resource_method |
string |
资源请求方式 |
resource_status |
string |
资源请求返回的状态值 |
resource_status_group |
string |
资源请求返回的状态分组值 |
resource_host_ip |
string |
资源 URL 访问目标 IP |
resource_id |
string |
资源请求唯一 ID |
response_connection |
string |
响应头 Connection 的值 |
response_content_type |
string |
响应头 Content-Type 的值 |
response_content_encoding |
string |
响应头 Content-Encoding 的值 |
span_id |
string |
链路关联的 span id |
trace_id |
string |
链路关联的 trace id |
session_has_replay |
boolean |
当前 Resource 所属会话是否关联 Session Replay 数据 |
指标
| 字段 |
类型 |
描述 |
resource_size |
number |
资源大小,默认单位:byte |
resource_request_size |
number |
资源请求大小,默认单位:byte |
resource_dns |
number(ns) |
资源加载DNS解析时间 计算方式:domainLookupEnd - domainLookupStart |
resource_tcp |
number(ns) |
资源加载TCP连接时间 计算方式:connectEnd - connectStart |
resource_ssl |
number(ns) |
资源加载SSL连接时间 计算方式:connectEnd - secureConnectStart |
resource_ttfb |
number(ns) |
资源加载请求响应时间 计算方式:responseStart - requestStart |
resource_trans |
number(ns) |
资源加载内容传输时间 计算方式:responseEnd - responseStart |
resource_first_byte |
number(ns) |
资源加载首包时间 计算方式:responseStart - domainLookupStart |
duration |
number(ns) |
资源加载时间 计算方式:duration(responseEnd-startTime) |
resource_dns_time |
object |
DNS 阶段耗时,结构为 {start, duration} |
resource_connect_time |
object |
TCP 连接阶段耗时,结构为 {start, duration} |
resource_first_byte_time |
object |
首包阶段耗时,结构为 {start, duration} |
resource_ssl_time |
object |
SSL 阶段耗时,结构为 {start, duration} |
resource_download_time |
object |
下载阶段耗时,结构为 {start, duration} |
resource_redirect_time |
object |
重定向阶段耗时,结构为 {start, duration} |
resource_http_protocol |
string |
资源请求使用的网络协议 |
resource_connection_reuse |
boolean |
资源请求是否复用连接 |
request_header |
string |
资源请求头 |
response_header |
string |
资源响应头 |
网络快照
| 字段 |
类型 |
描述 |
network_available |
boolean |
Resource 开始时网络是否可用 |
Error
View 属性
| 字段 |
类型 |
描述 |
view_id |
string |
每次访问页面时产生的唯一 ID |
view_referrer |
string |
页面来源,页面的父级 |
view_name |
string |
页面名称 |
Action 属性
| 字段 |
类型 |
描述 |
action_id |
string |
用户页面操作时产生的唯一 ID |
action_name |
string |
操作名称 |
Error 属性
| 字段 |
类型 |
描述 |
error_source |
string |
错误来源,参考值:logger & network |
error_type |
string |
错误类型 logger error type: anr_error | ios_crash network error type:network_error |
error_situation |
string |
错误发生的时机,参考值:startup (启动时)和 run (运行时) |
session_has_replay |
boolean |
当前 Error 所属会话是否关联 Session Replay 数据 |
type=network时,新增以下Network Error属性。
| 字段 |
类型 |
描述 |
resource_id |
string |
资源请求唯一 ID |
resource_status |
string |
资源请求返回的状态值 |
resource_url |
string |
资源 URL |
resource_url_host |
string |
资源 URL 域名部分 |
resource_url_path |
string |
资源 URL path 部分 |
resource_url_path_group |
string |
资源 URL path 分组 |
resource_status_group |
string |
资源请求返回的状态分组值 |
resource_method |
string |
资源请求方式 |
Error 监控属性
| 字段 |
类型 |
描述 |
memory_total |
string |
可选,内存总量 |
memory_use |
number |
可选,内存使用率 |
cpu_use |
number |
可选,CPU 使用率 |
battery_use |
number |
可选,当前电手机的电池量 (tvOS 不支持) |
carrier |
string |
可选,运营商信息(iOS 支持) |
locale |
string |
当前系统语言 |
指标
| 字段 |
类型 |
描述 |
error_message |
string |
错误信息 |
error_stack |
string |
错误堆栈 |
foreground_crash_free_duration |
number(ns) |
Crash 发生前应用处于前台的无崩溃持续时间 |
background_crash_free_duration |
number(ns) |
Crash 发生前应用处于后台的无崩溃持续时间 |
crash_extra |
object |
Crash 额外信息,例如寄存器信息 |
Long Task
View 属性
| 字段 |
类型 |
描述 |
view_id |
string |
每次访问页面时产生的唯一 ID |
view_referrer |
string |
页面来源,页面的父级 |
view_name |
string |
页面名称 |
Action 属性
| 字段 |
类型 |
描述 |
action_id |
string |
用户页面操作时产生的唯一 ID |
action_name |
string |
操作名称 |
指标
| 字段 |
类型 |
描述 |
duration |
number(ns) |
卡顿时长 |
long_task_stack |
string |
卡顿堆栈 |
session_has_replay |
boolean |
当前 Long Task 所属会话是否关联 Session Replay 数据 |
Action
View 属性
| 字段 |
类型 |
描述 |
view_id |
string |
每次访问页面时产生的唯一 ID |
view_referrer |
string |
页面来源,页面的父级 |
view_name |
string |
页面名称 |
Action 属性
| 字段 |
类型 |
描述 |
action_id |
string |
用户页面操作时产生的唯一 ID |
action_name |
string |
操作名称,默认启动 Action 包括 app_hot_start、app_cold_start、app_warm_start |
action_type |
string |
操作类型,参考值包括:click、launch_hot、launch_cold、launch_warm |
session_has_replay |
boolean |
当前 Action 所属会话是否关联 Session Replay 数据 |
指标
| 字段 |
类型 |
描述 |
duration |
number(ns) |
页面操作花费时间 |
app_pre_runtime_init_time |
object |
启动阶段指标,运行时初始化前耗时,结构为 {start, duration} |
app_runtime_init_time |
object |
启动阶段指标,运行时初始化耗时,结构为 {start, duration} |
app_uikit_init_time |
object |
启动阶段指标,UIKit 初始化耗时,结构为 {start, duration} |
app_application_init_time |
object |
启动阶段指标,Application 初始化耗时,结构为 {start, duration} |
app_first_frame_init_time |
object |
启动阶段指标,首帧渲染耗时,结构为 {start, duration} |
app_launch_type |
string |
冷启动类型,仅在 action_type=launch_cold 时上报,参考值:foreground、background |
统计指标
| 字段 |
类型 |
描述 |
action_long_task_count |
number |
操作关联长任务次数 |
action_resource_count |
number |
操作关联资源请求次数 |
action_error_count |
number |
操作关联的错误次数 |
WebView 关联
WebView JSBridge 数据接入 RUM 时,SDK 会在对应数据上补充 is_web_view=true,用于标识该条数据来自 WebView。WebView 数据字段以 Web SDK 上报字段为主,native iOS 字段表中只保留该关联说明。