From 3a437d1842ee4c245345dec368afc9183014ba7c Mon Sep 17 00:00:00 2001 From: Tyler Ohlsen Date: Wed, 30 Mar 2022 17:05:51 -0700 Subject: [PATCH] Add Visualization integration RFC docs (#477) * Add viz integ RFC doc Signed-off-by: Tyler Ohlsen * Add question about invalid inputs Signed-off-by: Tyler Ohlsen --- docs/images/viz-integration-workflow.png | Bin 0 -> 41825 bytes docs/visualization-integration-rfc.md | 81 +++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 docs/images/viz-integration-workflow.png create mode 100644 docs/visualization-integration-rfc.md diff --git a/docs/images/viz-integration-workflow.png b/docs/images/viz-integration-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..beff2c79b2c5f6119f0bbf2dfe5205abfbfc2e62 GIT binary patch literal 41825 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 literal 0 HcmV?d00001 diff --git a/docs/visualization-integration-rfc.md b/docs/visualization-integration-rfc.md new file mode 100644 index 000000000..420775a46 --- /dev/null +++ b/docs/visualization-integration-rfc.md @@ -0,0 +1,81 @@ +# RFC - Integration with Visualizations + +## Problem + +Oftentimes users may start out by viewing their ingested data through an OpenSearch Dashboards Visualization (viz), and then grouping multiple together to create a Dashboard. This is helpful to initially be able to understand the data, find patterns, and monitor / observe data as it’s ingested into an OpenSearch cluster. But, after users create these, there’s no clear path for them to take next steps if they want to look further into their data, such as setting up anomaly detection (AD). Some of the challenges of setting up AD include: + +- learning new AD-specific terms and ideas (anomaly detector, historical analysis, feature, interval, etc.) +- detailed and lengthy setup with lots of user-required fields +- lots of duplicate work (selecting source data, metrics to analyze) if the user has already created a viz +- AD lives in a standalone plugin and not visible on Dashboards overview or home pages - must be accessed from list of plugins in sidebar + +## Solution + +### Overview + +To help address this disconnect between Visualizations and AD, we propose an integrated solution that allows users to quickly create, run and view anomaly results from a Visualization. For certain Visualizations, users can utilize the effort they've already provided to visualize the data they’re interested in (source data, metrics to analyze), and create an anomaly detector on that same data with just a few extra clicks. The diagram shows the overall user workflow: + +![](./images/viz-integration-workflow.png) + +AD is only intended for use with streaming time series data (real-time or historical). Because of this, we focus on the following Visualization types frequently used for time series data: (1) Line, (2) Area, (3) Vertical bar, and (4) Time Series Visual Builder (TSVB). + +### Generating the detector configuration + +Using inputs from a Visualization, the config fields for a detector can be automatically populated with suggested values. In a perfect scenario, no user input is needed to create a detector, and every field can be populated. The most common cases where user info would be needed is the complex fields like features and filter query. These can be partially auto-filled, with some extra user input needed (e.g., auto-filling the feature field, but needing user input to provide a valid aggregation). + +We list the logic for generating each default detector field value below: + +| Detector field | Logic | +| ---------------------------- | -------------------------------------------------------------------------------------------------- | +| `name` | Some simple pattern, e.g. `"-detector"` | +| `description` | Some simple pattern, e.g. `"A detector based off of "` | +| `time_field` | Time field used in viz | +| `indices` | Selected index pattern of viz (if `Search` type is selected, then extract index pattern from that) | +| `features` | Corresponds to `metrics` section in viz. May need user input if invalid aggs are selected | +| `filter_query` | Combine any custom filters set in viz | +| `interval` | Use some default value (10 mins), or from length of bucket, if date histogram option is selected | +| `window_delay` | Use some default value (1 min) | +| `category_field` | Default to empty. If user has x-axis terms subaggregation set, could auto-fill with that field | +| `result_index` | Use some default value (none) | +| `shingle_size` | Use some default value (8) | +| real-time / historical jobs? | Default to real-time enabled, historical disabled | + +### Invalid inputs + +Because Visualizations allow for much more complex ways to display data on a chart compared to AD, it is possible that the configuration will not all be valid when trying to set up an anomaly detector. Some examples include: + +- user selects a metric aggregation available in a viz that is not available in AD (e.g. pipeline aggregation) +- user has more metrics than allowed features in AD (currently 5) +- user configures non-date-related x-axis or no x-axis at all + +These cases could be handled in a few different ways: + +1. Make AD creation invalid or unavailable until all constraints are met, and provide messaging as to why it's invalid. +2. Allow user to create by changing the detector config to meet constraints, but warn that the results may be based on different metrics than what's shown on the viz. + +Note that x-axis issues won't necessarily affect the AD configuration, but would affect how any anomaly results would be displayed on the chart. Providing some warning indicating this may suffice. + +Also note that AD supports custom aggregations when generating features. Future investigation needs to be done to see if all available viz aggregations could be converted appropriately. + +### UX + +#### Creation workflow + +Creating a viz is very simple and only involves selecting a viz type and a source. The rest of the details (metrics, x-axis, all other settings) are set after it’s created. We can follow this strategy for AD by having a button in the viz details to create a detector, which could open some modal/flyout/etc. Depending on how much of the viz is populated/valid, we will autofill as many fields as possible following logic listed in the table above. When everything is valid, user can create the detector and start any real-time or historical detection jobs. The creation will then be disabled, and can instead have a link to the detector details in AD plugin. + +#### Viewing results + +Detector results could be displayed in a few different places. On the viz details page, results could be overlaid or annotated on the chart indicating when anomalies occurred. On a Dashboard containing an AD-enabled viz, we could link the detector or detector results within the viz panel, provide options to show AD results within the panel, or show as a separate component altogether. Additionally, for eligible viz’s that don’t have AD enabled, could have an option or a button to configure one, which could link to the AD creation section on the specified viz's details page, or possibly create directly from the existing page. + +## Request for comments + +We would like comments and feedback on the proposal of integrating AD and Visualizations [here](https://github.com/opensearch-project/anomaly-detection/issues/476). Some specific questions we’re seeking feedback include + +- How do you use Visualizations today? +- Would you be more inclined to use AD if it was available to create within a Visualization? +- Are there any additional visualization aggregations not provided by AD, that are important for your use case? The current AD-supported aggregations can be found [here](https://opensearch.org/docs/latest/monitoring-plugins/ad/index/#add-features-to-your-detector). +- Do you envision viewing the anomalies in a different way than overlaid on Visualization charts? +- Would historical anomalies be useful, or are you only interested in real-time / future anomalies? +- Would you prefer auto-suggested fields to be hidden by default, or easily available to edit when creating? +- Besides integration with Visualizations, would you want a non-UI integration offering directly through APIs? +- Do you have any other suggestions for how to handle invalid inputs? Would you prefer a more or less restrictive approach?