有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java TimeSeries Rest APIhttps://monitoring.googleapis.com/v3/projects/../timeseries返回空

我正在尝试使用GoogleMonitoringRESTAPI(代码示例)获取性能数据。但它返回的是空数据“{}”。还观察到它正在重新调整ContentEncoding的响应是“gzip”类型

private static void executeMetricUrl(Credential credential) throws Exception {
// Set up and execute a Google Cloud Storage request.
long startMillis = System.currentTimeMillis() - ((60 * 20) * 1000);
Date currentDate = new Date(startMillis);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

//formatted value of current Date
System.out.println("Milliseconds to Date: " + df.format(currentDate));

//System.out.println(currentDate);
String URI = "https://monitoring.googleapis.com/v3/projects/" + projectId+"/timeSeries/?";
String interval =
    "interval.end_time=" + df.format(System.currentTimeMillis()) + "&interval.start_time="
        + df.format(currentDate);
String filter =
    "filter=metric.type=\"compute.googleapis.com/instance/cpu/utilization\""; //AND metric.labels.instance_name=sampleinstance-1";
String aggregation =
    "aggregation.perSeriesAligner=ALIGN_RATE&aggregation.alignmentPeriod=60s&aggregation.crossSeriesReducer=ALIGN_MEAN";

String finalUrl = URI+filter+"&"+interval;
System.out.println("Final URL ::: "+finalUrl);
TimeInterval interval1 = TimeInterval
    .newBuilder()
    .setStartTime(Timestamps.fromMillis(startMillis))
    .setEndTime(
            Timestamps.fromMillis(System
                    .currentTimeMillis())).build();

HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential);
GenericUrl url = new GenericUrl(finalUrl);
HttpRequest request = requestFactory.buildGetRequest(url);
//HttpHeaders headers = new HttpHeaders();    
//request.setHeaders(headers.setAcceptEncoding("gzip"));
HttpResponse response = request.execute();
String html = "";
BufferedReader  in = new BufferedReader(new InputStreamReader(response.getContent()));  
String inputLine;
while ((inputLine = in.readLine()) != null) {
  html += inputLine + "\n";
}
 System.out.println("content ::: "+html);

}

我正在使用MetricServiceClient以相同的过滤器和间隔获取适当的时间序列数据。我是否在RESTAPI方法中遗漏了什么


共 (1) 个答案

  1. # 1 楼答案

    我试图用Method: projects.timeSeries.list复制你的案例

    我使用了以下参数

    name : project/your-project
    
    filter : metric.type = "compute.googleapis.com/instance/cpu/utilization" AND  metric.labels.instance_name = "instance-name"
    
    interval.startTime : 2020-01-10T15:01:23.045123456Z
    
    interval.endTime : 2020-01-11T15:01:23.045123456Z
    

    我得到的答复如下:

      "timeSeries": [
        {
          "metric": {
            "labels": {
              "instance_name": "instance-name"
            },
            "type": "compute.googleapis.com/instance/cpu/utilization"
          },
          "resource": {
            "type": "gce_instance",
            "labels": {
              "instance_id": "XXXXXXXXXXX",
              "zone": "XXXXXXXXX",
              "project_id": "your-project"
            }
          },
          "metricKind": "GAUGE",
          "valueType": "DOUBLE",
          "points": [
            {
              "interval": {
                "startTime": "2020-01-11T15:01:00Z",
                "endTime": "2020-01-11T15:01:00Z"
              },
              "value": {
                "doubleValue": 0.00097723160608135617
              }
            },
            {
              "interval": {
                "startTime": "2020-01-11T15:00:00Z",
                "endTime": "2020-01-11T15:00:00Z"
              },
              "value": {
                "doubleValue": 0.00092651031620789577
              }
    ....................................................
    

    我建议您注意如何设置开始时间和结束时间

    它应该是RFC3339 UTC“Zulu”格式的时间戳TimeInterval

    还要尝试在过滤器中包含实例名称