使用者體驗監控支援通過自訂網域名上報資料,主要分為四個步驟:上傳認證、本地驗證資料上報、修改自訂網域名DNS解析和使用自訂網域名上報資料。
前提條件
確保您已成功接入使用者體驗監控,同時對應的SLS Project已經成功建立。
查詢使用者體驗監控SLS Project的路徑如下:應用程式名稱-應用設定-基礎資訊-應用資訊-日誌資訊。
SDK要求:當前僅支援使用Java SDK上傳認證,版本需要≥ 0.6.78,Maven依賴配置參考:
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>aliyun-log</artifactId> <version>0.6.142</version> </dependency>
操作步驟
步驟一:上傳認證
許可權要求
推薦使用RAM使用者的AK SK來進行相關操作,使用前需要對RAM使用者授予相應的許可權,授權方式可以參考:管理RAM使用者的許可權。
最小授權粒度:對您的使用者體驗監控的Project資源授予log:PutCname、log:DeleteCname、log:ListCname許可權,可參考以下配置自訂權限原則:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["log:PutCname", "log:DeleteCname", "log:ListCname"],
"Resource": "acs:log:*:*:project/${your rum sls project name}/*"
}
]
}上傳認證程式碼範例
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.CertificateConfiguration;
import com.aliyun.openservices.log.request.SetProjectCnameRequest;
import com.aliyun.openservices.log.response.ListProjectCnameResponse;
import org.junit.Test;
import java.io.*;
import java.nio.file.Files;
public class CnameSample {
public static String readStreamAsString(InputStream in, String charset) throws IOException {
if (in == null) {
return "";
}
Reader reader = null;
Writer writer = new StringWriter();
String result;
char[] buffer = new char[1024];
try {
int n = -1;
reader = new BufferedReader(new InputStreamReader(in, charset));
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
result = writer.toString();
} finally {
in.close();
if (reader != null) {
reader.close();
}
if (writer != null) {
writer.close();
}
}
return result;
}
private static String readFileAsString(String filename) throws Exception {
File file = new File(filename);
return readStreamAsString(Files.newInputStream(file.toPath()), "utf-8");
}
@Test
public void testCname() throws Exception {
// 自訂網域名認證的公開金鑰檔案
String pubKey = readFileAsString("public.pem");
// 自訂網域名認證的私密金鑰檔案
String priKey = readFileAsString("private.key");
// 使用者體驗監控對應的 project
String project = "${your rum sls project name}";
// 自訂網域名 xx.abc.com
String cname = "your cname";
// Log Service的服務存取點。此處以北京為例,其它地區請根據實際情況填寫
String endpoint = "cn-beijing.log.aliyuncs.com";
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
SetProjectCnameRequest request1 = new SetProjectCnameRequest(project, cname);
request1.setCertificateConfiguration(new CertificateConfiguration()
.withPublicKey(pubKey)
.withPrivateKey(priKey));
Client client = new Client(endpoint,
accessKeyId,
accessKeySecret);
client.setProjectCname(request1);
}
}client對象中參數說明:
參數名 | 描述 |
endpoint | SLS Endpoint可參考:服務存取點。需要使用 公網接入地址。 |
accessKeyId | 查看RAM使用者AK可參考:查看RAM使用者的AccessKey資訊。 |
accessKeySecret | 查看RAM使用者AK可參考:查看RAM使用者的AccessKey資訊。 |
解除認證關聯與查詢認證
步驟二:本地驗證資料上報
在正式切換自訂網域名的DNS解析前,需要先在本地驗證資料上報是否正常,以確認認證上傳的有效性。
本地執行dig命令,擷取到 ${使用者體驗監控SLS project}.${對應地區的SLS 公網接入地址} 網域名稱的一個IP地址。SLS公網接入地址可參考步驟一:上傳認證中參數說明。
通過本地hosts檔案,將自訂網域名綁定到通過上述操作擷取到的一個IP地址。
將RUM接入配置中的Endpoint的網域名稱部分,替換成您的自訂網域名,然後在本地測試資料上報。此部分可以參考步驟四:使用自訂網域名上報。
步驟三:修改自訂網域名DNS解析
在本地驗證資料成功上報後,可以將您自訂網域名的DNS解析,CNAME到 ${使用者體驗監控SLS project}.${對應地區的SLS 公網接入地址}。
步驟四:使用自訂網域名上報
Web、小程式、小遊戲、Uniapp、Flutter、ReactNative類型的應用,將應用設定-基礎資訊-整合探針展示的Endpoint中的網域名稱部分,替換成您的自訂網域名。
以Web應用為例,例如控制台展示的Endpoint為:
https://proj-xtrace-xxxx-cn-hangzhou.cn-hangzhou.log.aliyuncs.com/rum/web/v2?workspace=default-cms-xxxx-cn-hangzhou&service_id=xxx@yyyy,您需要將Endpoint的 網域名稱部分 替換成您的自訂網域名,替換後的Endpoint為:https://your.custom.domain/rum/web/v2?workspace=default-cms-xxxx-cn-hangzhou&service_id=xxx@yyyy。
Android、iOS和HarmonyOS,如果SDK版本號碼< 2.0.0,則將ConfigAddress中的網域名稱部分替換成自訂網域名;如果版本號碼≥ 2.0.0,則將Endpoint中的網域名稱部分替換成自訂網域名。
以Android 應用為例,如果您的SDK版本號碼< 2.0.0,則將ConfigAddress改成
https://your.custom.domain;如果您的SDK版本號碼≥2.0.0,則將Endpoint改成https://your.custom.domain。