in src/main/java/com/google/cloud/dfmetrics/pipelinemanager/MetricsManager.java [91:128]
public Double getMetricValue(String metricName) throws IOException {
LOG.info(
"Getting '{}' metric for {} under {}", metricName, job().getId(), job().getProjectId());
List<MetricUpdate> metrics =
jobsClient()
.getMetrics(job().getProjectId(), job().getLocation(), job().getId())
.execute()
.getMetrics();
if (metrics == null) {
LOG.warn("No metrics received for the job {} under {}.", job().getId(), job().getProjectId());
return null;
}
for (MetricUpdate metricUpdate : metrics) {
String currentMetricName = metricUpdate.getName().getName();
String currentMetricOriginalName = metricUpdate.getName().getContext().get("original_name");
if (Objects.equals(metricName, currentMetricName)
|| Objects.equals(metricName, currentMetricOriginalName)) {
// only return if the metric is a scalar
if (metricUpdate.getScalar() != null) {
return ((Number) metricUpdate.getScalar()).doubleValue();
} else {
LOG.warn(
"The given metric '{}' is not a scalar metric. Please use getMetrics instead.",
metricName);
return null;
}
}
}
LOG.warn(
"Unable to find '{}' metric for {} under {}. Please check the metricName and try again!",
metricName,
job().getId(),
job().getProjectId());
return null;
}