TimeSeries Rest API https://monitoring.googleapis.com/v3/projects/../timeseries возвращается пустым - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь получить данные о производительности с помощью Google REST API мониторинга (пример кода). Но он возвращает пустые данные "{}". Также замечено, что 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. Я что-то упускаю в подходе RESt API.

1 Ответ

0 голосов
/ 22 января 2020

Я пытался воспроизвести ваш случай, используя метод : 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
          }
....................................................

Я бы предложил обратить внимание на то, как вы устанавливаете startTime и EndTime.

Это должна быть временная метка в RFC3339 UT C Формат "Zulu" TimeInterval

Также попробуйте включить имя экземпляра в ваш фильтр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...