diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 999646eac74..ebe5fc75eee 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -530,3 +530,4 @@ /packages/zoom @elastic/security-service-integrations /packages/zscaler_zia @elastic/security-service-integrations /packages/zscaler_zpa @elastic/security-service-integrations +/packages/otel_rum_dashboards @elastic/apm-agent-rum diff --git a/packages/otel_rum_dashboards/changelog.yml b/packages/otel_rum_dashboards/changelog.yml new file mode 100644 index 00000000000..bb0320a5243 --- /dev/null +++ b/packages/otel_rum_dashboards/changelog.yml @@ -0,0 +1,6 @@ +# newer versions go on top +- version: "0.0.1" + changes: + - description: Initial draft of the package + type: enhancement + link: https://github.com/elastic/integrations/pull/1 # FIXME Replace with the real PR link diff --git a/packages/otel_rum_dashboards/docs/README.md b/packages/otel_rum_dashboards/docs/README.md new file mode 100644 index 00000000000..dd2c843586d --- /dev/null +++ b/packages/otel_rum_dashboards/docs/README.md @@ -0,0 +1,34 @@ +{{- generatedHeader }} +{{/* +This template can be used as a starting point for writing documentation for your new integration. For each section, fill in the details +described in the comments. + +Find more detailed documentation guidelines in https://www.elastic.co/docs/extend/integrations/documentation-guidelines +*/}} +# OpenTelemetry RUM Integration for Elastic + +## Overview + +Use this instration to get a dashboard which displays metrics from your web applications instrumented by Opentelemetry JS SDK. + +### Compatibility + +This integration has ben tested with OpenTelemetry JS SDK `2.2.0` and with OpenTelemetry semantic conventions `1.38.0`. It should work with work with newer versions as long as there are no breaking changes in `browser.*` namespace. + +## What do I need to use this integration? + +This integration will show metrics only if you are monitoring web applications with OpenTelemetry JS SDK. If you are new to OpenTelemetry RUM you can check the [guide](https://www.elastic.co/docs/solutions/observability/applications/otel-rum) on how to start with the Elastic stack. + + +### Validation +{{/* How can the user test whether the integration is working? Including example commands or test files if applicable */}} + +TODO + +## Troubleshooting + +TODO + +### Inputs used +{{/* All inputs used by this package will be automatically listed here. */}} +{{ inputDocs }} diff --git a/packages/otel_rum_dashboards/img/dashboard.png b/packages/otel_rum_dashboards/img/dashboard.png new file mode 100644 index 00000000000..67c3a867e5e Binary files /dev/null and b/packages/otel_rum_dashboards/img/dashboard.png differ diff --git a/packages/otel_rum_dashboards/img/otel-rum.svg b/packages/otel_rum_dashboards/img/otel-rum.svg new file mode 100644 index 00000000000..7f9c4bf6970 --- /dev/null +++ b/packages/otel_rum_dashboards/img/otel-rum.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/otel_rum_dashboards/kibana/dashboard/otel_rum_dashboards-bc22c5d5-fd3a-41f0-9b96-18a2f53d099a.json b/packages/otel_rum_dashboards/kibana/dashboard/otel_rum_dashboards-bc22c5d5-fd3a-41f0-9b96-18a2f53d099a.json new file mode 100644 index 00000000000..5c30a5ed688 --- /dev/null +++ b/packages/otel_rum_dashboards/kibana/dashboard/otel_rum_dashboards-bc22c5d5-fd3a-41f0-9b96-18a2f53d099a.json @@ -0,0 +1,1447 @@ +{ + "attributes": { + "controlGroupInput": { + "chainingSystem": "HIERARCHICAL", + "controlStyle": "oneLine", + "ignoreParentSettingsJSON": { + "ignoreFilters": false, + "ignoreQuery": false, + "ignoreTimerange": false, + "ignoreValidations": false + }, + "panelsJSON": { + "017b3815-8dd4-4a14-9611-7d68aa9ddc62": { + "explicitInput": { + "dataViewId": "apm_static_data_view_id_default", + "exclude": false, + "existsSelected": false, + "fieldName": "resource.attributes.browser.name", + "searchTechnique": "prefix", + "selectedOptions": [], + "sort": { + "by": "_count", + "direction": "desc" + }, + "title": "Browser" + }, + "grow": true, + "order": 1, + "type": "optionsListControl", + "width": "medium" + }, + "1b513a88-daac-47bc-ac7d-be065a27d51d": { + "explicitInput": { + "dataViewId": "apm_static_data_view_id_default", + "exclude": false, + "existsSelected": false, + "fieldName": "service.name", + "searchTechnique": "prefix", + "selectedOptions": [], + "sort": { + "by": "_count", + "direction": "desc" + }, + "title": "Application" + }, + "grow": true, + "order": 0, + "type": "optionsListControl", + "width": "medium" + }, + "4c435f98-1711-40e6-809f-e30e8dd9e61a": { + "explicitInput": { + "dataViewId": "apm_static_data_view_id_default", + "exclude": false, + "existsSelected": false, + "fieldName": "resource.attributes.browser.platform", + "searchTechnique": "prefix", + "selectedOptions": [], + "sort": { + "by": "_count", + "direction": "desc" + }, + "title": "OS" + }, + "grow": true, + "order": 2, + "type": "optionsListControl", + "width": "medium" + } + }, + "showApplySelections": false + }, + "description": "Dashboard for RUM events collected by OTEL web agents", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-9c91513b-1ac2-4577-9c9b-dbc9dddaa65b", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": { + "9c91513b-1ac2-4577-9c9b-dbc9dddaa65b": { + "columnOrder": [ + "28704f0a-e4f3-4efa-bfce-4d0ec008bbc2" + ], + "columns": { + "28704f0a-e4f3-4efa-bfce-4d0ec008bbc2": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "Total Visits", + "operationType": "count", + "params": { + "emptyAsNull": true + }, + "sourceField": "___records___" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "apm_static_data_view_id_default", + "sampling": 1 + } + } + }, + "indexpattern": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": {} + }, + "textBased": { + "indexPatternRefs": [ + { + "id": "apm_static_data_view_id_default", + "timeField": "@timestamp", + "title": "apm-*,logs-*.otel-*,logs-apm*,metrics-*.otel-*,metrics-apm*,traces-*.otel-*,traces-apm*" + } + ], + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layerId": "9c91513b-1ac2-4577-9c9b-dbc9dddaa65b", + "layerType": "data", + "metricAccessor": "28704f0a-e4f3-4efa-bfce-4d0ec008bbc2", + "secondaryLabelPosition": "before", + "secondaryTrend": { + "type": "none" + } + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsMetric" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false + }, + "gridData": { + "h": 5, + "i": "53954435-c6a2-46dc-9e6e-275d30fa7c1c", + "w": 8, + "x": 16, + "y": 0 + }, + "panelIndex": "53954435-c6a2-46dc-9e6e-275d30fa7c1c", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-9806a9c5-aed8-4fee-854b-06d17d2cce50", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "9806a9c5-aed8-4fee-854b-06d17d2cce50": { + "columnOrder": [ + "5065de92-0e77-4c76-8dea-af28d4d457b3" + ], + "columns": { + "5065de92-0e77-4c76-8dea-af28d4d457b3": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "Load Median", + "operationType": "median", + "params": { + "emptyAsNull": true, + "format": { + "id": "duration", + "params": { + "decimals": 2, + "fromUnit": "microseconds", + "toUnit": "asSeconds" + } + } + }, + "sourceField": "attributes.transaction.duration.us" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layerId": "9806a9c5-aed8-4fee-854b-06d17d2cce50", + "layerType": "data", + "metricAccessor": "5065de92-0e77-4c76-8dea-af28d4d457b3", + "secondaryLabelPosition": "before", + "secondaryTrend": { + "type": "none" + } + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsMetric" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false + }, + "gridData": { + "h": 5, + "i": "b31f5812-f3d2-46f5-9de2-97870f0e835b", + "w": 8, + "x": 24, + "y": 0 + }, + "panelIndex": "b31f5812-f3d2-46f5-9de2-97870f0e835b", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-8dc7c14d-777a-4cad-9377-c192833e6c54", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "8dc7c14d-777a-4cad-9377-c192833e6c54": { + "columnOrder": [ + "08101fce-75c6-4ff1-b8fd-65377b8489e1" + ], + "columns": { + "08101fce-75c6-4ff1-b8fd-65377b8489e1": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "95th percentile", + "operationType": "percentile", + "params": { + "format": { + "id": "duration", + "params": { + "decimals": 2, + "fromUnit": "microseconds", + "toUnit": "asSeconds" + } + }, + "percentile": 95 + }, + "sourceField": "attributes.transaction.duration.us" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layerId": "8dc7c14d-777a-4cad-9377-c192833e6c54", + "layerType": "data", + "metricAccessor": "08101fce-75c6-4ff1-b8fd-65377b8489e1", + "secondaryLabelPosition": "before", + "secondaryTrend": { + "type": "none" + } + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsMetric" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false + }, + "gridData": { + "h": 5, + "i": "ee348899-dbe9-4150-be4e-6b09191e3de4", + "w": 8, + "x": 32, + "y": 0 + }, + "panelIndex": "ee348899-dbe9-4150-be4e-6b09191e3de4", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-4890a878-a5b1-4190-b678-ba684e94c40d", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": { + "4890a878-a5b1-4190-b678-ba684e94c40d": { + "columnOrder": [ + "39a1d6f2-2398-4b71-b589-64c987bbb90c" + ], + "columns": { + "39a1d6f2-2398-4b71-b589-64c987bbb90c": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "99th percentile", + "operationType": "percentile", + "params": { + "format": { + "id": "duration", + "params": { + "decimals": 2, + "fromUnit": "microseconds", + "toUnit": "asSeconds" + } + }, + "percentile": 99 + }, + "sourceField": "attributes.transaction.duration.us" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "apm_static_data_view_id_default", + "sampling": 1 + } + } + }, + "indexpattern": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": {} + }, + "textBased": { + "indexPatternRefs": [ + { + "id": "apm_static_data_view_id_default", + "timeField": "@timestamp", + "title": "apm-*,logs-*.otel-*,logs-apm*,metrics-*.otel-*,metrics-apm*,traces-*.otel-*,traces-apm*" + } + ], + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layerId": "4890a878-a5b1-4190-b678-ba684e94c40d", + "layerType": "data", + "metricAccessor": "39a1d6f2-2398-4b71-b589-64c987bbb90c", + "secondaryLabelPosition": "before", + "secondaryTrend": { + "type": "none" + } + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsMetric" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false + }, + "gridData": { + "h": 5, + "i": "bfb22ebb-8261-4a19-adfd-bdc749fc66cd", + "w": 8, + "x": 40, + "y": 0 + }, + "panelIndex": "bfb22ebb-8261-4a19-adfd-bdc749fc66cd", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-c4482d19-19a1-474c-a317-72e97a8ef8bb", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "c4482d19-19a1-474c-a317-72e97a8ef8bb": { + "columnOrder": [ + "1bd7f67a-b964-4724-990a-334ad7857a0f", + "a02c6fd9-9e10-4412-a993-d4797ebc7226" + ], + "columns": { + "1bd7f67a-b964-4724-990a-334ad7857a0f": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "dropPartials": false, + "includeEmptyRows": true, + "interval": "auto" + }, + "sourceField": "@timestamp" + }, + "a02c6fd9-9e10-4412-a993-d4797ebc7226": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and span.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "# Views", + "operationType": "count", + "params": { + "emptyAsNull": true + }, + "sourceField": "___records___" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "layers": [ + { + "accessors": [ + "a02c6fd9-9e10-4412-a993-d4797ebc7226" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "default", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rules": [ + { + "type": "other" + } + ], + "touched": false + } + ] + }, + "layerId": "c4482d19-19a1-474c-a317-72e97a8ef8bb", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "xAccessor": "1bd7f67a-b964-4724-990a-334ad7857a0f" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsXY" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false, + "title": "Page Views" + }, + "gridData": { + "h": 15, + "i": "b271c458-32f2-489b-b6db-f034bb6c8715", + "w": 24, + "x": 0, + "y": 5 + }, + "panelIndex": "b271c458-32f2-489b-b6db-f034bb6c8715", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-0200e78a-aca7-46dc-89d5-290a4d9327bf", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-116fcb46-3936-42dd-9c71-85b95558d4c9", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-b496bcc9-f51a-4634-921b-95a1f6f29ea8", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": { + "0200e78a-aca7-46dc-89d5-290a4d9327bf": { + "columnOrder": [ + "b2fe7987-f8e9-4ff5-a1fd-f1425193b26c", + "8bdd343a-6c47-4134-96a8-8335078d26d2" + ], + "columns": { + "8bdd343a-6c47-4134-96a8-8335078d26d2": { + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "params": { + "emptyAsNull": true + }, + "sourceField": "___records___" + }, + "b2fe7987-f8e9-4ff5-a1fd-f1425193b26c": { + "dataType": "number", + "isBucketed": true, + "label": "attributes.transaction.duration.us", + "operationType": "range", + "params": { + "format": { + "id": "duration", + "params": { + "decimals": 2, + "fromUnit": "microseconds", + "toUnit": "asSeconds" + } + }, + "includeEmptyRows": true, + "maxBars": "auto", + "ranges": [ + { + "from": 0, + "label": "", + "to": 1000 + } + ], + "type": "histogram" + }, + "sourceField": "attributes.transaction.duration.us" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "apm_static_data_view_id_default", + "sampling": 1 + }, + "116fcb46-3936-42dd-9c71-85b95558d4c9": { + "columnOrder": [ + "842fbc6f-7f17-4793-a2df-e9e245ae332d" + ], + "columns": { + "842fbc6f-7f17-4793-a2df-e9e245ae332d": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "95th", + "operationType": "percentile", + "params": { + "percentile": 95 + }, + "sourceField": "attributes.transaction.duration.us" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "apm_static_data_view_id_default", + "linkToLayers": [], + "sampling": 1 + }, + "b496bcc9-f51a-4634-921b-95a1f6f29ea8": { + "columnOrder": [ + "a235cb5e-f333-4f9d-92f4-0c1e07aae842" + ], + "columns": { + "a235cb5e-f333-4f9d-92f4-0c1e07aae842": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "99th", + "operationType": "percentile", + "params": { + "percentile": 99 + }, + "sourceField": "attributes.transaction.duration.us" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "apm_static_data_view_id_default", + "linkToLayers": [], + "sampling": 1 + } + } + }, + "indexpattern": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": {} + }, + "textBased": { + "indexPatternRefs": [ + { + "id": "apm_static_data_view_id_default", + "timeField": "@timestamp", + "title": "apm-*,logs-*.otel-*,logs-apm*,metrics-*.otel-*,metrics-apm*,traces-*.otel-*,traces-apm*" + } + ], + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "layers": [ + { + "accessors": [ + "8bdd343a-6c47-4134-96a8-8335078d26d2" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "default", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rules": [ + { + "type": "other" + } + ], + "touched": false + } + ] + }, + "layerId": "0200e78a-aca7-46dc-89d5-290a4d9327bf", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "xAccessor": "b2fe7987-f8e9-4ff5-a1fd-f1425193b26c" + }, + { + "accessors": [ + "842fbc6f-7f17-4793-a2df-e9e245ae332d" + ], + "layerId": "116fcb46-3936-42dd-9c71-85b95558d4c9", + "layerType": "referenceLine", + "yConfig": [ + { + "axisMode": "bottom", + "forAccessor": "842fbc6f-7f17-4793-a2df-e9e245ae332d", + "textVisibility": true + } + ] + }, + { + "accessors": [ + "a235cb5e-f333-4f9d-92f4-0c1e07aae842" + ], + "layerId": "b496bcc9-f51a-4634-921b-95a1f6f29ea8", + "layerType": "referenceLine", + "yConfig": [ + { + "axisMode": "bottom", + "forAccessor": "a235cb5e-f333-4f9d-92f4-0c1e07aae842", + "textVisibility": true + } + ] + } + ], + "legend": { + "isVisible": false, + "position": "right", + "showSingleSeries": false + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsXY" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false, + "title": "Page Load Distribution" + }, + "gridData": { + "h": 15, + "i": "24997ff4-26ce-4f4c-b84c-5afc3e4be5f4", + "w": 24, + "x": 24, + "y": 5 + }, + "panelIndex": "24997ff4-26ce-4f4c-b84c-5afc3e4be5f4", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-5af535dc-61b3-409d-8974-41ab37c2e605", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": { + "5af535dc-61b3-409d-8974-41ab37c2e605": { + "columnOrder": [ + "6c7e7078-5144-48d1-85d5-c662d9288594", + "f1edec2a-b438-4817-ac30-81a4bc1131c5" + ], + "columns": { + "6c7e7078-5144-48d1-85d5-c662d9288594": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 Errors", + "operationType": "terms", + "params": { + "exclude": [], + "excludeIsRegex": false, + "include": [], + "includeIsRegex": false, + "missingBucket": false, + "orderBy": { + "columnId": "f1edec2a-b438-4817-ac30-81a4bc1131c5", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 10 + }, + "sourceField": "attributes.exception.message" + }, + "f1edec2a-b438-4817-ac30-81a4bc1131c5": { + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and scope.name :\"@opentelemetry/instrumentation-web-exception\" " + }, + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "params": { + "emptyAsNull": true + }, + "sourceField": "___records___" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "apm_static_data_view_id_default", + "sampling": 1 + } + } + }, + "indexpattern": { + "currentIndexPatternId": "apm_static_data_view_id_default", + "layers": {} + }, + "textBased": { + "indexPatternRefs": [ + { + "id": "apm_static_data_view_id_default", + "timeField": "@timestamp", + "title": "apm-*,logs-*.otel-*,logs-apm*,metrics-*.otel-*,metrics-apm*,traces-*.otel-*,traces-apm*" + } + ], + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "columns": [ + { + "columnId": "f1edec2a-b438-4817-ac30-81a4bc1131c5", + "isMetric": true, + "isTransposed": false + }, + { + "columnId": "6c7e7078-5144-48d1-85d5-c662d9288594", + "isMetric": false, + "isTransposed": false + } + ], + "layerId": "5af535dc-61b3-409d-8974-41ab37c2e605", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsDatatable" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false + }, + "gridData": { + "h": 15, + "i": "eca6f57b-f1c3-4edf-a244-e6e165160f15", + "w": 24, + "x": 0, + "y": 20 + }, + "panelIndex": "eca6f57b-f1c3-4edf-a244-e6e165160f15", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-0726ad93-3beb-44e5-983e-0e70bd327334", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "0726ad93-3beb-44e5-983e-0e70bd327334": { + "columnOrder": [ + "79ba9e61-f9d1-4497-b27c-fe23901fafcd", + "7cb4e169-0481-4eef-a887-5cd308ee7a1a" + ], + "columns": { + "79ba9e61-f9d1-4497-b27c-fe23901fafcd": { + "dataType": "string", + "isBucketed": true, + "label": "Top 5 values of resource.attributes.browser.name", + "operationType": "terms", + "params": { + "exclude": [], + "excludeIsRegex": false, + "include": [], + "includeIsRegex": false, + "missingBucket": false, + "orderBy": { + "columnId": "7cb4e169-0481-4eef-a887-5cd308ee7a1a", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 5 + }, + "sourceField": "resource.attributes.browser.name" + }, + "7cb4e169-0481-4eef-a887-5cd308ee7a1a": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "Browser", + "operationType": "count", + "params": { + "emptyAsNull": true + }, + "sourceField": "resource.attributes.browser.name" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "default", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rules": [ + { + "type": "other" + } + ], + "touched": false + } + ] + }, + "layerId": "0726ad93-3beb-44e5-983e-0e70bd327334", + "layerType": "data", + "legendDisplay": "default", + "metrics": [ + "7cb4e169-0481-4eef-a887-5cd308ee7a1a" + ], + "nestedLegend": false, + "numberDisplay": "percent", + "primaryGroups": [ + "79ba9e61-f9d1-4497-b27c-fe23901fafcd" + ] + } + ], + "shape": "pie" + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsPie" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false, + "title": "Browser Breakdown" + }, + "gridData": { + "h": 15, + "i": "c9343462-4488-44f2-8c60-16faa9fc7e31", + "w": 12, + "x": 24, + "y": 20 + }, + "panelIndex": "c9343462-4488-44f2-8c60-16faa9fc7e31", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "indexpattern-datasource-layer-7eedf688-f484-48c5-bf05-c6fe0879f532", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "7eedf688-f484-48c5-bf05-c6fe0879f532": { + "columnOrder": [ + "fed32e3b-ba0e-4d2d-b3bf-689c4034de76", + "c9cbbbbc-f1ee-4d18-824d-0813a48d4b84" + ], + "columns": { + "c9cbbbbc-f1ee-4d18-824d-0813a48d4b84": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.dataset :\"generic.otel\" and transaction.name :\"documentLoad\" " + }, + "isBucketed": false, + "label": "Platform", + "operationType": "unique_count", + "params": { + "emptyAsNull": true + }, + "sourceField": "resource.attributes.browser.platform" + }, + "fed32e3b-ba0e-4d2d-b3bf-689c4034de76": { + "dataType": "string", + "isBucketed": true, + "label": "Top 5 values of resource.attributes.browser.platform", + "operationType": "terms", + "params": { + "exclude": [], + "excludeIsRegex": false, + "include": [], + "includeIsRegex": false, + "missingBucket": false, + "orderBy": { + "columnId": "c9cbbbbc-f1ee-4d18-824d-0813a48d4b84", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 5 + }, + "sourceField": "resource.attributes.browser.platform" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "default", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rules": [ + { + "type": "other" + } + ], + "touched": false + } + ] + }, + "layerId": "7eedf688-f484-48c5-bf05-c6fe0879f532", + "layerType": "data", + "legendDisplay": "default", + "metrics": [ + "c9cbbbbc-f1ee-4d18-824d-0813a48d4b84" + ], + "nestedLegend": false, + "numberDisplay": "percent", + "primaryGroups": [ + "fed32e3b-ba0e-4d2d-b3bf-689c4034de76" + ] + } + ], + "shape": "pie" + } + }, + "title": "", + "type": "lens", + "version": 1, + "visualizationType": "lnsPie" + }, + "enhancements": { + "dynamicActions": { + "events": [] + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false, + "title": "OS Breakdown" + }, + "gridData": { + "h": 15, + "i": "1ab617c6-b057-4153-8e7a-7c7be0a4e1fd", + "w": 12, + "x": 36, + "y": 20 + }, + "panelIndex": "1ab617c6-b057-4153-8e7a-7c7be0a4e1fd", + "type": "lens" + }, + { + "embeddableConfig": { + "content": "This dashboard provides an overview of your web applications performance and health, including number of visits, page load times and top errors. Use it to monitor your web applications instrumented by the OpenTelemetry JS SDK.", + "title": "OpenTelemetry RUM" + }, + "gridData": { + "h": 5, + "i": "d4e17b5d-a5a2-4e2e-aec4-0d110853ec56", + "w": 16, + "x": 0, + "y": 0 + }, + "panelIndex": "d4e17b5d-a5a2-4e2e-aec4-0d110853ec56", + "type": "DASHBOARD_MARKDOWN" + } + ], + "timeRestore": false, + "title": "OTEL RUM", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2025-12-23T16:50:50.036Z", + "created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0", + "id": "otel_rum_dashboards-bc22c5d5-fd3a-41f0-9b96-18a2f53d099a", + "references": [ + { + "id": "apm_static_data_view_id_default", + "name": "53954435-c6a2-46dc-9e6e-275d30fa7c1c:indexpattern-datasource-layer-9c91513b-1ac2-4577-9c9b-dbc9dddaa65b", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "b31f5812-f3d2-46f5-9de2-97870f0e835b:indexpattern-datasource-layer-9806a9c5-aed8-4fee-854b-06d17d2cce50", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "ee348899-dbe9-4150-be4e-6b09191e3de4:indexpattern-datasource-layer-8dc7c14d-777a-4cad-9377-c192833e6c54", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "bfb22ebb-8261-4a19-adfd-bdc749fc66cd:indexpattern-datasource-layer-4890a878-a5b1-4190-b678-ba684e94c40d", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "b271c458-32f2-489b-b6db-f034bb6c8715:indexpattern-datasource-layer-c4482d19-19a1-474c-a317-72e97a8ef8bb", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "24997ff4-26ce-4f4c-b84c-5afc3e4be5f4:indexpattern-datasource-layer-0200e78a-aca7-46dc-89d5-290a4d9327bf", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "24997ff4-26ce-4f4c-b84c-5afc3e4be5f4:indexpattern-datasource-layer-116fcb46-3936-42dd-9c71-85b95558d4c9", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "24997ff4-26ce-4f4c-b84c-5afc3e4be5f4:indexpattern-datasource-layer-b496bcc9-f51a-4634-921b-95a1f6f29ea8", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "eca6f57b-f1c3-4edf-a244-e6e165160f15:indexpattern-datasource-layer-5af535dc-61b3-409d-8974-41ab37c2e605", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "c9343462-4488-44f2-8c60-16faa9fc7e31:indexpattern-datasource-layer-0726ad93-3beb-44e5-983e-0e70bd327334", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "1ab617c6-b057-4153-8e7a-7c7be0a4e1fd:indexpattern-datasource-layer-7eedf688-f484-48c5-bf05-c6fe0879f532", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "controlGroup_1b513a88-daac-47bc-ac7d-be065a27d51d:optionsListDataView", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "controlGroup_017b3815-8dd4-4a14-9611-7d68aa9ddc62:optionsListDataView", + "type": "index-pattern" + }, + { + "id": "apm_static_data_view_id_default", + "name": "controlGroup_4c435f98-1711-40e6-809f-e30e8dd9e61a:optionsListDataView", + "type": "index-pattern" + } + ], + "type": "dashboard", + "typeMigrationVersion": "10.3.0", + "updated_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0" +} \ No newline at end of file diff --git a/packages/otel_rum_dashboards/manifest.yml b/packages/otel_rum_dashboards/manifest.yml new file mode 100644 index 00000000000..af848242500 --- /dev/null +++ b/packages/otel_rum_dashboards/manifest.yml @@ -0,0 +1,30 @@ +format_version: 3.5.4 +name: otel_rum_dashboards +title: "OpenTelemetry RUM Dashboards" +version: 0.0.1 +description: "This package contains a dashboards to visualize RUM metrics from web applications instrumented with OpenTelemetry JS SDK" +type: content +categories: + - opentelemetry +conditions: + kibana: + version: "^9.2.1" + elastic: + subscription: "basic" +discovery: + fields: [] + datasets: + - generic.otel +screenshots: + - src: /img/dashboard.png + title: OTEL RUM Overview Metrics screenshot + size: 600x600 + type: image/png +icons: + - src: /img/otel-rum.svg + title: OTEL RUM + size: 32x32 + type: image/svg+xml +owner: + github: elastic/integrations + type: elastic