@Override public List<MetricSet> queryMetrics(String accountName, CanaryConfig canaryConfig, CanaryMetricConfig canaryMetricConfig, CanaryScope canaryScope) { InfluxDbNamedAccountCredentials accountCredentials = (InfluxDbNamedAccountCredentials)accountCredentialsRepository .getOne(accountName) .orElseThrow(() -> new IllegalArgumentException("Unable to resolve account " + accountName + ".")); InfluxDbRemoteService remoteService = accountCredentials.getInfluxDbRemoteService(); InfluxdbCanaryMetricSetQueryConfig queryConfig = (InfluxdbCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery(); String query = queryBuilder.build(queryConfig, canaryScope); log.debug("query={}", query); String metricSetName = canaryMetricConfig.getName(); List<InfluxDbResult> influxDbResults = queryInfluxdb(remoteService, metricSetName, query); return buildMetricSets(metricSetName, influxDbResults); }
.builder() .name(metricSetName) .query(newrelicCanaryMetricSetQueryConfig)
.mapToObj(index -> { CanaryMetricConfig metric = canaryConfig.getMetrics().get(index); String serviceType = metric.getQuery().getServiceType(); CanaryScopeFactory canaryScopeFactory = getScopeFactoryForServiceType(serviceType); if (metric.getScopeName() == null) { throw new IllegalArgumentException("Canary scope for metric named '" + metric.getName() + "' is null."); CanaryScope inspecificScope = getScopeForNamedScope(executionRequest, metric.getScopeName(), isCanary); CanaryScope scopeModel = canaryScopeFactory.buildCanaryScope(inspecificScope); String stagePrefix = (isCanary ? CanaryStageNames.REFID_FETCH_EXPERIMENT_PREFIX : CanaryStageNames.REFID_FETCH_CONTROL_PREFIX);
@Override public String buildQuery(String metricsAccountName, CanaryConfig canaryConfig, CanaryMetricConfig canaryMetricConfig, CanaryScope canaryScope) { DatadogCanaryMetricSetQueryConfig queryConfig = (DatadogCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery(); return queryConfig.getMetricName() + "{" + canaryScope.getScope() + "}"; }
metricSets.add( MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(entry.getStartMills()) .startTimeIso(Instant.ofEpochSecond(entry.getStart()).toString())
@Override public String buildQuery(String metricsAccountName, CanaryConfig canaryConfig, CanaryMetricConfig canaryMetricConfig, CanaryScope canaryScope) throws IOException { GraphiteCanaryMetricSetQueryConfig queryConfig = (GraphiteCanaryMetricSetQueryConfig) canaryMetricConfig.getQuery(); String query = queryConfig.getMetricName(); if (!Strings.isNullOrEmpty(canaryScope.getScope())) { query = query.replace(SCOPE_VARIABLE, canaryScope.getScope()); } if (!Strings.isNullOrEmpty(canaryScope.getLocation())) { query = query.replace(LOCATION_VARIABLE, canaryScope.getLocation()); } log.debug("Query sent to graphite: {}.", query); return query; }
.name(canaryMetricConfig.getName()) .startTimeMillis(begin.toEpochMilli()) .startTimeIso(begin.toString())
SignalFxCanaryMetricSetQueryConfig queryConfig = (SignalFxCanaryMetricSetQueryConfig) canaryMetricConfig.getQuery(); List<QueryPair> queryPairs = Optional.ofNullable(queryConfig.getQueryPairs()).orElse(new LinkedList<>()); .name(canaryMetricConfig.getName()) .startTimeMillis(startEpochMilli) .startTimeIso(Instant.ofEpochMilli(startEpochMilli).toString())
@Override public String buildQuery(String metricsAccountName, CanaryConfig canaryConfig, CanaryMetricConfig canaryMetricConfig, CanaryScope canaryScope) { SignalFxScopeConfiguration scopeConfiguration = signalFxScopeConfigurationMap.get(metricsAccountName); SignalFxCanaryScope signalFxCanaryScope = (SignalFxCanaryScope) canaryScope; SignalFxCanaryMetricSetQueryConfig queryConfig = (SignalFxCanaryMetricSetQueryConfig) canaryMetricConfig.getQuery(); String aggregationMethod = Optional.ofNullable(queryConfig.getAggregationMethod()).orElse("mean"); List<QueryPair> queryPairs = Optional.ofNullable(queryConfig.getQueryPairs()).orElse(new LinkedList<>()); return SimpleSignalFlowProgramBuilder .create(queryConfig.getMetricName(), aggregationMethod, scopeConfiguration) .withQueryPairs(queryPairs) .withScope(signalFxCanaryScope) .build(); }
.mapToObj(index -> { CanaryMetricConfig metric = canaryConfig.getMetrics().get(index); String serviceType = metric.getQuery().getServiceType(); CanaryScopeFactory canaryScopeFactory = getScopeFactoryForServiceType(serviceType); if (metric.getScopeName() == null) { throw new IllegalArgumentException("Canary scope for metric named '" + metric.getName() + "' is null."); CanaryScope inspecificScope = getScopeForNamedScope(executionRequest, metric.getScopeName(), isCanary); CanaryScope scopeModel = canaryScopeFactory.buildCanaryScope(inspecificScope); String stagePrefix = (isCanary ? CanaryStageNames.REFID_FETCH_EXPERIMENT_PREFIX : CanaryStageNames.REFID_FETCH_CONTROL_PREFIX);
CanaryMetricConfig.builder() .name(metricSetName) .query(graphiteCanaryMetricSetQueryConfigBuilder.build())
ret.add( MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(series.getStart()) .startTimeIso(Instant.ofEpochMilli(series.getStart()).toString())
.orElseThrow(() -> new IllegalArgumentException("Unable to resolve account " + metricsAccountName + ".")); Monitoring monitoring = stackdriverCredentials.getMonitoring(); StackdriverCanaryMetricSetQueryConfig stackdriverMetricSetQuery = (StackdriverCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery(); String projectId = determineProjectId(metricsAccountName, stackdriverCanaryScope); String location = stackdriverCanaryScope.getLocation(); .name(canaryMetricConfig.getName()) .startTimeMillis(responseStartTimeMillis) .startTimeIso(responseStartTimeInstant.toString())
(NewRelicCanaryMetricSetQueryConfig) canaryMetricConfig.getQuery();
.builder() .name(metricSetName) .query(influxDbCanaryMetricSetQueryConfig)
MetricSet.MetricSetBuilder metricSetBuilder = MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(prometheusResults.getStartTimeMillis()) .startTimeIso(responseStartTimeInstant.toString()) MetricSet.MetricSetBuilder metricSetBuilder = MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(canaryScope.getStart().toEpochMilli()) .startTimeIso(canaryScope.getStart().toString())
remoteService, okHttpClient); AtlasCanaryMetricSetQueryConfig atlasMetricSetQuery = (AtlasCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery(); String decoratedQuery = atlasMetricSetQuery.getQ() + "," + atlasCanaryScope.cq(); String isoStep = Duration.of(atlasCanaryScope.getStep(), SECONDS) + ""; .name(canaryMetricConfig.getName()) .startTimeMillis(atlasResults.getStart()) .startTimeIso(responseStartTimeInstant.toString()) .name(canaryMetricConfig.getName()) .startTimeMillis(atlasCanaryScope.getStart().toEpochMilli()) .startTimeIso(atlasCanaryScope.getStart().toString())
@Override public String buildQuery(String metricsAccountName, CanaryConfig canaryConfig, CanaryMetricConfig canaryMetricConfig, CanaryScope canaryScope) throws IOException { PrometheusCanaryMetricSetQueryConfig queryConfig = (PrometheusCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery(); PrometheusCanaryScope prometheusCanaryScope = (PrometheusCanaryScope)canaryScope; String resourceType = StringUtils.hasText(queryConfig.getResourceType()) ? queryConfig.getResourceType() : prometheusCanaryScope.getResourceType(); String customFilter = QueryConfigUtils.expandCustomFilter( canaryConfig, queryConfig, prometheusCanaryScope, new String[]{"project", "resourceType", "scope", "location"}); if (!StringUtils.isEmpty(customFilter) && customFilter.startsWith("PromQL:")) { String promQlExpr = customFilter.substring(7); log.debug("Detected complete PromQL expression: {}", promQlExpr); return promQlExpr; } else { StringBuilder queryBuilder = new StringBuilder(queryConfig.getMetricName()); queryBuilder = addScopeFilter(queryBuilder, prometheusCanaryScope, resourceType, queryConfig, customFilter); queryBuilder = addAvgQuery(queryBuilder); queryBuilder = addGroupByQuery(queryBuilder, queryConfig); log.debug("query={}", queryBuilder); return queryBuilder.toString(); } }
CanaryMetricConfig canaryMetricConfig = CanaryMetricConfig .builder() .name(metricSetName) .query(atlasCanaryMetricSetQueryConfig)
metricSets.add( MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(entry.getStartMills()) .startTimeIso(Instant.ofEpochSecond(entry.getStart()).toString())