本教程详细介绍如何使用Alibaba Cloud SDK for Java查询域名访问日志及源服务器流量。

前提条件

在使用本教程前,请确保已完成以下操作:
  • 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey。
  • 确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见 阿里云开发工具包(SDK)
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-cdn -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-cdn</artifactId>
            <version>3.0.10</version>
        </dependency>
    </dependencies>

代码示例

本文操作示例主要以代码形式体现,具体代码如下:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.cdn.model.v20180510.DescribeCdnDomainLogsRequest;
import com.aliyuncs.cdn.model.v20180510.DescribeCdnDomainLogsResponse;
import com.aliyuncs.cdn.model.v20180510.DescribeDomainRealTimeSrcBpsDataRequest;
import com.aliyuncs.cdn.model.v20180510.DescribeDomainRealTimeSrcBpsDataResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

/**
 * DescribeCdnDomainLogs    获取指定域名的原始访问日志的下载地址
 * DescribeDomainRealTimeSrcBpsData    获取域名1分钟粒度回源带宽数据
 */
public class Demo {

    // 域名
    private static String domainName = "www.yourDomainName.com";

    public static void main(String[] args) {
        Gson gson = new Gson();
        IAcsClient client = initialization();
        try {
            // 获取指定域名的原始访问日志的下载地址
            DescribeCdnDomainLogsResponse describeCdnDomainLogsResponse = describeCdnDomainLogs(client);
            System.out.println(gson.toJson(describeCdnDomainLogsResponse));
            //获取域名1分钟粒度回源带宽数据
            DescribeDomainRealTimeSrcBpsDataResponse describeDomainRealTimeSrcBpsDataResponse = describeDomainRealTimeSrcBpsData(client);
            System.out.println(gson.toJson(describeDomainRealTimeSrcBpsDataResponse));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }
    }

    /**
     * DescribeDomainRealTimeSrcBpsData    获取域名1分钟粒度回源带宽数据
     */
    private static DescribeDomainRealTimeSrcBpsDataResponse describeDomainRealTimeSrcBpsData(IAcsClient client) throws ClientException {
        System.out.println("------------------describeDomainRealTimeSrcBpsData-------------------");
        DescribeDomainRealTimeSrcBpsDataRequest request = new DescribeDomainRealTimeSrcBpsDataRequest();
        // 需要查询的加速域名,多个用逗号(,)隔开。
        // 不填该参数,代表查询当前用户下所有域名。
        request.setDomainName(domainName);
        // 获取数据起始时间点。
        // 日期格式按照ISO8601表示法,并使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ。
        // 不写默认读取过去1小时数据。
        request.setStartTime("2019-08-21T08:00:00Z");
        // 获取数据的结束时间点。
        // 结束时间需大于起始时间。
        // 日期格式按照ISO8601表示法,并使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ。
        request.setEndTime("2019-09-21T08:00:00Z");
        return client.getAcsResponse(request);
    }

    /**
     * DescribeCdnDomainLogs    获取指定域名的原始访问日志的下载地址
     */
    private static DescribeCdnDomainLogsResponse describeCdnDomainLogs(IAcsClient client) throws ClientException {
        System.out.println("------------------describeCdnDomainLogs-------------------");
        DescribeCdnDomainLogsRequest request = new DescribeCdnDomainLogsRequest();
        // 域名,只支持单个查询
        request.setDomainName(domainName);
        // 获取日志起始时间点
        // 日期格式按照ISO8601表示法,并使用UTC时间
        request.setStartTime("2019-08-21T08:00:00Z");
        // 获取日志结束时间。结束时间需大于起始时间,起止时间和结束时间,间隔不超过一年。
        // 获取日期格式按照ISO8601表示法,并使用UTC时间。
        request.setEndTime("2019-09-21T08:00:00Z");

        return client.getAcsResponse(request);
    }

    /**
     * Initialization  初始化公共请求参数
     */
    private static IAcsClient initialization() {
        // 初始化请求参数
        DefaultProfile profile = DefaultProfile.getProfile(
                "<your-region-id>", // 您的可用区ID
                "<your-access-key-id>", // 您的AccessKey ID
                "<your-access-key-secret>"); // 您的AccessKey Secret
        return new DefaultAcsClient(profile);
    }
}

执行结果

正确的执行结果类似如下:
------------------describeCdnDomainLogs-------------------
{
  "requestId": "88BCFA39-0394-467E-BFBC-6C7D02B717BC",
  "domainLogDetails": [
    {
      "domainName": "",
      "logCount": 0,
      "pageInfos": [],
      "logInfos": []
    }
  ]
}
------------------describeDomainRealTimeSrcBpsData-------------------
{
  "requestId": "FEBDDB8E-C3D9-4B12-87C2-46C88C98B392",
  "domainName": "vid****.****.club",
  "startTime": "2019-08-21T08:00:00Z",
  "endTime": "2019-09-21T08:00:00Z",
  "dataInterval": "86400",
  "realTimeSrcBpsDataPerInterval": [
    {
      "timeStamp": "2019-08-21T16:00:00Z",
      "value": "0"
    },
    {
      "timeStamp": "2019-08-22T16:00:00Z",
      "value": "0"
    },
    {
      "timeStamp": "2019-08-23T16:00:00Z",
      "value": "0"
    }
  ]
}