全部產品
Search
文件中心

Cloud Monitor:使用自訂網域名上報資料

更新時間:Jan 10, 2026

使用者體驗監控支援通過自訂網域名上報資料,主要分為四個步驟:上傳認證、本地驗證資料上報、修改自訂網域名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資訊

解除認證關聯與查詢認證

解除認證關聯

解除認證關聯有兩種方式,一種是僅將認證從使用者體驗監控伺服器上刪除,另一種是徹底刪除認證和Project和網域名稱的CNAME關係。
// cname為自訂網域名
String cname = "xx.abc.com";
// project
String project = "${your rum sls project name}";


// 只刪除認證 
SetProjectCnameRequest request = new SetProjectCnameRequest(project, cname);
request.setCertificateConfiguration(new CertificateConfiguration()
    .withDeleteCertificate(true));
client.setProjectCname(request);

// 刪除整個cname
client.deleteProjectCname(project, cname);

查詢認證

// project為使用者體驗監控對應的SLS project 
ListProjectCnameResponse response = client1.listProjectCname(project);
        System.out.println(response.getCnameConfigurations().size());
        System.out.println(response.getCnameConfigurations().get(0).getCertificate().getCreationDate());     System.out.println(response.getCnameConfigurations().get(0).getCertificate().getValidStartDate());
System.out.println(response.getCnameConfigurations().get(0).getCertificate().getValidEndDate());

步驟二:本地驗證資料上報

在正式切換自訂網域名的DNS解析前,需要先在本地驗證資料上報是否正常,以確認認證上傳的有效性。

  1. 本地執行dig命令,擷取到 ${使用者體驗監控SLS project}.${對應地區的SLS 公網接入地址} 網域名稱的一個IP地址。SLS公網接入地址可參考步驟一:上傳認證中參數說明。

  2. 通過本地hosts檔案,將自訂網域名綁定到通過上述操作擷取到的一個IP地址。

  3. 將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