in src/poller/poller-core/index.js [294:347]
function getMaxMetricValue(projectId, regionId, clusterId, metric) {
const metricWindow = 5;
logger.debug({
message: `Get max ${metric.name} from ${projectId}/${regionId}/${clusterId} over ${metricWindow} minutes.`,
projectId: projectId,
regionId: regionId,
clusterId: clusterId,
});
/** @type {monitoring.protos.google.monitoring.v3.IListTimeSeriesRequest} */
const request = {
name: 'projects/' + projectId,
filter: metric.filter,
interval: {
startTime: {
seconds: Date.now() / 1000 - metric.period * metricWindow,
},
endTime: {
seconds: Date.now() / 1000,
},
},
aggregation: {
alignmentPeriod: {
seconds: metric.period,
},
// @ts-ignore
crossSeriesReducer: metric.reducer,
// @ts-ignore
perSeriesAligner: metric.aligner,
groupByFields: ['resource.location'],
},
view: 'FULL',
};
return metricsClient.listTimeSeries(request).then((metricResponses) => {
const resources = metricResponses[0];
let maxValue = 0.0;
let maxLocation = 'global';
for (const resource of resources) {
for (const point of resource.points || []) {
const value = assertDefined(point.value?.doubleValue) * 100;
if (value > maxValue) {
maxValue = value;
if (resource.resource?.labels?.location) {
maxLocation = resource.resource.labels.location;
}
}
}
}
return [maxValue, maxLocation];
});
}