Minor fixes to metrics, prometheus examples (#3623)

This commit is contained in:
Cijo Thomas 2022-09-02 00:41:09 -04:00 committed by GitHub
parent c2f5e80b0d
commit 0447871d48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 26 deletions

View File

@ -1,5 +1,6 @@
{ {
"cSpell.words": [ "cSpell.words": [
"appsettings",
"asax", "asax",
"cijo", "cijo",
"cncf", "cncf",
@ -37,8 +38,8 @@
"struct", "struct",
"tbody", "tbody",
"thead", "thead",
"Tracestate",
"tracestate", "tracestate",
"Tracestate",
"triager", "triager",
"umesan", "umesan",
"unencrypted", "unencrypted",

View File

@ -27,7 +27,7 @@ var builder = WebApplication.CreateBuilder(args);
// OpenTelemetry // OpenTelemetry
var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown"; var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown";
// Switch between Zipkin/Jaeger/OTLP by setting UseExporter in appsettings.json. // Switch between Zipkin/Jaeger/OTLP/Console by setting UseTracingExporter in appsettings.json.
var tracingExporter = builder.Configuration.GetValue<string>("UseTracingExporter").ToLowerInvariant(); var tracingExporter = builder.Configuration.GetValue<string>("UseTracingExporter").ToLowerInvariant();
var serviceName = tracingExporter switch var serviceName = tracingExporter switch
@ -90,6 +90,8 @@ builder.Logging.ClearProviders();
builder.Logging.AddOpenTelemetry(options => builder.Logging.AddOpenTelemetry(options =>
{ {
options.ConfigureResource(configureResource); options.ConfigureResource(configureResource);
// Switch between Console/OTLP by setting UseLogExporter in appsettings.json.
var logExporter = builder.Configuration.GetValue<string>("UseLogExporter").ToLowerInvariant(); var logExporter = builder.Configuration.GetValue<string>("UseLogExporter").ToLowerInvariant();
switch (logExporter) switch (logExporter)
{ {
@ -113,7 +115,7 @@ builder.Services.Configure<OpenTelemetryLoggerOptions>(opt =>
}); });
// Metrics // Metrics
// Switch between Prometheus/OTLP/Console by setting UseMetricsExporter in appsettings.json.
var metricsExporter = builder.Configuration.GetValue<string>("UseMetricsExporter").ToLowerInvariant(); var metricsExporter = builder.Configuration.GetValue<string>("UseMetricsExporter").ToLowerInvariant();
builder.Services.AddOpenTelemetryMetrics(options => builder.Services.AddOpenTelemetryMetrics(options =>

View File

@ -17,9 +17,6 @@
"Endpoint": "http://localhost:14268", "Endpoint": "http://localhost:14268",
"Protocol": "UdpCompactThrift" "Protocol": "UdpCompactThrift"
}, },
"Prometheus": {
"ScrapeResponseCacheDurationMilliseconds": 5000
},
"Zipkin": { "Zipkin": {
"ServiceName": "zipkin-test", "ServiceName": "zipkin-test",
"Endpoint": "http://localhost:9411/api/v2/spans" "Endpoint": "http://localhost:9411/api/v2/spans"

View File

@ -47,18 +47,13 @@ dotnet add package --prerelease OpenTelemetry.Exporter.Prometheus.AspNetCore
### Step 3: Configure Prometheus Scraping Endpoint ### Step 3: Configure Prometheus Scraping Endpoint
* Register Prometheus scraping middleware using the * Register Prometheus scraping middleware using the
`UseOpenTelemetryPrometheusScrapingEndpoint` extension: `UseOpenTelemetryPrometheusScrapingEndpoint` extension method
on `IApplicationBuilder` :
```csharp ```csharp
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) var builder = WebApplication.CreateBuilder(args);
{ var app = builder.Build();
app.UseOpenTelemetryPrometheusScrapingEndpoint(); app.UseOpenTelemetryPrometheusScrapingEndpoint();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
``` ```
Overloads of the `UseOpenTelemetryPrometheusScrapingEndpoint` extension are Overloads of the `UseOpenTelemetryPrometheusScrapingEndpoint` extension are
@ -66,17 +61,9 @@ dotnet add package --prerelease OpenTelemetry.Exporter.Prometheus.AspNetCore
function can be used: function can be used:
```csharp ```csharp
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseOpenTelemetryPrometheusScrapingEndpoint( app.UseOpenTelemetryPrometheusScrapingEndpoint(
context => context.Request.Path == "/internal/metrics" context => context.Request.Path == "/internal/metrics"
&& context.Connection.LocalPort == 5067); && context.Connection.LocalPort == 5067);
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
``` ```
## Configuration ## Configuration

View File

@ -23,6 +23,12 @@ namespace OpenTelemetry.Exporter.Prometheus
/// </summary> /// </summary>
internal static partial class PrometheusSerializer internal static partial class PrometheusSerializer
{ {
/* Counter becomes counter
Gauge becomes gauge
Histogram becomes histogram
UpDownCounter becomes gauge
* https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/data-model.md#otlp-metric-points-to-prometheus
*/
private static readonly string[] MetricTypes = new string[] private static readonly string[] MetricTypes = new string[]
{ {
"untyped", "counter", "gauge", "summary", "histogram", "histogram", "histogram", "histogram", "gauge", "untyped", "counter", "gauge", "summary", "histogram", "histogram", "histogram", "histogram", "gauge",

View File

@ -41,7 +41,7 @@ namespace OpenTelemetry.Metrics
var type when type == typeof(ObservableCounter<>) => AggregationTemporality.Delta, var type when type == typeof(ObservableCounter<>) => AggregationTemporality.Delta,
var type when type == typeof(Histogram<>) => AggregationTemporality.Delta, var type when type == typeof(Histogram<>) => AggregationTemporality.Delta,
// Temporatlity is not defined for gauges, so this does not really affect anything. // Temporality is not defined for gauges, so this does not really affect anything.
var type when type == typeof(ObservableGauge<>) => AggregationTemporality.Delta, var type when type == typeof(ObservableGauge<>) => AggregationTemporality.Delta,
var type when type == typeof(UpDownCounter<>) => AggregationTemporality.Cumulative, var type when type == typeof(UpDownCounter<>) => AggregationTemporality.Cumulative,