-
Notifications
You must be signed in to change notification settings - Fork 501
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
micrometer http.server.requests metric breaks metrics UI with IndexOutOfRangeException #6962
Comments
For this to happen, I think |
I turned on the console metrics exporter so I could see some of the data being sent via OTLP the misbehaving micrometer metric
I assume the empty getBoundaries field relates to your observation about empty explicitBounds? compare that with the equivalent OTel metric
where the getBoundaries shows the explicit bucket boundaries. Feels like the root cause could be a bug in the Micrometer export in the OTel Java agent? To clarify this ask in this ticket -- I don't expect Aspire to work for this funky malformed metric. |
I also tried the other configuration knobs on the Java agent's micrometer bridge
setting either or both to true didn't result in a usable java.server.requests within Aspire. |
@stevesea if possible, could you share a minimal spring boot repo that I could use to debug? Thanks
I agree. As a general rule, I'd like to gracefully handle malformed data if possible, or at least share a more detailed exception message |
Is there an existing issue for this?
Describe the bug
with a http.server.requests metric exported via the otel agent's micrometer bridge, the aspire dashboard can get into an odd state .
if I navigate to the micrometer metric http.server.requests, I get an IndexOutOfRangeException in the aspire dashboard's container logs.
standalone aspire dashboard started with:
docker run --rm -it -p 8000:18888 -p 4317:18889 -p 4318:18890 --name aspire-dashboard -e DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS="true" mcr.microsoft.com/dotnet/aspire-dashboard
enabled micrometer metrics bridge with :
otel.instrumentation.micrometer.enabled=true
in my JVM settingsI can navigate via the left-nav to logs or traces, and the UI is responsive.
If I navigate back to metrics, the UI is unresponsive. I am unable to select other metrics.
In the browser window, I have to manually remove the query parameters from the URI, and then navigate to
for example, change from this:
to
once I manually remove those query parameters, I can select other (non-micrometer) metrics in the UI
Expected Behavior
No response
Steps To Reproduce
No response
Exceptions (if any)
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
Unhandled exception rendering component: Index was outside the bounds of the array.
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculatePercentile(Int32 percentile, UInt64[] counts, Double[] explicitBounds) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 346
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.TryCalculateHistogramPoints(List
1 dimensions, DateTimeOffset start, DateTimeOffset end, Dictionary
2 traces, List1 exemplars) in /_/src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 276 at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculateHistogramValues(List
1 dimensions, Int32 pointCount, Boolean tickUpdate, DateTimeOffset inProgressDataTime, String yLabel) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 147at Aspire.Dashboard.Components.Controls.Chart.ChartBase.UpdateChartAsync(Boolean tickUpdate, DateTimeOffset inProgressDataTime) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 506
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 107
at Aspire.Dashboard.Components.PlotlyChart.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/PlotlyChart.razor.cs:line 177
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit '2YmzVDSrBI8PnW2kK1Vw-iP_YeL1r-p14788V170uBw'.
System.AggregateException: One or more errors occurred. (Index was outside the bounds of the array.)
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculatePercentile(Int32 percentile, UInt64[] counts, Double[] explicitBounds) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 346
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.TryCalculateHistogramPoints(List
1 dimensions, DateTimeOffset start, DateTimeOffset end, Dictionary
2 traces, List1 exemplars) in /_/src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 276 at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculateHistogramValues(List
1 dimensions, Int32 pointCount, Boolean tickUpdate, DateTimeOffset inProgressDataTime, String yLabel) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 147at Aspire.Dashboard.Components.Controls.Chart.ChartBase.UpdateChartAsync(Boolean tickUpdate, DateTimeOffset inProgressDataTime) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 506
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 107
at Aspire.Dashboard.Components.PlotlyChart.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/PlotlyChart.razor.cs:line 177
--- End of inner exception stack trace ---
.NET Version info
No response
Anything else?
aspire dashboard 9.0.0 (standalone)
otel java agent 2.10.0
java app - spring boot 3.4.0, temurin java 21.0.1
configured for jetty, not tomcat.
The text was updated successfully, but these errors were encountered: