Skip to content

Commit 583eb4d

Browse files
dmathieujennypavlovasmith
authored andcommitted
add otel golang runtime dashboard (elastic#220242)
## Summary This introduces a new APM dashboard for the Golang OpenTelemetry runtime metrics. ![Screenshot 2025-05-13 at 10 31 18](https://github.com/user-attachments/assets/2f380e39-3ecc-4975-a06c-c04f5498889c) --------- Co-authored-by: jennypavlova <[email protected]> Co-authored-by: Nathan L Smith <[email protected]>
1 parent cd753de commit 583eb4d

File tree

4 files changed

+16
-1
lines changed

4 files changed

+16
-1
lines changed

x-pack/solutions/observability/plugins/apm/public/components/app/metrics/index.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ describe('Metrics', () => {
109109
describe('APM agent / otel sdk with no dashboard', () => {
110110
beforeEach(() => {
111111
jest.spyOn(useApmServiceContext, 'useApmServiceContext').mockReturnValue({
112-
agentName: 'opentelemetry/go',
112+
agentName: 'opentelemetry/erlang',
113113
serviceName: 'testServiceName',
114114
transactionTypeStatus: FETCH_STATUS.SUCCESS,
115115
transactionTypes: [],

x-pack/solutions/observability/plugins/apm/public/components/app/metrics/static_dashboard/dashboards/dashboard_catalog.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export const existingDashboardFileNames = new Set([
1818
'classic_apm-edot-dotnet',
1919
'otel_native-edot-python',
2020
'otel_native-edot-nodejs',
21+
'classic_apm-otel_other-go',
2122
]);
2223

2324
// The new dashboard files should be mapped here
@@ -92,6 +93,13 @@ export async function loadDashboardFile(filename: string) {
9293
'./otel_native-edot-nodejs.json'
9394
);
9495
}
96+
case 'otel_native-otel_other-go':
97+
case 'classic_apm-otel_other-go': {
98+
return import(
99+
/* webpackChunkName: "lazyGoOtelNativeDashboard" */
100+
'./otel_native-otel_other-go.json'
101+
);
102+
}
95103
default: {
96104
break;
97105
}

x-pack/solutions/observability/plugins/apm/public/components/app/metrics/static_dashboard/dashboards/get_dashboard_file_name.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ const vanillaOtelSdk = [
8585
telemetrySdkLanguage: 'android',
8686
filename: 'otel_native-otel_other-android',
8787
},
88+
{
89+
agentName: 'opentelemetry/go',
90+
telemetrySdkName: undefined,
91+
telemetrySdkLanguage: undefined,
92+
filename: 'classic_apm-otel_other-go',
93+
},
8894
];
8995
const noFilenameCases = [
9096
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"attributes":{"controlGroupInput":{"chainingSystem":"HIERARCHICAL","controlStyle":"oneLine","ignoreParentSettingsJSON":"{\"ignoreFilters\":false,\"ignoreQuery\":false,\"ignoreTimerange\":false,\"ignoreValidations\":false}","panelsJSON":"{}","showApplySelections":false},"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"type\":\"lens\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[]}},\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"filters\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"name\":\"indexpattern-datasource-layer-ff5fb7ae-9c26-4bf1-af01-a2137e396e87\"}],\"state\":{\"visualization\":{\"title\":\"Empty XY chart\",\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"ff5fb7ae-9c26-4bf1-af01-a2137e396e87\",\"accessors\":[\"61f3dfd5-8bc3-45de-95bf-3ba8eacbe816\",\"9a2e35bb-1299-4057-91ce-ab35b1dc1e41\",\"854b4add-8762-4184-aeec-feda5133ea82\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"colorMapping\":{\"assignments\":[],\"specialAssignments\":[{\"rules\":[{\"type\":\"other\"}],\"color\":{\"type\":\"loop\"},\"touched\":false}],\"paletteId\":\"default\",\"colorMode\":{\"type\":\"categorical\"}},\"xAccessor\":\"062e942e-a2ee-46c9-9081-431d11f98efd\"}],\"yTitle\":\"Memory\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true}},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"ff5fb7ae-9c26-4bf1-af01-a2137e396e87\":{\"columns\":{\"062e942e-a2ee-46c9-9081-431d11f98efd\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"61f3dfd5-8bc3-45de-95bf-3ba8eacbe816\":{\"label\":\"95th percentile of go.memory.used\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"go.memory.used\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95}},\"9a2e35bb-1299-4057-91ce-ab35b1dc1e41\":{\"label\":\"95th percentile of go.memory.allocated\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"go.memory.allocated\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95}},\"854b4add-8762-4184-aeec-feda5133ea82\":{\"label\":\"95th percentile of go.memory.allocations\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"go.memory.allocations\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95}}},\"columnOrder\":[\"062e942e-a2ee-46c9-9081-431d11f98efd\",\"61f3dfd5-8bc3-45de-95bf-3ba8eacbe816\",\"9a2e35bb-1299-4057-91ce-ab35b1dc1e41\",\"854b4add-8762-4184-aeec-feda5133ea82\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{},\"indexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"}},\"currentIndexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"},\"indexpattern\":{\"layers\":{},\"currentIndexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"},\"textBased\":{\"layers\":{},\"indexPatternRefs\":[{\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"title\":\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\",\"timeField\":\"@timestamp\"}]}},\"internalReferences\":[],\"adHocDataViews\":{}}}},\"panelIndex\":\"cf37819d-a6c9-4e76-9908-4629cd59b294\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"cf37819d-a6c9-4e76-9908-4629cd59b294\"}},{\"type\":\"lens\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[]}},\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"filters\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"name\":\"indexpattern-datasource-layer-c9413294-9ab2-41cf-909d-5182a9d21a21\"}],\"state\":{\"visualization\":{\"title\":\"Empty XY chart\",\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"c9413294-9ab2-41cf-909d-5182a9d21a21\",\"accessors\":[\"6134a622-9957-44ae-9c58-8d64b60ba30c\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"colorMapping\":{\"assignments\":[],\"specialAssignments\":[{\"rules\":[{\"type\":\"other\"}],\"color\":{\"type\":\"loop\"},\"touched\":false}],\"paletteId\":\"default\",\"colorMode\":{\"type\":\"categorical\"}},\"xAccessor\":\"9fcf68ec-9b0d-4875-9e2f-6a3234ac0d5a\"}],\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true}},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"c9413294-9ab2-41cf-909d-5182a9d21a21\":{\"columns\":{\"6134a622-9957-44ae-9c58-8d64b60ba30c\":{\"label\":\"95th percentile of go.processor.limit\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"go.processor.limit\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95}},\"9fcf68ec-9b0d-4875-9e2f-6a3234ac0d5a\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}}},\"columnOrder\":[\"9fcf68ec-9b0d-4875-9e2f-6a3234ac0d5a\",\"6134a622-9957-44ae-9c58-8d64b60ba30c\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{},\"indexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"}},\"currentIndexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"},\"indexpattern\":{\"layers\":{},\"currentIndexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"},\"textBased\":{\"layers\":{},\"indexPatternRefs\":[{\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"title\":\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\",\"timeField\":\"@timestamp\"}]}},\"internalReferences\":[],\"adHocDataViews\":{}}}},\"panelIndex\":\"3cb013d0-9d3e-4243-9c64-e10020a4e0a2\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"3cb013d0-9d3e-4243-9c64-e10020a4e0a2\"}},{\"type\":\"lens\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[]}},\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"filters\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"name\":\"indexpattern-datasource-layer-0dfaf315-895c-4d5d-8242-7b6c73db55e3\"}],\"state\":{\"visualization\":{\"title\":\"Empty XY chart\",\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"0dfaf315-895c-4d5d-8242-7b6c73db55e3\",\"accessors\":[\"cc3e522c-73f7-4f48-b447-656c76ca6051\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"colorMapping\":{\"assignments\":[],\"specialAssignments\":[{\"rules\":[{\"type\":\"other\"}],\"color\":{\"type\":\"loop\"},\"touched\":false}],\"paletteId\":\"default\",\"colorMode\":{\"type\":\"categorical\"}},\"xAccessor\":\"ba6ea183-a0be-434d-b490-5b9037eae9ba\"}],\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true}},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"0dfaf315-895c-4d5d-8242-7b6c73db55e3\":{\"columns\":{\"cc3e522c-73f7-4f48-b447-656c76ca6051\":{\"label\":\"95th percentile of go.goroutine.count\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"go.goroutine.count\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95}},\"ba6ea183-a0be-434d-b490-5b9037eae9ba\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}}},\"columnOrder\":[\"ba6ea183-a0be-434d-b490-5b9037eae9ba\",\"cc3e522c-73f7-4f48-b447-656c76ca6051\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{},\"indexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"}},\"currentIndexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"},\"indexpattern\":{\"layers\":{},\"currentIndexPatternId\":\"APM_STATIC_DATA_VIEW_ID\"},\"textBased\":{\"layers\":{},\"indexPatternRefs\":[{\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"title\":\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\",\"timeField\":\"@timestamp\"}]}},\"internalReferences\":[],\"adHocDataViews\":{}}}},\"panelIndex\":\"71fb3ac0-fd7b-4e95-9f42-d5b3d593f85c\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"71fb3ac0-fd7b-4e95-9f42-d5b3d593f85c\"}},{\"type\":\"lens\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[]}},\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"filters\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"APM_STATIC_DATA_VIEW_ID\",\"name\":\"indexpattern-datasource-layer-d4bbf037-b5d5-48ac-b1da-3acf60d23420\"}],\"state\":{\"visualization\":{\"title\":\"Empty XY chart\",\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"d4bbf037-b5d5-48ac-b1da-3acf60d23420\",\"accessors\":[\"5c29a733-c26d-45c1-983d-a07a7c999e3c\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"colorMapping\":{\"assignments\":[],\"specialAssignments\":[{\"rules\":[{\"type\":\"other\"}],\"color\":{\"type\":\"loop\"},\"touched\":false}],\"paletteId\":\"default\",\"colorMode\":{\"type\":\"categorical\"}},\"xAccessor\":\"2bc3b9e3-c1c4-45a1-a765-e0a8e0eba4e2\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"d4bbf037-b5d5-48ac-b1da-3acf60d23420\":{\"columns\":{\"5c29a733-c26d-45c1-983d-a07a7c999e3c\":{\"label\":\"95th percentile of go.memory.gc.goal\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"go.memory.gc.goal\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95}},\"2bc3b9e3-c1c4-45a1-a765-e0a8e0eba4e2\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}}},\"columnOrder\":[\"2bc3b9e3-c1c4-45a1-a765-e0a8e0eba4e2\",\"5c29a733-c26d-45c1-983d-a07a7c999e3c\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}}},\"panelIndex\":\"d7d7604a-0a4b-45f2-934a-1e581e14a789\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"d7d7604a-0a4b-45f2-934a-1e581e14a789\"}}]","timeRestore":false,"title":"Go Runtime Metrics","version":3},"coreMigrationVersion":"8.8.0","created_at":"2025-05-07T11:59:41.547Z","created_by":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0","id":"16939cbb-c8c0-4951-b1c2-53c429483031","managed":false,"references":[{"id":"APM_STATIC_DATA_VIEW_ID","name":"cf37819d-a6c9-4e76-9908-4629cd59b294:indexpattern-datasource-layer-ff5fb7ae-9c26-4bf1-af01-a2137e396e87","type":"index-pattern"},{"id":"APM_STATIC_DATA_VIEW_ID","name":"3cb013d0-9d3e-4243-9c64-e10020a4e0a2:indexpattern-datasource-layer-c9413294-9ab2-41cf-909d-5182a9d21a21","type":"index-pattern"},{"id":"APM_STATIC_DATA_VIEW_ID","name":"71fb3ac0-fd7b-4e95-9f42-d5b3d593f85c:indexpattern-datasource-layer-0dfaf315-895c-4d5d-8242-7b6c73db55e3","type":"index-pattern"},{"id":"APM_STATIC_DATA_VIEW_ID","name":"d7d7604a-0a4b-45f2-934a-1e581e14a789:indexpattern-datasource-layer-d4bbf037-b5d5-48ac-b1da-3acf60d23420","type":"index-pattern"}],"type":"dashboard","typeMigrationVersion":"10.2.0","updated_at":"2025-05-07T11:59:41.547Z","updated_by":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0","version":"WzEwMywxXQ=="}

0 commit comments

Comments
 (0)