Create portable dashboard for OTel .NET runtime metrics (#184842)

## Summary

Create a dedicated "portable dashboard" for OTel .NET.

This uses metrics available in the
[contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib)
runtime metrics library. These metrics are opt-in and not enabled by
default in the vanilla SDK. Our Elastic distro brings in the package and
enables them by default. Therefore, the dashboard will only work if a)
the customer uses our distro or b) they enable the metrics themselves
when using the vanilla SDK.

Further, work is ongoing to define [semantic conventions for .NET
runtime
metrics](https://github.com/open-telemetry/semantic-conventions/pull/1035).
Once complete, the metrics will be implemented directly in the .NET
runtime BCL and be available with no additional dependencies. The goal
is to achieve that by .NET 9, which is not guaranteed. At that point,
the metric names will change to align with the semantic conventions.
This is not ideal, but it is our only option if we want to provide some
form of runtime dashboard with the current metrics and OTel distro.

As with #182107, this dashboard uses a table for some of the data and
this table doesn't seem to reflect the correct date filtering. Until
there is a solution, this PR will remain in the draft, or we can
consider dropping the table for the initial dashboard.


![image](0be46495-e09f-4f4e-81e1-5f69361d5781)
This commit is contained in:
Steve Gordon 2024-11-04 14:16:02 +00:00 committed by GitHub
parent 79331d53e4
commit 0600309378
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 0 deletions

View file

@ -24,6 +24,8 @@ type OpenTelemetryAgentName =
| 'otlp'
| 'opentelemetry/cpp'
| 'opentelemetry/dotnet'
| 'opentelemetry/dotnet/opentelemetry-dotnet-instrumentation'
| 'opentelemetry/dotnet/elastic'
| 'opentelemetry/erlang'
| 'opentelemetry/go'
| 'opentelemetry/java'

View file

@ -12,6 +12,9 @@ export const AGENT_NAME_DASHBOARD_FILE_MAPPING: Record<string, string> = {
'opentelemetry/java': 'opentelemetry_java',
'opentelemetry/java/opentelemetry-java-instrumentation': 'opentelemetry_java',
'opentelemetry/java/elastic': 'opentelemetry_java',
'opentelemetry/dotnet': 'opentelemetry_dotnet',
'opentelemetry/dotnet/opentelemetry-dotnet-instrumentation': 'opentelemetry_dotnet',
'opentelemetry/dotnet/elastic': 'opentelemetry_dotnet',
};
/**
@ -44,6 +47,12 @@ export async function loadDashboardFile(filename: string): Promise<any> {
'./opentelemetry_java.json'
);
}
case 'opentelemetry_dotnet': {
return import(
/* webpackChunkName: "lazyOtelDotnetDashboard" */
'./opentelemetry_dotnet.json'
);
}
default: {
break;
}