Skip to content

Commit

Permalink
chore(spectator): Add timer for stackdriver calls. (#144)
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Duftler committed Dec 6, 2017
1 parent a42741c commit a880bac
Showing 1 changed file with 22 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import com.netflix.kayenta.metrics.MetricSet;
import com.netflix.kayenta.metrics.MetricsService;
import com.netflix.kayenta.security.AccountCredentialsRepository;
import com.netflix.spectator.api.Id;
import com.netflix.spectator.api.Registry;
import lombok.Builder;
import lombok.Getter;
import lombok.Singular;
Expand All @@ -42,6 +44,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

@Builder
Expand All @@ -54,7 +57,10 @@ public class StackdriverMetricsService implements MetricsService {
private List<String> accountNames;

@Autowired
AccountCredentialsRepository accountCredentialsRepository;
private final AccountCredentialsRepository accountCredentialsRepository;

@Autowired
private final Registry registry;

@Override
public String getType() {
Expand All @@ -77,9 +83,11 @@ public List<MetricSet> queryMetrics(String metricsAccountName,
StackdriverCanaryMetricSetQueryConfig stackdriverMetricSetQuery = (StackdriverCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery();
// TODO(duftler): Make this filter general-purpose so it works for more than just GCE.
// TODO(duftler): The 'project' attribute should be part of the scope (a StackdriverCanaryScope), and not just re-used from stackdriverCredentials.
String projectId = stackdriverCredentials.getProject();
String region = canaryScope.getRegion();
String filter = "metric.type=\"" + stackdriverMetricSetQuery.getMetricType() + "\"" +
" AND resource.labels.project_id=" + stackdriverCredentials.getProject() +
" AND resource.metadata.tag.spinnaker-region=" + canaryScope.getRegion() +
" AND resource.labels.project_id=" + projectId +
" AND resource.metadata.tag.spinnaker-region=" + region +
" AND resource.metadata.tag.spinnaker-server-group=" + canaryScope.getScope() +
" AND resource.type = gce_instance";
long alignmentPeriodSec = canaryScope.getStep();
Expand All @@ -101,7 +109,17 @@ public List<MetricSet> queryMetrics(String metricsAccountName,
list.setAggregationGroupByFields(groupByFields);
}

ListTimeSeriesResponse response = list.execute();
long startTime = registry.clock().monotonicTime();
ListTimeSeriesResponse response;

try {
response = list.execute();
} finally {
long endTime = registry.clock().monotonicTime();
Id stackdriverFetchTimerId = registry.createId("stackdriver.fetchTime").withTag("project", projectId).withTag("region", region);

registry.timer(stackdriverFetchTimerId).record(endTime - startTime, TimeUnit.NANOSECONDS);
}

long startAsLong = canaryScope.getStart().toEpochMilli();
long endAsLong = canaryScope.getEnd().toEpochMilli();
Expand Down

0 comments on commit a880bac

Please sign in to comment.