カスタム収集ルール¶
この記事では、C++ SDK の手動 RUM 収集機能について説明します。
Action¶
使用方法¶
/**
* action 開始
*
* @param actionName action 名
* @param actionType action タイプ
*/
void startAction(std::string actionName, std::string actionType);
/**
* action 終了
*/
void stopAction();
コード例¶
View¶
使用方法¶
/**
* view 開始
*
* @param viewName 現在のページ名
*/
void startView(std::string viewName);
/**
* view 終了
*/
void stopView();
コード例¶
Resource¶
使用方法¶
/**
* resource 開始
*
* @param resourceId リソース ID
*/
void startResource(std::string resourceId);
/**
* resource 終了
*
* @param resourceId リソース ID
*/
void stopResource(std::string resourceId);
/**
* ネットワーク転送内容を設定する
*
* @param resourceId リソース ID
* @param params ネットワーク転送パラメータ
* @param netStatusBean ネットワーク状態統計
*/
void addResource(std::string resourceId, ResourceParams params, NetStatus netStatusBean);
| メソッド名 | 意味 | 必須 | 説明 |
|---|---|---|---|
NetStatus.fetchStartTime |
リクエスト開始時間 | 任意 | |
NetStatus.tcpTime |
TCP 接続時間 | 任意 | |
NetStatus.dnsTime |
DNS 解決時間 | 任意 | |
NetStatus.responseTime |
応答コンテンツ転送時間 | 任意 | |
NetStatus.sslTime |
SSL 接続時間 | 任意 | |
NetStatus.firstByteTime |
DNS/SSL から最初のパケット受信までの合計時間 | 任意 | |
NetStatus.ttfb |
リクエスト応答時間、リクエスト送信から最初のパケット受信までの時間 | 任意 | |
NetStatus.tcpStartTime |
TCP 開始時間 | 任意 | |
NetStatus.tcpEndTime |
TCP 終了時間 | 任意 | |
NetStatus.dnsStartTime |
DNS 開始時間 | 任意 | |
NetStatus.dnsEndTime |
DNS 終了時間 | 任意 | |
NetStatus.responseStartTime |
応答開始時間 | 任意 | |
NetStatus.responseEndTime |
応答終了時間 | 任意 | |
NetStatus.sslStartTime |
SSL 開始時間 | 任意 | |
NetStatus.sslEndTime |
SSL 終了時間 | 任意 | |
ResourceParams.url |
URL アドレス | 必須 | |
ResourceParams.requestHeader |
リクエストヘッダーパラメータ | 任意 | |
ResourceParams.responseHeader |
レスポンスヘッダーパラメータ | 任意 | |
ResourceParams.responseConnection |
レスポンス connection |
任意 | |
ResourceParams.responseContentType |
レスポンス Content-Type |
任意 | |
ResourceParams.responseContentEncoding |
レスポンス Content-Encoding |
任意 | |
ResourceParams.resourceMethod |
リクエストメソッド | 任意 | GET、POST など |
ResourceParams.responseBody |
レスポンスボディ内容 | 任意 |
コード例¶
RestClient::init();
RestClient::Connection* conn = new RestClient::Connection(url);
RestClient::HeaderFields headers;
headers["Accept"] = "application/json";
RestClient::Response r = conn->get("/get");
RestClient::Connection::Info info = conn->GetInfo();
ResourceParams params;
params.resourceMethod = "GET";
params.requestHeader = convert(headers);
params.responseHeader = convert(r.headers);
params.responseBody = r.body;
params.responseConnection = "Keep-Alive";
params.responseContentEncoding = "UTF-8";
params.responseContentType = r.headers["Content-Type"];
params.url = url;
params.resourceStatus = r.code;
NetStatus status;
status.dnsTime = info.lastRequest.nameLookupTime * ns_factor;
status.tcpTime = (info.lastRequest.connectTime - info.lastRequest.nameLookupTime) * ns_factor;
status.sslTime = (info.lastRequest.appConnectTime - info.lastRequest.connectTime) * ns_factor;
status.ttfb = (info.lastRequest.startTransferTime - info.lastRequest.preTransferTime) * ns_factor;
status.responseTime = (info.lastRequest.totalTime - info.lastRequest.startTransferTime) * ns_factor;
status.firstByteTime = info.lastRequest.startTransferTime * ns_factor;
RestClient::disable();
Error¶
使用方法¶
/**
* エラー情報を追加
*
* @param log ログ
* @param message メッセージ
* @param errorType エラータイプ
* @param state プログラム実行状態
*/
void addError(std::string log, std::string message, RUMErrorType errorType, AppState state);
コード例¶
sdk->addError("test error 1", "first error", RUMErrorType::native_crash, AppState::UNKNOWN);
sdk->addError("test error 2", "second error", RUMErrorType::network_error, AppState::UNKNOWN);
LongTask¶
使用方法¶
/**
* ロングタスクを追加
*
* @param log ログ
* @param duration 持続時間(ns)
*/
void addLongTask(std::string log, long duration);