From e8b6fd42039122d6ff83c6b20fe736ca5ff98b24 Mon Sep 17 00:00:00 2001 From: YANGDB Date: Wed, 22 Feb 2023 14:17:07 -0800 Subject: [PATCH] Support sso metrics & traces schema (#1427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * removing add sample data test (#668) Signed-off-by: Shenoy Pratik * Fix change availability bug (#667) Signed-off-by: Eugene Lee * Fix test to check for empty event analytics (#669) Signed-off-by: Eugene Lee * Add release notes for 2.0.0-rc1 (#674) Signed-off-by: Joshua Li * remove candlestick from visualizations (#690) Signed-off-by: Mrunal Zambre * [OSD][Tests] add test subject to app title for app analytics (#686) * [OSD][Tests] add test subject to app title for app analytics Using a test subject we can find the specific element instead of trying to search the DOM for the class and hope the class is the right class that contains the element we are looking for. We can search the dom for this specific test subject and actually make the test runner wait until this test subject exists before executing the tests. Issue related: https://github.com/opensearch-project/observability/issues/679 Signed-off-by: Kawika Avilla * update one example for cypress tests Signed-off-by: Kawika Avilla * Support integTestRemote with security enabled endpoint (#699) Signed-off-by: Joshua Li * Add data test subj to app analytics (#704) Signed-off-by: Eugene Lee * integrate job-scheduler into observability (#609) Signed-off-by: Zhongnan Su * Add availability entry points (#731) Signed-off-by: Eugene Lee * Update availabilityVizId if visualization is removed from panel (#732) Signed-off-by: Eugene Lee * Remove rc1 reference (#730) Signed-off-by: Eugene Lee * Issue fix not a function error (#739) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * bug fixes Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Release notes 2.0.0.0 (#757) Signed-off-by: vamsi-amazon * Add availability help flyout (#734) Signed-off-by: Eugene Lee * Make common delete modal for components (#766) Signed-off-by: Eugene Lee * Sync app and app list types (#763) Signed-off-by: Eugene Lee * [WIP]: Cypress automation for Trace analytics dashboard application (#775) * Added cypress test cases for tooltip and search engine on Trace dashboard Signed-off-by: Pratibha Pandey * Added test cases for filters Signed-off-by: Pratibha Pandey * Added cypress test cases for tooltip and search engine on Trace dashboard Signed-off-by: Pratibha Pandey * Added test cases for filters Signed-off-by: Pratibha Pandey * Added test cases for Service page in Trace analytics Signed-off-by: Pratibha Pandey * Added Cypress test cases for trace analytics services spans table Signed-off-by: Deepak Nevde * Cypress test case for Traces Signed-off-by: Nidhi Singhai * Cypress test case for Traces Updated Signed-off-by: Nidhi Singhai * Worked on review comments Signed-off-by: Pratibha Pandey Co-authored-by: Deepak Nevde Co-authored-by: Nidhi Singhai * Feature/error toast on invalid valueoption selection 666 (#736) * rendered default axes selected and added error toasts on Save and Apply click if invalid value option selected Signed-off-by: rinku-kumar-psl * Cypress changes for error toasts on invalid value options selected Signed-off-by: rinku-kumar-psl * added constant VIZ_CONTAIN_XY_AXIS for x, y value axis Signed-off-by: rinku-kumar-psl * [Feature]: Treemap chart support in Event Analytics (#693) * Initial commit for treemap visualization Signed-off-by: Mrunal Zambre * changes to labelField, layout and config Signed-off-by: Mrunal Zambre * reverted changes of layoutConfig Signed-off-by: Mrunal Zambre * Cypress TestCase for TreeMap Signed-off-by: Nidhi Singhai * added new line Signed-off-by: Mrunal Zambre * updated test cases Signed-off-by: Mrunal Zambre * reverted snapshots Signed-off-by: Mrunal Zambre * implemented treemap config options Signed-off-by: Mrunal Zambre * added multicolored theme option Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * Updated test scripts for multicolored section Signed-off-by: Pratibha Pandey * Fixed default selection for treemap Signed-off-by: Mrunal Zambre Co-authored-by: Nidhi Singhai Co-authored-by: Pratibha Pandey * Uses custom plugin to publish zips to maven (#786) Signed-off-by: Joshua Li * Cypress automation for Notebooks application (#809) * Added test cases for Notebooks application Signed-off-by: Pratibha Pandey * Added test cases for empty state of Notebooks table Signed-off-by: Pratibha Pandey * Feature/Pie chart legend, chart style, color theme and cypress test cases for same. (#776) * pie chart legends, chart color contrast and cypress test cases Signed-off-by: Deepak Nevde * Added color code in constants Signed-off-by: Deepak Nevde * Snapshots updated Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * Review comment addressed Signed-off-by: Deepak Nevde * color variable changes Signed-off-by: Deepak Nevde * [Feature]: Heatmap- Color theme implementation in config panel (#778) * Implementation of color theme for heatmap Signed-off-by: ruchika-narang * refactoring code Signed-off-by: ruchika-narang * HeatMap Cypress TestCase Signed-off-by: Nidhi Singhai * Cypress TestCase for HeatMap Signed-off-by: Nidhi Singhai * Update Done according to Comment Signed-off-by: Nidhi Singhai * Refactored code Signed-off-by: ruchika-narang * Updated snapshot test case Signed-off-by: ruchika-narang * Fixed toast implementation and no result found for heatmap Signed-off-by: ruchika-narang * Undefined checks for value options Signed-off-by: ruchika-narang Co-authored-by: Nidhi Singhai * [Enhancement]: Pie Config Panel features v1 (#816) * updated dimensions and metrics UI for pie chart Signed-off-by: Mrunal Zambre * updated imports Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * [Enhancement]: TreeMap Config Panel features v1 (#814) * added support for multiple parents in treemap Signed-off-by: Mrunal Zambre * minor type and position fixes Signed-off-by: Mrunal Zambre * added default values for color pickers Signed-off-by: Mrunal Zambre * resolved review comments Signed-off-by: Mrunal Zambre * TreeMap Enhancement TestCases Signed-off-by: Nidhi Singhai * TreeMap Enhancement TestCases Signed-off-by: Nidhi Singhai * TreeMap Enhancement TestCases Updated Signed-off-by: Nidhi Singhai * Update Done Signed-off-by: Nidhi Singhai * fixed default parent color pickers state Signed-off-by: Mrunal Zambre * fixed undefined check Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre Co-authored-by: Nidhi Singhai Co-authored-by: Subrat Pattnaik * Bar chart: Legend, Chart styles, and Color Theme features implementation on config panel - 697 (#780) * mode, orientation and rotate labels implementation under Chart style for Bar chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx * LineWidth and Fill-opacity changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * Bar Group Width, Bar Width changes and rotated label hiding issue resolved Signed-off-by: rinku-kumar-psl * corner cases handled for bar with and group Width and conditionally rendered rotate label UI Signed-off-by: rinku-kumar-psl * Bar chart legend and color theme changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx * Snapshots updated Signed-off-by: rinku-kumar-psl * empty line added Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx * review comment addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx * snapshot updated Signed-off-by: rinku-kumar-psl * PR review comment addressed. Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx * add button constant added Signed-off-by: rinku-kumar-psl * changed rgba to rgb in bar.tsx Signed-off-by: rinku-kumar-psl * snapshot updated Signed-off-by: rinku-kumar-psl * bump version to 2.1.0 and bump gradle to 7.4.2 (#817) Signed-off-by: Kavitha Conjeevaram Mohan * 2.1 release notes (#839) Signed-off-by: Kavitha Conjeevaram Mohan * change 2.1 version bump PR under maintenance (#841) * change version bump to maintenance Signed-off-by: Kavitha Conjeevaram Mohan * change version bump to maintenance Signed-off-by: Kavitha Conjeevaram Mohan * Sprint1 : combine PR for visualization from Sprint1 (#824) * graph style section UI schema Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts * changes for style mode and interpolation Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts * lineWidth integration for line mode Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * changes for Legend and Orientation in Line Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * point size and Bar Alignment changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * implemented fill opacity for line chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * changes for line width and fill opacity in bar mode and removed mode from chartOption Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/shared.ts * updated bar mode opacity in line chart Signed-off-by: rinku-kumar-psl * refactored the config chart style code Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * snapshot updated and code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * type added to new component Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * review comments addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx # Conflicts: # dashboards-observability/common/constants/shared.ts * cypress test case added and resolve button label wraping issue Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # dashboards-observability/.cypress/utils/event_constants.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js * multi matrices changes for Line Signed-off-by: rinku-kumar-psl * dimensions and metrics UI changes for time-series Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/explorer.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * made data config pannel collapsable and initial fields render Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx * snapshot updated and handled corner cases Signed-off-by: rinku-kumar-psl * code styling fixes and added TODO comment Signed-off-by: rinku-kumar-psl * table view: eui table replaced with ag-grid Signed-off-by: Ramneet Chopra * drag-drop issue fixed Signed-off-by: Ramneet Chopra * test case of data_table updated Signed-off-by: Ramneet Chopra * feedback comments resolved Signed-off-by: Ramneet Chopra * grid height issue:fixed Signed-off-by: Ramneet Chopra * column height, value getter for type double Signed-off-by: Ramneet Chopra * data_table elements moved to separate Signed-off-by: Ramneet Chopra * footer components Signed-off-by: Ramneet Chopra * cypress test cases for table view Signed-off-by: Ramneet Chopra * data config reviewed code added Signed-off-by: Deepak Nevde * Text correction Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * enhancement for heatmap with new UI Signed-off-by: Shankha Das * line chart test cases Signed-off-by: Shankha Das * console logs removed Signed-off-by: Shankha Das * updated value options ui for treemap Signed-off-by: Mrunal Zambre * removed console Signed-off-by: Mrunal Zambre * sprint1-visualization-fixes. Signed-off-by: abasatwar * initialize default params for DimensonComponent and formatted the codes Signed-off-by: rinku-kumar-psl * code review changes done Signed-off-by: rinku-kumar-psl * added empty line at end. Signed-off-by: abasatwar Co-authored-by: rinku-kumar-psl Co-authored-by: Ramneet Chopra Co-authored-by: Deepak Nevde Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre * Bump moment from 2.29.2 to 2.29.4 in /dashboards-observability (#845) Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4) --- updated-dependencies: - dependency-name: moment dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Sprint2 (#47) (#868) * graph style section UI schema Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts * changes for style mode and interpolation Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts * lineWidth integration for line mode Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * changes for Legend and Orientation in Line Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * point size and Bar Alignment changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * implemented fill opacity for line chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * changes for line width and fill opacity in bar mode and removed mode from chartOption Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/shared.ts * updated bar mode opacity in line chart Signed-off-by: rinku-kumar-psl * refactored the config chart style code Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * snapshot updated and code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * type added to new component Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * review comments addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx # Conflicts: # dashboards-observability/common/constants/shared.ts * cypress test case added and resolve button label wraping issue Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # dashboards-observability/.cypress/utils/event_constants.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js * multi matrices changes for Line Signed-off-by: rinku-kumar-psl * dimensions and metrics UI changes for time-series Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/explorer.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * made data config pannel collapsable and initial fields render Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx * snapshot updated and handled corner cases Signed-off-by: rinku-kumar-psl * code styling fixes and added TODO comment Signed-off-by: rinku-kumar-psl * sequence change for dimensions and metrics Signed-off-by: Deepak Nevde * Sprint1 (#14) * graph style section UI schema Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts * changes for style mode and interpolation Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts * lineWidth integration for line mode Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * changes for Legend and Orientation in Line Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * point size and Bar Alignment changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * implemented fill opacity for line chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * changes for line width and fill opacity in bar mode and removed mode from chartOption Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/shared.ts * updated bar mode opacity in line chart Signed-off-by: rinku-kumar-psl * refactored the config chart style code Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * snapshot updated and code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * type added to new component Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * review comments addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx # Conflicts: # dashboards-observability/common/constants/shared.ts * cypress test case added and resolve button label wraping issue Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # dashboards-observability/.cypress/utils/event_constants.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js * multi matrices changes for Line Signed-off-by: rinku-kumar-psl * dimensions and metrics UI changes for time-series Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/explorer.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * made data config pannel collapsable and initial fields render Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx * snapshot updated and handled corner cases Signed-off-by: rinku-kumar-psl * code styling fixes and added TODO comment Signed-off-by: rinku-kumar-psl * data config reviewed code added Signed-off-by: Deepak Nevde * Text correction Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * table view: eui table replaced with ag-grid Signed-off-by: Ramneet Chopra * drag-drop issue fixed Signed-off-by: Ramneet Chopra * test case of data_table updated Signed-off-by: Ramneet Chopra * feedback comments resolved Signed-off-by: Ramneet Chopra * grid height issue:fixed Signed-off-by: Ramneet Chopra * column height, value getter for type double Signed-off-by: Ramneet Chopra * data_table elements moved to separate Signed-off-by: Ramneet Chopra * footer components Signed-off-by: Ramneet Chopra * cypress test cases for table view Signed-off-by: Ramneet Chopra * enhancement for heatmap with new UI Signed-off-by: Shankha Das * line chart test cases Signed-off-by: Shankha Das * console logs removed Signed-off-by: Shankha Das * updated value options ui for treemap Signed-off-by: Mrunal Zambre * removed console Signed-off-by: Mrunal Zambre * Fixes of sprint1 for new ui implementation (#12) Signed-off-by: ruchika-narang Co-authored-by: rinku-kumar-psl Co-authored-by: Deepak Nevde Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> * Latest code added Signed-off-by: Deepak Nevde * Collapsapable button position change to top Signed-off-by: Deepak Nevde * table view: eui table replaced with ag-grid Signed-off-by: Ramneet Chopra * drag-drop issue fixed Signed-off-by: Ramneet Chopra * test case of data_table updated Signed-off-by: Ramneet Chopra * feedback comments resolved Signed-off-by: Ramneet Chopra * grid height issue:fixed Signed-off-by: Ramneet Chopra * column height, value getter for type double Signed-off-by: Ramneet Chopra * data_table elements moved to separate Signed-off-by: Ramneet Chopra * footer components Signed-off-by: Ramneet Chopra * cypress test cases for table view Signed-off-by: Ramneet Chopra * data config reviewed code added Signed-off-by: Deepak Nevde * Text correction Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * enhancement for heatmap with new UI Signed-off-by: Shankha Das * line chart test cases Signed-off-by: Shankha Das * console logs removed Signed-off-by: Shankha Das * updated value options ui for treemap Signed-off-by: Mrunal Zambre * removed console Signed-off-by: Mrunal Zambre * sprint1-visualization-fixes. Signed-off-by: abasatwar * added colorscale config options for treemap Signed-off-by: Mrunal Zambre * code review comment resolved Signed-off-by: Deepak Nevde * added config option to sort treemap sectors Signed-off-by: Mrunal Zambre * changes to resctct duplicte options Signed-off-by: rinku-kumar-psl * Updated and Added test scripts for Treemap chart along with data config and worked on reassembling the event_constants.js file Signed-off-by: Pratibha Pandey * Removed unwanted code Signed-off-by: Pratibha Pandey * implementation of histogram with new UI Signed-off-by: ruchika-narang * gauge chart added Signed-off-by: Ramneet Chopra * Pie chart enhancement, multi labels change Signed-off-by: Deepak Nevde * threshold text fix Signed-off-by: Ramneet Chopra * cypress test cases added Signed-off-by: Ramneet Chopra * Code review comment resolved Signed-off-by: Deepak Nevde * reset fixed, unused imports removed, PR checks fixed Signed-off-by: Ramneet Chopra * single timestamp dimension, no data dsiplay, label rotate, label/legend size Signed-off-by: Ramneet Chopra * layout fixed for primary y axis Signed-off-by: Ramneet Chopra * change of screen size of no data found and visualization Signed-off-by: Shankha Das * changes for restriction of duplicate fields on Data Config and only numeric field selection to metrics Signed-off-by: rinku-kumar-psl * line label replaced with time series Signed-off-by: Ramneet Chopra * snapshot tests Signed-off-by: Ramneet Chopra * Removed unwanted spaces Signed-off-by: Pratibha Pandey * initialize default params for DimensonComponent and formatted the codes Signed-off-by: rinku-kumar-psl * pr review feedback Signed-off-by: Ramneet Chopra * updated preview functionality for charts Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * Worked on review comments Signed-off-by: Pratibha Pandey * changed variable names Signed-off-by: Mrunal Zambre * code review changes done Signed-off-by: rinku-kumar-psl * added empty line at end. Signed-off-by: abasatwar * updated variable names Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * Added pie chart test cases Signed-off-by: Pratibha Pandey * updated snapshots Signed-off-by: ruchika-narang * Removed consoles Signed-off-by: ruchika-narang * Worked on conflicts Signed-off-by: Pratibha Pandey * color selector added Signed-off-by: Ramneet Chopra * updated snapshots Signed-off-by: ruchika-narang * UI updated as recommended Signed-off-by: Shankha Das * Added legend to heatmap Signed-off-by: ruchika-narang * data_config_panel_item timeseries code removed Signed-off-by: Ramneet Chopra * bar chart with multiple dimension and metrics, timestamp Signed-off-by: abasatwar * limit no. of gauge option added Signed-off-by: Ramneet Chopra * threshold limit added, gauge default parameters moved to constants/explorer Signed-off-by: Ramneet Chopra * legend placement added Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * snapshot updated Signed-off-by: abasatwar * snapshot updated Signed-off-by: abasatwar * Resolving issues after removal of preview functionality Signed-off-by: ruchika-narang * updated snapshots Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * changes for default timestamp data for time-series and corner cases Signed-off-by: rinku-kumar-psl * code review comment addressed Signed-off-by: rinku-kumar-psl * pr feedback Signed-off-by: Ramneet Chopra * dimensions, metrics length checks refined Signed-off-by: Ramneet Chopra * updated as per review comments Signed-off-by: abasatwar * fixing of data config corner cases Signed-off-by: rinku-kumar-psl * snapshot updated Signed-off-by: abasatwar * pr feedback Signed-off-by: Ramneet Chopra Co-authored-by: rinku-kumar-psl Co-authored-by: Deepak Nevde Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> Co-authored-by: Pratibha Pandey Co-authored-by: ruchika-narang Co-authored-by: Shankha Das Co-authored-by: rinku-kumar-psl Co-authored-by: Deepak Nevde Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> Co-authored-by: Pratibha Pandey Co-authored-by: ruchika-narang Co-authored-by: Shankha Das * Staging for version increment automation (#848) * Version increment automation Signed-off-by: pgodithi * Version increment automation Signed-off-by: pgodithi * Version increment automation: task rename updateVersion Signed-off-by: pgodithi * Release Notes for 2.2.0 (#920) Signed-off-by: vamsi-amazon * Sprint2 code refactoring and warning minimization (#904) * changes to remove for unique key warning on Dom and code refactoring sprint2 Signed-off-by: rinku-kumar-psl * snapshot updated Signed-off-by: rinku-kumar-psl * no_results.test.tsx snapshot updated Signed-off-by: rinku-kumar-psl * added empty line at the end of the file Signed-off-by: rinku-kumar-psl * Bump to 2.2.0 (#918) (#928) * Bump to 2.2.0 Signed-off-by: vamsi-amazon * Update snapshots Signed-off-by: Joshua Li Co-authored-by: Joshua Li (cherry picked from commit da9e9c013e13e03afd09d324e06e025dbb207f0c) Co-authored-by: vamsi-amazon * Sprint3 alpha (#64) (#931) * Sprint3 alpha (#64) Signed-off-by: abasatwar * issues resolved and snapshots updated Signed-off-by: Shankha Das * 2 snapshots updated Signed-off-by: Shankha Das Signed-off-by: abasatwar Signed-off-by: Shankha Das Co-authored-by: Shankha Das * [ENHANCEMENT]: Movement of temporary visualization panel data into userconfig (#929) * Worked on movement of data to userConfigs Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Updated snapshots for failing checks Signed-off-by: ruchika-narang * resolved PR comments Signed-off-by: Shankha Das * visType added Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: Shankha Das * cypress test case for horizontal bar (#935) Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * build error resolve (#923) Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * [BUG] : Dimensions getting removed when no timeseries field is present (#944) * Fix for app crash and dimension disaapearing Signed-off-by: ruchika-narang * optimized the code and updated snapshots Signed-off-by: Shankha Das * resolved PR comments Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: Shankha Das * cypress test case for scatter chart (#930) Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * Bug/logs-view-data-config: Added Columns in Data Configuration for Logs View (#955) * Fix for app crash and dimension disaapearing Signed-off-by: ruchika-narang * optimized the code and updated snapshots Signed-off-by: Shankha Das * resolved PR comments Signed-off-by: Shankha Das * resolved data configuration bug for logs view Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: ruchika-narang * Feature/tooltip-section: Added tooltip options for various charts (#952) * Fix for app crash and dimension disaapearing Signed-off-by: ruchika-narang * optimized the code and updated snapshots Signed-off-by: Shankha Das * resolved PR comments Signed-off-by: Shankha Das * added tooltip options Signed-off-by: Shankha Das * removed log Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: ruchika-narang * resolved color theme issue (#960) Signed-off-by: Shankha Das Signed-off-by: Shankha Das * Renamed data panel to style (#964) Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * Query Manager (#915) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * query manager Signed-off-by: Eric Wei * removed aggregations from dimensions Signed-off-by: Eric Wei * qm improvements Signed-off-by: Eric Wei * types/code cleanups/error corrections Signed-off-by: Eric Wei * fixed a undefined issue Signed-off-by: Eric Wei * qm fixes for query builder Signed-off-by: Eric Wei * viz timestamp selector Signed-off-by: Eric Wei * use postinstall for antlr output files Signed-off-by: Eric Wei * query building fixes Signed-off-by: Eric Wei * updated snapshots Signed-off-by: Eric Wei * remove output files Signed-off-by: Eric Wei * cherry-pick from integration branch Signed-off-by: Eric Wei * explicitly remove generated files Signed-off-by: Eric Wei Signed-off-by: Eugene Lee Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Query manager integration (#987) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * query manager Signed-off-by: Eric Wei * removed aggregations from dimensions Signed-off-by: Eric Wei * qm improvements Signed-off-by: Eric Wei * types/code cleanups/error corrections Signed-off-by: Eric Wei * qm fixes for query builder Signed-off-by: Eric Wei * viz timestamp selector Signed-off-by: Eric Wei * query manager integration with bar step 1 Signed-off-by: Eric Wei * span fix Signed-off-by: Eric Wei * use postinstall for antlr output files Signed-off-by: Eric Wei * query building fix Signed-off-by: Eric Wei * updated snapshots Signed-off-by: Eric Wei * fixed file not found issue Signed-off-by: Eric Wei * remove output files Signed-off-by: Eric Wei Signed-off-by: Eugene Lee Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Bug/color-theme-options: Resolved color theme issue #960 (#971) * Resolved to show only metrics in the dropdown instead of all the fields Signed-off-by: ruchika-narang * Removed unncessary import Signed-off-by: ruchika-narang * Updated snapshots after rebasing with main Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * cypress box plot (#983) * cypress box plot Signed-off-by: nidhisinghai * cypress box plot new Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * fix: reset fontSize on click of reset (#986) Signed-off-by: SivaprasadAluri Signed-off-by: SivaprasadAluri * Cypress automation for Logs view (#995) * Added cypress scripts for Logs view Signed-off-by: Pratibha Pandey * Added screenshots files Signed-off-by: Pratibha Pandey * Added snapshots files Signed-off-by: Pratibha Pandey Signed-off-by: Pratibha Pandey * release notes for 2.3.0 (#1003) Signed-off-by: Eric Wei Signed-off-by: Eric Wei * Resolving conflicts after merge of antlr code (#1021) * Resolved initial render of bar chart Signed-off-by: ruchika-narang * Made the charts workable after merging of antlr code to main Signed-off-by: ruchika-narang * Changes of condition for userconfigs Signed-off-by: ruchika-narang * Worked on line chart, treemap with the new antlr code Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * tooltip for multiple traces: fixed (#1019) Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * Cypress automation for Pie chart (#1017) * Added cypress scripts for Logs view Signed-off-by: Pratibha Pandey * Added screenshots files Signed-off-by: Pratibha Pandey * Added snapshots files Signed-off-by: Pratibha Pandey * Added Pie chart file and cypress test cases Signed-off-by: Pratibha Pandey * Small name change Signed-off-by: Pratibha Pandey * Added pie chart test cases Signed-off-by: Pratibha Pandey * Added snapshots files Signed-off-by: Pratibha Pandey Signed-off-by: Pratibha Pandey * fix#921-README-forum-link-observability (#999) Signed-off-by: cwillum Signed-off-by: cwillum * Update developer guide (#961) * Update developer guide Signed-off-by: Joshua Li * Update wording Signed-off-by: Joshua Li Signed-off-by: Joshua Li * Cypress Automation for Stats Chart (#1016) * Added new branch code for cypress stats chart Signed-off-by: Naman Chaturvedi * Added screenshots files Signed-off-by: Naman Chaturvedi Signed-off-by: Naman Chaturvedi * Jest test cases (#985) * gauge chart test case added, event-anlytics utils test case added Signed-off-by: Ramneet Chopra * build error resolve: updated snapshots Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * [Bug]: Date Histogram 2 way sync issue fix (#1033) * Date-histogram 2 way sync issue fixed Signed-off-by: Dipra Aich * Test run snapshot update changes Signed-off-by: Dipra Aich Signed-off-by: Dipra Aich * [Feature]: Heatmap 2way sync (#1031) * Heatmap doesnt render if more than 1 metric or 2 dimensions are added Signed-off-by: Dipra Aich * Test cases resolution Signed-off-by: Dipra Aich * Eliminated unnecessary commented code Signed-off-by: Dipra Aich Signed-off-by: Dipra Aich * fixed backspace crashing UI issue (#1034) Signed-off-by: Vishal Kushwah Signed-off-by: Vishal Kushwah Co-authored-by: Vishal Kushwah * [Feature]: Timeseries/Scatter 2 way sync (#1030) * Fixed 2 way sync issues for line Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Removed extra line Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * Move qm to plugins #1023 (#1036) * move qm: in progress Signed-off-by: Ramneet Chopra * qm instances prop adedd + yarn test Signed-off-by: Ramneet Chopra * main rebase Signed-off-by: Ramneet Chopra * explorereFields type fixed Signed-off-by: Ramneet Chopra * querymanager types added, renamed to qm Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * Pie chart 2way sync (#1029) * mode bug fixed code: added, 2 way changes testing: in progress Signed-off-by: Ramneet Chopra * pie two sync done Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * pr feedback Signed-off-by: Ramneet Chopra * spaces added in between lines Signed-off-by: Ramneet Chopra * usememo removed from xlables Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * [BUG]: Revert code for treemap and histogram. (#1037) * Revert code for histogram and treemap after antlr merge because of crashes in app Signed-off-by: ruchika-narang * Fixes after rebasing with main and test cases failing Signed-off-by: ruchika-narang * Removed commented code Signed-off-by: ruchika-narang * Working on review comments, renaming metrics to series Signed-off-by: ruchika-narang * Removing extra import after rebasing main Signed-off-by: ruchika-narang * Working on review comments Signed-off-by: ruchika-narang * Replacing series and dimension with dynamic naming Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Fixed failing test case issue Signed-off-by: ruchika-narang * Resolving review comment Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * Match core wizard design (#1044) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * query manager Signed-off-by: Eric Wei * removed aggregations from dimensions Signed-off-by: Eric Wei * qm improvements Signed-off-by: Eric Wei * types/code cleanups/error corrections Signed-off-by: Eric Wei * qm fixes for query builder Signed-off-by: Eric Wei * viz timestamp selector Signed-off-by: Eric Wei * query manager integration with bar step 1 Signed-off-by: Eric Wei * span fix Signed-off-by: Eric Wei * use postinstall for antlr output files Signed-off-by: Eric Wei * query building fix Signed-off-by: Eric Wei * updated snapshots Signed-off-by: Eric Wei * fixed file not found issue Signed-off-by: Eric Wei * remove output files Signed-off-by: Eric Wei * removed extra padding Signed-off-by: Eric Wei * changed field button size to m Signed-off-by: Eric Wei * adjusted styling to align with wizard ux design Signed-off-by: Eric Wei * added according for field sections Signed-off-by: Eric Wei * remove reset Signed-off-by: Eric Wei * add scrolling and followed core team's design Signed-off-by: Eric Wei * field selector title Signed-off-by: Eric Wei * synced with main Signed-off-by: Eric Wei * field selector fix, viz selector restyling Signed-off-by: Eric Wei * path issue Signed-off-by: Eric Wei * event sidebar, one renaming Signed-off-by: Eric Wei * run tests and update snapshots Signed-off-by: Eric Wei * code clean up Signed-off-by: Eric Wei Signed-off-by: Eugene Lee Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Fixed crashes when user deletes Aggregation field (#1047) * Fixed crashes when user deletes Aggregation field Signed-off-by: Koustubh Karmalkar * Fixed crashes on treemap when dimension not available Signed-off-by: Koustubh Karmalkar Signed-off-by: Koustubh Karmalkar * [FEATURE]: Breakdown added in Bar Chart (#1051) * Uncommented code for breakdown Signed-off-by: ruchika-narang * Fixed constant issue after rebasing with main Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * Fix scroll issue for fields (#1050) Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * stats: auto chart added (#913) * auto chart type added Signed-off-by: Ramneet Chopra * pr feedback Signed-off-by: Ramneet Chopra * lint Signed-off-by: Ramneet Chopra * threshold label fixed, save button error fixed Signed-off-by: Ramneet Chopra * label/value annotations: in progress Signed-off-by: Ramneet Chopra * metric unit text input added, precision value added Signed-off-by: Ramneet Chopra * thresholds auto chart type: done, testing: in progress Signed-off-by: Ramneet Chopra * thresholds label color fixed Signed-off-by: Ramneet Chopra * testing + fixing, code optimization Signed-off-by: Ramneet Chopra * base threshold added, bugs fixing Signed-off-by: Ramneet Chopra * base threshold delete disabled Signed-off-by: Ramneet Chopra * pr feedback: in progress Signed-off-by: Ramneet Chopra * feedback: in progress Signed-off-by: Ramneet Chopra * pr feedback: code optimization Signed-off-by: Ramneet Chopra * code optimization Signed-off-by: Ramneet Chopra * intend Signed-off-by: Ramneet Chopra * metric value last index bug fixed Signed-off-by: Ramneet Chopra * feedback Signed-off-by: Ramneet Chopra * intend Signed-off-by: Ramneet Chopra * test case added for stat Signed-off-by: Ramneet Chopra * extend yaxis modified, test case fixed, reused axis calculations Signed-off-by: Ramneet Chopra * reabse with main, style variables optimized, tooltip added Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * eslint, test case fixed Signed-off-by: Ramneet Chopra * getTextCoordinate upadted Signed-off-by: Ramneet Chopra * checks within threshold loops updated Signed-off-by: Ramneet Chopra * stats modified for 2-way sync Signed-off-by: Ramneet Chopra * pr feedback, text input reset fixed Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * alias handling for metric label Signed-off-by: Ramneet Chopra * input fields useffect fixed Signed-off-by: Ramneet Chopra * naming conventions updated Signed-off-by: Ramneet Chopra * alias replaced with CUSTOM_LABEL Signed-off-by: Ramneet Chopra * naming conventions updated Signed-off-by: Ramneet Chopra * snapshots upadted Signed-off-by: Ramneet Chopra * cypress test cases upadted Signed-off-by: Ramneet Chopra * rebased + snapshots updated Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * table view with two way sync (#1022) * table view with two way sync Signed-off-by: abasatwar * reverting test cases Signed-off-by: abasatwar * added check for key with dot. Signed-off-by: abasatwar * removed unwanted code. Signed-off-by: abasatwar * Updated snapshots Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Resolved comments Signed-off-by: ruchika-narang * Updated snapshots and added table view to enabled vis types Signed-off-by: ruchika-narang Signed-off-by: abasatwar Signed-off-by: ruchika-narang Co-authored-by: ruchika-narang * [Bug]: Data Configuration panel for Logs view remains disabled. (#1057) * Working on review comments Signed-off-by: ruchika-narang * Replacing series and dimension with dynamic naming Signed-off-by: ruchika-narang * Revert code for histogram and treemap after antlr merge because of crashes in app Signed-off-by: ruchika-narang * Working on review comments, renaming metrics to series Signed-off-by: ruchika-narang * Removing extra import after rebasing main Signed-off-by: ruchika-narang * Working on review comments Signed-off-by: ruchika-narang * Replacing series and dimension with dynamic naming Signed-off-by: ruchika-narang * Fixed logs view visualizations issues. Signed-off-by: Saisanju Sreevalsakumar * Resolved review comments for log view fixes 1. Signed-off-by: Saisanju Sreevalsakumar Signed-off-by: ruchika-narang Signed-off-by: Saisanju Sreevalsakumar Co-authored-by: ruchika-narang * update jackson to 2.13.4 (#1062) Signed-off-by: Kavitha Conjeevaram Mohan Signed-off-by: Kavitha Conjeevaram Mohan * [FEATURE]: Updated data configuration UI and Two way sync for Custom Label (#1046) * Data Configurations Panel UI implementation Signed-off-by: harshada.lingayat * Data Configurations Panel UI implementation Signed-off-by: harshada.lingayat * Review comments resolved Signed-off-by: harshada.lingayat * Made code compatible with PR changes Signed-off-by: harshada.lingayat * Custom Label two way sync implementation Signed-off-by: harshada.lingayat * Minor fix Signed-off-by: harshada.lingayat * internal review comments resolved Signed-off-by: harshada.lingayat * Review comments resolved Signed-off-by: harshada.lingayat * Comments resolved Signed-off-by: harshada.lingayat * Added tooltip in aggregation Signed-off-by: harshada.lingayat Signed-off-by: harshada.lingayat * Gauge 2way sync (#1048) * first Signed-off-by: Abhay Pandey * number of gauge Signed-off-by: Abhay Pandey * changes after rebase Signed-off-by: Abhay Pandey * rebase Signed-off-by: Abhay Pandey * number of gauges fixed in this commit Signed-off-by: Abhay Pandey * removed the duplicate constant Signed-off-by: Abhay Pandey Signed-off-by: Abhay Pandey * Bug Fixed: Visualization height panel issue for all charts (#1075) * Fixed [BUG]: Visualization height panel issue for all charts Signed-off-by: Koustubh Karmalkar * Updated snapshots Signed-off-by: Koustubh Karmalkar * Reverted snapshots Signed-off-by: Koustubh Karmalkar * Reverted no_results.test.tsx.snap Signed-off-by: Koustubh Karmalkar * Reverted no_results.test.tsx.snap Signed-off-by: Koustubh Karmalkar Signed-off-by: Koustubh Karmalkar * Updated breakdowns with updated UI of configuration panel (#1077) Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * [Feature] - stats horizontal chart (#1073) * horizontal chart code integrated Signed-off-by: Ramneet Chopra * shape varibale updated Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * chore: fix line reference (#1078) Signed-off-by: Derek Ho Signed-off-by: Derek Ho * [FEATURE] : Horizontal bar chart 2way sync (#1094) * Implemented horizontal bar vizualization + 2way sync Signed-off-by: Dipra Aich * Updated snapshots for test cases Signed-off-by: Dipra Aich * adjustments for rendering horiz_bars Signed-off-by: Dipra Aich * implemented commented changes for enhancements Signed-off-by: Dipra Aich * horiz_bar commented changes implemented Signed-off-by: Dipra Aich Signed-off-by: Dipra Aich * [BUG]: If all Series and Dimensions are removed from a query and Refresh button is hit, the app breaks. (#1110) * fix for blank stats query breaking the app Signed-off-by: Dipra Aich * Eliminated isRefresh from fetchData Signed-off-by: Dipra Aich * fixed blank stats issue for gauge Signed-off-by: Dipra Aich * Removed span initialization for config Signed-off-by: Dipra Aich Signed-off-by: Dipra Aich * [Bug] different default values fixed (#1111) * default values updated in bar chart Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * unsed lines of code removed Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * fixed selected visualization name (#1112) Signed-off-by: Vishal Kushwah Signed-off-by: Vishal Kushwah Co-authored-by: Vishal Kushwah * Time series/scatter bugs fixed (#1113) * Fixed threshold crashes and color theme not applying on bar, line, scatter and histogram Signed-off-by: ruchika-narang * bugs fixed testing: in progress Signed-off-by: Ramneet Chopra * testing + fixing done Signed-off-by: Ramneet Chopra * bar crash fixed Signed-off-by: Ramneet Chopra * histogrm color theme options fixed Signed-off-by: Ramneet Chopra * log removed Signed-off-by: Ramneet Chopra Signed-off-by: ruchika-narang Signed-off-by: Ramneet Chopra Co-authored-by: ruchika-narang * add group = org.opensearch.plugin (#1115) Signed-off-by: prudhvigodithi Signed-off-by: prudhvigodithi * [Bug] Distorted visualization title (#1119) * plot margin top increased, testing: in progress Signed-off-by: Ramneet Chopra * margin added for all visualizations Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * pie title moved to right side Signed-off-by: Ramneet Chopra * color theme extra space fixed Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * border color : fixed (#1120) Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * Bug/range slider issue (#1122) * range slide tootip and beyond range value bug Signed-off-by: Abhay Pandey * removed unwanted code Signed-off-by: Abhay Pandey * pr changes Signed-off-by: Abhay Pandey * removed unused code Signed-off-by: Abhay Pandey * snapshot updated Signed-off-by: Abhay Pandey Signed-off-by: Abhay Pandey * Destructured visMetaData and dataConfig Objects in all visualizations (#1106) * Bug:1058 destructure of visMetaData object Signed-off-by: Koustubh Karmalkar * Fixed charts no results found allignment issue Signed-off-by: Koustubh Karmalkar * Code optimization Signed-off-by: Koustubh Karmalkar * Destructured dataConfig object Signed-off-by: Koustubh Karmalkar * Bug:1058 destructure of visMetaData object Signed-off-by: Koustubh Karmalkar * Fixed charts no results found allignment issue Signed-off-by: Koustubh Karmalkar * Code optimization Signed-off-by: Koustubh Karmalkar * Destructured dataConfig object Signed-off-by: Koustubh Karmalkar * Code optimized for dataConfig destructuring Signed-off-by: Koustubh Karmalkar Signed-off-by: Koustubh Karmalkar * [Feature]: Move Date histogram to dimensions (#1146) * Move Date Histogram to dimensions Signed-off-by: harshada.lingayat * Bug fixes and minor changes Signed-off-by: harshada.lingayat Signed-off-by: harshada.lingayat * [Feature] Renamed stats as metrics (#1142) * Stats renamed to Metrics Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * Bug/chart selection scroll issue (#1152) * sidebar issue Signed-off-by: Abhay Pandey * added the exta line Signed-off-by: Abhay Pandey * after testing on different sizes of windows Signed-off-by: Abhay Pandey Signed-off-by: Abhay Pandey * fixed overlap text resize issue (#1151) Signed-off-by: Vishal Kushwah Signed-off-by: Vishal Kushwah Co-authored-by: Vishal Kushwah * feat: enable windows and macos builds (#1108) * fix: initial code to add windows support for opensearch-observability Signed-off-by: Derek Ho * add build for windows in dashboards-observability Signed-off-by: Derek Ho * change windows command and add windows build for UI modules Signed-off-by: Derek Ho * try gradlew bat for windows Signed-off-by: Derek Ho * try to exclude tests Signed-off-by: Derek Ho * fix jacoco Signed-off-by: Derek Ho * do for mac and change name Signed-off-by: Derek Ho * try to run the tests for windows and mac Signed-off-by: Derek Ho * try to add gitattributes file Signed-off-by: Derek Ho * add formatting rule Signed-off-by: Derek Ho * try to enable both Signed-off-by: Derek Ho * try to add git config to fix Signed-off-by: Derek Ho * autocrlf false for windwos and remove comments Signed-off-by: Derek Ho * comment out bwc tests, Signed-off-by: Derek Ho * add line Signed-off-by: Derek Ho * fix up using matrix and fix test Signed-off-by: Derek Ho Signed-off-by: Derek Ho * updated workflows and version to 3.0.0 (#905) * updated workflows and version to 3.0.0 Signed-off-by: Shenoy Pratik * update bwc tests to 2.4.0 Signed-off-by: Shenoy Pratik * update http library upstream changes Signed-off-by: Shenoy Pratik Signed-off-by: Shenoy Pratik * fix not a function issue (#1160) Signed-off-by: Eric Wei Signed-off-by: Eric Wei * [BUG] : Labels on y axis get truncated (#1169) * bug fix for Labels on y axis get truncated Signed-off-by: SivaprasadAluri * fixed the yAxis lable truncating issue Signed-off-by: SivaprasadAluri Signed-off-by: SivaprasadAluri * X-button Bug Fix (#1140) * X-button Bug Fix Signed-off-by: Anand6Kumar * moved constant to file Signed-off-by: Anand6Kumar Signed-off-by: Anand6Kumar * [BUG]: Unable to save Heatmap Visualization and Query (#1143) * Fixed bug for save query and visualizations Signed-off-by: ruchika-narang * updated snapshots Signed-off-by: ruchika-narang * Removed extra line of codes from bar Signed-off-by: ruchika-narang * Removed check for boolean and reverted dashboard json file Signed-off-by: ruchika-narang * Fixed line chart add dimension issue Signed-off-by: ruchika-narang * Fixed issue for stats Signed-off-by: ruchika-narang * Resolved comments Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * [Bug] performance improvement (#1176) * upadtechart rerenders fixing: in progress Signed-off-by: Ramneet Chopra * logs/comments removed Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * [BUG]: Fixed Vertical & Horizontal Bar visualization issues (#1156) * Fixed issue-1153 Signed-off-by: Koustubh Karmalkar * Fixed color theme issue of vertical bar chart Signed-off-by: Koustubh Karmalkar * Fixed horizontal bar style and tooltip issue Signed-off-by: Koustubh Karmalkar * Hide some visualization charts options Signed-off-by: Koustubh Karmalkar * Updated snap files Signed-off-by: Koustubh Karmalkar * Removed commented code Signed-off-by: Koustubh Karmalkar Signed-off-by: Koustubh Karmalkar * [BUG]: Visualizations not appearing in Operational Panels fixed (#1170) * fixed the bug for operational panel visulaization and app analytics Signed-off-by: SivaprasadAluri * updated the code as per review comments Signed-off-by: SivaprasadAluri * updated the test sanpshot Signed-off-by: SivaprasadAluri Signed-off-by: SivaprasadAluri * Change auto expand replicas to 0-2 (#1186) Signed-off-by: Joshua Li * Visualization breakdowns (#1201) * breakdown and related changes Signed-off-by: Eric Wei * minor code removals Signed-off-by: Eric Wei * data table fix Signed-off-by: Eric Wei Signed-off-by: Eric Wei * [BUG]: Fixed Consolidated UI issues (#1173) * Consolidated UI issues are fixed Signed-off-by: Amit-Nawale * Consolidated UI issues are fixed Signed-off-by: Amit-Nawale * Consolidated UI issues are fixed Signed-off-by: Amit-Nawale * Implemented commented changes Signed-off-by: Amit-Nawale Signed-off-by: Amit-Nawale * [Feature] Move series side config from data config panel to chart styles (#1199) * series side config moved to chart styles Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * minor fixes Signed-off-by: Ramneet Chopra * layout for multi y axis fixed Signed-off-by: Ramneet Chopra Signed-off-by: Ramneet Chopra * Persist redux state in browser (#1178) * persist redux state Signed-off-by: Eric Wei * switch to session storage Signed-off-by: Eric Wei Signed-off-by: Eric Wei * Release notes for 2.4.0 (#1259) Signed-off-by: Rupal Mahajan * Add Rupal, Derek, Lior as maintainers (#1245) Signed-off-by: Joshua Li * Add pjfitzgibbon to MAINTAINERS.md (#1270) Email evidence of approval : From: "Gurudatt, Shenoy Pratik" Subject: Re: Github Observability Membership Nomination Date: November 3, 2022 at 2:38:04 PM PDT To: "Mohan, Kavitha" , "Jadhav, Anirudha" , "Fitzgibbons, Peter" , "Li, Joshua" , "Wei, Eric" , "Cui, David" Hi all, I nominate Peter to be added as a maintainer to Observability repository. Thanks, Shenoy Pratik On 11/3/22, 2:36 PM, "Mohan, Kavitha" wrote: Hi everyone, I nominate Peter to be added as a maintainer to Observability repository. Cheers, Kavitha On 11/2/22, 1:45 PM, "Jadhav, Anirudha" wrote: +1 On 11/2/22, 1:28 PM, "Fitzgibbons, Peter" wrote: Hello All, I believe i need a nomination (reply-all) and 3 up-votes (reply-all). And hopefully no downvotes (!). I believe the instructions declare that someone (not-me?) needs to create the PR for nomination in 1 week. Thanks so much for your support. Kindest Regards, Peter Fitzgibbons - AWS OpenSearch Observability * [BACKPORT] Backport 2.x to main (#1304) * Fix change availability bug (#667) (#671) Signed-off-by: Eugene Lee (cherry picked from commit aaeadb0e95979032a812d197691300d26f908eb0) Co-authored-by: Eugene Lee * Add release notes for 2.0.0-rc1 (#674) (#675) Signed-off-by: Joshua Li (cherry picked from commit f0afa84dcb68be9ef096021da55de7b1c846ba93) Co-authored-by: Joshua Li * Support integTestRemote with security enabled endpoint (#699) (#703) Signed-off-by: Joshua Li (cherry picked from commit 9ebb7d266250fd902567f9f804c425d5a4f9774f) Co-authored-by: Joshua Li * Add data test subj to app analytics (#704) (#718) Signed-off-by: Eugene Lee * Remove rc1 reference (#730) (#737) Signed-off-by: Eugene Lee (cherry picked from commit 40dff8b09df8b6cfb57ecfeb00b6978fdacd9463) Co-authored-by: Eugene Lee * [Backport] app-analytics features and bug fixes for 2.0 release (#740) * Add availability entry points (#731) Signed-off-by: Eugene Lee * Update availabilityVizId if visualization is removed from panel (#732) Signed-off-by: Eugene Lee * Issue fix not a function error (#739) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * bug fixes Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * resolved conflicts Signed-off-by: Eric Wei Co-authored-by: Eugene Lee Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Release notes 2.0.0.0 (#757) (#758) Signed-off-by: vamsi-amazon (cherry picked from commit b23946d1d3df7efa37919d520ca45e41f0323478) Co-authored-by: vamsi-amazon <99925918+vamsi-amazon@users.noreply.github.com> * Incremented version to 2.0.1 (#785) Signed-off-by: Zelin Hao * Backport from main to 2.1 (#822) * Add availability help flyout (#734) Signed-off-by: Eugene Lee * Make common delete modal for components (#766) Signed-off-by: Eugene Lee * Sync app and app list types (#763) Signed-off-by: Eugene Lee * Uses custom plugin to publish zips to maven (#786) Signed-off-by: Joshua Li * backport main to 2.1 Signed-off-by: Kavitha Conjeevaram Mohan Co-authored-by: Eugene Lee Co-authored-by: Joshua Li * 2.1 release notes (#839) (#840) Signed-off-by: Kavitha Conjeevaram Mohan (cherry picked from commit bf81e3518ab7e024176a6a571ecb0d927d89ca30) Co-authored-by: Kavitha Conjeevaram Mohan * change 2.1 version bump PR under maintenance (#841) (#842) * change version bump to maintenance Signed-off-by: Kavitha Conjeevaram Mohan * change version bump to maintenance Signed-off-by: Kavitha Conjeevaram Mohan (cherry picked from commit 4bebc60f49f6f4be41e726ace5dbe76cb7a077b1) Co-authored-by: Kavitha Conjeevaram Mohan * Bump to 2.2.0 (#918) * Bump to 2.2.0 Signed-off-by: vamsi-amazon * Update snapshots Signed-off-by: Joshua Li Co-authored-by: Joshua Li * Release Notes for 2.2.0 (#920) (#922) Signed-off-by: vamsi-amazon (cherry picked from commit 77c460f90509d5c1bf36a3828b16e2a4958baeb3) Co-authored-by: vamsi-amazon * Staging for version increment automation (#848) (#939) * Version increment automation Signed-off-by: pgodithi * Version increment automation Signed-off-by: pgodithi * Version increment automation: task rename updateVersion Signed-off-by: pgodithi (cherry picked from commit b5c680278f35c2c3a570aa98a563603d59291f65) Signed-off-by: prudhvigodithi Signed-off-by: pgodithi Signed-off-by: prudhvigodithi Co-authored-by: Prudhvi Godithi * Increment version to 2.3.0-SNAPSHOT (#979) Signed-off-by: opensearch-ci-bot Signed-off-by: opensearch-ci-bot Co-authored-by: opensearch-ci-bot * release notes for 2.3.0 (#1003) (#1004) Signed-off-by: Eric Wei Signed-off-by: Eric Wei (cherry picked from commit 25bd43b9861d091589b5447235cb3d8ce548f694) Co-authored-by: Eric Wei * bump version to 2.4.0 (#1071) Signed-off-by: Shenoy Pratik Signed-off-by: Shenoy Pratik * update jackson to 2.13.4 (#1062) (#1064) Signed-off-by: Kavitha Conjeevaram Mohan Signed-off-by: Kavitha Conjeevaram Mohan (cherry picked from commit d92a94b46b4bcc2cdaa0fd5dcce5c6fa5d6305b0) Co-authored-by: Kavitha Conjeevaram Mohan * add group = org.opensearch.plugin (#1115) (#1126) Signed-off-by: prudhvigodithi Signed-off-by: prudhvigodithi (cherry picked from commit f2224993c64db4c2c7d5f0e333b2c0211eee1899) Co-authored-by: Prudhvi Godithi * Change auto expand replicas to 0-2 (#1186) (#1190) Signed-off-by: Joshua Li (cherry picked from commit e0a30525ec48f83d8441e23567f9bcb5817ebb90) Co-authored-by: Joshua Li * [2.x] Add log pattern table (#1187) (#1212) Signed-off-by: Joshua Li * Release notes for 2.4.0 (#1259) (#1262) Signed-off-by: Rupal Mahajan (cherry picked from commit eef1979aeb083b25809be2873c76e23f77a22581) Co-authored-by: Rupal Mahajan * [BACKPORT] Backport 2.4 commits to 2.x (#1277) * [2.4] Add log pattern table (#1187) (#1212) (#1215) Signed-off-by: Joshua Li (cherry picked from commit 5a90273be61effb65d8e6fe0cd11db8e60bdcce8) Co-authored-by: Joshua Li * [Backport 2.4] Merge main to 2.4 (#1217) * removing add sample data test (#668) Signed-off-by: Shenoy Pratik * Fix change availability bug (#667) Signed-off-by: Eugene Lee * Fix test to check for empty event analytics (#669) Signed-off-by: Eugene Lee * Add release notes for 2.0.0-rc1 (#674) Signed-off-by: Joshua Li * remove candlestick from visualizations (#690) Signed-off-by: Mrunal Zambre * [OSD][Tests] add test subject to app title for app analytics (#686) * [OSD][Tests] add test subject to app title for app analytics Using a test subject we can find the specific element instead of trying to search the DOM for the class and hope the class is the right class that contains the element we are looking for. We can search the dom for this specific test subject and actually make the test runner wait until this test subject exists before executing the tests. Issue related: https://github.com/opensearch-project/observability/issues/679 Signed-off-by: Kawika Avilla * update one example for cypress tests Signed-off-by: Kawika Avilla * Support integTestRemote with security enabled endpoint (#699) Signed-off-by: Joshua Li * Add data test subj to app analytics (#704) Signed-off-by: Eugene Lee * integrate job-scheduler into observability (#609) Signed-off-by: Zhongnan Su * Add availability entry points (#731) Signed-off-by: Eugene Lee * Update availabilityVizId if visualization is removed from panel (#732) Signed-off-by: Eugene Lee * Remove rc1 reference (#730) Signed-off-by: Eugene Lee * Issue fix not a function error (#739) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * bug fixes Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Release notes 2.0.0.0 (#757) Signed-off-by: vamsi-amazon * Add availability help flyout (#734) Signed-off-by: Eugene Lee * Make common delete modal for components (#766) Signed-off-by: Eugene Lee * Sync app and app list types (#763) Signed-off-by: Eugene Lee * [WIP]: Cypress automation for Trace analytics dashboard application (#775) * Added cypress test cases for tooltip and search engine on Trace dashboard Signed-off-by: Pratibha Pandey * Added test cases for filters Signed-off-by: Pratibha Pandey * Added cypress test cases for tooltip and search engine on Trace dashboard Signed-off-by: Pratibha Pandey * Added test cases for filters Signed-off-by: Pratibha Pandey * Added test cases for Service page in Trace analytics Signed-off-by: Pratibha Pandey * Added Cypress test cases for trace analytics services spans table Signed-off-by: Deepak Nevde * Cypress test case for Traces Signed-off-by: Nidhi Singhai * Cypress test case for Traces Updated Signed-off-by: Nidhi Singhai * Worked on review comments Signed-off-by: Pratibha Pandey Co-authored-by: Deepak Nevde Co-authored-by: Nidhi Singhai * Feature/error toast on invalid valueoption selection 666 (#736) * rendered default axes selected and added error toasts on Save and Apply click if invalid value option selected Signed-off-by: rinku-kumar-psl * Cypress changes for error toasts on invalid value options selected Signed-off-by: rinku-kumar-psl * added constant VIZ_CONTAIN_XY_AXIS for x, y value axis Signed-off-by: rinku-kumar-psl * [Feature]: Treemap chart support in Event Analytics (#693) * Initial commit for treemap visualization Signed-off-by: Mrunal Zambre * changes to labelField, layout and config Signed-off-by: Mrunal Zambre * reverted changes of layoutConfig Signed-off-by: Mrunal Zambre * Cypress TestCase for TreeMap Signed-off-by: Nidhi Singhai * added new line Signed-off-by: Mrunal Zambre * updated test cases Signed-off-by: Mrunal Zambre * reverted snapshots Signed-off-by: Mrunal Zambre * implemented treemap config options Signed-off-by: Mrunal Zambre * added multicolored theme option Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * Updated test scripts for multicolored section Signed-off-by: Pratibha Pandey * Fixed default selection for treemap Signed-off-by: Mrunal Zambre Co-authored-by: Nidhi Singhai Co-authored-by: Pratibha Pandey * Uses custom plugin to publish zips to maven (#786) Signed-off-by: Joshua Li * Cypress automation for Notebooks application (#809) * Added test cases for Notebooks application Signed-off-by: Pratibha Pandey * Added test cases for empty state of Notebooks table Signed-off-by: Pratibha Pandey * Feature/Pie chart legend, chart style, color theme and cypress test cases for same. (#776) * pie chart legends, chart color contrast and cypress test cases Signed-off-by: Deepak Nevde * Added color code in constants Signed-off-by: Deepak Nevde * Snapshots updated Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * Review comment addressed Signed-off-by: Deepak Nevde * color variable changes Signed-off-by: Deepak Nevde * [Feature]: Heatmap- Color theme implementation in config panel (#778) * Implementation of color theme for heatmap Signed-off-by: ruchika-narang * refactoring code Signed-off-by: ruchika-narang * HeatMap Cypress TestCase Signed-off-by: Nidhi Singhai * Cypress TestCase for HeatMap Signed-off-by: Nidhi Singhai * Update Done according to Comment Signed-off-by: Nidhi Singhai * Refactored code Signed-off-by: ruchika-narang * Updated snapshot test case Signed-off-by: ruchika-narang * Fixed toast implementation and no result found for heatmap Signed-off-by: ruchika-narang * Undefined checks for value options Signed-off-by: ruchika-narang Co-authored-by: Nidhi Singhai * [Enhancement]: Pie Config Panel features v1 (#816) * updated dimensions and metrics UI for pie chart Signed-off-by: Mrunal Zambre * updated imports Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * [Enhancement]: TreeMap Config Panel features v1 (#814) * added support for multiple parents in treemap Signed-off-by: Mrunal Zambre * minor type and position fixes Signed-off-by: Mrunal Zambre * added default values for color pickers Signed-off-by: Mrunal Zambre * resolved review comments Signed-off-by: Mrunal Zambre * TreeMap Enhancement TestCases Signed-off-by: Nidhi Singhai * TreeMap Enhancement TestCases Signed-off-by: Nidhi Singhai * TreeMap Enhancement TestCases Updated Signed-off-by: Nidhi Singhai * Update Done Signed-off-by: Nidhi Singhai * fixed default parent color pickers state Signed-off-by: Mrunal Zambre * fixed undefined check Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre Co-authored-by: Nidhi Singhai Co-authored-by: Subrat Pattnaik * Bar chart: Legend, Chart styles, and Color Theme features implementation on config panel - 697 (#780) * mode, orientation and rotate labels implementation under Chart style for Bar chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx * LineWidth and Fill-opacity changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * Bar Group Width, Bar Width changes and rotated label hiding issue resolved Signed-off-by: rinku-kumar-psl * corner cases handled for bar with and group Width and conditionally rendered rotate label UI Signed-off-by: rinku-kumar-psl * Bar chart legend and color theme changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx * Snapshots updated Signed-off-by: rinku-kumar-psl * empty line added Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx * review comment addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx * snapshot updated Signed-off-by: rinku-kumar-psl * PR review comment addressed. Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx * add button constant added Signed-off-by: rinku-kumar-psl * changed rgba to rgb in bar.tsx Signed-off-by: rinku-kumar-psl * snapshot updated Signed-off-by: rinku-kumar-psl * bump version to 2.1.0 and bump gradle to 7.4.2 (#817) Signed-off-by: Kavitha Conjeevaram Mohan * 2.1 release notes (#839) Signed-off-by: Kavitha Conjeevaram Mohan * change 2.1 version bump PR under maintenance (#841) * change version bump to maintenance Signed-off-by: Kavitha Conjeevaram Mohan * change version bump to maintenance Signed-off-by: Kavitha Conjeevaram Mohan * Sprint1 : combine PR for visualization from Sprint1 (#824) * graph style section UI schema Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts * changes for style mode and interpolation Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts * lineWidth integration for line mode Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * changes for Legend and Orientation in Line Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * point size and Bar Alignment changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * implemented fill opacity for line chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * changes for line width and fill opacity in bar mode and removed mode from chartOption Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/shared.ts * updated bar mode opacity in line chart Signed-off-by: rinku-kumar-psl * refactored the config chart style code Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * snapshot updated and code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * type added to new component Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * review comments addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx # Conflicts: # dashboards-observability/common/constants/shared.ts * cypress test case added and resolve button label wraping issue Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # dashboards-observability/.cypress/utils/event_constants.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js * multi matrices changes for Line Signed-off-by: rinku-kumar-psl * dimensions and metrics UI changes for time-series Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/explorer.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * made data config pannel collapsable and initial fields render Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx * snapshot updated and handled corner cases Signed-off-by: rinku-kumar-psl * code styling fixes and added TODO comment Signed-off-by: rinku-kumar-psl * table view: eui table replaced with ag-grid Signed-off-by: Ramneet Chopra * drag-drop issue fixed Signed-off-by: Ramneet Chopra * test case of data_table updated Signed-off-by: Ramneet Chopra * feedback comments resolved Signed-off-by: Ramneet Chopra * grid height issue:fixed Signed-off-by: Ramneet Chopra * column height, value getter for type double Signed-off-by: Ramneet Chopra * data_table elements moved to separate Signed-off-by: Ramneet Chopra * footer components Signed-off-by: Ramneet Chopra * cypress test cases for table view Signed-off-by: Ramneet Chopra * data config reviewed code added Signed-off-by: Deepak Nevde * Text correction Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * enhancement for heatmap with new UI Signed-off-by: Shankha Das * line chart test cases Signed-off-by: Shankha Das * console logs removed Signed-off-by: Shankha Das * updated value options ui for treemap Signed-off-by: Mrunal Zambre * removed console Signed-off-by: Mrunal Zambre * sprint1-visualization-fixes. Signed-off-by: abasatwar * initialize default params for DimensonComponent and formatted the codes Signed-off-by: rinku-kumar-psl * code review changes done Signed-off-by: rinku-kumar-psl * added empty line at end. Signed-off-by: abasatwar Co-authored-by: rinku-kumar-psl Co-authored-by: Ramneet Chopra Co-authored-by: Deepak Nevde Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre * Bump moment from 2.29.2 to 2.29.4 in /dashboards-observability (#845) Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4) --- updated-dependencies: - dependency-name: moment dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Sprint2 (#47) (#868) * graph style section UI schema Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts * changes for style mode and interpolation Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts * lineWidth integration for line mode Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * changes for Legend and Orientation in Line Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * point size and Bar Alignment changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * implemented fill opacity for line chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * changes for line width and fill opacity in bar mode and removed mode from chartOption Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/shared.ts * updated bar mode opacity in line chart Signed-off-by: rinku-kumar-psl * refactored the config chart style code Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * snapshot updated and code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * type added to new component Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * review comments addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx # Conflicts: # dashboards-observability/common/constants/shared.ts * cypress test case added and resolve button label wraping issue Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # dashboards-observability/.cypress/utils/event_constants.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js * multi matrices changes for Line Signed-off-by: rinku-kumar-psl * dimensions and metrics UI changes for time-series Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/explorer.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * made data config pannel collapsable and initial fields render Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx * snapshot updated and handled corner cases Signed-off-by: rinku-kumar-psl * code styling fixes and added TODO comment Signed-off-by: rinku-kumar-psl * sequence change for dimensions and metrics Signed-off-by: Deepak Nevde * Sprint1 (#14) * graph style section UI schema Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts * changes for style mode and interpolation Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts * lineWidth integration for line mode Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * changes for Legend and Orientation in Line Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * point size and Bar Alignment changes Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # dashboards-observability/public/components/visualizations/charts/lines/line_type.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * implemented fill opacity for line chart Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/visualizations/charts/lines/line.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * changes for line width and fill opacity in bar mode and removed mode from chartOption Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/shared.ts * updated bar mode opacity in line chart Signed-off-by: rinku-kumar-psl * refactored the config chart style code Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts # Conflicts: # dashboards-observability/common/constants/shared.ts # dashboards-observability/common/types/explorer.ts * snapshot updated and code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx * type added to new component Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx * review comments addressed Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/utils/utils.tsx # Conflicts: # dashboards-observability/common/constants/shared.ts * cypress test case added and resolve button label wraping issue Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # dashboards-observability/.cypress/utils/event_constants.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js # Conflicts: # dashboards-observability/.cypress/integration/1_event_analytics.spec.js * multi matrices changes for Line Signed-off-by: rinku-kumar-psl * dimensions and metrics UI changes for time-series Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/common/constants/explorer.ts # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * made data config pannel collapsable and initial fields render Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx # dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx * code refactored Signed-off-by: rinku-kumar-psl # Conflicts: # dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx * snapshot updated and handled corner cases Signed-off-by: rinku-kumar-psl * code styling fixes and added TODO comment Signed-off-by: rinku-kumar-psl * data config reviewed code added Signed-off-by: Deepak Nevde * Text correction Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * table view: eui table replaced with ag-grid Signed-off-by: Ramneet Chopra * drag-drop issue fixed Signed-off-by: Ramneet Chopra * test case of data_table updated Signed-off-by: Ramneet Chopra * feedback comments resolved Signed-off-by: Ramneet Chopra * grid height issue:fixed Signed-off-by: Ramneet Chopra * column height, value getter for type double Signed-off-by: Ramneet Chopra * data_table elements moved to separate Signed-off-by: Ramneet Chopra * footer components Signed-off-by: Ramneet Chopra * cypress test cases for table view Signed-off-by: Ramneet Chopra * enhancement for heatmap with new UI Signed-off-by: Shankha Das * line chart test cases Signed-off-by: Shankha Das * console logs removed Signed-off-by: Shankha Das * updated value options ui for treemap Signed-off-by: Mrunal Zambre * removed console Signed-off-by: Mrunal Zambre * Fixes of sprint1 for new ui implementation (#12) Signed-off-by: ruchika-narang Co-authored-by: rinku-kumar-psl Co-authored-by: Deepak Nevde Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> * Latest code added Signed-off-by: Deepak Nevde * Collapsapable button position change to top Signed-off-by: Deepak Nevde * table view: eui table replaced with ag-grid Signed-off-by: Ramneet Chopra * drag-drop issue fixed Signed-off-by: Ramneet Chopra * test case of data_table updated Signed-off-by: Ramneet Chopra * feedback comments resolved Signed-off-by: Ramneet Chopra * grid height issue:fixed Signed-off-by: Ramneet Chopra * column height, value getter for type double Signed-off-by: Ramneet Chopra * data_table elements moved to separate Signed-off-by: Ramneet Chopra * footer components Signed-off-by: Ramneet Chopra * cypress test cases for table view Signed-off-by: Ramneet Chopra * data config reviewed code added Signed-off-by: Deepak Nevde * Text correction Signed-off-by: Deepak Nevde * Conflicts resolved Signed-off-by: Deepak Nevde * enhancement for heatmap with new UI Signed-off-by: Shankha Das * line chart test cases Signed-off-by: Shankha Das * console logs removed Signed-off-by: Shankha Das * updated value options ui for treemap Signed-off-by: Mrunal Zambre * removed console Signed-off-by: Mrunal Zambre * sprint1-visualization-fixes. Signed-off-by: abasatwar * added colorscale config options for treemap Signed-off-by: Mrunal Zambre * code review comment resolved Signed-off-by: Deepak Nevde * added config option to sort treemap sectors Signed-off-by: Mrunal Zambre * changes to resctct duplicte options Signed-off-by: rinku-kumar-psl * Updated and Added test scripts for Treemap chart along with data config and worked on reassembling the event_constants.js file Signed-off-by: Pratibha Pandey * Removed unwanted code Signed-off-by: Pratibha Pandey * implementation of histogram with new UI Signed-off-by: ruchika-narang * gauge chart added Signed-off-by: Ramneet Chopra * Pie chart enhancement, multi labels change Signed-off-by: Deepak Nevde * threshold text fix Signed-off-by: Ramneet Chopra * cypress test cases added Signed-off-by: Ramneet Chopra * Code review comment resolved Signed-off-by: Deepak Nevde * reset fixed, unused imports removed, PR checks fixed Signed-off-by: Ramneet Chopra * single timestamp dimension, no data dsiplay, label rotate, label/legend size Signed-off-by: Ramneet Chopra * layout fixed for primary y axis Signed-off-by: Ramneet Chopra * change of screen size of no data found and visualization Signed-off-by: Shankha Das * changes for restriction of duplicate fields on Data Config and only numeric field selection to metrics Signed-off-by: rinku-kumar-psl * line label replaced with time series Signed-off-by: Ramneet Chopra * snapshot tests Signed-off-by: Ramneet Chopra * Removed unwanted spaces Signed-off-by: Pratibha Pandey * initialize default params for DimensonComponent and formatted the codes Signed-off-by: rinku-kumar-psl * pr review feedback Signed-off-by: Ramneet Chopra * updated preview functionality for charts Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * Worked on review comments Signed-off-by: Pratibha Pandey * changed variable names Signed-off-by: Mrunal Zambre * code review changes done Signed-off-by: rinku-kumar-psl * added empty line at end. Signed-off-by: abasatwar * updated variable names Signed-off-by: Mrunal Zambre * updated snapshots Signed-off-by: Mrunal Zambre * Added pie chart test cases Signed-off-by: Pratibha Pandey * updated snapshots Signed-off-by: ruchika-narang * Removed consoles Signed-off-by: ruchika-narang * Worked on conflicts Signed-off-by: Pratibha Pandey * color selector added Signed-off-by: Ramneet Chopra * updated snapshots Signed-off-by: ruchika-narang * UI updated as recommended Signed-off-by: Shankha Das * Added legend to heatmap Signed-off-by: ruchika-narang * data_config_panel_item timeseries code removed Signed-off-by: Ramneet Chopra * bar chart with multiple dimension and metrics, timestamp Signed-off-by: abasatwar * limit no. of gauge option added Signed-off-by: Ramneet Chopra * threshold limit added, gauge default parameters moved to constants/explorer Signed-off-by: Ramneet Chopra * legend placement added Signed-off-by: Ramneet Chopra * yarn test Signed-off-by: Ramneet Chopra * snapshot updated Signed-off-by: abasatwar * snapshot updated Signed-off-by: abasatwar * Resolving issues after removal of preview functionality Signed-off-by: ruchika-narang * updated snapshots Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * changes for default timestamp data for time-series and corner cases Signed-off-by: rinku-kumar-psl * code review comment addressed Signed-off-by: rinku-kumar-psl * pr feedback Signed-off-by: Ramneet Chopra * dimensions, metrics length checks refined Signed-off-by: Ramneet Chopra * updated as per review comments Signed-off-by: abasatwar * fixing of data config corner cases Signed-off-by: rinku-kumar-psl * snapshot updated Signed-off-by: abasatwar * pr feedback Signed-off-by: Ramneet Chopra Co-authored-by: rinku-kumar-psl Co-authored-by: Deepak Nevde Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> Co-authored-by: Pratibha Pandey Co-authored-by: ruchika-narang Co-authored-by: Shankha Das Co-authored-by: rinku-kumar-psl Co-authored-by: Deepak Nevde Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> Co-authored-by: Pratibha Pandey Co-authored-by: ruchika-narang Co-authored-by: Shankha Das * Staging for version increment automation (#848) * Version increment automation Signed-off-by: pgodithi * Version increment automation Signed-off-by: pgodithi * Version increment automation: task rename updateVersion Signed-off-by: pgodithi * Release Notes for 2.2.0 (#920) Signed-off-by: vamsi-amazon * Sprint2 code refactoring and warning minimization (#904) * changes to remove for unique key warning on Dom and code refactoring sprint2 Signed-off-by: rinku-kumar-psl * snapshot updated Signed-off-by: rinku-kumar-psl * no_results.test.tsx snapshot updated Signed-off-by: rinku-kumar-psl * added empty line at the end of the file Signed-off-by: rinku-kumar-psl * Bump to 2.2.0 (#918) (#928) * Bump to 2.2.0 Signed-off-by: vamsi-amazon * Update snapshots Signed-off-by: Joshua Li Co-authored-by: Joshua Li (cherry picked from commit da9e9c013e13e03afd09d324e06e025dbb207f0c) Co-authored-by: vamsi-amazon * Sprint3 alpha (#64) (#931) * Sprint3 alpha (#64) Signed-off-by: abasatwar * issues resolved and snapshots updated Signed-off-by: Shankha Das * 2 snapshots updated Signed-off-by: Shankha Das Signed-off-by: abasatwar Signed-off-by: Shankha Das Co-authored-by: Shankha Das * [ENHANCEMENT]: Movement of temporary visualization panel data into userconfig (#929) * Worked on movement of data to userConfigs Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Updated snapshots Signed-off-by: ruchika-narang * Updated snapshots for failing checks Signed-off-by: ruchika-narang * resolved PR comments Signed-off-by: Shankha Das * visType added Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: Shankha Das * cypress test case for horizontal bar (#935) Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * build error resolve (#923) Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * [BUG] : Dimensions getting removed when no timeseries field is present (#944) * Fix for app crash and dimension disaapearing Signed-off-by: ruchika-narang * optimized the code and updated snapshots Signed-off-by: Shankha Das * resolved PR comments Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: Shankha Das * cypress test case for scatter chart (#930) Signed-off-by: nidhisinghai Signed-off-by: nidhisinghai Co-authored-by: nidhisinghai * Bug/logs-view-data-config: Added Columns in Data Configuration for Logs View (#955) * Fix for app crash and dimension disaapearing Signed-off-by: ruchika-narang * optimized the code and updated snapshots Signed-off-by: Shankha Das * resolved PR comments Signed-off-by: Shankha Das * resolved data configuration bug for logs view Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: ruchika-narang * Feature/tooltip-section: Added tooltip options for various charts (#952) * Fix for app crash and dimension disaapearing Signed-off-by: ruchika-narang * optimized the code and updated snapshots Signed-off-by: Shankha Das * resolved PR comments Signed-off-by: Shankha Das * added tooltip options Signed-off-by: Shankha Das * removed log Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: Shankha Das Co-authored-by: ruchika-narang * resolved color theme issue (#960) Signed-off-by: Shankha Das Signed-off-by: Shankha Das * Renamed data panel to style (#964) Signed-off-by: ruchika-narang Signed-off-by: ruchika-narang * Query Manager (#915) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * query manager Signed-off-by: Eric Wei * removed aggregations from dimensions Signed-off-by: Eric Wei * qm improvements Signed-off-by: Eric Wei * types/code cleanups/error corrections Signed-off-by: Eric Wei * fixed a undefined issue Signed-off-by: Eric Wei * qm fixes for query builder Signed-off-by: Eric Wei * viz timestamp selector Signed-off-by: Eric Wei * use postinstall for antlr output files Signed-off-by: Eric Wei * query building fixes Signed-off-by: Eric Wei * updated snapshots Signed-off-by: Eric Wei * remove output files Signed-off-by: Eric Wei * cherry-pick from integration branch Signed-off-by: Eric Wei * explicitly remove generated files Signed-off-by: Eric Wei Signed-off-by: Eugene Lee Signed-off-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Zhongnan Su * Query manager integration (#987) * Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit b4f491a16f81725db6d63f604a3020e5b89dd720) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * change to support java 8 in compile and runtime (#575) (#576) Signed-off-by: Zhongnan Su (cherry picked from commit 5c43e9dac336b37fa4f6f002709e0965015383aa) Co-authored-by: Zhongnan Su * Add 1.3.0 release notes (#580) (#582) Signed-off-by: Eugene Lee * query manager Signed-off-by: Eric Wei * removed aggregations from dimensions Signed-off-by: Eric Wei * qm improvements Signed-off-by: Eric Wei * types/code cleanups/error corrections Signed-off-by: Eric Wei * qm fixes for query builder Signed-off-by: Eric Wei * viz timestamp selector Signed-off-by: Eric Wei * query manager integration with bar step 1 Signed-off-by: Eric Wei * span fix Signed-off-by: Eric Wei * use postinstall for antlr output files Signed-off-by: Eric Wei … * Adding release notes for 2.4.1 (#1343) (#1345) * adding release notes for 2.4.1 Signed-off-by: Shenoy Pratik * update bug fix Signed-off-by: Shenoy Pratik Signed-off-by: Shenoy Pratik (cherry picked from commit 554b4b99b83b234e26cbf2288f1f80941437f66d) Co-authored-by: Shenoy Pratik * Removing explicit jackson dependencies (#1374) Signed-off-by: Shenoy Pratik Signed-off-by: Shenoy Pratik * Revert "Removing explicit jackson dependencies (#1374)" (#1379) This reverts commit 04c5f061ca8c1112faa60d516a57775b08ed8fa1. Signed-off-by: Ryan Bogan Signed-off-by: Ryan Bogan * [BACKPORT MAIN] remove front end workflow and code (#1362) (#1386) * remove front end workflow and code (#1362) * remove front end workflow and code Signed-off-by: Derek Ho * move folders up one level Signed-off-by: Derek Ho * fix workflow file Signed-off-by: Derek Ho * final workflow fix Signed-off-by: Derek Ho Signed-off-by: Derek Ho (cherry picked from commit e7dea87b2008094be7701250547cc02bbb2ca649) Signed-off-by: Derek Ho * delete front end workflow file Signed-off-by: Derek Ho * ichange bwc version Signed-off-by: Derek Ho * fix build.gradel Signed-off-by: Derek Ho * try to replace all references Signed-off-by: Derek Ho * fix job scheduler version Signed-off-by: Derek Ho * add job scheduler into bwc tests Signed-off-by: Derek Ho * change version to 2.4.0 Signed-off-by: Derek Ho * run all jobs Signed-off-by: Derek Ho * add back bwc Signed-off-by: Derek Ho * add job scheduler back Signed-off-by: Derek Ho * fix Signed-off-by: Derek Ho * fix the file Signed-off-by: Derek Ho Signed-off-by: Derek Ho * Updated MAINTAINERS.md to match recommended opensearch-project format. (#1367) Signed-off-by: dblock Signed-off-by: dblock * finish cleanup (#1390) Signed-off-by: Derek Ho Signed-off-by: Derek Ho * Add Traces schema support for SSO which is OTEL compliant * add basic trace samples * add support for Metrics types in Simple Schema for Observability (OTEL compliant) Signed-off-by: YANGDB * remove guava (#1402) * remove guava Signed-off-by: Derek Ho * 2.6 bwc Signed-off-by: Derek Ho --------- Signed-off-by: Derek Ho * add specific info and support for data-stream API Signed-off-by: YANGDB * add specific info and support for data-stream API Signed-off-by: YANGDB * add support for observedTimestamp Signed-off-by: YANGDB * add creation of metrics.mapping template & default data-stream indices during the plugin init phase Signed-off-by: YANGDB * updating detekt to 1.22.0 (#1415) Signed-off-by: Shenoy Pratik * Add publish snapshots to maven via GHA (#1417) * Add publish snapshots to maven via GHA Signed-off-by: Rupal Mahajan * Add rootProject name in seetings.gradle to change plugin name to opensearch-observability Signed-off-by: Rupal Mahajan --------- Signed-off-by: Rupal Mahajan * introduce the SSO metrics & traces schema into observability as part of the responsibilities of the Observability plugin it would load the index template for the observability type as part of its bootstrap add @timestamp for trace samples Signed-off-by: YANGDB --------- Signed-off-by: Shenoy Pratik Signed-off-by: Eugene Lee Signed-off-by: Joshua Li Signed-off-by: Mrunal Zambre Signed-off-by: Kawika Avilla Signed-off-by: Zhongnan Su Signed-off-by: vamsi-amazon Signed-off-by: rinku-kumar-psl Signed-off-by: Pratibha Pandey Signed-off-by: Deepak Nevde Signed-off-by: Kavitha Conjeevaram Mohan Signed-off-by: pgodithi Signed-off-by: abasatwar Signed-off-by: Shankha Das Signed-off-by: ruchika-narang Signed-off-by: nidhisinghai Signed-off-by: Eric Wei Signed-off-by: SivaprasadAluri Signed-off-by: Ramneet Chopra Signed-off-by: cwillum Signed-off-by: Naman Chaturvedi Signed-off-by: Dipra Aich Signed-off-by: Vishal Kushwah Signed-off-by: Koustubh Karmalkar Signed-off-by: Saisanju Sreevalsakumar Signed-off-by: harshada.lingayat Signed-off-by: Abhay Pandey Signed-off-by: Derek Ho Signed-off-by: prudhvigodithi Signed-off-by: Anand6Kumar Signed-off-by: Amit-Nawale Signed-off-by: Rupal Mahajan Signed-off-by: Zelin Hao Signed-off-by: opensearch-ci-bot Signed-off-by: Sean Li Signed-off-by: Vamsi Manohar Signed-off-by: Ryan Bogan Signed-off-by: dblock Signed-off-by: YANGDB Co-authored-by: Shenoy Pratik Co-authored-by: Eugene Lee Co-authored-by: Joshua Li Co-authored-by: Mrunal Zambre <79525611+mrunal-z@users.noreply.github.com> Co-authored-by: Kawika Avilla Co-authored-by: Zhongnan Su Co-authored-by: Eric Wei Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: vamsi-amazon <99925918+vamsi-amazon@users.noreply.github.com> Co-authored-by: Pratibha <103417380+pratibhapandey16@users.noreply.github.com> Co-authored-by: Deepak Nevde Co-authored-by: Nidhi Singhai Co-authored-by: Rinku Kumar <103560761+rinku-kumar-psl@users.noreply.github.com> Co-authored-by: Pratibha Pandey Co-authored-by: deepaknevdepsl <102342039+deepaknevdepsl@users.noreply.github.com> Co-authored-by: ruchika-narang <79983862+ruchika-narang@users.noreply.github.com> Co-authored-by: Subrat Pattnaik Co-authored-by: Kavitha Conjeevaram Mohan Co-authored-by: abasatwar Co-authored-by: rinku-kumar-psl Co-authored-by: Ramneet Chopra Co-authored-by: Shankha Das Co-authored-by: Mrunal Zambre Co-authored-by: ruchika-narang Co-authored-by: Shankha Das Co-authored-by: Prudhvi Godithi Co-authored-by: vamsi-amazon Co-authored-by: nidhisinghai <103416937+nidhisinghai@users.noreply.github.com> Co-authored-by: nidhisinghai Co-authored-by: shankha-das <93648901+shankha-das@users.noreply.github.com> Co-authored-by: SivaprasadAluri <110654651+SivaprasadAluri@users.noreply.github.com> Co-authored-by: ramneet-persistent <105915936+ramneet-persistent@users.noreply.github.com> Co-authored-by: Chris Moore <107723039+cwillum@users.noreply.github.com> Co-authored-by: NamanChaturvedi13 <78581256+NamanChaturvedi13@users.noreply.github.com> Co-authored-by: DipraAich <61182817+DipraAich@users.noreply.github.com> Co-authored-by: vkushwah <77838340+vkushwah@users.noreply.github.com> Co-authored-by: Vishal Kushwah Co-authored-by: Koustubh5585 <42600229+Koustubh5585@users.noreply.github.com> Co-authored-by: saisanju-s <43745923+saisanju-s@users.noreply.github.com> Co-authored-by: harshada8989 <60776775+harshada8989@users.noreply.github.com> Co-authored-by: Abhay Kumar Pandey <102669033+abhaypersistent@users.noreply.github.com> Co-authored-by: Derek Ho Co-authored-by: Anand6Kumar <97474549+Anand6Kumar@users.noreply.github.com> Co-authored-by: Amit-Nawale <114645833+Amit-Nawale@users.noreply.github.com> Co-authored-by: Rupal Mahajan Co-authored-by: Peter Fitzgibbons Co-authored-by: Zelin Hao <87548827+zelinh@users.noreply.github.com> Co-authored-by: opensearch-ci-bot Co-authored-by: Sean Li Co-authored-by: Ryan Bogan <10944539+ryanbogan@users.noreply.github.com> Co-authored-by: Daniel (dB.) Doubrovkine --- MAINTAINERS.md | 27 +- ...rch-observability.release-notes-2.6.0.0.md | 2 +- schema/README.md | 104 +++++++ schema/metrics/README.md | 105 +++++++ schema/metrics/metrics-mapping.json | 288 ++++++++++++++++++ schema/metrics/metrics.schema | 270 ++++++++++++++++ schema/metrics/samples/gauge.json | 52 ++++ schema/metrics/samples/histogram.json | 65 ++++ schema/metrics/samples/load_samples.md | 29 ++ schema/metrics/samples/sum.json | 59 ++++ schema/traces/README.md | 153 ++++++++++ schema/traces/samples/load_samples.md | 28 ++ schema/traces/samples/traceA.json | 23 ++ schema/traces/samples/traceB.json | 51 ++++ schema/traces/samples/traceC.json | 68 +++++ schema/traces/traces-mapping.json | 197 ++++++++++++ schema/traces/traces.schema | 249 +++++++++++++++ scripts/build.sh | 82 +++++ .../observability/ObservabilityPlugin.kt | 14 +- .../observability/index/ObservabilityIndex.kt | 11 +- .../index/ObservabilityMetricsIndex.kt | 122 ++++++++ .../index/ObservabilityTracesIndex.kt | 122 ++++++++ .../resources/metrics-mapping-template.json | 266 ++++++++++++++++ .../resources/traces-mapping-template.json | 185 +++++++++++ .../observability/ObservabilityPluginIT.kt | 1 + .../observability/PluginRestTestCase.kt | 69 +++-- .../rest/AssemblyValidationIT.kt | 43 +++ 27 files changed, 2654 insertions(+), 31 deletions(-) create mode 100644 schema/README.md create mode 100644 schema/metrics/README.md create mode 100644 schema/metrics/metrics-mapping.json create mode 100644 schema/metrics/metrics.schema create mode 100644 schema/metrics/samples/gauge.json create mode 100644 schema/metrics/samples/histogram.json create mode 100644 schema/metrics/samples/load_samples.md create mode 100644 schema/metrics/samples/sum.json create mode 100644 schema/traces/README.md create mode 100644 schema/traces/samples/load_samples.md create mode 100644 schema/traces/samples/traceA.json create mode 100644 schema/traces/samples/traceB.json create mode 100644 schema/traces/samples/traceC.json create mode 100644 schema/traces/traces-mapping.json create mode 100644 schema/traces/traces.schema create mode 100755 scripts/build.sh create mode 100644 src/main/kotlin/org/opensearch/observability/index/ObservabilityMetricsIndex.kt create mode 100644 src/main/kotlin/org/opensearch/observability/index/ObservabilityTracesIndex.kt create mode 100644 src/main/resources/metrics-mapping-template.json create mode 100644 src/main/resources/traces-mapping-template.json create mode 100644 src/test/kotlin/org/opensearch/observability/rest/AssemblyValidationIT.kt diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 683c66959..da0922e00 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,11 +1,18 @@ -# Observability Maintainers +## Overview -## Maintainers -| Maintainer | GitHub ID | Affiliation | -|---------------|-------------------------------------------------|-------------| -| David Cui | [davidcui1225](https://github.com/davidcui1225) | Amazon | -| Eric Wei | [mengweieric](https://github.com/mengweieric) | Amazon | -| Joshua Li | [joshuali925](https://github.com/joshuali925) | Amazon | -| Shenoy Pratik | [ps48](https://github.com/ps48) | Amazon | -| Kavitha Mohan | [kavithacm] (https://github.com/kavithacm) | Amazon | -| Eugene Lee | [eugenesk24] (https://github.com/eugenesk24) | Amazon | \ No newline at end of file +This document contains a list of maintainers in this repo. See [opensearch-project/.github/RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#maintainer-responsibilities) that explains what the role of maintainer means, what maintainers do in this and other repos, and how they should be doing it. If you're interested in contributing, and becoming a maintainer, see [CONTRIBUTING](CONTRIBUTING.md). + +## Current Maintainers + +| Maintainer | GitHub ID | Affiliation | +| ----------------- | ------------------------------------------------- | ----------- | +| David Cui | [davidcui1225](https://github.com/davidcui1225) | Amazon | +| Eric Wei | [mengweieric](https://github.com/mengweieric) | Amazon | +| Joshua Li | [joshuali925](https://github.com/joshuali925) | Amazon | +| Shenoy Pratik | [ps48](https://github.com/ps48) | Amazon | +| Kavitha Mohan | [kavithacm](https://github.com/kavithacm) | Amazon | +| Eugene Lee | [eugenesk24](https://github.com/eugenesk24) | Amazon | +| Rupal Mahajan | [rupal-bq](https://github.com/rupal-bq) | Amazon | +| Derek Ho | [derek-ho](https://github.com/derek-ho) | Amazon | +| Lior Perry | [YANG-DB](https://github.com/YANG-DB) | Amazon | +| Peter Fitzgibbons | [pjfitzgibbons](https://github.com/pjfitzgibbons) | Amazon | diff --git a/release-notes/opensearch-observability.release-notes-2.6.0.0.md b/release-notes/opensearch-observability.release-notes-2.6.0.0.md index 8b8955eb3..a88edcd61 100644 --- a/release-notes/opensearch-observability.release-notes-2.6.0.0.md +++ b/release-notes/opensearch-observability.release-notes-2.6.0.0.md @@ -5,7 +5,7 @@ Compatible with OpenSearch and OpenSearch Dashboards Version 2.6.0 ### Infrastructure - Add publish snapshots to maven via GHA ([#1423](https://github.com/opensearch-project/observability/pull/1423)) - +- Add support for structured Metrics & Traces index using Simple Schema for Observability ([#1427](https://github.com/opensearch-project/observability/pull/1427)) ### Maintenance diff --git a/schema/README.md b/schema/README.md new file mode 100644 index 000000000..427ca3ffc --- /dev/null +++ b/schema/README.md @@ -0,0 +1,104 @@ +# Simple Schema for Observability + +## Background +Observability is the ability to measure a system’s current state based on the data it generates, such as logs, metrics, and traces. Observability relies on telemetry derived from instrumentation that comes from the endpoints and services. + +Observability telemetry signals (logs, metrics, traces) arriving from the system would contain all the necessary information needed to observe and monitor. + +Modern application can have a complicated distributed architecture that combines cloud native and microservices layers. Each layer produces telemetry signals that may have different structure and information. + +Using Simple Schema's Observability telemetry schema we can organize, correlate and investigate system behavior in a standard and well-defined manner. + +Observability telemetry schema defines the following components - **logs, traces and metrics**. + +**Logs** provide comprehensive system details, such as a fault and the specific time when the fault occurred. By analyzing the logs, one can troubleshoot code and identify where and why the error occurred. + +**Traces** represent the entire journey of a request or action as it moves through all the layers of a distributed system. Traces allow you to profile and observe systems, especially containerized applications, serverless architectures, or microservices architecture. + +**Metrics** provide a numerical representation of data that can be used to determine a service or component’s overall behaviour over time. + + +In many occasions, correlation between the logs, traces and metrics is mandatory to be able to monitor and understand how the system is behaving. In addition, the distributed nature of the application produces multiple formats of telemetry signals arriving from different components ( network router, web server, database) + +For such correlation to be possible the industry has formulated several protocols ([OTEL](https://github.com/open-telemetry), [ECS](https://github.com/elastic/ecs), [OpenMetrics](https://github.com/OpenObservability/OpenMetrics)) for communicating these signals - the Observability schemas. + +--- +## Schema Aware Components + +The role of the Observability plugin is intended to allow maximum flexibility and not imposing a strict Index structure of the data source. Nevertheless, the modern nature of distributed application and the vast amount of telemetry producers is changing this perception. + +Today many of the Observability solutions (splunk, datadog, dynatrace) recommend using a consolidated schema to represent the entire variance of log/trace/metrics producers. + +This allows monitoring, incidents investigation and corrections process to become simpler, maintainable and reproducible. + + +A Schema-Aware visualization component is a component which assumes the existence of specific index/indices name patterns and expects these indices to have a specific structure - a schema. + +As an example we can see that **Trace-Analytics** is a schema-aware visual component since it directly assumes the traces & serviceMap indices exist and expects them to follow a specific structure. + +This definition doesn’t change the existing status of visualization components which are not “Schema Aware” but it only regulates which Visual components would benefit using a schema and which will be agnostic of its content. + +Operation Panel for example, are not “Schema Aware” since they don’t assume in advanced the existence of a specific index nor do they expect the index they display to have a specific structure. + +## Data Model + +Simple Schema for Observability allows ingestion of both (OTEL/ECS) formats and internally consolidate them to best of its capabilities for presenting a unified Observability platform. + +## Observability index naming + +The Observability indices would follow the recommended for immutable data stream ingestion pattern using the [data_stream concepts](https://opensearch.org/docs/latest/opensearch/data-streams/) + +Index pattern will follow the next naming template `sso_{type}`-`{dataset}`-`{namespace}` + + - **type** - indicated the observability high level types "logs", "metrics", "traces" (prefixed by the `sso_` schema convention ) + - **dataset** - The field can contain anything that classify the source of the data - such as `nginx.access` + - **namespace** - A user defined namespace - mainly useful to allow grouping of data such as production grade, geography classification + +This strategy allows two degrees of naming freedom: dataset and namespace. For example a customer may want to route the nginx logs from two geographical areas into two different indices: + + - `sso_logs-nginx-us` + - `sso_logs-nginx-eu` + +This type of distinction also allows for creation of crosscutting queries by setting the next index query pattern `sso_logs-nginx-*` or by using a geographic based crosscutting query `sso_logs-*-eu`. + +## Data index routing + +The [ingestion component](https://github.com/opensearch-project/data-prepper) which is responsible for ingesting the Observability signals is responsible to route the data into the relevant indices. + +The `sso_{type}-{dataset}-{namespace}` combination dictates the target index, `{type}` is prefixed with the `sso_` prefix into one of the supported type: + + - Traces - `sso_traces` + - Metrics - `sso_metrics` + - Logs - `sso_logs` + +For example if within the ingested log contains the following section: +```json +{ + ... + "attributes": { + "data_stream": { + "type": "span", + "dataset": "mysql", + "namespace": "prod" + } + } +} +``` +This indicates that the target index for this observability signal should be `sso_traces`-`mysql`-`prod` index that follows uses the traces schema mapping. + +## Observability Index templates + +With the expectation of multiple Observability data providers and the need to consolidate all to a single common schema - the Observability plugin will take the following responsibilities : + + - Define and create all the signals **index templates** upon loading + - Publish a versioned schema file (Json Schema) for each signal type for general validation usage by any 3rd party + +## Observability Ingestion pipeline +The responsibility on an **Observability-ingestion-pipeline** is to create the actual `data_stream` in which it is expecting to ingest into. + +This `data_stream` will use one of the Observability ready-made index templates (Metrics,Traces and Logs) and conform with the above naming pattern (`sso_{type}`-`{dataset}`-`{namespace}`) + +**If the ingesting party has a need to update the template default index setting (shards, replicas ) it may do so before the actual creation of the data_stream.** + +### Note +It is important to mention that these new capabilities would not change or prevent existing customer usage of the system and continue to allow proprietary usage. diff --git a/schema/metrics/README.md b/schema/metrics/README.md new file mode 100644 index 000000000..78e940f51 --- /dev/null +++ b/schema/metrics/README.md @@ -0,0 +1,105 @@ +# Metrics Schema Support + +Observability refers to the ability to monitor and diagnose systems and applications in real-time, in order to understand how they are behaving and identify potential issues. +Metrics present a critical component of observability, providing quantifiable data about the performance and behavior of systems and applications. +The importance of supporting metrics structured schema lies in the fact that it enables better analysis and understanding of system behavior. + +A structured schema provides a clear, consistent format, making it easier for observability tools to process and aggregate the data. +This in turn makes it easier for engineers to understand the performance and behavior of their systems, and quickly identify potential issues. + +When metrics are unstructured, it can be difficult for observability tools to extract meaningful information from them. +For example, if the data for a particular metric is not consistently recorded in the same format, it can be difficult to compare and analyze performance data over time. +Similarly, if metrics are not consistently named or categorized, it can be difficult to understand their context and significance. + +With a structured schema in place, observability tools can automatically extract and aggregate data, making it easier to understand system behavior at a high level. +This can help teams quickly identify performance bottlenecks, track changes in system behavior over time, and make informed decisions about system performance optimization. + +## Details +The next section provides the Simple Schema for Observability support which conforms with the OTEL specification. + +- metrics.mapping presents the template mapping for creating the Simple Schema for Observability index +- metrics.schema presents the json schema validation for verification of a metrics document conforms to the mapping structure + +## Metrics +see [OTEL metrics convention](https://opentelemetry.io/docs/reference/specification/metrics/) +see [OTEL metrics protobuf](https://github.com/open-telemetry/opentelemetry-proto/tree/main/opentelemetry/proto/metrics/v1) + +Simple Schema for Observability conforms with OTEL metrics protocol which defines the next data model: + +#### Timestamp field +As part of the data-stream definition the `@timestamp` is mandatory, if the field is not present in the original signal populate this field using `ObservedTimestamp` as value. + +### Instrumentation scope +This is a logical unit of the application with which the emitted telemetry can be associated. It is typically the developer’s choice to decide what denotes a reasonable instrumentation scope. +The most common approach is to use the instrumentation library as the scope, however other scopes are also common, e.g. a module, a package, or a class can be chosen as the instrumentation scope. + +The instrumentation scope may have zero or more additional attributes that provide additional information about the scope. As an example the field +`instrumentationScope.attributes.identification` is presented will be used to determine the resource origin of the signal and can be used to filter accordingly + +### Overview +Metrics are a specific kind of telemetry data. They represent a snapshot of the current state for a set of data. +Metrics are distinct from logs or events, which focus on records or information about individual events. + +Metrics expresses all system states as numerical values; counts, current values and such. +Metrics tend to aggregate data temporally, while this can lose information, the reduction in overhead is an engineering trade-off commonly chosen in many modern monitoring systems. + +Time series are a record of changing information over time. While time series can support arbitrary strings or binary data, only numeric data is in our scope. +Common examples of metric time series would be network interface counters, device temperatures, BGP connection states, and alert states. + +### Metric streams +In a similar way to the data_stream attribute field representing the category of a trace, the metric streams are grouped into individual Metric objects, identified by: + + - The originating Resource attributes + - The instrumentation Scope (e.g., instrumentation library name, version) + - The metric stream’s name + +### Metrics +Metric object is defined by the following properties: + + - The data point type (e.g. Sum, Gauge, Histogram ExponentialHistogram, Summary) + - The metric stream’s unit + - The data point properties, where applicable: AggregationTemporality, Monotonic + +The description is also present in the metrics object but is not part of the identification fields +_- The metric stream’s description_ + + +### Data Types + +**Values:** Metric values in MUST be either floating points or integers. + +**Attributes:** Labels are key-value pairs consisting of string as keys and Any type as values (strings, object, array) + +**MetricPoint:** Each MetricPoint consists of a set of values, depending on the MetricFamily type. + +**Metric** Metrics are defined by a unique attributes (dimensions) within a MetricFamily. + +--- + +Metrics MUST contain a list of one or more MetricPoints. Metrics with the same name for a given MetricFamily SHOULD have the same set of label names in their LabelSet. + +* Metrics.name: String value representation of the matrix purpose +* Metrics.type: Valid values are "gauge", "counter","histogram", and "summary". +* Metrics.Unit: specifies MetricFamily units. + +## Metric Types + +### Gauge +Gauges are current measurements, such as bytes of memory currently used or the number of items in a queue. For gauges the absolute value is what is of interest to a user. +**_A MetricPoint in a Metric with the type gauge MUST have a single value._** +Gauges MAY increase, decrease, or stay constant over time. Even if they only ever go in one direction, they might still be gauges and not counters. + +### Counter +Counters measure discrete events. Common examples are the number of HTTP requests received, CPU seconds spent, or bytes sent. For counters how quickly they are increasing over time is what is of interest to a user. +**_A MetricPoint in a Metric with the type Counter MUST have one value called Total._** + +### Histogram / Exponential-Histogram +Histograms measure distributions of discrete events. Common examples are the latency of HTTP requests, function runtimes, or I/O request sizes. +**_A Histogram MetricPoint MUST contain at least one bucket_**, and SHOULD contain Sum, and Created values. Every bucket MUST have a threshold and a value. + +### Summary +Summaries also measure distributions of discrete events and MAY be used when Histograms are too expensive and/or an average event size is sufficient. +**_A Summary MetricPoint MAY consist of a Count, Sum, Created, and a set of quantiles._** +Semantically, Count and Sum values are counters & MUST be an integer. + + diff --git a/schema/metrics/metrics-mapping.json b/schema/metrics/metrics-mapping.json new file mode 100644 index 000000000..7f767f65d --- /dev/null +++ b/schema/metrics/metrics-mapping.json @@ -0,0 +1,288 @@ +{ + "index_patterns": [ + "sso_metrics-*-*" + ], + "data_stream": {}, + "template": { + "mappings": { + "_meta": { + "version": "0.1.0-dev" + }, + "_source": { + "enabled": true + }, + "dynamic_templates": [ + { + "attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "attributes.*" + } + }, + { + "resources_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "resource.*" + } + }, + { + "exemplar_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "exemplar.attributes.*" + } + }, + { + "instrumentation_scope_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "instrumentationScope.attributes.*" + } + } + ], + "properties": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "attributes": { + "type": "object", + "properties": { + "data_stream": { + "properties": { + "dataset": { + "ignore_above": 128, + "type": "keyword" + }, + "namespace": { + "ignore_above": 128, + "type": "keyword" + }, + "type": { + "ignore_above": 56, + "type": "keyword" + } + } + } + } + }, + "description": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "unit": { + "type": "keyword", + "ignore_above": 128 + }, + "kind": { + "type": "keyword", + "ignore_above": 128 + }, + "aggregationTemporality": { + "type": "keyword", + "ignore_above": 128 + }, + "monotonic": { + "type": "boolean" + }, + "startTime": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "observedTimestamp": { + "type": "date_nanos" + }, + "value": { + "properties": { + "int": { + "type": "integer" + }, + "double": { + "type": "double" + } + } + }, + "buckets": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "type": "double" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + } + } + }, + "bucketCount": { + "type": "long" + }, + "bucketCountsList": { + "type": "long" + }, + "explicitBoundsList": { + "type": "float" + }, + "explicitBoundsCount": { + "type": "float" + }, + "quantiles": { + "properties": { + "quantile": { + "type": "double" + }, + "value": { + "type": "double" + } + } + }, + "quantileValuesCount": { + "type": "long" + }, + "positiveBuckets": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + } + } + }, + "negativeBuckets": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + } + } + }, + "negativeOffset": { + "type": "integer" + }, + "positiveOffset": { + "type": "integer" + }, + "zeroCount": { + "type": "long" + }, + "scale": { + "type": "long" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + }, + "sum": { + "type": "float" + }, + "count": { + "type": "long" + }, + "exemplar": { + "properties": { + "time": { + "type": "date" + }, + "traceId": { + "ignore_above": 256, + "type": "keyword" + }, + "spanId": { + "ignore_above": 256, + "type": "keyword" + } + } + }, + "instrumentationScope": { + "properties": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 128 + } + } + }, + "version": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "droppedAttributesCount": { + "type": "integer" + }, + "schemaUrl": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "schemaUrl": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "settings": { + "index": { + "mapping": { + "total_fields": { + "limit": 10000 + } + }, + "refresh_interval": "5s" + } + } + }, + "version": 1, + "_meta": { + "description": "Observability Metrics Mapping Template" + } +} \ No newline at end of file diff --git a/schema/metrics/metrics.schema b/schema/metrics/metrics.schema new file mode 100644 index 000000000..59832a766 --- /dev/null +++ b/schema/metrics/metrics.schema @@ -0,0 +1,270 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://opensearch.org/schemas/Metrics", + "title": "OpenTelemetry Metrics", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "attributes": { + "$ref": "/schemas/Attributes" + }, + "resource": { + "type": "object" + }, + "description": { + "type": "string" + }, + "unit": { + "type": "string" + }, + "kind": { + "type": "string", + "enum": [ + "COUNTER", + "SUM", + "GAUGE", + "HISTOGRAM", + "EXPONENTIAL_HISTOGRAM" + ] + }, + "aggregationTemporality": { + "type": "string", + "enum": [ + "AGGREGATION_TEMPORALITY_UNSPECIFIED", + "AGGREGATION_TEMPORALITY_DELTA", + "AGGREGATION_TEMPORALITY_CUMULATIVE" + ] + }, + "monotonic": { + "type": "boolean" + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "@timestamp": { + "type": "string", + "format": "date-time" + }, + "observedTimestamp": { + "type": "string", + "format": "date-time" + }, + "value.int": { + "type": "integer" + }, + "value.double": { + "type": "number" + }, + "buckets": { + "type": "array", + "items": { + "$ref": "/schemas/Bucket" + } + }, + "bucketCount": { + "type": "integer" + }, + "bucketCountsList": { + "type": "array", + "items": { + "type": "number" + } + }, + "explicitBoundsCount": { + "type": "integer" + }, + "explicitBoundsList": { + "type": "array", + "items": { + "type": "number" + } + }, + "quantiles": { + "type": "array", + "items": { + "$ref": "/schemas/Quantile" + } + }, + "quantileValuesCount": { + "type": "number" + }, + "positiveBuckets": { + "type": "array", + "items": { + "$ref": "/schemas/Bucket" + } + }, + "negativeBuckets": { + "type": "array", + "items": { + "$ref": "/schemas/Bucket" + } + }, + "positiveOffset": { + "type": "array", + "items": { + "type": "number" + } + }, + "negativeOffset": { + "type": "array", + "items": { + "type": "number" + } + }, + "zeroCount": { + "type": "number" + }, + "scale": { + "type": "integer" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "sum": { + "type": "number" + }, + "count": { + "type": "number" + }, + "exemplars": { + "type": "array", + "items": { + "$ref": "/schemas/Exemplar" + } + }, + "instrumentationScope": { + "$ref": "/schemas/InstrumentationScope" + }, + "schemaUrl": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "unit", + "kind", + "@timestamp" + ], + "$defs": { + "Bucket": { + "$id": "/schemas/Bucket", + "type": "object", + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "sum": { + "type": "number" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "count", + "max", + "min" + ], + "title": "Bucket" + }, + "Quantile": { + "$id": "/schemas/Quantile", + "type": "object", + "additionalProperties": false, + "properties": { + "quantile": { + "type": "number" + }, + "value": { + "type": "number" + } + }, + "required": [ + "quantile", + "value" + ], + "title": "Quantile" + }, + "InstrumentationScope": { + "$id": "/schemas/InstrumentationScope", + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "schemaUrl": { + "type": "string" + }, + "droppedAttributesCount": { + "type": "integer" + } + }, + "title": "InstrumentationScope" + }, + "Exemplar": { + "$id": "/schemas/Exemplar", + "type": "object", + "additionalProperties": true, + "properties": { + "time": { + "type": "string", + "format": "date-time" + }, + "spanId": { + "type": "string" + }, + "traceId": { + "type": "string" + } + }, + "required": [ + "time" + ], + "title": "Exemplar" + }, + "Attributes": { + "$id": "/schemas/Attributes", + "type": "object", + "additionalProperties": true, + "properties": { + "data_stream": { + "$ref": "/schemas/Dataflow" + } + }, + "title": "Attributes" + }, + "Dataflow": { + "$id": "/schemas/Dataflow", + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "dataset": { + "type": "string" + } + }, + "title": "Dataflow" + } + } +} \ No newline at end of file diff --git a/schema/metrics/samples/gauge.json b/schema/metrics/samples/gauge.json new file mode 100644 index 000000000..e8ec59070 --- /dev/null +++ b/schema/metrics/samples/gauge.json @@ -0,0 +1,52 @@ +{ + "unit": "ms", + "exemplars": [], + "kind": "GAUGE", + "name": "lastLatency", + "flags": 0, + "description": "The last API latency observed at collection interval", + "startTime": "2023-01-20T05:16:16.425669Z", + "@timestamp": "2023-01-20T05:16:16.425669Z", + "value.double": 0.0, + "resource": { + "cloud@account@id": "123367104812", + "process@pid": 1, + "host@arch": "amd64", + "host@id": "i-0005de88c8ebe7dbb", + "host@image@id": "ami-093d4bc1f6d4a890b", + "telemetry@sdk@version": "1.19.0", + "service@name": "AOCDockerDemoService", + "process@runtime@name": "OpenJDK Runtime Environment", + "os@type": "linux", + "cloud@availability_zone": "us-west-2b", + "host@type": "c5.2xlarge", + "cloud@provider": "aws", + "telemetry@sdk@language": "java", + "host@name": "ip-172-16-42-233.amazon.com", + "process@runtime@description": "Debian OpenJDK 64-Bit Server VM 17.0.4+8-Debian-1deb11u1", + "service@namespace": "AOCDockerDemo", + "cloud@region": "us-west-2", + "process@executable@path": "/usr/lib/jvm/java-17-openjdk-amd64/bin/java", + "process@command_line": "/usr/lib/jvm/java-17-openjdk-amd64/bin/java -javaagent:/aws-observability/classpath/aws-opentelemetry-agent-1.19.0-SNAPSHOT.jar", + "process@runtime@version": "17.0.4+8-Debian-1deb11u1", + "cloud@platform": "aws_ec2", + "telemetry@sdk@name": "opentelemetry", + "container@id": "71301ad845e7d082911d846ac9af3cd9ba4f2144d82d7ac0dfd51f335b256a61", + "telemetry@auto@version": "1.19.0-aws-SNAPSHOT", + "os@description": "Linux 5.4.225-139.416.amzn2int.x86_64" + }, + "attributes": { + "statusCode": "", + "apiName": "", + "serviceName": "AOCDockerDemoService" + }, + + "instrumentationScope": { + "version": "1.0", + "name": "aws-otel", + "schemaUrl": "https://opentelemetry.io/schemas/1.13.0", + "attributes": { + "identification": "aws-ec2" + } + } +} diff --git a/schema/metrics/samples/histogram.json b/schema/metrics/samples/histogram.json new file mode 100644 index 000000000..3814aedb9 --- /dev/null +++ b/schema/metrics/samples/histogram.json @@ -0,0 +1,65 @@ +{ + "max": 652094078, + "kind": "HISTOGRAM", + "buckets": [ + { + "min": 3.4028234663852886e+38, + "max": 0, + "count": 0 + }, + { + "min": 0, + "max": 10000000, + "count": 0 + }, + { + "min": 10000000, + "max": 50000000, + "count": 5 + }, + { + "min": 50000000, + "max": 100000000, + "count": 1 + }, + { + "min": 100000000, + "max": 3.4028234663852886e+38, + "count": 10 + } + ], + "count": 16, + "bucketCountsList": [ + 0, + 0, + 5, + 1, + 10 + ], + "description": "Histogram of durationInNanos in the events", + "sum": 3136355061, + "unit": "seconds", + "aggregationTemporality": "AGGREGATION_TEMPORALITY_DELTA", + "min": 44606914, + "bucketCounts": 5, + "name": "histogram", + "startTime": "2023-01-20T05:16:16.425669Z", + "explicitBoundsCount": 4, + "@timestamp": "2023-01-20T05:16:16.425669Z", + "explicitBoundsList": [ + 0, + 10000000, + 50000000, + 100000000 + ], + "attributes": { + "aggr_duration": 26709005000, + "serviceName": "AOCDockerDemoService", + "histogram_key": "durationInNanos", + "data_stream": { + "dataset": "histogram", + "namespace": "production", + "type": "metric" + } + } +} \ No newline at end of file diff --git a/schema/metrics/samples/load_samples.md b/schema/metrics/samples/load_samples.md new file mode 100644 index 000000000..96f1af7c6 --- /dev/null +++ b/schema/metrics/samples/load_samples.md @@ -0,0 +1,29 @@ +## Load samples +For loading the given samples run the next request once the Opensearch cluster including Observability plugin has started: + + +`PUT sso_metrics-default-namespace/_bulk` +```json +{ "create":{ } } +{"max":652094078,"kind":"HISTOGRAM","buckets":[{"min":3.4028234663852886e+38,"max":0,"count":0},{"min":0,"max":10000000,"count":0},{"min":10000000,"max":50000000,"count":5},{"min":50000000,"max":100000000,"count":1},{"min":100000000,"max":3.4028234663852886e+38,"count":10}],"count":16,"bucketCountsList":[0,0,5,1,10],"description":"Histogram of durationInNanos in the events","sum":3136355061,"unit":"seconds","aggregationTemporality":"AGGREGATION_TEMPORALITY_DELTA","min":44606914,"bucketCounts":5,"name":"histogram","startTime":"2023-01-20T05:16:16.425669Z","explicitBoundsCount":4,"@timestamp":"2023-01-20T05:16:16.425669Z","explicitBoundsList":[0,10000000,50000000,100000000],"attributes":{"aggr_duration":26709005000,"serviceName":"AOCDockerDemoService","histogram_key":"durationInNanos","data_stream":{"dataset":"histogram","namespace":"production","type":"metric"}}} +{ "create":{ } } +{"unit":"ms","exemplars":[],"kind":"GAUGE","name":"lastLatency","flags":0,"description":"The last API latency observed at collection interval","startTime":"2023-01-20T05:16:16.425669Z","@timestamp":"2023-01-20T05:16:16.425669Z","value.double":0,"resource":{"cloud@account@id":"123367104812","process@pid":1,"host@arch":"amd64","host@id":"i-0005de88c8ebe7dbb","host@image@id":"ami-093d4bc1f6d4a890b","telemetry@sdk@version":"1.19.0","service@name":"AOCDockerDemoService","process@runtime@name":"OpenJDK Runtime Environment","os@type":"linux","cloud@availability_zone":"us-west-2b","host@type":"c5.2xlarge","cloud@provider":"aws","telemetry@sdk@language":"java","host@name":"ip-172-16-42-233.amazon.com","process@runtime@description":"Debian OpenJDK 64-Bit Server VM 17.0.4+8-Debian-1deb11u1","service@namespace":"AOCDockerDemo","cloud@region":"us-west-2","process@executable@path":"/usr/lib/jvm/java-17-openjdk-amd64/bin/java","process@command_line":"/usr/lib/jvm/java-17-openjdk-amd64/bin/java -javaagent:/aws-observability/classpath/aws-opentelemetry-agent-1.19.0-SNAPSHOT.jar","process@runtime@version":"17.0.4+8-Debian-1deb11u1","cloud@platform":"aws_ec2","telemetry@sdk@name":"opentelemetry","container@id":"71301ad845e7d082911d846ac9af3cd9ba4f2144d82d7ac0dfd51f335b256a61","telemetry@auto@version":"1.19.0-aws-SNAPSHOT","os@description":"Linux 5.4.225-139.416.amzn2int.x86_64"},"attributes":{"statusCode":"","apiName":"","serviceName":"AOCDockerDemoService"},"instrumentationScope":{"version":"1.0","name":"aws-otel","schemaUrl":"https://opentelemetry.io/schemas/1.13.0","attributes":{"identification":"aws-ec2"}}} +{ "create":{ } } +{"kind":"SUM","flags":0,"description":"Queue Size change","monotonic":false,"unit":"one","aggregationTemporality":"AGGREGATION_TEMPORALITY_CUMULATIVE","exemplars":[],"name":"queueSizeChange","startTime":"2023-01-20T05:16:16.425669Z","@timestamp":"2023-01-20T05:16:16.425669Z","value.double":0,"resource":{"cloud@account@id":"123367104812","process@pid":1,"host@arch":"amd64","host@id":"i-0005de88c8ebe7dbb","host@image@id":"ami-093d4bc1f6d4a890b","telemetry@sdk@version":"1.19.0","service@name":"AOCDockerDemoService","process@runtime@name":"OpenJDK Runtime Environment","os@type":"linux","cloud@availability_zone":"us-west-2b","host@type":"c5.2xlarge","cloud@provider":"aws","telemetry@sdk@language":"java","host@name":"ip-172-16-42-233.amazon.com","process@runtime@description":"Debian OpenJDK 64-Bit Server VM 17.0.4+8-Debian-1deb11u1","service@namespace":"AOCDockerDemo","cloud@region":"us-west-2","process@executable@path":"/usr/lib/jvm/java-17-openjdk-amd64/bin/java","process@command_line":"/usr/lib/jvm/java-17-openjdk-amd64/bin/java -javaagent:/aws-observability/classpath/aws-opentelemetry-agent-1.19.0-SNAPSHOT.jar","process@runtime@version":"17.0.4+8-Debian-1deb11u1","cloud@platform":"aws_ec2","telemetry@sdk@name":"opentelemetry","container@id":"71301ad845e7d082911d846ac9af3cd9ba4f2144d82d7ac0dfd51f335b256a61","telemetry@auto@version":"1.19.0-aws-SNAPSHOT","os@description":"Linux 5.4.225-139.416.amzn2int.x86_64"},"instrumentationScope":{"version":"1.0","name":"aws-otel","schemaUrl":"https://opentelemetry.io/schemas/1.13.0","attributes":{"identification":"aws-ec2"}},"attributes":{"serviceName":"AOCDockerDemoService","statusCode":"","apiName":"","data_stream":{"dataset":"sum","namespace":"production","type":"metric"}}} +``` + +- Run the next query to get the Histogram type metrics: + +- `GET sso_metrics-default-namespace/_search` +```json +{ + "query":{ + "term": { + "kind":{ + "value":"HISTOGRAM" + } + } + } +} + +``` \ No newline at end of file diff --git a/schema/metrics/samples/sum.json b/schema/metrics/samples/sum.json new file mode 100644 index 000000000..35e319b56 --- /dev/null +++ b/schema/metrics/samples/sum.json @@ -0,0 +1,59 @@ +{ + "kind": "SUM", + "flags": 0, + "description": "Queue Size change", + "monotonic": false, + "unit": "one", + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "exemplars": [], + "name": "queueSizeChange", + "startTime": "2023-01-20T05:16:16.425669Z", + "@timestamp": "2023-01-20T05:16:16.425669Z", + "value.double": 0.0, + "resource": { + "cloud@account@id": "123367104812", + "process@pid": 1, + "host@arch": "amd64", + "host@id": "i-0005de88c8ebe7dbb", + "host@image@id": "ami-093d4bc1f6d4a890b", + "telemetry@sdk@version": "1.19.0", + "service@name": "AOCDockerDemoService", + "process@runtime@name": "OpenJDK Runtime Environment", + "os@type": "linux", + "cloud@availability_zone": "us-west-2b", + "host@type": "c5.2xlarge", + "cloud@provider": "aws", + "telemetry@sdk@language": "java", + "host@name": "ip-172-16-42-233.amazon.com", + "process@runtime@description": "Debian OpenJDK 64-Bit Server VM 17.0.4+8-Debian-1deb11u1", + "service@namespace": "AOCDockerDemo", + "cloud@region": "us-west-2", + "process@executable@path": "/usr/lib/jvm/java-17-openjdk-amd64/bin/java", + "process@command_line": "/usr/lib/jvm/java-17-openjdk-amd64/bin/java -javaagent:/aws-observability/classpath/aws-opentelemetry-agent-1.19.0-SNAPSHOT.jar", + "process@runtime@version": "17.0.4+8-Debian-1deb11u1", + "cloud@platform": "aws_ec2", + "telemetry@sdk@name": "opentelemetry", + "container@id": "71301ad845e7d082911d846ac9af3cd9ba4f2144d82d7ac0dfd51f335b256a61", + "telemetry@auto@version": "1.19.0-aws-SNAPSHOT", + "os@description": "Linux 5.4.225-139.416.amzn2int.x86_64" + }, + "instrumentationScope": { + "version": "1.0", + "name": "aws-otel", + "schemaUrl": "https://opentelemetry.io/schemas/1.13.0", + "attributes": { + "identification": "aws-ec2" + } + }, + + "attributes": { + "serviceName": "AOCDockerDemoService", + "statusCode": "", + "apiName": "", + "data_stream": { + "dataset": "sum", + "namespace": "production", + "type": "metric" + } + } +} diff --git a/schema/traces/README.md b/schema/traces/README.md new file mode 100644 index 000000000..dcf16adcb --- /dev/null +++ b/schema/traces/README.md @@ -0,0 +1,153 @@ +# Traces Schema Support +Observability in the software industry is the ability to monitor and diagnose systems and applications in real-time, in order to understand how they are behaving and identify potential issues. +Traces are a critical component of observability, providing detailed information about the flow of requests through a system, including timing information and any relevant contextual data. + +The importance of supporting traces schema lies in the fact that it enables better analysis and understanding of system behavior. +A structured schema provides a clear, consistent format for traces, making it easier for observability tools to process and aggregate the data. +This in turn makes it easier for engineers to understand the performance and behavior of their systems, and quickly identify potential issues. + +When traces are unstructured, it can be difficult for observability tools to extract meaningful information from them - For example, if the timing information for a particular request is not consistently represented in the same format, +it can be difficult to compare and analyze performance data over time. Similarly, if contextual data is not consistently recorded, it can be difficult to understand the context in which a particular request was executed. + +With a structured schema in place, observability tools can automatically extract and aggregate data, making it easier to understand system behavior at a high level. +This can help teams quickly identify performance bottlenecks, track the root cause of errors, and resolve issues more efficiently. + +## Details +The next section provides the Simple Schema for Observability support which conforms with the OTEL specification. + +- traces.mapping presents the template mapping for creating the Simple Schema for Observability index +- traces.schema presents the json schema validation for verification of a trace document conforms to the mapping structure + +### data-stream +[data-stream](https://opensearch.org/docs/latest/opensearch/data-streams/) Data streams simplify this process and enforce a setup that best suits time-series data, such as being designed primarily for append-only data and ensuring that each document has a timestamp field. +A data stream is internally composed of multiple backing indices. Search requests are routed to all the backing indices, while indexing requests are routed to the latest write index. + +As part of the Observability naming scheme, the value of the data stream fields combine to the name of the actual data stream : + +`{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. +This means the fields can only contain characters that are valid as part of names of data streams. + +- **type** conforms to one of the supported Observability signals (Traces, Logs, Metrics, Alerts) +- **dataset** user defined field that can mainly be utilized for describing the origin of the signal +- **namespace** user custom field that can be used to describe any customer domain specific classification + +#### Timestamp field +As part of the data-stream definition the `@timestamp` is mandatory, if the field is not present to begin with use `ObservedTimestamp` as value for this field +**Note** - `@timestamp` value is the actual signal happening time and `observedTimestamp` is the time the exporter reads the actual event record. + +### Instrumentation scope +This is a logical unit of the application with which the emitted telemetry can be associated. It is typically the developer’s choice to decide what denotes a reasonable instrumentation scope. +The most common approach is to use the instrumentation library as the scope, however other scopes are also common, e.g. a module, a package, or a class can be chosen as the instrumentation scope. + +The instrumentation scope may have zero or more additional attributes that provide additional information about the scope. As an example the field +`instrumentationScope.attributes.identification` is presented will be used to determine the resource origin of the signal and can be used to filter accordingly + +## Traces +see [OTEL traces convention](https://github.com/open-telemetry/opentelemetry-specification/tree/main/semantic_conventions/trace) + +Traces are defined implicitly by their Spans - In particular, a Trace can be thought of as a directed acyclic graph (DAG) of Spans, where the edges between Spans are defined as parent/child relationship. + +## Spans +A span represents an operation within a transaction. Each Span encapsulates the following state: +Observability in the software industry is the ability to monitor and diagnose systems and applications in real-time, in order to understand how they are behaving and identify potential issues. +Traces are a critical component of observability, providing detailed information about the flow of requests through a system, including timing information and any relevant contextual data. + +The importance of supporting traces schema lies in the fact that it enables better analysis and understanding of system behavior. +A structured schema provides a clear, consistent format for traces, making it easier for observability tools to process and aggregate the data. +This in turn makes it easier for engineers to understand the performance and behavior of their systems, and quickly identify potential issues. + +When traces are unstructured, it can be difficult for observability tools to extract meaningful information from them - For example, if the timing information for a particular request is not consistently represented in the same format, +it can be difficult to compare and analyze performance data over time. Similarly, if contextual data is not consistently recorded, it can be difficult to understand the context in which a particular request was executed. + +With a structured schema in place, observability tools can automatically extract and aggregate data, making it easier to understand system behavior at a high level. +This can help teams quickly identify performance bottlenecks, track the root cause of errors, and resolve issues more efficiently. + +## Details +The next section provides the Simple Schema for Observability support which conforms with the OTEL specification. + +- traces.mapping presents the template mapping for creating the Simple Schema for Observability index +- traces.schema presents the json schema validation for verification of a trace document conforms to the mapping structure + +### data-stream +[data-stream](https://opensearch.org/docs/latest/opensearch/data-streams/) Data streams simplify this process and enforce a setup that best suits time-series data, such as being designed primarily for append-only data and ensuring that each document has a timestamp field. +A data stream is internally composed of multiple backing indices. Search requests are routed to all the backing indices, while indexing requests are routed to the latest write index. + +As part of the Observability naming scheme, the value of the data stream fields combine to the name of the actual data stream : + +`{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. +This means the fields can only contain characters that are valid as part of names of data streams. + +- **type** conforms to one of the supported Observability signals (Traces, Logs, Metrics, Alerts) +- **dataset** user defined field that can mainly be utilized for describing the origin of the signal +- **namespace** user custom field that can be used to describe any customer domain specific classification + +#### Timestamp field +As part of the data-stream definition the `@timestamp` is mandatory, if the field is not present to begin with use `ObservedTimestamp` as value for this field +**Note** - `@timestamp` value is the actual signal happening time and `observedTimestamp` is the time the exporter reads the actual event record. + +### Instrumentation scope +This is a logical unit of the application with which the emitted telemetry can be associated. It is typically the developer’s choice to decide what denotes a reasonable instrumentation scope. +The most common approach is to use the instrumentation library as the scope, however other scopes are also common, e.g. a module, a package, or a class can be chosen as the instrumentation scope. + +The instrumentation scope may have zero or more additional attributes that provide additional information about the scope. As an example the field +`instrumentationScope.attributes.identification` is presented will be used to determine the resource origin of the signal and can be used to filter accordingly + +## Traces +see [OTEL traces convention](https://github.com/open-telemetry/opentelemetry-specification/tree/main/semantic_conventions/trace) + +Traces are defined implicitly by their Spans - In particular, a Trace can be thought of as a directed acyclic graph (DAG) of Spans, where the edges between Spans are defined as parent/child relationship. + +## Spans +A span represents an operation within a transaction. Each Span encapsulates the following state: + +* An operation name +* start and finish timestamp +* Attributes list of key-value pairs. +* Set of Events, each of which is itself a tuple (timestamp, name, Attributes) +* Parent's Span identifier. +* Links to causally-related Spans (via the SpanContext of those related Spans). +* SpanContext information required to reference a Span. + +### SpanContext +Represents all the information that identifies Span in the Trace and is propagated to child Spans and across process boundaries. +A **SpanContext** contains the tracing identifiers and the options that are propagated from parent to child Spans. + +* `TraceId` - It is worldwide unique with practically sufficient probability by being made as 16 randomly generated bytes - used to group all spans for a specific trace together across all processes. +* `SpanId` - It is the identifier for a span, globally unique with practically sufficient probability by being made as 8 randomly generated bytes. When passed to a child Span this identifier becomes the parent span id for the child Span. +* `Tracestate` - carries tracing-system specific context in a list of key value pairs . Trace-state allows different vendors propagate additional information and inter-operate with their legacy Id formats. For more details see this. + +Additional fields can be supported via the Attributes key/value store see [traces](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/README.md) + +### Structure +The default fields that are supported by the traces are +- **TraceId** : It is worldwide unique with practically sufficient probability by being made as 16 randomly generated bytes - used to group all spans for a specific trace together across all processes. +- **SpanId** : It is the identifier for a span, globally unique with practically sufficient probability by being made as 8 randomly generated bytes. When passed to a child Span this identifier becomes the parent span id for the child Span. +- **ParentId** : It is the identifier for a span's parent span. +- **TraceState** : carries tracing-system specific context in a list of key value pairs. Tracestate allows different vendors propagate additional information and inter-operate with their legacy Id formats. + +- **Name** : String representing the span's name +- **Kind** + - SpanKind.CLIENT + - SpanKind.SERVER + - SpanKind.CONSUMER + - SpanKind.PRODUCER + - SpanKind.INTERNAL + +- **StartTime** : Start time of the event +- **EndTime** : End time of the event +- **Attributes** + - An Attribute is a key-value pair, which has the following structure [Attributes](https://github.com/open-telemetry/opentelemetry-specification/blob/b00980832b4b823155001df56dbf9203d4e53f98/specification/common/README.md#attribute) + +- **DroppedAttributesCount** : Integer counting the dropped attributes +- **Events** : A set of the next tuples (timestamp, name, Attributes) +- **DroppedEventsCount** : Integer counting the dropped events +- **Links** : links to causally-related Spans +- **DroppedLinksCount** : Integer counting the dropped links +- **Status** - + + _status code is the int value + status message is the text representation_ + + - `UNSET = 0` : The default status. + - `OK = 1` : The operation has been validated by an Application developer or Operator to have completed successfully. + - `ERROR = 2` : The operation contains an error. \ No newline at end of file diff --git a/schema/traces/samples/load_samples.md b/schema/traces/samples/load_samples.md new file mode 100644 index 000000000..9536522c3 --- /dev/null +++ b/schema/traces/samples/load_samples.md @@ -0,0 +1,28 @@ +## Load samples +For loading the given samples run the next request once the Opensearch cluster including Observability plugin has started: + + +`PUT sso_traces-default-namespace/_bulk` +```json +{ "create":{ } } +{"traceId":"4fa04f117be100f476b175e41096e736","spanId":"e275ac9d21929e9b","traceState":[],"parentSpanId":"","name":"client_checkout","kind":"INTERNAL","@timestamp":"2021-11-13T20:20:39+00:00","endTime":"2021-11-14T20:10:41+00:00","droppedAttributesCount":0,"droppedEventsCount":0,"droppedLinksCount":0,"resource":{"telemetry@sdk@name":"opentelemetry","telemetry@sdk@language":"python","telemetry@sdk@version":"0.14b0","service@name":"frontend-client","host@hostname":"ip-172-31-10-8.us-west-2.compute.internal"},"status":{"code":0}} +{ "create":{ } } +{"traceId":"15d30e4d211d79e10fcaeab97015c90d","spanId":"5bcca8ba513bb54a","traceState":[],"parentSpanId":"","name":"mysql","kind":"CLIENT","@timestamp":"2021-11-13T20:20:39+00:00","endTime":"2021-11-14T20:10:41+00:00","events":[{"@timestamp":"2021-03-25T17:21:03.044+00:00","name":"exception","attributes":{"exception@message":"1050 %2842S01%29: Table %27User_Carts%27 already exists","exception@type":"ProgrammingError","exception@stacktrace":"Traceback %28most recent call last :File /usr/lib/python3.6/site-packages/opentelemetry/sdk/trace/__init__.py, line 804, in use_span yield spanFile /usr/lib/python3.6/site-packages/opentelemetry/instrumentation/dbapi/__init__.py, line 354, in traced_executionraise exFile /usr/lib/python3.6/site-packages/opentelemetry/instrumentation/dbapi/__init__.py, line 345, in traced_executionresult = query_method%28%2Aargs, %2A%2Akwargs%29File /usr/lib/python3.6/site-packages/mysql/connector/cursor.py"},"droppedAttributesCount":0}],"links":[],"droppedAttributesCount":0,"droppedEventsCount":0,"droppedLinksCount":0,"status":{"message":"1050 %2842S01%29: Table %27User_Carts%27 already exists","code":2},"attributes":{"data_stream":{"type":"span","dataset":"mysql"},"component":"mysql","db@user":"root","net@peer@name":"localhost","db@type":"sql","net@peer@port":3306,"db@instance":"","db@statement":"CREATE TABLE `User_Carts` %28 `ItemId` varchar%2816%29 NOT NULL, `TotalQty` int%2811%29 NOT NULL, PRIMARY KEY %28`ItemId`%29%29 ENGINE=InnoDB"},"resource":{"telemetry@sdk@language":"python","service@name":"database","telemetry@sdk@version":"0.14b0","service@instance@id":"140307275923408","telemetry@sdk@name":"opentelemetry","host@hostname":"ip-172-31-10-8.us-west-2.compute.internal"}} +{ "create":{ } } +{"traceId":"c1d985bd02e1dbb85b444011f19a1ecc","spanId":"55a698828fe06a42","traceState":[],"parentSpanId":"","name":"mysql","kind":"CLIENT","@timestamp":"2021-11-13T20:20:39+00:00","endTime":"2021-11-14T20:10:41+00:00","events":[{"@timestamp":"2021-03-25T17:21:03+00:00","name":"exception","attributes":{"exception@message":"1050 %2842S01%29: Table Inventory_Items already exists","exception@type":"ProgrammingError","exception@stacktrace":"Traceback most recent call last"},"droppedAttributesCount":0}],"links":[{"traceId":"c1d985bd02e1dbb85b444011f19a1ecc","spanId":"55a698828fe06a42w2","traceState":[],"attributes":{"db@user":"root","net@peer@name":"localhost","component":"mysql","db@type":"sql","net@peer@port":3306,"db@instance":"","db@statement":"CREATE TABLE `Inventory_Items` %28 `ItemId` varchar%2816%29 NOT NULL, `TotalQty` int%2811%29 NOT NULL, PRIMARY KEY %28`ItemId`%29%29 ENGINE=InnoDB"},"droppedAttributesCount":0}],"droppedAttributesCount":0,"droppedEventsCount":0,"droppedLinksCount":0,"resource":{"telemetry@sdk@language":"python","telemetry@sdk@version":"0.14b0","service@instance@id":"140307275923408","service@name":"database","telemetry@sdk@name":"opentelemetry","host@hostname":"ip-172-31-10-8.us-west-2.compute.internal"},"status":{"code":2,"message":"1050 %2842S01%29: Table %27Inventory_Items%27 already exists"},"attributes":{"data_stream":{"type":"span","namespace":"exceptions","dataset":"mysql"},"db@user":"root","net@peer@name":"localhost","component":"mysql","db@type":"sql","net@peer@port":3306,"db@instance":"","db@statement":"CREATE TABLE `Inventory_Items` %28 `ItemId` varchar%2816%29 NOT NULL, `TotalQty` int%2811%29 NOT NULL, PRIMARY KEY %28`ItemId`%29%29 ENGINE=InnoDB"}} +``` + +Run the next query to get the Spans kind CLIENT: + +- `GET sso_traces-default-namespace/_search` +```json +{ + "query":{ + "term": { + "kind":{ + "value":"CLIENT" + } + } + } +} +``` \ No newline at end of file diff --git a/schema/traces/samples/traceA.json b/schema/traces/samples/traceA.json new file mode 100644 index 000000000..451ae8249 --- /dev/null +++ b/schema/traces/samples/traceA.json @@ -0,0 +1,23 @@ +{ + "traceId": "4fa04f117be100f476b175e41096e736", + "spanId": "e275ac9d21929e9b", + "traceState": [], + "parentSpanId": "", + "name": "client_checkout", + "kind": "INTERNAL", + "@timestamp": "2021-11-13T20:20:39+00:00", + "endTime": "2021-11-14T20:10:41+00:00", + "droppedAttributesCount": 0, + "droppedEventsCount": 0, + "droppedLinksCount": 0, + "resource": { + "telemetry@sdk@name": "opentelemetry", + "telemetry@sdk@language": "python", + "telemetry@sdk@version": "0.14b0", + "service@name": "frontend-client", + "host@hostname": "ip-172-31-10-8.us-west-2.compute.internal" + }, + "status": { + "code": 0 + } +} \ No newline at end of file diff --git a/schema/traces/samples/traceB.json b/schema/traces/samples/traceB.json new file mode 100644 index 000000000..cf5ab4979 --- /dev/null +++ b/schema/traces/samples/traceB.json @@ -0,0 +1,51 @@ +{ + "traceId": "15d30e4d211d79e10fcaeab97015c90d", + "spanId": "5bcca8ba513bb54a", + "traceState": [], + "parentSpanId": "", + "name": "mysql", + "kind": "CLIENT", + "@timestamp": "2021-11-13T20:20:39+00:00", + "endTime": "2021-11-14T20:10:41+00:00", + "events": [ + { + "@timestamp": "2021-03-25T17:21:03.044+00:00", + "name": "exception", + "attributes": { + "exception@message": "1050 %2842S01%29: Table %27User_Carts%27 already exists", + "exception@type": "ProgrammingError", + "exception@stacktrace": "Traceback %28most recent call last :File /usr/lib/python3.6/site-packages/opentelemetry/sdk/trace/__init__.py, line 804, in use_span yield spanFile /usr/lib/python3.6/site-packages/opentelemetry/instrumentation/dbapi/__init__.py, line 354, in traced_executionraise exFile /usr/lib/python3.6/site-packages/opentelemetry/instrumentation/dbapi/__init__.py, line 345, in traced_executionresult = query_method%28%2Aargs, %2A%2Akwargs%29File /usr/lib/python3.6/site-packages/mysql/connector/cursor.py" + }, + "droppedAttributesCount": 0 + } + ], + "links": [], + "droppedAttributesCount": 0, + "droppedEventsCount": 0, + "droppedLinksCount": 0, + "status": { + "message": "1050 %2842S01%29: Table %27User_Carts%27 already exists", + "code": 2 + }, + "attributes": { + "data_stream": { + "type": "span", + "dataset": "mysql" + }, + "component": "mysql", + "db@user": "root", + "net@peer@name": "localhost", + "db@type": "sql", + "net@peer@port": 3306, + "db@instance": "", + "db@statement": "CREATE TABLE `User_Carts` %28 `ItemId` varchar%2816%29 NOT NULL, `TotalQty` int%2811%29 NOT NULL, PRIMARY KEY %28`ItemId`%29%29 ENGINE=InnoDB" + }, + "resource": { + "telemetry@sdk@language": "python", + "service@name": "database", + "telemetry@sdk@version": "0.14b0", + "service@instance@id": "140307275923408", + "telemetry@sdk@name": "opentelemetry", + "host@hostname": "ip-172-31-10-8.us-west-2.compute.internal" + } +} \ No newline at end of file diff --git a/schema/traces/samples/traceC.json b/schema/traces/samples/traceC.json new file mode 100644 index 000000000..7da4fd7a7 --- /dev/null +++ b/schema/traces/samples/traceC.json @@ -0,0 +1,68 @@ +{ + "traceId": "c1d985bd02e1dbb85b444011f19a1ecc", + "spanId": "55a698828fe06a42", + "traceState": [], + "parentSpanId": "", + "name": "mysql", + "kind": "CLIENT", + "@timestamp": "2021-11-13T20:20:39+00:00", + "endTime": "2021-11-14T20:10:41+00:00", + "events": [ + { + "@timestamp": "2021-03-25T17:21:03+00:00", + "name": "exception", + "attributes": { + "exception@message": "1050 %2842S01%29: Table Inventory_Items already exists", + "exception@type": "ProgrammingError", + "exception@stacktrace": "Traceback most recent call last" + }, + "droppedAttributesCount": 0 + } + ], + "links": [ + { + "traceId": "c1d985bd02e1dbb85b444011f19a1ecc", + "spanId": "55a698828fe06a42w2", + "traceState": [], + "attributes": { + "db@user": "root", + "net@peer@name": "localhost", + "component": "mysql", + "db@type": "sql", + "net@peer@port": 3306, + "db@instance": "", + "db@statement": "CREATE TABLE `Inventory_Items` %28 `ItemId` varchar%2816%29 NOT NULL, `TotalQty` int%2811%29 NOT NULL, PRIMARY KEY %28`ItemId`%29%29 ENGINE=InnoDB" + }, + "droppedAttributesCount": 0 + } + ], + "droppedAttributesCount": 0, + "droppedEventsCount": 0, + "droppedLinksCount": 0, + "resource": { + "telemetry@sdk@language": "python", + "telemetry@sdk@version": "0.14b0", + "service@instance@id": "140307275923408", + "service@name": "database", + "telemetry@sdk@name": "opentelemetry", + "host@hostname": "ip-172-31-10-8.us-west-2.compute.internal" + }, + "status": { + "code": 2, + "message": "1050 %2842S01%29: Table %27Inventory_Items%27 already exists" + }, + "attributes": { + "data_stream": { + "type": "span", + "namespace": "exceptions", + "dataset": "mysql" + }, + "db@user": "root", + "net@peer@name": "localhost", + "component": "mysql", + "db@type": "sql", + "net@peer@port": 3306, + "db@instance": "", + "db@statement": "CREATE TABLE `Inventory_Items` %28 `ItemId` varchar%2816%29 NOT NULL, `TotalQty` int%2811%29 NOT NULL, PRIMARY KEY %28`ItemId`%29%29 ENGINE=InnoDB" + } +} diff --git a/schema/traces/traces-mapping.json b/schema/traces/traces-mapping.json new file mode 100644 index 000000000..4e8b26dbe --- /dev/null +++ b/schema/traces/traces-mapping.json @@ -0,0 +1,197 @@ +{ + "index_patterns": [ + "sso_traces-*-*" + ], + "data_stream": {}, + "template": { + "mappings": { + "_meta": { + "version": "0.1.0-dev" + }, + "dynamic_templates": [ + { + "attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "attributes.*" + } + }, + { + "events_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "events.attributes.*" + } + }, + { + "links_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "links.attributes.*" + } + }, + { + "instrumentation_scope_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "instrumentationScope.attributes.*" + } + }, + { + "resources_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "resource.*" + } + } + ], + "_source": { + "enabled": true + }, + "properties": { + "traceId": { + "ignore_above": 256, + "type": "keyword" + }, + "spanId": { + "ignore_above": 256, + "type": "keyword" + }, + "traceState": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "parentSpanId": { + "ignore_above": 256, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 128, + "type": "keyword" + }, + "startTime": { + "type": "date_nanos" + }, + "endTime": { + "type": "date_nanos" + }, + "droppedAttributesCount": { + "type": "long" + }, + "droppedEventsCount": { + "type": "long" + }, + "droppedLinksCount": { + "type": "long" + }, + "status": { + "properties": { + "code": { + "ignore_above": 128, + "type": "keyword" + }, + "message": { + "ignore_above": 128, + "type": "keyword" + } + } + }, + "attributes": { + "type": "object", + "properties": { + "data_stream": { + "properties": { + "dataset": { + "ignore_above": 128, + "type": "keyword" + }, + "namespace": { + "ignore_above": 128, + "type": "keyword" + }, + "type": { + "ignore_above": 56, + "type": "keyword" + } + } + } + } + }, + "events": { + "type": "nested", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "@timestamp": { + "type": "date_nanos" + }, + "observedTimestamp": { + "type": "date_nanos" + } + } + }, + "links": { + "type": "nested", + "properties": { + "traceId": { + "ignore_above": 256, + "type": "keyword" + }, + "spanId": { + "ignore_above": 256, + "type": "keyword" + }, + "traceState": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "instrumentationScope": { + "properties": { + "name": { + "type": "keyword" + }, + "version": { + "type": "keyword" + }, + "droppedAttributesCount": { + "type": "integer" + }, + "schemaUrl": { + "type": "keyword" + } + } + }, + "schemaUrl": { + "type": "keyword" + } + } + } + }, + "version": 1, + "_meta": { + "description": "Observability Traces Mapping Template" + } +} \ No newline at end of file diff --git a/schema/traces/traces.schema b/schema/traces/traces.schema new file mode 100644 index 000000000..49d98b1fc --- /dev/null +++ b/schema/traces/traces.schema @@ -0,0 +1,249 @@ +{ + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://opensearch.org/schemas/Span", + "type": "object", + "additionalProperties": false, + "properties": { + "traceId": { + "type": "string" + }, + "spanId": { + "type": "string" + }, + "traceState": { + "type": "array", + "items": { + "$ref": "/schemas/KeyValue" + } + }, + "status": { + "type": "object", + "$ref": "/schemas/Status" + }, + "parentSpanId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string", + "items": { + "type": "string", + "enum": [ + "SPAN_KIND_UNSPECIFIED", + "SPAN_KIND_INTERNAL", + "SPAN_KIND_SERVER", + "SPAN_KIND_CLIENT", + "SPAN_KIND_PRODUCER", + "SPAN_KIND_CONSUMER" + ] + } + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "endTime": { + "type": "string", + "format": "date-time" + }, + "resource": { + "type": "object" + }, + "attributes": { + "$ref": "/schemas/Attributes" + }, + "events": { + "type": "array", + "items": { + "$ref": "/schemas/Event" + } + }, + "links": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "traceId": { + "type": "string" + }, + "spanId": { + "type": "string" + }, + "traceState": { + "type": "array", + "items": { + "type": "object" + } + }, + "attributes": { + "$ref": "/schemas/Attributes" + }, + "droppedAttributesCount": { + "type": "integer" + } + }, + "required": [ + "traceId", + "spanId", + "traceState" + ], + "title": "Links" + } + }, + "droppedAttributesCount": { + "type": "integer" + }, + "droppedEventsCount": { + "type": "integer" + }, + "droppedLinksCount": { + "type": "integer" + }, + "instrumentationScope": { + "$ref": "/schemas/InstrumentationScope" + }, + "schemaUrl": { + "type": "string" + } + }, + "required": [ + "traceId", + "spanId", + "startTime", + "endTime", + "kind", + "name", + "status" + ], + "$defs": { + "Status": { + "$id": "/schemas/Status", + "type": "object", + "additionalProperties": false, + "properties": { + "code": { + "type": "integer", + "items": { + "type": "integer", + "enum": [ + 0, + 1, + 2 + ] + } + }, + "message": { + "type": "string", + "items": { + "type": "string", + "enum": [ + "UNSET", + "OK", + "ERROR" + ] + } + } + }, + "required": [ + "code" + ], + "title": "Status" + }, + "Event": { + "$id": "/schemas/Event", + "type": "object", + "additionalProperties": false, + "properties": { + "@timestamp": { + "type": "string", + "format": "date-time" + }, + "observedTimestamp": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string" + }, + "attributes": { + "$ref": "/schemas/Attributes" + }, + "droppedAttributesCount": { + "type": "integer" + } + }, + "required": [ + "attributes", + "droppedAttributesCount", + "name", + "@timestamp" + ], + "title": "Event" + }, + "Attributes": { + "$id": "/schemas/Attributes", + "type": "object", + "additionalProperties": true, + "properties": { + "data_stream": { + "$ref": "/schemas/Dataflow" + } + }, + "title": "Attributes" + }, + "KeyValue": { + "$id": "/schemas/KeyValue", + "type": "object", + "additionalProperties": true, + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "object" + } + }, + "title": "KeyValue" + }, + "InstrumentationScope": { + "$id": "/schemas/InstrumentationScope", + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "schemaUrl": { + "type": "string" + }, + "droppedAttributesCount": { + "type": "integer" + } + }, + "title": "InstrumentationScope" + }, + "Dataflow": { + "$id": "/schemas/Dataflow", + "type": "object", + "additionalProperties": true, + "properties": { + "type": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "dataset": { + "type": "string" + } + }, + "title": "Attributes" + } + } +} diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 000000000..4b2893f30 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# +# Copyright OpenSearch Contributors +# SPDX-License-Identifier: Apache-2.0 +# + +set -ex + +function usage() { + echo "Usage: $0 [args]" + echo "" + echo "Arguments:" + echo -e "-v VERSION\t[Required] OpenSearch version." + echo -e "-q QUALIFIER\t[Optional] Version qualifier." + echo -e "-s SNAPSHOT\t[Optional] Build a snapshot, default is 'false'." + echo -e "-p PLATFORM\t[Optional] Platform, ignored." + echo -e "-a ARCHITECTURE\t[Optional] Build architecture, ignored." + echo -e "-o OUTPUT\t[Optional] Output path, default is 'artifacts'." + echo -e "-h help" +} + +while getopts ":h:v:q:s:o:p:a:" arg; do + case $arg in + h) + usage + exit 1 + ;; + v) + VERSION=$OPTARG + ;; + q) + QUALIFIER=$OPTARG + ;; + s) + SNAPSHOT=$OPTARG + ;; + o) + OUTPUT=$OPTARG + ;; + p) + PLATFORM=$OPTARG + ;; + a) + ARCHITECTURE=$OPTARG + ;; + :) + echo "Error: -${OPTARG} requires an argument" + usage + exit 1 + ;; + ?) + echo "Invalid option: -${arg}" + exit 1 + ;; + esac +done + +if [ -z "$VERSION" ]; then + echo "Error: You must specify the OpenSearch version" + usage + exit 1 +fi + +[[ ! -z "$QUALIFIER" ]] && VERSION=$VERSION-$QUALIFIER +[[ "$SNAPSHOT" == "true" ]] && VERSION=$VERSION-SNAPSHOT +[ -z "$OUTPUT" ] && OUTPUT=artifacts + +mkdir -p $OUTPUT + +./gradlew assemble --no-daemon --refresh-dependencies -DskipTests=true -Dopensearch.version=$VERSION -Dbuild.snapshot=$SNAPSHOT -Dbuild.version_qualifier=$QUALIFIER + +zipPath=$(find . -path \*build/distributions/*.zip) +distributions="$(dirname "${zipPath}")" + +echo "COPY ${distributions}/*.zip" +mkdir -p $OUTPUT/plugins +cp ${distributions}/*.zip ./$OUTPUT/plugins + +./gradlew publishPluginZipPublicationToZipStagingRepository -Dopensearch.version=$VERSION -Dbuild.snapshot=$SNAPSHOT -Dbuild.version_qualifier=$QUALIFIER +mkdir -p $OUTPUT/maven/org/opensearch +cp -r ./build/local-staging-repo/org/opensearch/. $OUTPUT/maven/org/opensearch diff --git a/src/main/kotlin/org/opensearch/observability/ObservabilityPlugin.kt b/src/main/kotlin/org/opensearch/observability/ObservabilityPlugin.kt index 1fcae8a03..5a1e18f60 100644 --- a/src/main/kotlin/org/opensearch/observability/ObservabilityPlugin.kt +++ b/src/main/kotlin/org/opensearch/observability/ObservabilityPlugin.kt @@ -27,6 +27,8 @@ import org.opensearch.observability.action.DeleteObservabilityObjectAction import org.opensearch.observability.action.GetObservabilityObjectAction import org.opensearch.observability.action.UpdateObservabilityObjectAction import org.opensearch.observability.index.ObservabilityIndex +import org.opensearch.observability.index.ObservabilityMetricsIndex +import org.opensearch.observability.index.ObservabilityTracesIndex import org.opensearch.observability.resthandler.ObservabilityRestHandler import org.opensearch.observability.resthandler.ObservabilityStatsRestHandler import org.opensearch.observability.resthandler.SchedulerRestHandler @@ -34,6 +36,7 @@ import org.opensearch.observability.scheduler.ObservabilityJobParser import org.opensearch.observability.scheduler.ObservabilityJobRunner import org.opensearch.observability.settings.PluginSettings import org.opensearch.plugins.ActionPlugin +import org.opensearch.plugins.ClusterPlugin import org.opensearch.plugins.Plugin import org.opensearch.repositories.RepositoriesService import org.opensearch.rest.RestController @@ -47,7 +50,8 @@ import java.util.function.Supplier * Entry point of the OpenSearch Observability plugin. * This class initializes the rest handlers. */ -class ObservabilityPlugin : Plugin(), ActionPlugin, JobSchedulerExtension { +@Suppress("TooManyFunctions") +class ObservabilityPlugin : Plugin(), ActionPlugin, ClusterPlugin, JobSchedulerExtension { companion object { const val PLUGIN_NAME = "opensearch-observability" @@ -81,9 +85,17 @@ class ObservabilityPlugin : Plugin(), ActionPlugin, JobSchedulerExtension { ): Collection { PluginSettings.addSettingsUpdateConsumer(clusterService) ObservabilityIndex.initialize(client, clusterService) + ObservabilityMetricsIndex.initialize(client, clusterService) + ObservabilityTracesIndex.initialize(client, clusterService) return emptyList() } + override fun onNodeStarted() { + ObservabilityIndex.afterStart() + ObservabilityTracesIndex.afterStart() + ObservabilityMetricsIndex.afterStart() + } + /** * {@inheritDoc} */ diff --git a/src/main/kotlin/org/opensearch/observability/index/ObservabilityIndex.kt b/src/main/kotlin/org/opensearch/observability/index/ObservabilityIndex.kt index 3363715f8..f287d16fc 100644 --- a/src/main/kotlin/org/opensearch/observability/index/ObservabilityIndex.kt +++ b/src/main/kotlin/org/opensearch/observability/index/ObservabilityIndex.kt @@ -20,6 +20,7 @@ import org.opensearch.action.search.SearchRequest import org.opensearch.action.update.UpdateRequest import org.opensearch.client.Client import org.opensearch.cluster.service.ClusterService +import org.opensearch.common.component.LifecycleListener import org.opensearch.common.unit.TimeValue import org.opensearch.common.xcontent.LoggingDeprecationHandler import org.opensearch.common.xcontent.NamedXContentRegistry @@ -48,7 +49,7 @@ import java.util.concurrent.TimeUnit * Class for doing OpenSearch index operation to maintain observability objects in cluster. */ @Suppress("TooManyFunctions") -internal object ObservabilityIndex { +internal object ObservabilityIndex : LifecycleListener() { private val log by logger(ObservabilityIndex::class.java) private const val INDEX_NAME = ".opensearch-observability" private const val NOTEBOOKS_INDEX_NAME = ".opensearch-notebooks" @@ -82,6 +83,14 @@ internal object ObservabilityIndex { this.mappingsUpdated = false } + /** + * once lifecycle indicate start has occurred - instantiating system index creation + */ + override fun afterStart() { + // create default index + createIndex() + } + /** * Create index using the mapping and settings defined in resource */ diff --git a/src/main/kotlin/org/opensearch/observability/index/ObservabilityMetricsIndex.kt b/src/main/kotlin/org/opensearch/observability/index/ObservabilityMetricsIndex.kt new file mode 100644 index 000000000..f3a30e6ac --- /dev/null +++ b/src/main/kotlin/org/opensearch/observability/index/ObservabilityMetricsIndex.kt @@ -0,0 +1,122 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ +package org.opensearch.observability.index + +import org.opensearch.ResourceAlreadyExistsException +import org.opensearch.ResourceNotFoundException +import org.opensearch.action.admin.indices.template.get.GetIndexTemplatesRequest +import org.opensearch.action.admin.indices.template.put.PutComposableIndexTemplateAction +import org.opensearch.client.Client +import org.opensearch.cluster.metadata.ComposableIndexTemplate +import org.opensearch.cluster.metadata.Template +import org.opensearch.cluster.service.ClusterService +import org.opensearch.common.component.LifecycleListener +import org.opensearch.common.compress.CompressedXContent +import org.opensearch.common.settings.Settings +import org.opensearch.observability.ObservabilityPlugin.Companion.LOG_PREFIX +import org.opensearch.observability.settings.PluginSettings +import org.opensearch.observability.util.SecureIndexClient +import org.opensearch.observability.util.logger +import java.util.* + +/** + * Class for doing OpenSearch Metrics schema mapping & default index init operation + */ +internal object ObservabilityMetricsIndex : LifecycleListener() { + private val log by logger(ObservabilityMetricsIndex::class.java) + private const val METRICS_MAPPING_TEMPLATE_NAME = "sso_metric_template" + private const val METRICS_MAPPING_TEMPLATE_FILE = "metrics-mapping-template.json" + private const val METRIC_PATTERN_NAME = "sso_metrics-*-*" + + private lateinit var client: Client + private lateinit var clusterService: ClusterService + + /** + * Initialize the class + * @param client The OpenSearch client + * @param clusterService The OpenSearch cluster service + */ + fun initialize(client: Client, clusterService: ClusterService): ObservabilityMetricsIndex { + this.client = SecureIndexClient(client) + this.clusterService = clusterService + return this + } + + /** + * once lifecycle indicate start has occurred - instantiating the mapping template + */ + override fun afterStart() { + // create default mapping + createMappingTemplate() + } + + /** + * Create the pre-defined mapping template + */ + @Suppress("TooGenericExceptionCaught", "MagicNumber") + private fun createMappingTemplate() { + log.info("$LOG_PREFIX:createMappingTemplate $METRICS_MAPPING_TEMPLATE_NAME API called") + if (!isTemplateExists(METRICS_MAPPING_TEMPLATE_NAME)) { + val classLoader = ObservabilityMetricsIndex::class.java.classLoader + val indexMappingSource = classLoader.getResource(METRICS_MAPPING_TEMPLATE_FILE)?.readText()!! + val settings = Settings.builder() + .put("index.number_of_shards", 3) + .put("index.auto_expand_replicas", "0-2") + .build() + val template = Template(settings, CompressedXContent(indexMappingSource), null) + val request = PutComposableIndexTemplateAction.Request(METRICS_MAPPING_TEMPLATE_NAME) + .indexTemplate( + ComposableIndexTemplate( + listOf(METRIC_PATTERN_NAME), + template, + Collections.emptyList(), + 1, + 1, + Collections.singletonMap("description", "Observability Metrics Mapping Template") as Map?, + ComposableIndexTemplate.DataStreamTemplate() + ) + ) + try { + val validationException = request.validateIndexTemplate(null) + if (validationException != null && !validationException.validationErrors().isEmpty()) { + error("$LOG_PREFIX:Index Template $METRICS_MAPPING_TEMPLATE_NAME validation errors ${validationException.message}") + } + val actionFuture = client.admin().indices().execute(PutComposableIndexTemplateAction.INSTANCE, request) + val response = actionFuture.actionGet(PluginSettings.operationTimeoutMs) + if (response.isAcknowledged) { + log.info("$LOG_PREFIX:Mapping Template $METRICS_MAPPING_TEMPLATE_NAME creation Acknowledged") + } else { + error("$LOG_PREFIX:Mapping Template $METRICS_MAPPING_TEMPLATE_NAME creation not Acknowledged") + } + } catch (exception: ResourceAlreadyExistsException) { + log.warn("message: ${exception.message}") + } catch (exception: Exception) { + if (exception.cause !is ResourceAlreadyExistsException) { + throw exception + } + } + } + } + + /** + * Check if the mapping template is created and available. + * @param template name + * @return true if template is available, false otherwise + */ + @Suppress("TooGenericExceptionCaught", "SwallowedException", "RethrowCaughtException") + private fun isTemplateExists(template: String): Boolean { + try { + val indices = client.admin().indices() + val response = indices.getTemplates(GetIndexTemplatesRequest(template)).get() + return response.indexTemplates.isNotEmpty() + } catch (exception: ResourceNotFoundException) { + return false + } catch (exception: ResourceAlreadyExistsException) { + return true + } catch (exception: Exception) { + throw exception + } + } +} diff --git a/src/main/kotlin/org/opensearch/observability/index/ObservabilityTracesIndex.kt b/src/main/kotlin/org/opensearch/observability/index/ObservabilityTracesIndex.kt new file mode 100644 index 000000000..62d39be22 --- /dev/null +++ b/src/main/kotlin/org/opensearch/observability/index/ObservabilityTracesIndex.kt @@ -0,0 +1,122 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ +package org.opensearch.observability.index + +import org.opensearch.ResourceAlreadyExistsException +import org.opensearch.ResourceNotFoundException +import org.opensearch.action.admin.indices.template.get.GetIndexTemplatesRequest +import org.opensearch.action.admin.indices.template.put.PutComposableIndexTemplateAction +import org.opensearch.client.Client +import org.opensearch.cluster.metadata.ComposableIndexTemplate +import org.opensearch.cluster.metadata.Template +import org.opensearch.cluster.service.ClusterService +import org.opensearch.common.component.LifecycleListener +import org.opensearch.common.compress.CompressedXContent +import org.opensearch.common.settings.Settings +import org.opensearch.observability.ObservabilityPlugin.Companion.LOG_PREFIX +import org.opensearch.observability.settings.PluginSettings +import org.opensearch.observability.util.SecureIndexClient +import org.opensearch.observability.util.logger +import java.util.* + +/** + * Class for doing OpenSearch Traces schema mapping & default index init operation + */ +internal object ObservabilityTracesIndex : LifecycleListener() { + private val log by logger(ObservabilityTracesIndex::class.java) + private const val TRACES_MAPPING_TEMPLATE_NAME = "sso_trace_template" + private const val TRACES_MAPPING_TEMPLATE_FILE = "traces-mapping-template.json" + private const val TRACES_PATTERN_NAME = "sso_traces-*-*" + + private lateinit var client: Client + private lateinit var clusterService: ClusterService + + /** + * Initialize the class + * @param client The OpenSearch client + * @param clusterService The OpenSearch cluster service + */ + fun initialize(client: Client, clusterService: ClusterService): ObservabilityTracesIndex { + this.client = SecureIndexClient(client) + this.clusterService = clusterService + return this + } + + /** + * once lifecycle indicate start has occurred - instantiating the mapping template + */ + override fun afterStart() { + // create default mapping + createMappingTemplate() + } + + /** + * Create the pre-defined mapping template + */ + @Suppress("TooGenericExceptionCaught", "MagicNumber") + private fun createMappingTemplate() { + log.info("$LOG_PREFIX:createMappingTemplate $TRACES_MAPPING_TEMPLATE_NAME API called") + if (!isTemplateExists(TRACES_MAPPING_TEMPLATE_NAME)) { + val classLoader = ObservabilityTracesIndex::class.java.classLoader + val indexMappingSource = classLoader.getResource(TRACES_MAPPING_TEMPLATE_FILE)?.readText()!! + val settings = Settings.builder() + .put("index.number_of_shards", 3) + .put("index.auto_expand_replicas", "0-2") + .build() + val template = Template(settings, CompressedXContent(indexMappingSource), null) + val request = PutComposableIndexTemplateAction.Request(TRACES_MAPPING_TEMPLATE_NAME) + .indexTemplate( + ComposableIndexTemplate( + listOf(TRACES_PATTERN_NAME), + template, + Collections.emptyList(), + 1, + 1, + Collections.singletonMap("description", "Observability Traces Mapping Template") as Map?, + ComposableIndexTemplate.DataStreamTemplate() + ) + ) + try { + val validationException = request.validateIndexTemplate(null) + if (validationException != null && !validationException.validationErrors().isEmpty()) { + error("$LOG_PREFIX:Index Template $TRACES_MAPPING_TEMPLATE_NAME validation errors ${validationException.message}") + } + val actionFuture = client.admin().indices().execute(PutComposableIndexTemplateAction.INSTANCE, request) + val response = actionFuture.actionGet(PluginSettings.operationTimeoutMs) + if (response.isAcknowledged) { + log.info("$LOG_PREFIX:Mapping Template $TRACES_MAPPING_TEMPLATE_NAME creation Acknowledged") + } else { + error("$LOG_PREFIX:Mapping Template $TRACES_MAPPING_TEMPLATE_NAME creation not Acknowledged") + } + } catch (exception: ResourceAlreadyExistsException) { + log.warn("message: ${exception.message}") + } catch (exception: Exception) { + if (exception.cause !is ResourceAlreadyExistsException) { + throw exception + } + } + } + } + + /** + * Check if the mapping template is created and available. + * @param template name + * @return true if template is available, false otherwise + */ + @Suppress("TooGenericExceptionCaught", "SwallowedException", "RethrowCaughtException") + private fun isTemplateExists(template: String): Boolean { + try { + val indices = client.admin().indices() + val response = indices.getTemplates(GetIndexTemplatesRequest(template)).get() + return response.indexTemplates.isNotEmpty() + } catch (exception: ResourceNotFoundException) { + return false + } catch (exception: ResourceAlreadyExistsException) { + return true + } catch (exception: Exception) { + throw exception + } + } +} diff --git a/src/main/resources/metrics-mapping-template.json b/src/main/resources/metrics-mapping-template.json new file mode 100644 index 000000000..a428e5706 --- /dev/null +++ b/src/main/resources/metrics-mapping-template.json @@ -0,0 +1,266 @@ +{ + "_meta": { + "version": "1.0" + }, + "_source": { + "enabled": true + }, + "dynamic_templates": [ + { + "attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "attributes.*" + } + }, + { + "resources_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "resource.*" + } + }, + { + "exemplar_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "exemplar.attributes.*" + } + }, + { + "instrumentation_scope_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "instrumentationScope.attributes.*" + } + } + ], + "properties": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "attributes": { + "type": "object", + "properties": { + "data_stream": { + "properties": { + "dataset": { + "ignore_above": 128, + "type": "keyword" + }, + "namespace": { + "ignore_above": 128, + "type": "keyword" + }, + "type": { + "ignore_above": 56, + "type": "keyword" + } + } + } + } + }, + "description": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "unit": { + "type": "keyword", + "ignore_above": 128 + }, + "kind": { + "type": "keyword", + "ignore_above": 128 + }, + "aggregationTemporality": { + "type": "keyword", + "ignore_above": 128 + }, + "monotonic": { + "type": "boolean" + }, + "startTime": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "observedTimestamp": { + "type": "date_nanos" + }, + "value": { + "properties": { + "int": { + "type": "integer" + }, + "double": { + "type": "double" + } + } + }, + "buckets": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "type": "double" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + } + } + }, + "bucketCount": { + "type": "long" + }, + "bucketCountsList": { + "type": "long" + }, + "explicitBoundsList": { + "type": "float" + }, + "explicitBoundsCount": { + "type": "float" + }, + "quantiles": { + "properties": { + "quantile": { + "type": "double" + }, + "value": { + "type": "double" + } + } + }, + "quantileValuesCount": { + "type": "long" + }, + "positiveBuckets": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + } + } + }, + "negativeBuckets": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + } + } + }, + "negativeOffset": { + "type": "integer" + }, + "positiveOffset": { + "type": "integer" + }, + "zeroCount": { + "type": "long" + }, + "scale": { + "type": "long" + }, + "max": { + "type": "float" + }, + "min": { + "type": "float" + }, + "sum": { + "type": "float" + }, + "count": { + "type": "long" + }, + "exemplar": { + "properties": { + "time": { + "type": "date" + }, + "traceId": { + "ignore_above": 256, + "type": "keyword" + }, + "spanId": { + "ignore_above": 256, + "type": "keyword" + } + } + }, + "instrumentationScope": { + "properties": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 128 + } + } + }, + "version": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "droppedAttributesCount": { + "type": "integer" + }, + "schemaUrl": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "schemaUrl": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/traces-mapping-template.json b/src/main/resources/traces-mapping-template.json new file mode 100644 index 000000000..357f71132 --- /dev/null +++ b/src/main/resources/traces-mapping-template.json @@ -0,0 +1,185 @@ +{ + "_meta": { + "version": "1.0" + }, + "_source": { + "enabled": true + }, + "dynamic_templates": [ + { + "attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "attributes.*" + } + }, + { + "events_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "events.attributes.*" + } + }, + { + "links_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "links.attributes.*" + } + }, + { + "instrumentation_scope_attributes_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "instrumentationScope.attributes.*" + } + }, + { + "resources_map": { + "mapping": { + "type": "keyword" + }, + "path_match": "resource.*" + } + } + ], + "properties": { + "traceId": { + "ignore_above": 256, + "type": "keyword" + }, + "spanId": { + "ignore_above": 256, + "type": "keyword" + }, + "traceState": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "parentSpanId": { + "ignore_above": 256, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 128, + "type": "keyword" + }, + "startTime": { + "type": "date_nanos" + }, + "endTime": { + "type": "date_nanos" + }, + "droppedAttributesCount": { + "type": "long" + }, + "droppedEventsCount": { + "type": "long" + }, + "droppedLinksCount": { + "type": "long" + }, + "status": { + "properties": { + "code": { + "ignore_above": 128, + "type": "keyword" + }, + "message": { + "ignore_above": 128, + "type": "keyword" + } + } + }, + "attributes": { + "type": "object", + "properties": { + "data_stream": { + "properties": { + "dataset": { + "ignore_above": 128, + "type": "keyword" + }, + "namespace": { + "ignore_above": 128, + "type": "keyword" + }, + "type": { + "ignore_above": 56, + "type": "keyword" + } + } + } + } + }, + "events": { + "type": "nested", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "@timestamp": { + "type": "date_nanos" + }, + "observedTimestamp": { + "type": "date_nanos" + } + } + }, + "links": { + "type": "nested", + "properties": { + "traceId": { + "ignore_above": 256, + "type": "keyword" + }, + "spanId": { + "ignore_above": 256, + "type": "keyword" + }, + "traceState": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "instrumentationScope": { + "properties": { + "name": { + "type": "keyword" + }, + "version": { + "type": "keyword" + }, + "droppedAttributesCount": { + "type": "integer" + }, + "schemaUrl": { + "type": "keyword" + } + } + }, + "schemaUrl": { + "type": "keyword" + } + } +} diff --git a/src/test/kotlin/org/opensearch/observability/ObservabilityPluginIT.kt b/src/test/kotlin/org/opensearch/observability/ObservabilityPluginIT.kt index 0b9984ec7..442bfc37a 100644 --- a/src/test/kotlin/org/opensearch/observability/ObservabilityPluginIT.kt +++ b/src/test/kotlin/org/opensearch/observability/ObservabilityPluginIT.kt @@ -11,6 +11,7 @@ import org.opensearch.cluster.health.ClusterHealthStatus import org.opensearch.plugins.PluginInfo import org.opensearch.test.OpenSearchIntegTestCase +@Suppress("TooManyFunctions") class ObservabilityPluginIT : OpenSearchIntegTestCase() { fun testPluginsAreInstalled() { val request = ClusterHealthRequest() diff --git a/src/test/kotlin/org/opensearch/observability/PluginRestTestCase.kt b/src/test/kotlin/org/opensearch/observability/PluginRestTestCase.kt index c5a1d4115..fdd030db2 100644 --- a/src/test/kotlin/org/opensearch/observability/PluginRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/observability/PluginRestTestCase.kt @@ -9,6 +9,7 @@ import com.google.gson.JsonObject import org.apache.http.HttpHost import org.junit.After import org.junit.AfterClass +import org.junit.Assert import org.junit.Before import org.opensearch.client.Request import org.opensearch.client.RequestOptions @@ -23,6 +24,8 @@ import org.opensearch.common.xcontent.NamedXContentRegistry import org.opensearch.common.xcontent.XContentType import org.opensearch.commons.ConfigConstants import org.opensearch.commons.rest.SecureRestClientBuilder +import org.opensearch.rest.RestRequest +import org.opensearch.rest.RestStatus import org.opensearch.test.rest.OpenSearchRestTestCase import java.io.BufferedReader import java.io.IOException @@ -54,33 +57,63 @@ abstract class PluginRestTestCase : OpenSearchRestTestCase() { } open fun preserveOpenSearchIndicesAfterTest(): Boolean = false + open fun preserveOpenSearchDataStreamsAfterTest(): Boolean = true @Throws(IOException::class) @After open fun wipeAllOpenSearchIndices() { - if (preserveOpenSearchIndicesAfterTest()) return - val response = client().performRequest(Request("GET", "/_cat/indices?format=json&expand_wildcards=all")) - val xContentType = XContentType.fromMediaType(response.entity.contentType.value) - xContentType.xContent().createParser( - NamedXContentRegistry.EMPTY, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, - response.entity.content - ).use { parser -> - for (index in parser.list()) { - val jsonObject: Map<*, *> = index as java.util.HashMap<*, *> - val indexName: String = jsonObject["index"] as String - // .opendistro_security isn't allowed to delete from cluster - if (".opendistro_security" != indexName) { - val request = Request("DELETE", "/$indexName") - // TODO: remove PERMISSIVE option after moving system index access to REST API call - val options = RequestOptions.DEFAULT.toBuilder() - options.setWarningsHandler(WarningsHandler.PERMISSIVE) - request.options = options.build() - adminClient().performRequest(request) + if (!preserveOpenSearchDataStreamsAfterTest()) { + var getResponse = executeRequest( + RestRequest.Method.GET.name, + "/_data_stream/*", + "", + RestStatus.OK.status + ) + Assert.assertNotNull(!getResponse.get("data_streams").asJsonArray.isEmpty) + for (stream in getResponse.get("data_streams").asJsonArray) { + dataStreamCleanUp(stream.asJsonObject.get("name").asString) + } + } + if (!preserveOpenSearchIndicesAfterTest()) { + val response = client().performRequest(Request("GET", "/_cat/indices?format=json&expand_wildcards=all")) + val xContentType = XContentType.fromMediaType(response.entity.contentType.value) + xContentType.xContent().createParser( + NamedXContentRegistry.EMPTY, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, + response.entity.content + ).use { parser -> + for (index in parser.list()) { + val jsonObject: Map<*, *> = index as java.util.HashMap<*, *> + val indexName: String = jsonObject["index"] as String + // .opendistro_security isn't allowed to delete from cluster and same for data-stream backing indices + if (".opendistro_security" != indexName && !indexName.startsWith(".ds-", false)) { + val request = Request("DELETE", "/$indexName") + // TODO: remove PERMISSIVE option after moving system index access to REST API call + val options = RequestOptions.DEFAULT.toBuilder() + options.setWarningsHandler(WarningsHandler.PERMISSIVE) + request.options = options.build() + adminClient().performRequest(request) + } } } } } + fun dataStreamCleanUp(stream: String) { + // remove data-stream for house cleaning + var response = executeRequest( + RestRequest.Method.DELETE.name, + "/_data_stream/$stream", + "", + RestStatus.OK.status + ) + Assert.assertNotNull(response.get("acknowledged")) + Assert.assertEquals(true, response.get("acknowledged").asBoolean) + } + + open fun cleanUp() { + // Override for specific cleanup behaviour + } + /** * Returns the REST client settings used for super-admin actions like cleaning up after the test has completed. */ diff --git a/src/test/kotlin/org/opensearch/observability/rest/AssemblyValidationIT.kt b/src/test/kotlin/org/opensearch/observability/rest/AssemblyValidationIT.kt new file mode 100644 index 000000000..bb9d7af5c --- /dev/null +++ b/src/test/kotlin/org/opensearch/observability/rest/AssemblyValidationIT.kt @@ -0,0 +1,43 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.observability.rest + +import org.junit.Assert +import org.opensearch.observability.PluginRestTestCase +import org.opensearch.rest.RestRequest +import org.opensearch.rest.RestStatus + +class AssemblyValidationIT : PluginRestTestCase() { + companion object { + private const val TRACES_MAPPING_TEMPLATE_NAME = "sso_trace_template" + private const val METRICS_MAPPING_TEMPLATE_NAME = "sso_metric_template" + } + + fun `test observability traces template and was created`() { + // verify traces mapping template was created successfully as part of the plugin initialization + Thread.sleep(1000) + var response = executeRequest( + RestRequest.Method.GET.name, + "/_index_template/$TRACES_MAPPING_TEMPLATE_NAME", + "", + RestStatus.OK.status + ) + Thread.sleep(1000) + Assert.assertNotNull(response.get("index_templates")) + Assert.assertNotNull(!response.get("index_templates").asJsonArray.isEmpty) + + // verify metrics mapping template was created successfully as part of the plugin initialization + response = executeRequest( + RestRequest.Method.GET.name, + "/_index_template/$METRICS_MAPPING_TEMPLATE_NAME", + "", + RestStatus.OK.status + ) + Thread.sleep(1000) + Assert.assertNotNull(response.get("index_templates")) + Assert.assertNotNull(!response.get("index_templates").asJsonArray.isEmpty) + } +}