diff --git a/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaClusterCPUChartTask.java b/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaClusterCPUChartTask.java new file mode 100644 index 000000000..fd7ba2001 --- /dev/null +++ b/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaClusterCPUChartTask.java @@ -0,0 +1,155 @@ +/* + * Copyright 2022-2024 Google LLC + * Copyright 2013-2021 CompilerWorks + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.edwmigration.dumper.application.dumper.connector.cloudera.manager; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.io.ByteSink; +import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException; +import com.google.edwmigration.dumper.application.dumper.connector.cloudera.manager.ClouderaManagerHandle.ClouderaClusterDTO; +import com.google.edwmigration.dumper.application.dumper.task.TaskRunContext; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nonnull; +import org.apache.hc.core5.net.URIBuilder; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The task collects hosts from Cloudera Manager TimeSeries + * API The chart is for whole cluster is available on {@code /cmf/home/} and {@code + * cmf/clusters/{clusterId}/status} pages in Cloudera Manager UI. The query to chart is written + * on tsquery + * language. + */ +public class ClouderaClusterCPUChartTask extends AbstractClouderaManagerTask { + enum TimeSeriesAggregation { + RAW, + TEN_MINUTELY, + HOURLY, + SIX_HOURLY, + DAILY, + WEEKLY, + } + + private static final Logger LOG = LoggerFactory.getLogger(ClouderaCMFHostsTask.class); + /* + SELECT cpu_percent_across_hosts WHERE entityName = "1546336862" AND category = CLUSTER + */ + private static final String TS_CPU_QUERY_TEMPLATE = + "SELECT cpu_percent_across_hosts WHERE entityName = \"%s\" AND category = CLUSTER"; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + private final int includedLastDays; + private final TimeSeriesAggregation tsAggregation; + + public ClouderaClusterCPUChartTask() { + this(1, TimeSeriesAggregation.RAW); + } + + public ClouderaClusterCPUChartTask(int includedLastDays, TimeSeriesAggregation tsAggregation) { + super( + String.format( + "cmf-cluster-cpu-%s-%s.jsonl", + includedLastDays, tsAggregation.toString().toLowerCase())); + this.includedLastDays = includedLastDays; + this.tsAggregation = tsAggregation; + } + + @Override + protected Void doRun( + TaskRunContext context, @Nonnull ByteSink sink, @Nonnull ClouderaManagerHandle handle) + throws Exception { + CloseableHttpClient httpClient = handle.getHttpClient(); + List clusters = getClustersFromHandle(handle); + + final String timeSeriesAPIUrl = buildTimeSeriesUrl(handle.getApiURI().toString()); + try (Writer writer = sink.asCharSink(StandardCharsets.UTF_8).openBufferedStream()) { + for (ClouderaClusterDTO cluster : clusters) { + String cpuPerClusterQuery = buildQueryToFetchCPUTimeSeriesOnCluster(cluster.getId()); + LOG.debug( + "Execute charts query: [{}] for the cluster: [{}].", + cpuPerClusterQuery, + cluster.getName()); + + LOG.debug(this.tsAggregation.toString()); + + URIBuilder uriBuilder = new URIBuilder(timeSeriesAPIUrl); + uriBuilder.addParameter("query", cpuPerClusterQuery); + uriBuilder.addParameter("desiredRollup", this.tsAggregation.toString()); + uriBuilder.addParameter("mustUseDesiredRollup", "true"); + uriBuilder.addParameter("from", buildISODateTime(this.includedLastDays)); + + try (CloseableHttpResponse chart = httpClient.execute(new HttpGet(uriBuilder.build()))) { + JsonNode jsonNode = objectMapper.readTree(chart.getEntity().getContent()); + writer.write(jsonNode.toString()); + writer.write('\n'); + } + } + } + + return null; + } + + private List getClustersFromHandle(@Nonnull ClouderaManagerHandle handle) { + List clusters = handle.getClusters(); + if (clusters == null) { + throw new MetadataDumperUsageException( + "Cloudera clusters must be initialized before CPU charts dumping."); + } + List cpuClusters = new ArrayList<>(); + for (ClouderaClusterDTO cluster : clusters) { + if (cluster.getId() == null) { + LOG.warn( + "Cloudera cluster id is null for cluster [{}]. " + "Skip CPU metrics for the cluster.", + cluster.getName()); + // todo it's might be critical data for TCO calculation and we should fail the dump + // process. Discuss with product + } else { + cpuClusters.add(cluster); + } + } + return cpuClusters; + } + + private String buildTimeSeriesUrl(String apiUri) { + return apiUri + "/timeseries"; + } + + private String buildQueryToFetchCPUTimeSeriesOnCluster(String clusterId) { + return String.format(TS_CPU_QUERY_TEMPLATE, clusterId); + } + + private String buildISODateTime(int deltaInDays) { + ZonedDateTime dt = + ZonedDateTime.of(LocalDateTime.now().minusDays(deltaInDays), ZoneId.of("UTC")); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + return dt.format(formatter); + } +} diff --git a/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaManagerConnector.java b/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaManagerConnector.java index f6283b190..aecfd61ba 100644 --- a/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaManagerConnector.java +++ b/dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaManagerConnector.java @@ -22,6 +22,7 @@ import com.google.edwmigration.dumper.application.dumper.annotations.RespectsInput; import com.google.edwmigration.dumper.application.dumper.connector.AbstractConnector; import com.google.edwmigration.dumper.application.dumper.connector.Connector; +import com.google.edwmigration.dumper.application.dumper.connector.cloudera.manager.ClouderaClusterCPUChartTask.TimeSeriesAggregation; import com.google.edwmigration.dumper.application.dumper.task.DumpMetadataTask; import com.google.edwmigration.dumper.application.dumper.task.FormatTask; import com.google.edwmigration.dumper.application.dumper.task.Task; @@ -82,6 +83,10 @@ public void addTasksTo(@Nonnull List> out, @Nonnull ConnectorArg out.add(new ClouderaCMFHostsTask()); out.add(new ClouderaAPIHostsTask()); out.add(new ClouderaServicesTask()); + out.add(new ClouderaClusterCPUChartTask(1, TimeSeriesAggregation.HOURLY)); + out.add(new ClouderaClusterCPUChartTask(7, TimeSeriesAggregation.DAILY)); + out.add(new ClouderaClusterCPUChartTask(30, TimeSeriesAggregation.DAILY)); + out.add(new ClouderaClusterCPUChartTask(90, TimeSeriesAggregation.DAILY)); } @Nonnull diff --git a/dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaClusterCPUChartTaskTest.java b/dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaClusterCPUChartTaskTest.java new file mode 100644 index 000000000..ee6901402 --- /dev/null +++ b/dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/cloudera/manager/ClouderaClusterCPUChartTaskTest.java @@ -0,0 +1,140 @@ +/* + * Copyright 2022-2024 Google LLC + * Copyright 2013-2021 CompilerWorks + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.edwmigration.dumper.application.dumper.connector.cloudera.manager; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyChar; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.io.ByteSink; +import com.google.common.io.CharSink; +import com.google.edwmigration.dumper.application.dumper.connector.cloudera.manager.ClouderaManagerHandle.ClouderaClusterDTO; +import com.google.edwmigration.dumper.application.dumper.task.TaskRunContext; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.Writer; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashSet; +import java.util.Set; +import org.apache.http.HttpEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.impl.client.CloseableHttpClient; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class ClouderaClusterCPUChartTaskTest { + private final ClouderaClusterCPUChartTask task = new ClouderaClusterCPUChartTask(); + private ClouderaManagerHandle handle; + private String servicesJson; + + @Mock private TaskRunContext context; + @Mock private ByteSink sink; + @Mock private Writer writer; + @Mock private CharSink charSink; + @Mock private CloseableHttpClient httpClient; + private URI uri; + + @Before + public void setUp() throws Exception { + servicesJson = readFileAsString("/cloudera/manager/cluster-cpu-status.json"); + uri = URI.create("http://localhost/api"); + handle = new ClouderaManagerHandle(uri, httpClient); + + when(sink.asCharSink(eq(StandardCharsets.UTF_8))).thenReturn(charSink); + when(charSink.openBufferedStream()).thenReturn(writer); + } + + @Test + public void noClusterId_skipWrites() throws Exception { + // GIVEN: There is no cluster with a valid cluster ID + handle.initClusters(ImmutableList.of(ClouderaClusterDTO.create(null, "single cluster"))); + + // WHEN + task.doRun(context, sink, handle); + + // THEN: Task for such clusters should be skipped + verify(httpClient, never()).execute(any()); + verifyNoWrites(); + } + + @Test + public void validCluster_doWrites() throws Exception { + // GIVEN: Valid cluster + handle.initClusters(ImmutableList.of(ClouderaClusterDTO.create("id1", "first-cluster"))); + + CloseableHttpResponse firstResponse = mock(CloseableHttpResponse.class); + HttpEntity firstEntity = mock(HttpEntity.class); + when(firstResponse.getEntity()).thenReturn(firstEntity); + when(firstEntity.getContent()).thenReturn(new ByteArrayInputStream(servicesJson.getBytes())); + when(httpClient.execute(argThat(get -> get != null))).thenReturn(firstResponse); + + // WHEN + task.doRun(context, sink, handle); + + // THEN: the output should be dumped into the jsonl format + Set fileLines = new HashSet<>(); + verify(writer, times(1)) + .write( + (String) + argThat( + content -> { + String str = (String) content; + assertFalse(str.contains("\n")); + assertFalse(str.contains("\r")); + fileLines.add(str); + return true; + })); + assertEquals(ImmutableSet.of(tojsonl(servicesJson)), fileLines); + } + + private void verifyNoWrites() throws IOException { + verify(writer, never()).write(anyChar()); + verify(writer, never()).write(anyString()); + verify(writer, never()).write(anyString(), anyInt(), anyInt()); + verify(writer, never()).write(any(char[].class)); + verify(writer, never()).write(any(char[].class), anyInt(), anyInt()); + } + + private String readFileAsString(String fileName) throws IOException, URISyntaxException { + return new String(Files.readAllBytes(Paths.get(this.getClass().getResource(fileName).toURI()))); + } + + private String tojsonl(String json) throws Exception { + return new ObjectMapper().readTree(json).toString(); + } +} diff --git a/dumper/app/src/test/resources/cloudera/manager/cluster-cpu-status.json b/dumper/app/src/test/resources/cloudera/manager/cluster-cpu-status.json new file mode 100644 index 000000000..9a282b171 --- /dev/null +++ b/dumper/app/src/test/resources/cloudera/manager/cluster-cpu-status.json @@ -0,0 +1,1208 @@ +{ + "items": [ + { + "timeSeries": [ + { + "metadata": { + "metricName": "cpu_percent_across_hosts", + "entityName": "cldr2-aw-dl", + "startTime": "2024-09-05T11:49:01.190Z", + "endTime": "2024-12-04T10:49:01.278Z", + "attributes": { + "active": "true", + "clusterDisplayName": "cldr2-aw-dl", + "category": "CLUSTER", + "version": "CDH 7.2.18", + "entityName": "1546336862", + "clusterName": "cldr2-aw-dl" + }, + "unitNumerators": [ + "percent" + ], + "unitDenominators": [], + "expression": "SELECT cpu_percent_across_hosts WHERE entityName = \"1546336862\" AND category = CLUSTER", + "metricCollectionFrequencyMs": 60000, + "rollupUsed": "DAILY" + }, + "data": [ + { + "timestamp": "2024-10-15T00:00:00.000Z", + "value": 4.275888625592417, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-14T09:55:32.000Z", + "sampleValue": 24.7, + "count": 1688, + "min": 2.3, + "minTime": "2024-10-14T18:28:32.000Z", + "max": 24.7, + "maxTime": "2024-10-14T09:55:32.000Z", + "mean": 4.275888625592417, + "stdDev": 1.50359156409552, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-16T00:00:00.000Z", + "value": 4.1396875, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-15T09:00:52.000Z", + "sampleValue": 8.6, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-15T07:01:32.000Z", + "max": 8.6, + "maxTime": "2024-10-15T09:00:52.000Z", + "mean": 4.1396875, + "stdDev": 1.4600044391713811, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-17T00:00:00.000Z", + "value": 4.099479166666667, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-16T00:00:52.000Z", + "sampleValue": 9.5, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-16T00:06:32.000Z", + "max": 9.5, + "maxTime": "2024-10-16T00:00:52.000Z", + "mean": 4.099479166666667, + "stdDev": 1.4671497484652594, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-18T00:00:00.000Z", + "value": 4.142708333333333, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-17T00:00:53.000Z", + "sampleValue": 9.5, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-17T01:13:33.000Z", + "max": 9.5, + "maxTime": "2024-10-17T00:00:53.000Z", + "mean": 4.142708333333333, + "stdDev": 1.5040234190151969, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-19T00:00:00.000Z", + "value": 4.204375000000001, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-18T17:30:54.000Z", + "sampleValue": 9.1, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-18T00:01:33.000Z", + "max": 9.1, + "maxTime": "2024-10-18T17:30:54.000Z", + "mean": 4.204375000000001, + "stdDev": 1.5641104274685131, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-20T00:00:00.000Z", + "value": 4.1965625, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-19T21:30:54.000Z", + "sampleValue": 10.0, + "count": 2880, + "min": 2.0, + "minTime": "2024-10-19T02:06:33.000Z", + "max": 10.0, + "maxTime": "2024-10-19T21:30:54.000Z", + "mean": 4.1965625, + "stdDev": 1.579050058121713, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-21T00:00:00.000Z", + "value": 4.202951388888889, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-20T00:00:54.000Z", + "sampleValue": 9.8, + "count": 2880, + "min": 2.1, + "minTime": "2024-10-20T00:26:34.000Z", + "max": 9.8, + "maxTime": "2024-10-20T00:00:54.000Z", + "mean": 4.202951388888889, + "stdDev": 1.5678168387515894, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-22T00:00:00.000Z", + "value": 4.221284722222222, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-21T00:00:55.000Z", + "sampleValue": 11.3, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-21T02:03:34.000Z", + "max": 11.3, + "maxTime": "2024-10-21T00:00:55.000Z", + "mean": 4.221284722222222, + "stdDev": 1.5553876434082372, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-23T00:00:00.000Z", + "value": 4.206493055555556, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-22T22:09:35.000Z", + "sampleValue": 13.1, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-22T08:17:34.000Z", + "max": 13.1, + "maxTime": "2024-10-22T22:09:35.000Z", + "mean": 4.206493055555556, + "stdDev": 1.5511190573026445, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-24T00:00:00.000Z", + "value": 4.254097222222223, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-23T00:00:56.000Z", + "sampleValue": 10.8, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-23T14:11:35.000Z", + "max": 10.8, + "maxTime": "2024-10-23T00:00:56.000Z", + "mean": 4.254097222222223, + "stdDev": 1.5407728978931883, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-25T00:00:00.000Z", + "value": 4.233159722222223, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-24T22:01:57.000Z", + "sampleValue": 10.3, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-24T06:16:35.000Z", + "max": 10.3, + "maxTime": "2024-10-24T22:01:57.000Z", + "mean": 4.233159722222223, + "stdDev": 1.5679739435919147, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-26T00:00:00.000Z", + "value": 4.233263888888889, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-25T08:00:57.000Z", + "sampleValue": 9.0, + "count": 2880, + "min": 2.3, + "minTime": "2024-10-25T00:19:35.000Z", + "max": 9.0, + "maxTime": "2024-10-25T08:00:57.000Z", + "mean": 4.233263888888889, + "stdDev": 1.5570290507563043, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-27T00:00:00.000Z", + "value": 4.249756944444444, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-26T00:00:57.000Z", + "sampleValue": 9.1, + "count": 2880, + "min": 2.3, + "minTime": "2024-10-26T01:06:36.000Z", + "max": 9.1, + "maxTime": "2024-10-26T00:00:57.000Z", + "mean": 4.249756944444444, + "stdDev": 1.5620165613895602, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-28T00:00:00.000Z", + "value": 4.228055555555556, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-27T00:00:58.000Z", + "sampleValue": 9.6, + "count": 2880, + "min": 2.3, + "minTime": "2024-10-26T23:59:36.000Z", + "max": 9.6, + "maxTime": "2024-10-27T00:00:58.000Z", + "mean": 4.228055555555556, + "stdDev": 1.5357308679431514, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-29T00:00:00.000Z", + "value": 4.228958333333334, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-28T20:43:59.000Z", + "sampleValue": 9.7, + "count": 2880, + "min": 2.2, + "minTime": "2024-10-28T12:01:36.000Z", + "max": 9.7, + "maxTime": "2024-10-28T20:43:59.000Z", + "mean": 4.228958333333334, + "stdDev": 1.5128447235898481, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-30T00:00:00.000Z", + "value": 4.222708333333332, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-29T20:00:59.000Z", + "sampleValue": 9.5, + "count": 2880, + "min": 2.3, + "minTime": "2024-10-29T00:17:36.000Z", + "max": 9.5, + "maxTime": "2024-10-29T20:00:59.000Z", + "mean": 4.222708333333332, + "stdDev": 1.477427106899041, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-10-31T00:00:00.000Z", + "value": 4.191597222222223, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-30T22:01:00.000Z", + "sampleValue": 9.4, + "count": 2880, + "min": 2.3, + "minTime": "2024-10-30T00:11:37.000Z", + "max": 9.4, + "maxTime": "2024-10-30T22:01:00.000Z", + "mean": 4.191597222222223, + "stdDev": 1.4354801335741272, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-01T00:00:00.000Z", + "value": 4.165972222222222, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-10-31T01:01:00.000Z", + "sampleValue": 9.6, + "count": 2880, + "min": 2.3, + "minTime": "2024-10-31T00:17:37.000Z", + "max": 9.6, + "maxTime": "2024-10-31T01:01:00.000Z", + "mean": 4.165972222222222, + "stdDev": 1.4200476582780934, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-02T00:00:00.000Z", + "value": 4.175659722222222, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-01T04:01:00.000Z", + "sampleValue": 8.8, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-01T02:56:37.000Z", + "max": 8.8, + "maxTime": "2024-11-01T04:01:00.000Z", + "mean": 4.175659722222222, + "stdDev": 1.4284174570422723, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-03T00:00:00.000Z", + "value": 4.229791666666666, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-02T17:14:02.000Z", + "sampleValue": 9.6, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-02T00:46:38.000Z", + "max": 9.6, + "maxTime": "2024-11-02T17:14:02.000Z", + "mean": 4.229791666666666, + "stdDev": 1.4677361304853809, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-04T00:00:00.000Z", + "value": 4.211145833333333, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-03T20:00:03.000Z", + "sampleValue": 8.8, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-03T04:47:38.000Z", + "max": 8.8, + "maxTime": "2024-11-03T20:00:03.000Z", + "mean": 4.211145833333333, + "stdDev": 1.4583189181212493, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-05T00:00:00.000Z", + "value": 4.401805555555556, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-04T18:22:39.000Z", + "sampleValue": 94.7, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-04T14:17:38.000Z", + "max": 94.7, + "maxTime": "2024-11-04T18:22:39.000Z", + "mean": 4.401805555555556, + "stdDev": 3.3363882926851014, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-06T00:00:00.000Z", + "value": 4.260486111111112, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-05T00:00:04.000Z", + "sampleValue": 9.3, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-05T00:06:39.000Z", + "max": 9.3, + "maxTime": "2024-11-05T00:00:04.000Z", + "mean": 4.260486111111112, + "stdDev": 1.4721241348379919, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-07T00:00:00.000Z", + "value": 4.215243055555556, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-06T00:00:04.000Z", + "sampleValue": 9.1, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-06T17:06:39.000Z", + "max": 9.1, + "maxTime": "2024-11-06T00:00:04.000Z", + "mean": 4.215243055555556, + "stdDev": 1.4445933299036284, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-08T00:00:00.000Z", + "value": 4.399131944444444, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-07T09:55:41.000Z", + "sampleValue": 93.7, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-07T04:51:39.000Z", + "max": 93.7, + "maxTime": "2024-11-07T09:55:41.000Z", + "mean": 4.399131944444444, + "stdDev": 3.9257615783539728, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-09T00:00:00.000Z", + "value": 4.248993055555555, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-08T16:00:05.000Z", + "sampleValue": 8.5, + "count": 2880, + "min": 2.4, + "minTime": "2024-11-08T00:01:40.000Z", + "max": 8.5, + "maxTime": "2024-11-08T16:00:05.000Z", + "mean": 4.248993055555555, + "stdDev": 1.4505076999643338, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-10T00:00:00.000Z", + "value": 4.203368055555556, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-09T00:00:06.000Z", + "sampleValue": 9.7, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-09T08:17:40.000Z", + "max": 9.7, + "maxTime": "2024-11-09T00:00:06.000Z", + "mean": 4.203368055555556, + "stdDev": 1.4468441096701066, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-11T00:00:00.000Z", + "value": 4.189097222222221, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-10T01:00:06.000Z", + "sampleValue": 8.7, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-10T01:59:40.000Z", + "max": 8.7, + "maxTime": "2024-11-10T01:00:06.000Z", + "mean": 4.189097222222221, + "stdDev": 1.4514988064979404, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-12T00:00:00.000Z", + "value": 4.222604166666667, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-11T00:00:07.000Z", + "sampleValue": 9.4, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-11T00:22:40.000Z", + "max": 9.4, + "maxTime": "2024-11-11T00:00:07.000Z", + "mean": 4.222604166666667, + "stdDev": 1.482014258418926, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-13T00:00:00.000Z", + "value": 4.247152777777777, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-12T14:36:41.000Z", + "sampleValue": 12.4, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-12T00:33:41.000Z", + "max": 12.4, + "maxTime": "2024-11-12T14:36:41.000Z", + "mean": 4.247152777777777, + "stdDev": 1.472172896347828, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-14T00:00:00.000Z", + "value": 4.255763888888889, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-13T19:24:41.000Z", + "sampleValue": 14.0, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-13T04:21:41.000Z", + "max": 14.0, + "maxTime": "2024-11-13T19:24:41.000Z", + "mean": 4.255763888888889, + "stdDev": 1.4936689734470727, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-15T00:00:00.000Z", + "value": 4.2363888888888885, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-14T16:54:08.000Z", + "sampleValue": 9.3, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-14T00:58:41.000Z", + "max": 9.3, + "maxTime": "2024-11-14T16:54:08.000Z", + "mean": 4.2363888888888885, + "stdDev": 1.4799113832031392, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-16T00:00:00.000Z", + "value": 4.248645833333334, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-15T18:50:09.000Z", + "sampleValue": 9.1, + "count": 2880, + "min": 2.1, + "minTime": "2024-11-15T01:36:42.000Z", + "max": 9.1, + "maxTime": "2024-11-15T18:50:09.000Z", + "mean": 4.248645833333334, + "stdDev": 1.5190345737948696, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-17T00:00:00.000Z", + "value": 4.223333333333334, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-16T09:00:09.000Z", + "sampleValue": 9.4, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-16T02:21:42.000Z", + "max": 9.4, + "maxTime": "2024-11-16T09:00:09.000Z", + "mean": 4.223333333333334, + "stdDev": 1.473099295789424, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-18T00:00:00.000Z", + "value": 4.21204861111111, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-17T08:00:10.000Z", + "sampleValue": 8.8, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-17T01:21:42.000Z", + "max": 8.8, + "maxTime": "2024-11-17T08:00:10.000Z", + "mean": 4.21204861111111, + "stdDev": 1.4648921346051191, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-19T00:00:00.000Z", + "value": 4.217395833333333, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-18T09:16:43.000Z", + "sampleValue": 28.3, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-18T19:01:43.000Z", + "max": 28.3, + "maxTime": "2024-11-18T09:16:43.000Z", + "mean": 4.217395833333333, + "stdDev": 1.548872514975011, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-20T00:00:00.000Z", + "value": 4.3331944444444455, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-19T12:01:44.000Z", + "sampleValue": 93.5, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-19T00:17:43.000Z", + "max": 93.5, + "maxTime": "2024-11-19T12:01:44.000Z", + "mean": 4.3331944444444455, + "stdDev": 2.9512683593974733, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-21T00:00:00.000Z", + "value": 4.299791666666666, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-20T15:50:45.000Z", + "sampleValue": 92.6, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-20T00:02:43.000Z", + "max": 92.6, + "maxTime": "2024-11-20T15:50:45.000Z", + "mean": 4.299791666666666, + "stdDev": 2.88088644860697, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-22T00:00:00.000Z", + "value": 4.170763888888889, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-21T18:00:12.000Z", + "sampleValue": 10.0, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-21T00:06:44.000Z", + "max": 10.0, + "maxTime": "2024-11-21T18:00:12.000Z", + "mean": 4.170763888888889, + "stdDev": 1.4778976364798153, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-23T00:00:00.000Z", + "value": 4.3014930555555555, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-22T13:47:44.000Z", + "sampleValue": 45.4, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-22T01:13:44.000Z", + "max": 45.4, + "maxTime": "2024-11-22T13:47:44.000Z", + "mean": 4.3014930555555555, + "stdDev": 2.1504721792917927, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-24T00:00:00.000Z", + "value": 4.208055555555556, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-23T17:36:13.000Z", + "sampleValue": 9.0, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-23T13:58:44.000Z", + "max": 9.0, + "maxTime": "2024-11-23T17:36:13.000Z", + "mean": 4.208055555555556, + "stdDev": 1.5297050719644802, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-25T00:00:00.000Z", + "value": 4.166736111111111, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-24T00:00:13.000Z", + "sampleValue": 9.1, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-24T08:01:45.000Z", + "max": 9.1, + "maxTime": "2024-11-24T00:00:13.000Z", + "mean": 4.166736111111111, + "stdDev": 1.4650345613232603, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-26T00:00:00.000Z", + "value": 4.237048611111112, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-25T10:11:45.000Z", + "sampleValue": 22.2, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-25T17:46:45.000Z", + "max": 22.2, + "maxTime": "2024-11-25T10:11:45.000Z", + "mean": 4.237048611111112, + "stdDev": 1.5457947428450676, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-27T00:00:00.000Z", + "value": 4.26, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-26T00:00:14.000Z", + "sampleValue": 10.1, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-26T18:16:45.000Z", + "max": 10.1, + "maxTime": "2024-11-26T00:00:14.000Z", + "mean": 4.26, + "stdDev": 1.52197427587406, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-28T00:00:00.000Z", + "value": 4.341041666666667, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-27T07:58:46.000Z", + "sampleValue": 94.6, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-27T19:58:46.000Z", + "max": 94.6, + "maxTime": "2024-11-27T07:58:46.000Z", + "mean": 4.341041666666667, + "stdDev": 2.994476150765953, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-29T00:00:00.000Z", + "value": 4.228819444444445, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-28T00:30:15.000Z", + "sampleValue": 8.9, + "count": 2880, + "min": 2.2, + "minTime": "2024-11-28T00:46:46.000Z", + "max": 8.9, + "maxTime": "2024-11-28T00:30:15.000Z", + "mean": 4.228819444444445, + "stdDev": 1.4886473232812996, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-11-30T00:00:00.000Z", + "value": 4.781527777777778, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-29T14:09:48.000Z", + "sampleValue": 94.0, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-29T03:13:46.000Z", + "max": 94.0, + "maxTime": "2024-11-29T14:09:48.000Z", + "mean": 4.781527777777778, + "stdDev": 5.927997906502588, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-12-01T00:00:00.000Z", + "value": 4.133854166666666, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-11-30T06:09:46.000Z", + "sampleValue": 9.4, + "count": 2880, + "min": 2.3, + "minTime": "2024-11-30T02:56:46.000Z", + "max": 9.4, + "maxTime": "2024-11-30T06:09:46.000Z", + "mean": 4.133854166666666, + "stdDev": 1.3805940824175624, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-12-02T00:00:00.000Z", + "value": 4.283472222222222, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-12-01T12:30:17.000Z", + "sampleValue": 9.8, + "count": 2880, + "min": 2.3, + "minTime": "2024-12-01T16:31:47.000Z", + "max": 9.8, + "maxTime": "2024-12-01T12:30:17.000Z", + "mean": 4.283472222222222, + "stdDev": 1.4996483642232248, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-12-03T00:00:00.000Z", + "value": 4.283993055555555, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-12-02T00:00:17.000Z", + "sampleValue": 9.0, + "count": 2880, + "min": 2.4, + "minTime": "2024-12-02T00:41:47.000Z", + "max": 9.0, + "maxTime": "2024-12-02T00:00:17.000Z", + "mean": 4.283993055555555, + "stdDev": 1.4834190766437905, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + }, + { + "timestamp": "2024-12-04T00:00:00.000Z", + "value": 4.2766319444444445, + "type": "SAMPLE", + "aggregateStatistics": { + "sampleTime": "2024-12-03T02:00:18.000Z", + "sampleValue": 9.2, + "count": 2880, + "min": 2.3, + "minTime": "2024-12-03T20:42:48.000Z", + "max": 9.2, + "maxTime": "2024-12-03T02:00:18.000Z", + "mean": 4.2766319444444445, + "stdDev": 1.4951371133761475, + "crossEntityMetadata": { + "maxEntityDisplayName": "cldr2-aw-dl-idbroker0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "maxEntityName": "fb0b1e236807e759de8ed5c1fdf9a679", + "minEntityDisplayName": "cldr2-aw-dl-master0.cldr2-cd.svye-dcxb.a5.cloudera.site", + "minEntityName": "f3ea0bec1ce7e4211ec60cc2518a072f", + "numEntities": 2.0 + } + } + } + ] + } + ], + "warnings": [], + "timeSeriesQuery": "SELECT cpu_percent_across_hosts WHERE entityName = \"1546336862\" AND category = CLUSTER" + } + ] +} \ No newline at end of file