Skip to content

Commit

Permalink
Only document metric sinks when they are configured & Remove default …
Browse files Browse the repository at this point in the history
…config for legacy Prometheus (#1054)
  • Loading branch information
tomkerkhove authored May 27, 2020
1 parent f95968b commit 69cb47a
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 16 deletions.
9 changes: 9 additions & 0 deletions changelog/content/experimental/unreleased.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
weight: 1
version:
---

- {{% tag fixed %}} Runtime config for metrics sinks is not working correctly ([#1052](https://github.com/tomkerkhove/promitor/issues/1052))
- {{% tag removed %}} Default Prometheus configuration since we have multiple metric sinks nowadays. We are removing
this since you cannot have duplicate Prometheus scraping endpoints. If you omit legacy configuration it will use
`/metrics` as a default value which forces you to use different endpoint in the Prometheus metric sink.
4 changes: 2 additions & 2 deletions changelog/content/released/v1.6.0.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
subtitle: "released on 2020-04-06"
date: 2020-04-06T17:38:47+02:00
subtitle: "released on 2020-05-15"
date: 2020-05-15T17:38:47+02:00
weight: 160
version: Scraper (Agent) - v1.6.0
---
Expand Down
13 changes: 13 additions & 0 deletions changelog/content/released/v1.6.1.md.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
subtitle: "released on 2020-05-27"
date: 2020-05-27T17:38:47+02:00
weight: 161
version: Scraper (Agent) - v1.6.1
---

- {{% tag fixed %}} Runtime config for metrics sinks is not working correctly ([#1052](https://github.com/tomkerkhove/promitor/issues/1052))
- {{% tag removed %}} Default Prometheus configuration since we have multiple metric sinks nowadays. We are removing
this since you cannot have duplicate Prometheus scraping endpoints. If you omit legacy configuration it will use
`/metrics` as a default value which forces you to use different endpoint in the Prometheus metric sink.

Full release notes can be found [here](https://github.com/tomkerkhove/promitor/releases/tag/1.6.1).
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class ScraperRuntimeConfiguration : RuntimeConfiguration
public AzureMonitorConfiguration AzureMonitor { get; set; } = new AzureMonitorConfiguration();
public MetricsConfiguration MetricsConfiguration { get; set; } = new MetricsConfiguration();
public MetricSinkConfiguration MetricSinks { get; set; } = new MetricSinkConfiguration();
public PrometheusLegacyConfiguration Prometheus { get; set; } = new PrometheusLegacyConfiguration();
public PrometheusLegacyConfiguration Prometheus { get; set; }
public ResourceDiscoveryConfiguration ResourceDiscovery { get; set; }
}
}
17 changes: 10 additions & 7 deletions src/Promitor.Agents.Scraper/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,18 @@ private string BuildOpenApiDescription(IConfiguration configuration, string lega
openApiDescriptionBuilder.AppendLine($"<li>Legacy Prometheus scrape endpoint is exposed at <a href=\"./../..{legacyPrometheusUriPath}\" target=\"_blank\">{legacyPrometheusUriPath}</a></li>");
}

if (metricSinkConfiguration.PrometheusScrapingEndpoint != null)
if (metricSinkConfiguration != null)
{
var prometheusScrapingBaseUri = metricSinkConfiguration.PrometheusScrapingEndpoint.BaseUriPath;
openApiDescriptionBuilder.AppendLine($"<li>Prometheus scrape endpoint is exposed at <a href=\"./../..{prometheusScrapingBaseUri}\" target=\"_blank\">{prometheusScrapingBaseUri}</a></li>");
}
if (metricSinkConfiguration.PrometheusScrapingEndpoint != null)
{
var prometheusScrapingBaseUri = metricSinkConfiguration.PrometheusScrapingEndpoint.BaseUriPath;
openApiDescriptionBuilder.AppendLine($"<li>Prometheus scrape endpoint is exposed at <a href=\"./../..{prometheusScrapingBaseUri}\" target=\"_blank\">{prometheusScrapingBaseUri}</a></li>");
}

if (metricSinkConfiguration.Statsd != null)
{
openApiDescriptionBuilder.AppendLine($"<li>StatsD server located on {metricSinkConfiguration.Statsd.Host}:{metricSinkConfiguration.Statsd.Port}</li>");
if (metricSinkConfiguration.Statsd != null)
{
openApiDescriptionBuilder.AppendLine($"<li>StatsD server located on {metricSinkConfiguration.Statsd.Host}:{metricSinkConfiguration.Statsd.Port}</li>");
}
}

return openApiDescriptionBuilder.ToString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ public async Task RuntimeConfiguration_HasConfiguredMetricsConfigurationBasePath
// Arrange
var metricsDeclarationBasePath = _faker.System.DirectoryPath();
var configuration = await RuntimeConfigurationGenerator.WithServerConfiguration()
.WithPrometheusLegacyConfiguration()
.WithMetricsConfiguration(absolutePath: metricsDeclarationBasePath)
.GenerateAsync();

Expand Down Expand Up @@ -458,7 +459,7 @@ public async Task RuntimeConfiguration_HasNoMetricUnavailableValuePathConfigured
}

[Fact]
public async Task RuntimeConfiguration_HasNoPrometheusConfigurationConfigured_UsesDefault()
public async Task RuntimeConfiguration_HasNoPrometheusConfigurationConfigured_DoesNotUseDefaults()
{
// Arrange
var configuration = await RuntimeConfigurationGenerator.WithServerConfiguration()
Expand All @@ -470,10 +471,7 @@ public async Task RuntimeConfiguration_HasNoPrometheusConfigurationConfigured_Us

// Assert
Assert.NotNull(runtimeConfiguration);
Assert.NotNull(runtimeConfiguration.Prometheus);
Assert.NotNull(runtimeConfiguration.Prometheus.ScrapeEndpoint);
Assert.Equal(Defaults.Prometheus.ScrapeEndpointBaseUri, runtimeConfiguration.Prometheus.ScrapeEndpoint.BaseUriPath);
Assert.Equal(Defaults.Prometheus.MetricUnavailableValue, runtimeConfiguration.Prometheus.MetricUnavailableValue);
Assert.Null(runtimeConfiguration.Prometheus);
}

[Fact]
Expand Down Expand Up @@ -510,7 +508,6 @@ public async Task RuntimeConfiguration_HasNoResourceDiscoveryPortConfigured_Uses
Assert.NotNull(runtimeConfiguration);
Assert.NotNull(runtimeConfiguration.ResourceDiscovery);
Assert.NotNull(runtimeConfiguration.ResourceDiscovery.Port);
Assert.Equal(Defaults.Prometheus.ScrapeEndpointBaseUri, runtimeConfiguration.Prometheus.ScrapeEndpoint.BaseUriPath);
}

[Fact]
Expand All @@ -519,6 +516,7 @@ public async Task RuntimeConfiguration_IsFullyConfigured_UsesCorrectValues()
// Arrange
var bogusRuntimeConfiguration = BogusScraperRuntimeConfigurationGenerator.Generate();
var configuration = await RuntimeConfigurationGenerator.WithRuntimeConfiguration(bogusRuntimeConfiguration)
.WithPrometheusLegacyConfiguration()
.GenerateAsync();

// Act
Expand Down

0 comments on commit 69cb47a

Please sign in to comment.