-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] Dashboards Visualization Integration to Operational Panels #106
Comments
PoC demo -> Panels integration with embedded Dashboards Container.panels_osd_integration_poc1.movPerfomance Stats
Notes:
|
Hey team! Sorry I'm late to the game on reviewing this feature proposal but now that I'm taking a look I had some questions. First, it seems that the main thesis is that users have "pre-built Dashboards and OSD Visualizations for all of their workloads" but since the Observability Plugin has different patterns of visualizations specifically around PPL, but the conclusion seems to be backward to me. Rather than making users migrate from the tool they are using, why wouldn't we enable the tool to support PPL visualizations? It seems asking users to covert, migrate, or otherwise remediate to a new tool is not the preferred approach - am I missing something? Second, while it is likely true that supporting both PPL and DSL visualization more users will be open to adopt the Observability plugin, would it not also be true that building this functions into the tool they've already adopted (i.e., Dashboard core) would be more amplifying to the user then splitting the experience further? It seems the goal shouldn't be the adoption of a plugin via navigation but rather the adoption of a plugin via use. And it seems the more direct path for supporting users using this functionality is generalization in the core experience not forking the user flows, correct? Can you help me understand why we wouldn't being using the core dashboard experience as the baseline over over the observability plugin? If we're talking adoption and impact, it seems we're doing it in the opposite way I think would result in the higher usage. |
@ahopp Thanks for taking time and adding these comments. For the first point, Yes we have discussed these options and have not ruled them out. Implementing our features to the dashboards-core is an alternative approach of solving the same problem. We still need to dig the details of this. As a thought, It looks straight forward to move Observability Plugin Objects to the core but, we need to see how extensible are the existing component of dashboards-core. These include extending current filters option to support PPL with auto-complete, support for PPL visualizations to have DSL/DQL or lucene filters, etc. Also, we are already having discussions in the team to support PPL visualizations in dashboards-core. Will keep the thread updated once we finalize on it. Secondly, The navigation experience would be changed soon. We already have a more holistic integration for the observability plugin happening with dashbords-core ongoing here: |
Operational Panels support for OSD Visualizations
NOTE: Please make sure you go through the glossary before diving into the design with “dashboards” word being overloaded things can get pretty confusing.
Glossary
Overview
Today, Operational Panels enables users to dive into multiple PPL saved visualizations for RCA analysis, do regular monitoring of visualizations derived from logs for a given time frame and compare these saved visualizations with global PPL filters. This design document introduces new support for existing OSD visualizations in Operational Panels. We dive into implementation design on pushing down PPL filters, date filters and UI filters(discussed more below) to both PPL Saved Visualizations and OSD Visualizations.
Motivation
Observability Plugin was introduced in OpenSearch 1.2.0 version, this included original components of Trace Analytics, Notebooks, Operational Panels and Events Analytics. With the latest released of 2.4.0 version of OpenSearch, the Observability plugin stands with new components like Metrics Analytics and App Analytics along with many small but high value features like Log-Trace Correlation, Log Patterns with Anomalies, View surrounding documents, Live Tail, etc.
The OpenSearch community has many customers who are legacy users using our offerings from Open-Distro for ElasticSearch. They have pre-built Dashboards and OSD Visualizations for all of their workloads. It is difficult for these users to switch to the Observability Plugin even when they upgrade to the latest OpenSearch versions. The transition after upgrade is difficult due to the following reasons:
With Operational Panels supporting both PPL and DSL visualization, more users will be open to adopt the Observability plugin. This would be the first step from our users to use the new Observability Plugin features, pointing towards increase in adoption of the Observability plugin.
Requirements
Functional Requirements
Non-Functional Requirements
UI Mockups
Architecture
Components
1. Panels Visualization Grid
The react grid container component comprising of all the visualization containers. This grid component uses React-Grid-Layout(RGL) npm module to create resizable, drag, and drop features. RGL is used by Operational Panels as well Dashboards for easy movement features. We look at re-using this container from Operational Panels to fit in OSD visualizations.
Today, Observability component
Notebooks
has a similar usage for OSD Visualizations. It spawns up a RGL component and fits in the OSD visualizations this concept is OSD is known as Embeddables(more on Embeddables in Appendix 2.). While, this approach is good for single visualizations, it is not performant when we have multiple visualizations created with their own RGL container. To have good load time performance we need to use the visualizations layer directly rather then using the Dashboards Container.2. Combined Visualization Container
2.1 PPL Saved Visualizations
2.2 PPL RunTime Visualizations
2.3 OSD Visualizations
2.4 Query Manager
3. Language Translator Module
We will two different types of filter in Operational Panels:
where clause
filter that is present today in Operational Panels. It pushes the where clause to all the PPL Saved Visualizations.match and range
queries.We have PPL and DSL working with their own visualizations and push downs. Now, to combine these filters and push them down in individual visualizations we need to use language translation module. We’ll have 3 layers of language translation:
3.1 Text to PPL
text filters
from the UI component to PPL Query. We would need to support functions as follows: match, range, exists and negation. This layer is mainly used to push down text filters to PPL Saved Visualizations.3.2 Text to DSL
text filters
from the UI component to DSL Query. This has been already implemented in OSD. We should plan to re-use the whole layer as is. We need this layer to push down text filters to OSD Visualizations.3.3 PPL to DSL
where clauses
to DSL. This is needed to push down PPL clauses to OSD visualizations.3.4 Combinator
User WorkFlows
View & Add Visualizations
When users request for available visualizations, we make 2 requests: One for the OSD Visualizations using a custom route(already existing in notebooks) to query the
.kibana
index and the other for Saved PPL Visualizations using Observability route(already existing in Operational panels) to query the.opensearch-observability
index.Adding Visualization workflows enable users to add OSD Visualization or PPL Saved Visualization to Operational Panels. When an user clicks on the add visualization button they have two options either add an existing visualization or create a new visualization. With this new feature, the add existing visualization option will show both the OSD Visualizations and the PPL Saved Visualizations in the dropdown list. Once the users select and add either of them, the backend would saved the visualization ID and other meta data (mentioned in the data model).
Edit Text/PPL Filters
When users edit the text filters the language translator module in the Observability UI kicks in. Post translation, we push down the respective filters to individual visualizations.
Data Model
Current Data Model for Operational Panels
New Data Model
OpenSearch Observability APIs
TBA
Milestones
OSD viz in panels without dashboards containerOptimized UI container without Dashboard Container, with filter pushdownremoved in favor of above PoCAppendix
1. Dashboards Data model to save DQL & Text filters
query
field. Whereas rest of the Text filters are stored infilter
field as array of objects2. Dashboards Embeddable API & Embedding Visualizations
Embeddable API
Credits
Code: https://github.com/opensearch-project/OpenSearch-Dashboards/tree/master/src/plugins/embeddable
README: https://github.com/opensearch-project/OpenSearch-Dashboards/blob/master/src/plugins/embeddable/README.md
Embeddable Examples
Embeddable Renderer
Future Work
One-click migrations
.kibana
index and then merge them into Observability saved Objects.Reporting Integration
The text was updated successfully, but these errors were encountered: