ARMS用戶體驗監控提供一系列SDK配置項,讓您能夠通過設置參數來滿足額外需求。本文介紹PC應用常用的SDK配置。
啟動配置
(必須)設置Config地址
每個應用都需要關聯對應的Config地址,該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_config_address(alibabacloud_rum_options_t *options, const char *config_address);
參數 | 說明 | 參數限制 | 失敗結果 |
options | alibabacloud_rum_options_t | 非空,通過 | 接口調用失敗,SDK停止。 |
config_address | const char* | 非空,由用戶體驗監控平臺生成。 | 接口調用失敗,SDK停止。 |
示例:
alibabacloud_rum_options_set_config_address(options, RUM_CONFIG_ADDRESS);
(必須)設置應用ID
每個應用都需要關聯對應的AppId,該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_app_id(alibabacloud_rum_options_t *options, const char *app_id)
參數 | 說明 | 參數限制 | 失敗結果 |
app_id | 應用AppID | 由用戶體驗監控平臺生成的應用唯一ID。 | 接口調用失敗,SDK停止。 |
示例:
alibabacloud_rum_options_set_app_id(options, RUM_CONFIG_APPID);
(必須)設置應用名稱
設置應用名稱。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_app_name(alibabacloud_rum_options_t *options, const char *app_name)
參數 | 說明 | 參數限制 | 失敗結果 |
app_name | const char*, 應用名稱。 | 非空,字符串長度大于0且小于128。 | 接口調用失敗,應用名稱設置不會生效。 |
示例:
alibabacloud_rum_options_set_app_name(options, "WindowsDemo");
(必須)設置應用版本號
設置應用的版本號信息。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_app_version(alibabacloud_rum_options_t *options, const char *app_version)
參數 | 說明 | 參數限制 | 失敗結果 |
app_version | const char* | 非空,字符串長度大于0且小于64。 | 接口調用失敗,應用版本號設置不會生效。 |
示例:
alibabacloud_rum_options_set_app_version(options, "0.1.0-beta.2");
(可選)設置應用環境
設置應用的環境,包含:local、daily、pre、gray、prod。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_env(alibabacloud_rum_options_t *options, alibabacloud_rum_env_t env)
參數 | 說明 | 參數限制 | 失敗結果 |
env | 應用環境 | 在以下枚舉值中指定:
| 接口調用失敗,應用環境設置不會生效。 |
示例:
alibabacloud_rum_options_set_env(options, ALIBABACLOUD_RUM_ENV_LOCAL);
(可選)設置設備ID
SDK會默認生成設備ID,緩存在本地文件中,您也可以自定義設備ID。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_utdid(alibabacloud_rum_options_t *options, const char *utdid)
參數 | 說明 | 參數限制 | 失敗結果 |
utdid | const char*,設備ID。 | 非空,字符串長度大于0且小于37。 | 接口調用失敗,設備ID設置不會生效。 |
示例:
alibabacloud_rum_options_set_utdid(options, "b7028408-ddac-4a58-72a9-653f6637f0e6");
(可選)設置日志等級
SDK在運行時會輸出一定的日志。在使用SDK遇到問題時,通過調整SDK日志等級可以輸出更豐富的信息,用于排查定位。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_debug_level(alibabacloud_rum_options_t *options, alibabacloud_rum_level_t level);
參數 | 說明 | 參數限制 | 失敗結果 |
level | 日志等級。 | 在以下枚舉值中指定:
其中,ALIBABACLOUD_RUM_LEVEL_ALL 的日志等級最高,此時日志會寫入到緩存文件中。 | 接口調用失敗,日志等級設置不會生效。 |
示例:
alibabacloud_rum_options_set_debug_level(options, ALIBABACLOUD_RUM_LEVEL_DEBUG);
(可選)設置緩存目錄
SDK運行時會產生緩存文件,可以根據需要指定緩存目錄。SDK默認會在可執行文件所在目錄創建名為 .alibabacloud-rum
的文件夾。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_cache_path(alibabacloud_rum_options_t *options, const char *path)
參數 | 說明 | 參數限制 | 失敗結果 |
path | const char * | 非空。文件目錄的長度可能會受系統限制。 | 接口調用失敗,緩存目錄設置不會生效。 |
示例:
alibabacloud_rum_options_set_cache_path(options, "/path/to/your/cache/");
(可選)設置網絡請求采集過濾器
SDK支持采集libcurl、CEF框架的網絡請求數據。您可以通過配置網絡請求采集過濾器來決定指定URL的采集行為。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_network_options(alibabacloud_rum_options_t *options, alibabacloud_rum_network_options_t *network_options)
參數 | 說明 | 參數限制 | 失敗結果 |
network_options | 網絡請求過濾器結構體。 | 非空,且需要滿足以下結構體的定義:
| 接口調用失敗,網絡請求采集過濾器設置不會生效。 |
示例:
// 過濾指定URL是否允許采集。
// 該函數返回 0 時,表示不采集;返回非 0 時,表示采集。
int ALIBABACLOUD_RUM_CALLBACK example_should_record_request(const char *url)
{
LOG("example", "example_should_record_request, url: %s", url);
return 1;
}
// 過濾指定URL是否允許端到端打通。
// 該函數返回 0 時,表示允許;返回非 0 時,表示不允許。
int ALIBABACLOUD_RUM_CALLBACK example_should_tracing(const char *url)
{
LOG("example", "example_should_tracing, url: %s", url);
return NULL != strstr(url, "/api/data");
}
// 注意:SDK會默認配置network_options。默認情況下,會采集所有URL請求數據,且所有URL不允許端到端打通。
alibabacloud_rum_network_options_t *network_options = alibabacloud_rum_network_options_new();
network_options->should_tracing = example_should_tracing;
network_options->should_record_request = example_should_record_request;
alibabacloud_rum_options_set_network_options(options, network_options);
(可選)開啟/關閉libcurl網絡數據采集模塊
SDK支持配置是否開啟libcurl網絡數據采集模塊。默認開啟libcurl網絡數據采集模塊。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_auto_curl_tracking(alibabacloud_rum_options_t *options, int enabled)
參數 | 說明 | 參數限制 | 失敗結果 |
enabled | int |
| 接口調用失敗,libcurl網絡數據采集模塊設置不會生效。 |
示例:
// 開啟libcurl網絡數據采集模塊
alibabacloud_rum_options_set_auto_curl_tracking(options, 1);
開啟libcurl網絡數據采集模塊之前,您需要先集成libcurl庫。當前僅支持libcurl動態庫數據的采集。
(可選)開啟/關閉崩潰采集模塊
SDK支持配置是否開啟崩潰數據采集模塊。默認開啟崩潰數據采集模塊。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_auto_crash_tracking(alibabacloud_rum_options_t *options, int enabled)
參數 | 說明 | 參數限制 | 失敗結果 |
enabled | int |
| 接口調用失敗,崩潰數據采集模塊設置不會生效。 |
示例:
// 開啟崩潰數據采集模塊。
alibabacloud_rum_options_set_auto_crash_tracking(options, 1);
(可選)開啟/關閉CEF框架數據采集模塊
SDK支持配置是否開啟CEF框架數據采集模塊。默認關閉CEF框架數據采集模塊。該接口需要在調用alibabacloud_rum_init
函數前設置。
void alibabacloud_rum_options_set_auto_cef_tracking(alibabacloud_rum_options_t *options, int enabled)
參數 | 說明 | 參數限制 | 失敗結果 |
enabled | int |
| 接口調用失敗,CEF框架數據采集模塊設置不會生效。 |
示例:
// 開啟CEF框架數據采集模塊
alibabacloud_rum_options_set_auto_cef_tracking(options, 1);
開啟CEF框架數據采集模塊之前,您需要先集成CEF庫。當前僅支持CEF動態庫數據的采集。
(必須)啟動SDK
通過 alibabacloud_rum_init
函數可以完成SDK的初始化。
int alibabacloud_rum_init(alibabacloud_rum_options_t *options)
參數 | 說明 | 參數限制 | 失敗結果 |
options | SDK配置項 | 非空,且必要參數都已設置。 | 接口調用失敗,SDK停止。 |
(必須)關閉SDK
通過 alibabacloud_rum_close
函數可以關閉SDK。
int alibabacloud_rum_close()
示例:
alibabacloud_rum_close()
自定義信息
設置用戶名稱
SDK支持設置與用戶相關的信息,從而完成數據分析與實際用戶相關聯的需求場景。該接口需要在調用alibabacloud_rum_init
函數之后設置。
void alibabacloud_rum_set_username(const char *username)
參數 | 說明 | 參數限制 | 失敗結果 |
username | const char * | 字符串非空,需要小于等于256。 | 接口調用失敗,當次設置無效。 |
示例:
alibabacloud_rum_set_username("my nick name is xxxx");
設置用戶ID
SDK支持設置與用戶相關的信息,從而完成數據分析與實際用戶相關聯的需求場景。該接口需要在調用alibabacloud_rum_init
函數之后設置。
void alibabacloud_rum_set_userid(const char *userid)
參數 | 說明 | 參數限制 | 失敗結果 |
userid | const char * | 字符串非空,需要小于等于256。 | 接口調用失敗,當次設置無效。 |
示例:
alibabacloud_rum_set_userid("1234567890");
設置用戶擴展信息
SDK支持設置與用戶相關的信息,從而完成數據分析與實際用戶相關聯的需求場景。
void alibabacloud_rum_set_user_tags(const char *user_tags)
參數 | 說明 | 參數限制 | 失敗結果 |
user_tags | const char* | 字符串非空,需要小于等于512。 | 接口調用失敗,當次設置無效 |
設置全局屬性
SDK支持自定義全局業務屬性。自定義全局屬性后,新產生的數據會自動攜帶該業務屬性信息,從而完成數據分析與業務屬性相關聯的需求場景。alibabacloud_rum_set_properties
函數調用后,會覆蓋上一次的值。
#define alibabacloud_rum_set_properties(...)
參數 | 說明 | 參數限制 | 失敗結果 |
(...) | 屬性鍵值對 | 鍵值對的最大數量為50,key的最大長度為52,所有鍵值對對應的字符串最大長度為2000。 | 接口調用失敗,當次設置無效。 |
示例:
alibabacloud_rum_set_properties("shop_id", "gz_xihu_001", "shop_name", "西湖總店");
上報自定義異常
調用自定義異常接口,并傳入相應的參數,可完成自定義異常數據的統計功能。C/C++ SDK提供了一組函數用來完成自定義異常的上報。
alibabacloud_rum_custom_exception_t* alibabacloud_rum_custom_exception_new(const char *name, const char *message);
void alibabacloud_rum_custom_exception_set_file(alibabacloud_rum_custom_exception_t *event, const char *file);
void alibabacloud_rum_custom_exception_set_source(alibabacloud_rum_custom_exception_t *event, const char *source);
void alibabacloud_rum_custom_exception_set_caused_by(alibabacloud_rum_custom_exception_t *event, const char *caused_by);
void alibabacloud_rum_custom_exception_set_stack(alibabacloud_rum_custom_exception_t *event, const char *stack);
void alibabacloud_rum_custom_exception_free(alibabacloud_rum_custom_exception_t *event);
void alibabacloud_rum_custom_exception_report(alibabacloud_rum_custom_exception_t *event);
函數名稱 | 說明 |
alibabacloud_rum_custom_exception_new | 創建 alibabacloud_rum_custom_exception_t 實例。 |
alibabacloud_rum_custom_exception_set_file | 設置異常關聯源文件。 |
alibabacloud_rum_custom_exception_set_source | 設置異常來源,保留字段。 |
alibabacloud_rum_custom_exception_set_caused_by | 設置異常原因。 |
alibabacloud_rum_custom_exception_set_stack | 設置異常堆棧。 |
alibabacloud_rum_custom_exception_free | 釋放 alibabacloud_rum_custom_exception_t 實例,一般無需調用。 |
alibabacloud_rum_custom_exception_report | 上報自定義異常。 |
示例:
alibabacloud_rum_custom_exception_t *custom_exception = alibabacloud_rum_custom_exception_new("exception", "NullPointerException");
alibabacloud_rum_custom_exception_set_file(custom_exception, "/example/main.c");
alibabacloud_rum_custom_exception_set_caused_by(custom_exception, "NullPointerException");
alibabacloud_rum_custom_exception_set_stack(custom_exception, "Exception in thread 'main' java.util.NullPointerException");
alibabacloud_rum_custom_exception_report(custom_exception);
上報自定義事件
SDK支持上報自定義事件。調用相應的接口,并傳入相應的參數,可完成自定義事件數據的統計功能。C/C++ SDK提供了一組函數用來完成自定義事件的上報。
alibabacloud_rum_custom_event_t* alibabacloud_rum_custom_event_new(const char *type, const char *name);
void alibabacloud_rum_custom_event_set_value(alibabacloud_rum_custom_event_t *event, double value);
void alibabacloud_rum_custom_event_set_group(alibabacloud_rum_custom_event_t *event, const char *group);
void alibabacloud_rum_custom_event_set_snapshots(alibabacloud_rum_custom_event_t *event, const char *snapshots);
void alibabacloud_rum_custom_event_add_extra(alibabacloud_rum_custom_event_t *event, const char *k, const char *v);
void alibabacloud_rum_custom_event_free(alibabacloud_rum_custom_event_t *event);
void alibabacloud_rum_custom_event_report(alibabacloud_rum_custom_event_t *event);
函數名稱 | 說明 |
alibabacloud_rum_custom_event_new | 創建 alibabacloud_rum_custom_event_t 實例。 |
alibabacloud_rum_custom_event_set_value | 設置事件關聯值。 |
alibabacloud_rum_custom_event_set_group | 設置事件分組。 |
alibabacloud_rum_custom_event_set_snapshots | 設置事件快照。 |
alibabacloud_rum_custom_event_add_extra | 設置事件擴展參數。 |
alibabacloud_rum_custom_event_free | 釋放 alibabacloud_rum_custom_event_t 實例,一般無需調用。 |
alibabacloud_rum_custom_event_report | 上報自定義事件。 |
示例:
alibabacloud_rum_custom_event_t *event = alibabacloud_rum_custom_event_new("custom_event_type", "custom_event_name");
alibabacloud_rum_custom_event_set_group(event, "custom_event_group");
alibabacloud_rum_custom_event_set_value(event, 123.3456);
alibabacloud_rum_custom_event_set_snapshots(event, "custom event snapshots");
alibabacloud_rum_custom_event_add_extra(event, "event_key1", "event_value1");
alibabacloud_rum_custom_event_add_extra(event, "event_key2", "event_value2");
alibabacloud_rum_custom_event_report(event);
上報自定義日志
SDK支持上報自定義日志信息。調用相應的接口,并傳入相應的參數,可完成自定義日志數據的統計功能。C/C++ SDK提供了一組函數用來完成自定義日志的上報。
alibabacloud_rum_custom_log_t *alibabacloud_rum_custom_log_new(const char *type, const char *name);
void alibabacloud_rum_custom_log_set_log(alibabacloud_rum_custom_log_t *log, alibabacloud_rum_custom_log_level_t level, const char *content);
void alibabacloud_rum_custom_log_set_value(alibabacloud_rum_custom_log_t *log, double value);
void alibabacloud_rum_custom_log_set_group(alibabacloud_rum_custom_log_t *log, const char *group);
void alibabacloud_rum_custom_log_set_snapshots(alibabacloud_rum_custom_log_t *log, const char *snapshots);
void alibabacloud_rum_custom_log_add_extra(alibabacloud_rum_custom_log_t *log, const char *k, const char *v);
void alibabacloud_rum_custom_log_free(alibabacloud_rum_custom_log_t *log);
void alibabacloud_rum_custom_log_report(alibabacloud_rum_custom_log_t *log);
函數名稱 | 說明 |
alibabacloud_rum_custom_log_t | 創建 alibabacloud_rum_custom_log_t 實例。 |
alibabacloud_rum_custom_log_set_log | 設置日志內容。 |
alibabacloud_rum_custom_log_set_value | 設置日志關聯值。 |
alibabacloud_rum_custom_log_set_group | 設置日志分組。 |
alibabacloud_rum_custom_log_set_snapshots | 設置日志快照。 |
alibabacloud_rum_custom_log_add_extra | 設置日志擴展參數。 |
alibabacloud_rum_custom_log_free | 釋放 alibabacloud_rum_custom_log_t 實例,一般無需調用。 |
alibabacloud_rum_custom_log_report | 上報自定義日志。 |
示例:
alibabacloud_rum_custom_log_t *log = alibabacloud_rum_custom_log_new("custom_log_type", "custom_log_name");
alibabacloud_rum_custom_log_set_group(log, "custom_log_group");
alibabacloud_rum_custom_log_set_value(log, 343.4222);
alibabacloud_rum_custom_log_set_snapshots(log, "custom log snapshots");
alibabacloud_rum_custom_log_set_log(log, LOG_DEBUG, "我是自定義日志內容");
alibabacloud_rum_custom_log_add_extra(log, "log_key1", "log_value1");
alibabacloud_rum_custom_log_add_extra(log, "log_key2", "log_value2");
alibabacloud_rum_custom_log_report(log);