From 6751a3c73949f33a3fb33705aaa79384d859a461 Mon Sep 17 00:00:00 2001 From: Melissa Vagi Date: Mon, 21 Aug 2023 12:22:25 -0600 Subject: [PATCH] [DOC} Reconcile Alerting Monitors 2.9 Documentation Changes (#4710) * Reconcile PR changes that weren't published due to files being edited simultaneously --------- Signed-off-by: Melissa Vagi Co-authored-by: Chris Moore <107723039+cwillum@users.noreply.github.com> --- _observing-your-data/ad/index.md | 20 +- _observing-your-data/alerting/actions.md | 2 +- .../alerting/composite-monitors.md | 21 +- _observing-your-data/alerting/index.md | 40 +- _observing-your-data/alerting/monitors.md | 559 +----------------- .../alerting/per-cluster-metrics-monitors.md | 123 ++++ .../alerting/per-document-monitors.md | 52 ++ .../alerting/per-query-bucket-monitors.md | 99 ++++ _observing-your-data/alerting/triggers.md | 2 +- images/cluster-metrics.png | Bin 0 -> 178274 bytes 10 files changed, 331 insertions(+), 587 deletions(-) create mode 100644 _observing-your-data/alerting/per-cluster-metrics-monitors.md create mode 100644 _observing-your-data/alerting/per-document-monitors.md create mode 100644 _observing-your-data/alerting/per-query-bucket-monitors.md create mode 100644 images/cluster-metrics.png diff --git a/_observing-your-data/ad/index.md b/_observing-your-data/ad/index.md index f468d975a1..86d050cf46 100644 --- a/_observing-your-data/ad/index.md +++ b/_observing-your-data/ad/index.md @@ -14,9 +14,9 @@ An anomaly in OpenSearch is any unusual behavior change in your time-series data It can be challenging to discover anomalies using conventional methods such as creating visualizations and dashboards. You could configure an alert based on a static threshold, but this requires prior domain knowledge and isn't adaptive to data that exhibits organic growth or seasonal behavior. -Anomaly detection automatically detects anomalies in your OpenSearch data in near real-time using the Random Cut Forest (RCF) algorithm. RCF is an unsupervised machine learning algorithm that models a sketch of your incoming data stream to compute an `anomaly grade` and `confidence score` value for each incoming data point. These values are used to differentiate an anomaly from normal variations. For more information about how RCF works, see [Random Cut Forests](https://www.semanticscholar.org/paper/Robust-Random-Cut-Forest-Based-Anomaly-Detection-on-Guha-Mishra/ecb365ef9b67cd5540cc4c53035a6a7bd88678f9). +Anomaly detection automatically detects anomalies in your OpenSearch data in near real-time using the Random Cut Forest (RCF) algorithm. RCF is an unsupervised machine learning algorithm that models a sketch of your incoming data stream to compute an `anomaly grade` and `confidence score` value for each incoming data point. These values are used to differentiate an anomaly from normal variations. For more information about how RCF works, see [Random Cut Forests](https://www.semanticscholar.org/paper/Robust-Random-Cut-Forest-Based-Anomaly-Detection-on-Guha-Mishra/ecb365ef9b67cd5540cc4c53035a6a7bd88678f9). -You can pair the anomaly detection plugin with the [alerting plugin]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/) to notify you as soon as an anomaly is detected. +You can pair the Anomaly Detection plugin with the [Alerting plugin]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/) to notify you as soon as an anomaly is detected. To get started, choose **Anomaly Detection** in OpenSearch Dashboards. To first test with sample streaming data, you can try out one of the preconfigured detectors with one of the sample datasets. @@ -43,21 +43,21 @@ A detector is an individual anomaly detection task. You can define multiple dete - (Optional) To add extra processing time for data collection, specify a **Window delay** value. - This value tells the detector that the data is not ingested into OpenSearch in real time but with a certain delay. Set the window delay to shift the detector interval to account for this delay. - - For example, say the detector interval is 10 minutes and data is ingested into your cluster with a general delay of 1 minute. Assume the detector runs at 2:00. The detector attempts to get the last 10 minutes of data from 1:50 to 2:00, but because of the 1-minute delay, it only gets 9 minutes of data and misses the data from 1:59 to 2:00. Setting the window delay to 1 minute shifts the interval window to 1:49 - 1:59, so the detector accounts for all 10 minutes of the detector interval time. + - For example, say the detector interval is 10 minutes and data is ingested into your cluster with a general delay of 1 minute. Assume the detector runs at 2:00. The detector attempts to get the last 10 minutes of data from 1:50 to 2:00, but because of the 1-minute delay, it only gets 9 minutes of data and misses the data from 1:59 to 2:00. Setting the window delay to 1 minute shifts the interval window to 1:49--1:59, so the detector accounts for all 10 minutes of the detector interval time. 1. Specify custom result index. - If you want to store the anomaly detection results in your own index, choose **Enable custom result index** and specify the custom index to store the result. The anomaly detection plugin adds an `opensearch-ad-plugin-result-` prefix to the index name that you input. For example, if you input `abc` as the result index name, the final index name is `opensearch-ad-plugin-result-abc`. You can use the dash “-” sign to separate the namespace to manage custom result index permissions. For example, if you use `opensearch-ad-plugin-result-financial-us-group1` as the result index, you can create a permission role based on the pattern `opensearch-ad-plugin-result-financial-us-*` to represent the "financial" department at a granular level for the "us" area. {: .note } - - If the custom index you specify doesn’t already exist, the anomaly detection plugin creates this index when you create the detector and start your real-time or historical analysis. + - If the custom index you specify doesn’t already exist, the Anomaly Detection plugin creates this index when you create the detector and start your real-time or historical analysis. - If the custom index already exists, the plugin checks if the index mapping of the custom index matches the anomaly result file. You need to make sure the custom index has valid mapping as shown here: [anomaly-results.json](https://github.com/opensearch-project/anomaly-detection/blob/main/src/main/resources/mappings/anomaly-results.json). - To use the custom result index option, you need the following permissions: - `indices:admin/create` - If the custom index already exists, you don't need this. - - `indices:data/write/index` - You need the `write` permission for the anomaly detection plugin to write results into the custom index for a single-entity detector. + - `indices:data/write/index` - You need the `write` permission for the Anomaly Detection plugin to write results into the custom index for a single-entity detector. - `indices:data/read/search` - You need the `search` permission because the Anomaly Detection plugin needs to search custom result indexes to show results on the anomaly detection UI. - `indices:data/write/delete` - Because the detector might generate a large number of anomaly results, you need the `delete` permission to delete old data and save disk space. - - `indices:data/write/bulk*` - You need the `bulk*` permission because the anomaly detection plugin uses the bulk API to write results into the custom index. + - `indices:data/write/bulk*` - You need the `bulk*` permission because the Anomaly Detection plugin uses the bulk API to write results into the custom index. - Managing the custom result index: - The anomaly detection dashboard queries all detectors’ results from all custom result indexes. Having too many custom result indexes might impact the performance of the Anomaly Detection plugin. - You can use [Index State Management]({{site.url}}{{site.baseurl}}/im-plugin/ism/index/) to rollover old result indexes. You can also manually delete or archive any old result indexes. We recommend reusing a custom result index for multiple detectors. @@ -123,7 +123,7 @@ The anomaly detector expects the shingle size to be in the range of 1 and 60. Th #### Preview sample anomalies Preview sample anomalies and adjust the feature settings if needed. -For sample previews, the anomaly detection plugin selects a small number of data samples---for example, one data point every 30 minutes---and uses interpolation to estimate the remaining data points to approximate the actual feature data. It loads this sample dataset into the detector. The detector uses this sample dataset to generate a sample preview of anomaly results. +For sample previews, the Anomaly Detection plugin selects a small number of data samples---for example, one data point every 30 minutes---and uses interpolation to estimate the remaining data points to approximate the actual feature data. It loads this sample dataset into the detector. The detector uses this sample dataset to generate a sample preview of anomaly results. Examine the sample preview and use it to fine-tune your feature configurations (for example, enable or disable features) to get more accurate results. @@ -137,7 +137,7 @@ To start a real-time detector to find anomalies in your data in near real-time, Alternatively, if you want to perform historical analysis and find patterns in long historical data windows (weeks or months), check **Run historical analysis detection** and select a date range (at least 128 detection intervals). -Analyzing historical data helps you get familiar with the anomaly detection plugin. You can also evaluate the performance of a detector with historical data to further fine-tune it. +Analyzing historical data helps you get familiar with the Anomaly Detection plugin. You can also evaluate the performance of a detector with historical data to further fine-tune it. We recommend experimenting with historical analysis with different feature sets and checking the precision before moving on to real-time detectors. @@ -189,11 +189,11 @@ If you set the category field, you see an additional **Heat map** chart. The hea If you have set multiple category fields, you can select a subset of fields to filter and sort the fields by. Selecting a subset of fields lets you see the top values of one field that share a common value with another field. -For example, if you have a detector with the category fields `ip` and `endpoint`, you can select `endpoint` in the **View by** dropdown menu. Then, select a specific cell to overlay the top 20 values of `ip` on the charts. The anomaly detection plugin selects the top `ip` by default. You can see a maximum of 5 individual time-series values at the same time. +For example, if you have a detector with the category fields `ip` and `endpoint`, you can select `endpoint` in the **View by** dropdown menu. Then select a specific cell to overlay the top 20 values of `ip` on the charts. The Anomaly Detection plugin selects the top `ip` by default. You can see a maximum of 5 individual time-series values at the same time. ## Step 6: Set up alerts -Under **Real-time results**, choose **Set up alerts** and configure a monitor to notify you when anomalies are detected. For steps to create a monitor and set up notifications based on your anomaly detector, see [Monitors]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/monitors/). +Under **Real-time results**, choose **Set up alerts** and configure a monitor to notify you when anomalies are detected. For steps to create a monitor and set up notifications based on your anomaly detector, see [Monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/). If you stop or delete a detector, make sure to delete any monitors associated with it. diff --git a/_observing-your-data/alerting/actions.md b/_observing-your-data/alerting/actions.md index c051fdde84..59b2d39caf 100644 --- a/_observing-your-data/alerting/actions.md +++ b/_observing-your-data/alerting/actions.md @@ -1,7 +1,7 @@ --- layout: default title: Actions -nav_order: 15 +nav_order: 50 grand_parent: Alerting parent: Monitors --- diff --git a/_observing-your-data/alerting/composite-monitors.md b/_observing-your-data/alerting/composite-monitors.md index c819fea164..44bd31e30b 100644 --- a/_observing-your-data/alerting/composite-monitors.md +++ b/_observing-your-data/alerting/composite-monitors.md @@ -1,10 +1,12 @@ --- layout: default title: Composite monitors -nav_order: 3 -parent: Alerting +nav_order: 25 +parent: Monitors +grand_parent: Alerting has_children: false redirect_from: + - /observing-your-data/alerting/composite-monitors/ --- # Composite monitors @@ -36,18 +38,17 @@ Composite monitors remove the limitations of basic monitors in the following way ## Key terms -The key terms in the following table describe the basic concepts of composite monitors. For additional terms common to all types of monitors, see [Key terms]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/#key-terms) for basic monitors. +The key terms in the following table describe the basic concepts of composite monitors. For additional terms common to all types of monitors, see [Key terms]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/index/#key-terms) in the Alerting section. | Term | Definition | | :--- | :--- | | Composite monitor | A composite monitor is a type of monitor that supports the execution of multiple monitors in a sequential workflow. It supports configuring triggers to create chained alerts. | | Delegate monitor | Delegate monitors are executed sequentially according to their order in a composite monitor's definition. When a delegate monitor's trigger conditions are met, it generates an audit alert. This audit alert then becomes a condition for the composite monitor's trigger. The composite monitor supports per query, per bucket, and per document monitors as delegate monitors. | | workflow ID | The workflow ID provides an identifier for the entire workflow of all delegate monitors. It is synonymous with a composite monitor's monitor ID. | -| Chained alert | Chained alerts are generated from composite monitor triggers when delegate monitors generate audit alerts. The chained alert trigger condition supports the use of the logical operators AND, OR, and NOT so you can combine multiple functions into a single expression. | +| Chained alert | Chained alerts are generated from composite monitor triggers when delegate monitors generate audit alerts. The chained alert trigger condition supports the use of the logical operators `AND`, `OR`, and `NOT` so you can combine multiple functions into a single expression. | | Audit alert | Delegate monitors generate alerts in an **audit** state. Users are not notified about each individual audit alert and don't need to acknowledge them. Audit alerts are used to evaluate chained alert trigger conditions in composite monitors. | | Execution | A single run of all delegate monitors in the sequence defined in the composite monitor's configuration. | - ## Basic workflow You create composite monitors by combining individual monitors in a workflow that executes each monitor in a defined sequence. When individual audit alerts from the delegate monitors meet the trigger conditions for a composite monitor, the composite monitor generates its own chained alert. Consider the following sequence of events to understand how a simple composite monitor configured with two delegate monitors executes its workflow. In this example, the trigger condition for the composite monitor is met when the first monitor and the second monitor both generate an alert. @@ -64,8 +65,7 @@ In this simple example, the first monitor could be a per document monitor config You can manage composite monitors using the REST API or OpenSearch Dashboards. This section covers API functionality for composite monitors. - -### Create Composite Monitor +### Create composite monitor This API allows you to create a composite monitor. @@ -384,7 +384,7 @@ POST /_plugins/_alerting/workflows//_execute ``` -### Get Chained Alerts +### Get chained alerts This API returns an array of chained alerts generated in composite monitor workflows: @@ -534,7 +534,7 @@ GET /_plugins/_alerting/workflows/alerts?workflowIds=&getAssociate | `associatedAlerts` | Array | A list of audit alerts generated by the delegate monitors. | -### Acknowledge Chained Alerts +### Acknowledge chained alerts [After getting your alerts](#get-chained-alerts), you can acknowledge multiple active alerts in one call. If the alert is already in an ERROR, COMPLETED, or ACKNOWLEDGED state, it appears in the failed array. @@ -563,7 +563,6 @@ POST _plugins/_alerting/workflows//_acknowledge/alerts } ``` - ## Creating composite monitors in OpenSearch Dashboards Begin by navigating to the **Create monitor** page in OpenSearch Dashboards: **Alerting > Monitors** and select **Create monitor**. Give the monitor a name and then select **Composite monitor** as the monitor type. Steps for creating a composite monitor workflow and trigger conditions vary depending on whether you use the **Visual editor** or the **Extraction query editor**. The first provides basic UI selectors for defining the composite monitor, while the second allows you to build the workflow and trigger conditions using a script. After deciding which method to use, refer to the corresponding section. @@ -647,7 +646,6 @@ The extraction query editor follows the same general steps as the visual editor, (monitor[id=8d36S4kB0DWOHH7wpkET] || monitor[id=4t36S4kB0DWOHH7wL0Hk]) ``` - ### Viewing monitor details After a composite monitor is created, it appears in the list of monitors on the **Monitors** tab. The **Type** column indicates the type of monitor, including the composite monitor type. The **Associations with composite monitors** column provides a count of how many composite monitors a basic monitor is used in as a delegate monitor. Select a monitor in the **Monitor name** column to open its details window. @@ -659,4 +657,3 @@ For composite monitors, The **Alerts** section of the details window includes th Select this icon to open the **Alert details** window. This window shows you all of the audit alerts that were part of the execution that generated the chained alert and includes the delegate monitor that generated the audit alert. Select the **X** in the upper-right corner of the window to close **Alert details**. After returning to the **Alerts** section of the monitor's details window, you can select the check box to the left of the **Alert start time** to highlight the alert. After the alert is highlighted, you can select **Acknowledge** in the upper-right portion of this section. The alert is acknowledged and the status in the **State** column changes from Active to Acknowledged. - diff --git a/_observing-your-data/alerting/index.md b/_observing-your-data/alerting/index.md index b2f9477b9d..a78c4cb93f 100644 --- a/_observing-your-data/alerting/index.md +++ b/_observing-your-data/alerting/index.md @@ -16,28 +16,17 @@ To create an alert, do the following: - Configure one or more _triggers_, which define the conditions that generate events. Optional. - Configure _actions_, which is what happens after an alert is triggered. Optional. -## Getting started +## Key terms -To get started with creating alerts: - -1. Choose **Alerting** from the OpenSearch Plugins main menu, then **Create monitor**. If alerts exist, you'll see a list of those alerts and the Create monitor button won't appear. In this case, select the **Monitors** tab, then **Create monitor**. -2. Create a per query, per bucket, per cluster metrics, or per document monitor. For instructions, see [Monitors]({{site.url}}{{site.baseurl}}/observing-your-data/notifications/index/). -3. Create one or more triggers. For instructions, see [Triggers[({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/)]. -4. For Actions, set up a notification channel for the alert. For instructions, see [Actions]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/actions/). - -## Alerting terminology - -The following table lists alerting terminology commonly used in OpenSearch. +The following table lists alerting terminology commonly used in OpenSearch and throughout the Alerting documentation. Term | Definition :--- | :--- -Monitor | A job that runs on a defined schedule and queries OpenSearch indexes. The results of these queries are then used as input for one or more *triggers*. -Trigger | A condition that, if met, generates an *alert*. -Tag | A label that can be applied to multiple queries to combine them with the logical `OR` operation in a per document monitor. You cannot use tags with other monitor types. -Alert | An event associated with a trigger. When an alert is created, the trigger performs *actions*, which can include sending a notification. -Action | The information that you want the monitor to send after being triggered. Actions have a *channel*, a message subject, and a message body. -Channel | A notification channel to use in an action. Supported channels are Amazon Chime, Slack, Amazon Simple Notification Service (Amazon SNS), email, or custom webhook. See [Notifications]({{site.url}}{{site.baseurl}}/notifications-plugin/index/) for more information. -Finding | An entry for an individual document found by a per document monitor query that contains the document ID, index name, and timestamp. Findings are stored in the Findings index `.opensearch-alerting-finding*`. +Monitor | Job that runs on a defined schedule and queries OpenSearch indexes. The results of these queries are then used as input for one or more triggers. +Trigger | Conditions that, if met, generate alerts. See [Triggers]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/). +Alert | Event associated with a trigger. When an alert is created, the trigger performs actions, including sending notifications. +Action | Specific task that is performed when an alert is triggered. See [Actions]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/actions/). +Notification | Message that is sent to users when an alert is triggered. See [Notifications]({{site.url}}{{site.baseurl}}/notifications-plugin/index/). ## Alert states @@ -50,3 +39,18 @@ Acknowledged | The alert is acknowledged but the root cause is not fixed. Completed | The alert is no longer ongoing. Alerts enter this state after the corresponding trigger evaluates to `false`. Error | An error occurred while executing the trigger---usually the result of a bad trigger or destination. Deleted | The monitor or trigger associated with this alert was deleted while the alert was ongoing. + +## Creating an alert monitor + +You can follow these basic steps to create an alert monitor: + +1. In the **OpenSearch Plugins** main menu, choose **Alerting**. +1. Choose **Create monitor**. See [Monitors]({{site.url}}{{site.baseurl}}/observing-your-data/notifications/index/) for more information about the monitor types. +1. Enter the **Monitor details**, including monitor type, method, and schedule. +1. Select a data source from the dropdown list. +1. Define the metrics in the Query section. +1. Add a trigger. See [Triggers]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/) for more information about triggers. +1. Add an action. See [Actions]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/actions/) for more information about actions. +1. Select **Create**. + +Learn more about creating specific monitor types in their respective documentation. \ No newline at end of file diff --git a/_observing-your-data/alerting/monitors.md b/_observing-your-data/alerting/monitors.md index 3f33d1c194..2b9e42c4ef 100644 --- a/_observing-your-data/alerting/monitors.md +++ b/_observing-your-data/alerting/monitors.md @@ -10,348 +10,24 @@ redirect_from: # Monitors ---- - -
- - Table of contents - - {: .text-delta } -- TOC -{:toc} -
- ---- +Proactively monitor your data in OpenSearch with features available in Alerting and Anomaly Detection. For example, you can pair Anomaly Detection with Alerting to ensure that you're notified as soon as an anomaly is detected. You can do this by setting up a detector to automatically detect outliers in your streaming data and monitors to alert you through notifications when data exceeds certain thresholds. ## Monitor types -The OpenSearch Dashboard Alerting plugin provides four basic monitor types as well as a composite monitor that can integrate the functionality of multiple monitors into a single workflow: -* **per query** – This monitor runs a query and generates alert notifications based on criteria that matches. -* **per bucket** – This monitor runs a query that evaluates trigger criteria based on aggregated values in the dataset. -* **per cluster metrics** – This monitor runs API requests on the cluster to monitor its health. -* **per document** – This monitor runs a query (or multiple queries combined by a tag) that returns individual documents that match the alert notification trigger condition. -* **composite monitor** — The composite monitor allows you to run multiple monitors in a single workflow and generate a single alert based on multiple trigger conditions. See [Composite monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/composite-monitors/) for information about creating and using these types of monitors. - -## Key terms - -Term | Definition -:--- | :--- -Monitor | A job that runs on a defined schedule and queries OpenSearch indexes. The results of these queries are then used as input for one or more *triggers*. -Trigger | Conditions that, if met, generate *alerts*. -Tag | A label that can be applied to multiple queries to combine them with the logical OR operation in a per document monitor. You cannot use tags with other monitor types. -Alert | An event associated with a trigger. When an alert is created, the trigger performs *actions*, which can include sending a notification. -Action | The information that you want the monitor to send out after being triggered. Actions have a *destination*, a message subject, and a message body. -Destination | A reusable location for an action. Supported locations are Amazon Chime, Email, Slack, or custom webhook. -Finding | An entry for an individual document found by a per document monitor query that contains the document ID, index name, and timestamp. Findings are stored in the Findings index: `.opensearch-alerting-finding*`. -Channel | A notification channel to use in an action. See [Notifications]({{site.url}}{{site.baseurl}}/notifications-plugin/index) for more information. - -## Per document monitors - -Introduced 2.0 -{: .label .label-purple } - -Per document monitors allow you to define up to 10 queries that compare the selected field with your desired value. You can define supported field data types using the following operators: - -- `is` -- `is not` -- `is greater than` -- `is greater than equal` -- `is less than` -- `is less than equal` - -You query each trigger using up to 10 tags, adding the tag as a single trigger condition instead of specifying a single query. The Alerting plugin processes the trigger conditions from all queries as a logical `OR` operation, so if any of the query conditions are met, it triggers an alert. Next, the Alerting plugin tells the Notifications plugin to send the notification to a channel. - -The Alerting plugin also creates a list of document findings that contains metadata about which document matches each query. Security analytics can use the document findings data to keep track of and analyze the query data separately from the alert processes. - - -The Alerting API provides a document-level monitor that programmatically accomplishes the same function as the per document monitor in the OpenSearch Dashboards. To learn more, see [Document-level monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/api/#document-level-monitors). -{: .note} - -### Document findings - -When a per document monitor executes a query that matches a document in an index, a finding is created. OpenSearch provides a Findings index: `.opensearch-alerting-finding*` that contains findings data for all per document monitor queries. You can search the findings index with the Alerting API search operation. To learn more, see [Search the findings index]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/api/#search-the-findings-index). - -The following metadata is provided for each document finding entry: - -* **Document** – The document ID and index name. For example: `Re5akdirhj3fl | test-logs-index`. -* **Query** – The query name that matched the document. -* **Time found** – The timestamp that indicates when the document was found during the runtime. - -It is possible to configure an alert notification for each finding, however we don't recommend this unless rules are well defined to prevent a huge volume of findings in a high ingestion cluster. - - -## Create destinations - -1. Choose **Alerting**, **Destinations**, **Add destination**. -1. Specify a name for the destination so that you can identify it later. -1. For **Type**, choose Slack, Amazon Chime, custom webhook, or [email](#email-as-a-destination). - -For Email, refer to the [Email as a destination](#email-as-a-destination) section below. For all other types, specify the webhook URL. See the documentation for [Slack](https://api.slack.com/incoming-webhooks) and [Amazon Chime](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) to learn more about webhooks. - -If you're using custom webhooks, you must specify more information: parameters and headers. For example, if your endpoint requires basic authentication, you might need to add a header with a key of `Authorization` and a value of `Basic `. You might also need to change `Content-Type` to whatever your webhook requires. Popular values are `application/json`, `application/xml`, and `text/plain`. - -This information is stored in plain text in the OpenSearch cluster. We will improve this design in the future, but for now, the encoded credentials (which are neither encrypted nor hashed) might be visible to other OpenSearch users. - - -### Email as a destination - -To send or receive an alert notification as an email, choose **Email** as the destination type. Next, add at least one sender and recipient. We recommend adding email groups if you want to notify more than a few people of an alert. You can configure senders and recipients using **Manage senders** and **Manage email groups**. - -#### Manage senders - -You need to specify an email account from which the Alerting plugin can send notifications. - -To configure a sender email, do the following: - -1. After you choose **Email** as the destination type, choose **Manage senders**. -1. Choose **Add sender**, **New sender** and enter a unique name. -1. Enter the email address, SMTP host (e.g. `smtp.gmail.com` for a Gmail account), and the port. -1. Choose an encryption method, or use the default value of **None**. However, most email providers require SSL or TLS, which require a username and password in OpenSearch keystore. Refer to [Authenticate sender account](#authenticate-sender-account) to learn more. -1. Choose **Save** to save the configuration and create the sender. You can create a sender even before you add your credentials to the OpenSearch keystore. However, you must [authenticate each sender account](#authenticate-sender-account) before you use the destination to send your alert. - -You can reuse senders across many different destinations, but each destination only supports one sender. - - -#### Manage email groups or recipients - -Use email groups to create and manage reusable lists of email addresses. For example, one alert might email the DevOps team, whereas another might email the executive team and the engineering team. - -You can enter individual email addresses or an email group in the **Recipients** field. - -1. After you choose **Email** as the destination type, choose **Manage email groups**. Then choose **Add email group**, **New email group**. -1. Enter a unique name. -1. For recipient emails, enter any number of email addresses. -1. Choose **Save**. - - -#### Authenticate sender account - -If your email provider requires SSL or TLS, you must authenticate each sender account before you can send an email. Enter these credentials in the OpenSearch keystore using the CLI. Run the following commands (in your OpenSearch directory) to enter your username and password. The `` is the name you entered for **Sender** earlier. - -```bash -./bin/opensearch-keystore add plugins.alerting.destination.email..username -./bin/opensearch-keystore add plugins.alerting.destination.email..password -``` - -Note: Keystore settings are node-specific. You must run these commands on each node. -{: .note} - -To change or update your credentials (after you've added them to the keystore on every node), call the reload API to automatically update those credentials without restarting OpenSearch: - -```json -POST _nodes/reload_secure_settings -{ - "secure_settings_password": "1234" -} -``` - - -## Create a monitor - -1. Choose **Alerting**, **Monitors**, **Create monitor**. -1. Specify a name for the monitor. -1. Choose either **Per query monitor**, **Per bucket monitor**, **Per cluster metrics monitor**, or **Per document monitor**. - -OpenSearch supports the following types of monitors: - -- **Per query monitors** run your specified query and then check whether the query's results trigger any alerts. Per query monitors can only trigger one alert at a time. -- **Per bucket monitors** let you create buckets based on selected fields and then categorize your results into those buckets. The Alerting plugin runs each bucket's unique results against a script you define later, so you have finer control over which results should trigger alerts. Furthermore, each bucket can trigger an alert. - -The maximum number of monitors you can create is 1,000. You can change the default maximum number of alerts for your cluster by calling the cluster settings API `plugins.alerting.monitor.max_monitors`. - -1. Decide how you want to define your query and triggers. You can use any of the following methods: visual editor, query editor, or anomaly detector. - - - Visual definition works well for monitors that you can define as "some value is above or below some threshold for some amount of time." - - - Query definition gives you flexibility in terms of what you query for (using [OpenSearch query DSL]({{site.url}}{{site.baseurl}}/opensearch/query-dsl/full-text/index)) and how you evaluate the results of that query (Painless scripting). - - This example averages the `cpu_usage` field: - - ```json - { - "size": 0, - "query": { - "match_all": {} - }, - "aggs": { - "avg_cpu": { - "avg": { - "field": "cpu_usage" - } - } - } - } - ``` - - You can even filter query results using `{% raw %}{{period_start}}{% endraw %}` and `{% raw %}{{period_end}}{% endraw %}`: - - ```json - { - "size": 0, - "query": { - "bool": { - "filter": [{ - "range": { - "timestamp": { - "from": "{% raw %}{{period_end}}{% endraw %}||-1h", - "to": "{% raw %}{{period_end}}{% endraw %}", - "include_lower": true, - "include_upper": true, - "format": "epoch_millis", - "boost": 1 - } - } - }], - "adjust_pure_negative": true, - "boost": 1 - } - }, - "aggregations": {} - } - ``` - - "Start" and "end" refer to the interval at which the monitor runs. See [Available variables](#available-variables). - - To define a monitor visually, choose **Visual editor**. Then choose a source index, a timeframe, an aggregation (for example, `count()` or `average()`), a data filter if you want to monitor a subset of your source index, and a group-by field if you want to include an aggregation field in your query. At least one group-by field is required if you're defining a bucket-level monitor. Visual definition works well for most monitors. - - If you use the Security plugin, you can only choose indexes that you have permission to access. For details, see [Alerting security]({{site.url}}{{site.baseurl}}/security/). - - To use a query, choose **Extraction query editor**, add your query (using [OpenSearch query DSL]({{site.url}}{{site.baseurl}}/opensearch/query-dsl/full-text/index)), and test it using the **Run** button. - - The monitor makes this query to OpenSearch as often as the schedule dictates; check the **Query Performance** section and make sure you're comfortable with the performance implications. - - To use an anomaly detector, choose **Anomaly detector** and select your **Detector**. - - The anomaly detection option is for pairing with the anomaly detection plugin. See [Anomaly Detection]({{site.url}}{{site.baseurl}}/monitoring-plugins/ad/). - For anomaly detector, choose an appropriate schedule for the monitor based on the detector interval. Otherwise, the alerting monitor might miss reading the results. - - For example, assume you set the monitor interval and the detector interval as 5 minutes, and you start the detector at 12:00. If an anomaly is detected at 12:05, it might be available at 12:06 because of the delay between writing the anomaly and it being available for queries. The monitor reads the anomaly results between 12:00 and 12:05, so it does not get the anomaly results available at 12:06. - - To avoid this issue, make sure the alerting monitor is at least twice the detector interval. - When you create a monitor using OpenSearch Dashboards, the anomaly detector plugin generates a default monitor schedule that's twice the detector interval. - - Whenever you update a detector’s interval, make sure to update the associated monitor interval as well, as the anomaly detection plugin does not do this automatically. - - **Note**: Anomaly detection is available only if you are defining a per query monitor. - {: .note} - -1. Choose how frequently to run your monitor. You can run it either by time intervals (minutes, hours, or days) or on a schedule. If you run it on a daily, weekly or monthly schedule or according to a custom [custom cron expression]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/cron/), then you need to also provide the time zone. - -1. Add a trigger to your monitor. - - -## Create triggers - -Steps to create a trigger differ depending on whether you chose **Visual editor**, **Extraction query editor**, or **Anomaly detector** when you created the monitor. - -You begin by specifying a name and severity level for the trigger. Severity levels help you manage alerts. A trigger with a high severity level (e.g. 1) might page a specific individual, whereas a trigger with a low severity level might message a chat room. - -Remember that query-level monitors run your trigger's script just once against the query's results, but bucket-level monitors execute your trigger's script on each bucket, so you should create a trigger that best fits the monitor you chose. If you want to execute multiple scripts, you must create multiple triggers. - -### Visual editor - -For a query-level monitor's **Trigger condition**, specify a threshold for the aggregation and timeframe you chose earlier, such as "is below 1,000" or "is exactly 10." - -The line moves up and down as you increase and decrease the threshold. Once this line is crossed, the trigger evaluates to true. - -Bucket-level monitors also require you to specify a threshold and value for your aggregation and timeframe, but you can use a maximum of five conditions to better refine your trigger. Optionally, you can also use a keyword filter to filter for a specific field in your index. +The Alerting plugin provides the following monitor types: -Document-level monitors provide the added option to use tags that represent multiple queries connected by the logical OR operator. +1. **per query**: Runs a query and generates alert notifications based on the matching criteria. See [Per query monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/per-query-bucket-monitors/) for information about creating and using this monitor type. +1. **per bucket**: Runs a query that evaluates trigger criteria based on aggregated values in the dataset. See [Per bucket monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/per-query-bucket-monitors/) for information about creating and using this monitor type. +1. **per cluster metrics**: Runs API requests on the cluster to monitor its health. See [Per cluster metrics monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/per-cluster-metrics-monitors/) for information about creating and using this monitor type. +1. **per document**: Runs a query (or multiple queries combined by a tag) that returns individual documents that match the alert notification trigger condition. See [Per document monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/per-document-monitors/) for information about creating and using this monitor type. +1. **composite monitor**: Runs multiple monitors in a single workflow and generates a single alert based on multiple trigger conditions. See [Composite monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/composite-monitors/) for information about creating and using this monitor type. -To create a multiple query combination trigger, do the following steps: +The maximum number of monitors you can create is 1,000. You can change the default maximum number of alerts for your cluster by updating the `plugins.alerting.monitor.max_monitors` setting using the [cluster settings API]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/settings/). +{: .tip} -1. Create a per document monitor with more than one query. -2. Create the first query with a field, an operator, and a value. For example, set the query to search for the `region` field with either operator: "is" or "is not", and set the value "us-west-2". -3. Select **Add Tag** and give the tag a name. -3. Create the second query and add the same tag to it. -4. Now you can create the trigger condition and specify the tag name. This creates a combination trigger that checks two queries that both contain the same tag. The monitor checks both queries with a logical OR operation and if either query's conditions are met, then it will generate the alert notification. +## Monitor variables -### Extraction query - -If you're using a query-level monitor, specify a Painless script that returns true or false. Painless is the default OpenSearch scripting language and has a syntax similar to Groovy. - -Trigger condition scripts revolve around the `ctx.results[0]` variable, which corresponds to the extraction query response. For example, your script might reference `ctx.results[0].hits.total.value` or `ctx.results[0].hits.hits[i]._source.error_code`. - -A return value of true means the trigger condition has been met, and the trigger should execute its actions. Test your script using the **Run** button. - -The **Info** link next to **Trigger condition** contains a useful summary of the variables and results available to your query. -{: .tip } - -Bucket-level monitors require you to specify more information in your trigger condition. At a minimum, you must have the following fields: - -- `buckets_path`, which maps variable names to metrics to use in your script. -- `parent_bucket_path`, which is a path to a multi-bucket aggregation. The path can include single-bucket aggregations, but the last aggregation must be multi-bucket. For example, if you have a pipeline such as `agg1>agg2>agg3`, `agg1` and `agg2` are single-bucket aggregations, but `agg3` must be a multi-bucket aggregation. -- `script`, which is the script that OpenSearch runs to evaluate whether to trigger any alerts. - -For example, you might have a script that looks like the following: - -```json -{ - "buckets_path": { - "count_var": "_count" - }, - "parent_bucket_path": "composite_agg", - "script": { - "source": "params.count_var > 5" - } -} -``` - -After mapping the `count_var` variable to the `_count` metric, you can use `count_var` in your script and reference `_count` data. Finally, `composite_agg` is a path to a multi-bucket aggregation. - -### Anomaly detector - -For **Trigger type**, choose **Anomaly detector grade and confidence**. - -Specify the **Anomaly grade condition** for the aggregation and timeframe you chose earlier, "IS ABOVE 0.7" or "IS EXACTLY 0.5." The *anomaly grade* is a number between 0 and 1 that indicates the level of severity of how anomalous a data point is. - -Specify the **Anomaly confidence condition** for the aggregation and timeframe you chose earlier, "IS ABOVE 0.7" or "IS EXACTLY 0.5." The *anomaly confidence* is an estimate of the probability that the reported anomaly grade matches the expected anomaly grade. - -The line moves up and down as you increase and decrease the threshold. Once this line is crossed, the trigger evaluates to true. - - -#### Sample scripts - -{::comment} -These scripts are Painless, not Groovy, but calling them Groovy in Jekyll gets us syntax highlighting in the generated HTML. -{:/comment} - -```groovy -// Evaluates to true if the query returned any documents -ctx.results[0].hits.total.value > 0 -``` - -```groovy -// Returns true if the avg_cpu aggregation exceeds 90 -if (ctx.results[0].aggregations.avg_cpu.value > 90) { - return true; -} -``` - -```groovy -// Performs some crude custom scoring and returns true if that score exceeds a certain value -int score = 0; -for (int i = 0; i < ctx.results[0].hits.hits.length; i++) { - // Weighs 500 errors 10 times as heavily as 503 errors - if (ctx.results[0].hits.hits[i]._source.http_status_code == "500") { - score += 10; - } else if (ctx.results[0].hits.hits[i]._source.http_status_code == "503") { - score += 1; - } -} -if (score > 99) { - return true; -} else { - return false; -} -``` - - -### Available variables - -You can include the following variables in your message using Mustache templates to see more information about your monitors. - -#### Monitor variables +The following table lists the variables available for customizing your monitors. Variable | Data type | Description :--- | :--- | :--- @@ -366,37 +42,13 @@ Variable | Data type | Description `ctx.monitor.inputs.search.indices` | Array | An array that contains the indexes the monitor observes. `ctx.monitor.inputs.search.query` | N/A | The definition used to define the monitor. -#### Trigger variables - -Variable | Data type | Description -:--- | :--- | : --- -`ctx.trigger.id` | String | The trigger's ID. -`ctx.trigger.name` | String | The trigger's name. -`ctx.trigger.severity` | String | The trigger's severity. -`ctx.trigger.condition`| Object | Contains the Painless script used when creating the monitor. -`ctx.trigger.condition.script.source` | String | The language used to define the script. Must be painless. -`ctx.trigger.condition.script.lang` | String | The script used to define the trigger. -`ctx.trigger.actions`| Array | An array with one element that contains information about the action the monitor needs to trigger. - -#### Action variables - -Variable | Data type | Description -:--- | :--- | : --- -`ctx.trigger.actions.id` | String | The action's ID. -`ctx.trigger.actions.name` | String | The action's name. -`ctx.trigger.actions.message_template.source` | String | The message to send in the alert. -`ctx.trigger.actions.message_template.lang` | String | The scripting language used to define the message. Must be Mustache. -`ctx.trigger.actions.throttle_enabled` | Boolean | Whether throttling is enabled for this trigger. See [adding actions](#add-actions) for more information about throttling. -`ctx.trigger.actions.subject_template.source` | String | The message's subject in the alert. -`ctx.trigger.actions.subject_template.lang` | String | The scripting language used to define the subject. Must be mustache. - -#### Other variables +The following table lists other variables you can use with your monitors. Variable | Data type | Description :--- | :--- : :--- -`ctx.results` | Array | An array with one element (i.e. `ctx.results[0]`). Contains the query results. This variable is empty if the trigger was unable to retrieve results. See `ctx.error`. +`ctx.results` | Array | An array with one element, for example, `ctx.results[0]`. Contains the query results. This variable is empty if the trigger was unable to retrieve results. See `ctx.error`. `ctx.last_update_time` | Milliseconds | Unix epoch time of when the monitor was last updated. -`ctx.periodStart` | String | Unix timestamp for the beginning of the period during which the alert triggered. For example, if a monitor runs every ten minutes, a period might begin at 10:40 and end at 10:50. +`ctx.periodStart` | String | Unix timestamp for the beginning of the period during which the alert triggered. For example, if a monitor runs every 10 minutes, a period might begin at 10:40 and end at 10:50. `ctx.periodEnd` | String | The end of the period during which the alert triggered. `ctx.error` | String | The error message if the trigger was unable to retrieve results or unable to evaluate the trigger, typically due to a compile error or null pointer exception. Null otherwise. `ctx.alert` | Object | The current, active alert (if it exists). Includes `ctx.alert.id`, `ctx.alert.version`, and `ctx.alert.isAcknowledged`. Null if no alert is active. Only available with query-level monitors. @@ -406,186 +58,3 @@ Variable | Data type | Description `bucket_keys` | String | Comma-separated list of the monitor's bucket key values. Available only for `ctx.dedupedAlerts`, `ctx.newAlerts`, and `ctx.completedAlerts`. Accessed through `ctx.dedupedAlerts[0].bucket_keys`. `parent_bucket_path` | String | The parent bucket path of the bucket that triggered the alert. Accessed through `ctx.dedupedAlerts[0].parent_bucket_path`. - -## Add actions - -The final step in creating a monitor is to add one or more actions. Actions send notifications when trigger conditions are met. See the [Notifications plugin]({{site.url}}{{site.baseurl}}/notifications-plugin/index) to see what communication channels are supported. - -If you don't want to receive notifications for alerts, you don't have to add actions to your triggers. Instead, you can periodically check OpenSearch Dashboards. -{: .tip } - -1. Specify a name for the action. -1. Choose a [notification channel]({{site.url}}{{site.baseurl}}/notifications-plugin/index). -1. Add a subject and body for the message. - - You can add variables to your messages using [Mustache templates](https://mustache.github.io/mustache.5.html). You have access to `ctx.action.name`, the name of the current action, as well as all [trigger variables](#available-variables). - - If your destination is a custom webhook that expects a particular data format, you might need to include JSON (or even XML) directly in the message body: - - ```json - {% raw %}{ "text": "Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue. - Trigger: {{ctx.trigger.name}} - Severity: {{ctx.trigger.severity}} - Period start: {{ctx.periodStart}} - Period end: {{ctx.periodEnd}}" }{% endraw %} - ``` - - In this case, the message content must conform to the `Content-Type` header in the [custom webhook]({{site.url}}{{site.baseurl}}/notifications-plugin/index). -1. If you're using a bucket-level monitor, you can choose whether the monitor should perform an action for each execution or for each alert. - -1. (Optional) Use action throttling to limit the number of notifications you receive within a given span of time. - - For example, if a monitor checks a trigger condition every minute, you could receive one notification per minute. If you set action throttling to 60 minutes, you receive no more than one notification per hour, even if the trigger condition is met dozens of times in that hour. - -1. Choose **Create**. - -After an action sends a message, the content of that message has left the purview of the Security plugin. Securing access to the message (e.g. access to the Slack channel) is your responsibility. - - -#### Sample message - -```mustache -{% raw %}Monitor {{ctx.monitor.name}} just entered an alert state. Please investigate the issue. -- Trigger: {{ctx.trigger.name}} -- Severity: {{ctx.trigger.severity}} -- Period start: {{ctx.periodStart}} -- Period end: {{ctx.periodEnd}}{% endraw %} -``` - -If you want to use the `ctx.results` variable in a message, use `{% raw %}{{ctx.results.0}}{% endraw %}` rather than `{% raw %}{{ctx.results[0]}}{% endraw %}`. This difference is due to how Mustache handles bracket notation. -{: .note } - -### Questions about destinations - -Q: What plugins do I need installed besides Alerting? - -A: To continue using the notification action in the Alerting plugin, you need to install the backend plugins `notifications-core` and `notifications`. You can also install the Notifications Dashboards plugin to manage Notification channels via OpenSearch Dashboards. - -Q: Can I still create destinations? -A: No, destinations have been deprecated and can no longer be created/edited. - -Q: Will I need to move my destinations to the Notifications plugin? -A: No. To upgrade users, a background process will automatically move destinations to notification channels. These channels will have the same ID as the destinations, and monitor execution will choose the correct ID, so you don't have to make any changes to the monitor's definition. The migrated destinations will be deleted. - -Q: What happens if any destinations fail to migrate? -A: If a destination failed to migrate, the monitor will continue using it until the monitor is migrated to a notification channel. You don't need to do anything in this case. - -Q: Do I need to install the Notifications plugins if monitors can still use destinations? -A: Yes. The fallback on destination is to prevent failures in sending messages if migration fails; however, the Notification plugin is what actually sends the message. Not having the Notification plugin installed will lead to the action failing. - - -## Work with alerts - -Alerts persist until you resolve the root cause and have the following states: - -State | Description -:--- | :--- -Active | The alert is ongoing and unacknowledged. Alerts remain in this state until you acknowledge them, delete the trigger associated with the alert, or delete the monitor entirely. -Acknowledged | Someone has acknowledged the alert, but not fixed the root cause. -Completed | The alert is no longer ongoing. Alerts enter this state after the corresponding trigger evaluates to false. -Error | An error occurred while executing the trigger---usually the result of a a bad trigger or destination. -Deleted | Someone deleted the monitor or trigger associated with this alert while the alert was ongoing. - - -## Create cluster metrics monitor - -In addition to monitoring conditions for indexes, the Alerting plugin allows monitoring conditions for clusters. Alerts can be set by cluster metrics to watch for the following conditions: - -- The health of your cluster reaches a status of yellow or red -- Cluster-level metrics, such as CPU usage and JVM memory usage, reach specified thresholds -- Node-level metrics, such as available disk space, JVM memory usage, and CPU usage, reach a specified threshold -- The total number of documents stores reaches a specified amount - -To create a cluster metrics monitor: - -1. Select **Alerting** > **Monitors** > **Create monitor**. -2. Select the **Per cluster metrics monitor** option. -3. In the Query section, pick the **Request type** from the dropdown. -4. (Optional) If you want to filter the API response to use only certain path parameters, enter those parameters under **Query parameters**. Most APIs that can be used to monitor cluster status support path parameters as described in their documentation (e.g., comma-separated lists of index names). -5. In the Triggers section, indicate what conditions trigger an alert. The trigger condition autopopulates a painless ctx variable. For example, a cluster monitor watching for Cluster Stats uses the trigger condition `ctx.results[0].indices.count <= 0`, which triggers an alert based on the number of indexes returned by the query. For more specificity, add any additional painless conditions supported by the API. To see an example of the condition response, select **Preview condition response**. -6. In the Actions section, indicate how you want your users to be notified when a trigger condition is met. -7. Select **Create**. Your new monitor appears in the **Monitors** list. - -### Supported APIs - -Trigger conditions use responses from the following cat API endpoints. Most APIs that can be used to monitor cluster status support path parameters as described in their documentation (e.g., comma-separated lists of index names). However, they do not support query parameters. - -1. [_cluster/health]({{site.url}}{{site.baseurl}}/api-reference/cluster-health/) -2. [_cluster/stats]({{site.url}}{{site.baseurl}}/api-reference/cluster-stats/) -3. [_cluster/settings]({{site.url}}{{site.baseurl}}/api-reference/cluster-settings/) -4. [_nodes/stats]({{site.url}}{{site.baseurl}}/opensearch/popular-api/#get-node-statistics) -5. [_cat/pending_tasks]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-pending-tasks/) -6. [_cat/recovery]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-recovery/) -7. [_cat/snapshots]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-snapshots/) -8. [_cat/tasks]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-tasks/) - -### Restrict API fields - -If you want to hide fields from the API response that you do not want exposed for alerting, reconfigure the [supported_json_payloads.json](https://github.com/opensearch-project/alerting/blob/main/alerting/src/main/resources/org/opensearch/alerting/settings/supported_json_payloads.json) file inside the Alerting plugin. The file functions as an allow list for the API fields you want to use in an alert. By default, all APIs and their parameters can be used for monitors and trigger conditions. - -However, you can modify the file so that cluster metric monitors can only be created for APIs referenced. Furthermore, only fields referenced in the supported files can create trigger conditions. This `supported_json_payloads.json` allows for a cluster metrics monitor to be created for the `_cluster/stats` API, and triggers conditions for the `indices.shards.total` and `indices.shards.index.shards.min` fields. - -```json -"/_cluster/stats": { - "indices": [ - "shards.total", - "shards.index.shards.min" - ] -} -``` - -### Painless triggers - -Painless scripts define triggers for cluster metrics monitors, similar to query or bucket-level monitors that are defined using the extraction query definition option. Painless scripts are comprised of at least one statement and any additional functions you wish to execute. - -The cluster metrics monitor supports up to **ten** triggers. - -In this example, a JSON object creates a trigger that sends an alert when the Cluster Health is yellow. `script` points the `source` to the painless script `ctx.results[0].status == \"yellow\`. - -```json -{ - "name": "Cluster Health Monitor", - "type": "monitor", - "monitor_type": "query_level_monitor", - "enabled": true, - "schedule": { - "period": { - "unit": "MINUTES", - "interval": 1 - } - }, - "inputs": [ - { - "uri": { - "api_type": "CLUSTER_HEALTH", - "path": "_cluster/health/", - "path_params": "", - "url": "http://localhost:9200/_cluster/health/" - } - } - ], - "triggers": [ - { - "query_level_trigger": { - "id": "Tf_L_nwBti6R6Bm-18qC", - "name": "Yellow status trigger", - "severity": "1", - "condition": { - "script": { - "source": "ctx.results[0].status == \"yellow\"", - "lang": "painless" - } - }, - "actions": [] - } - } - ] -} -``` - -See [trigger variables](#trigger-variables) for more painless ctx options. - -### Limitations - -Currently, the cluster metrics monitor has the following limitations: - -- You cannot create monitors for remote clusters. -- The OpenSearch cluster must be in a state where an index's conditions can be monitored and actions can be executed against the index. -- Removing resource permissions from a user will not prevent that user’s preexisting monitors for that resource from executing. -- Users with permissions to create monitors are not blocked from creating monitors for resources for which they do not have permissions; however, those monitors will not execute. diff --git a/_observing-your-data/alerting/per-cluster-metrics-monitors.md b/_observing-your-data/alerting/per-cluster-metrics-monitors.md new file mode 100644 index 0000000000..6c4da96eac --- /dev/null +++ b/_observing-your-data/alerting/per-cluster-metrics-monitors.md @@ -0,0 +1,123 @@ +--- +layout: default +title: Per cluster metrics monitors +nav_order: 15 +parent: Monitors +grand_parent: Alerting +has_children: false +--- + +# Per cluster metrics monitors + +Per cluster metrics monitors are a type of alert monitor that collects and analyzes metrics from a single cluster, providing insights into the cluster's performance and health. You can set alerts to monitor certain conditions, such as when: + +- Cluster health reaches yellow or red status. +- Cluster-level metrics---for example, CPU usage and JVM memory usage---reach specified thresholds. +- Node-level metrics---for example, available disk space, JVM memory usage, and CPU usage---reach specified thresholds. +- Total number of documents stored reaches specified thresholds. + +## Create a cluster metrics monitor + +To create a cluster metrics monitor, follow these steps: + +1. Select **Alerting** > **Monitors** > **Create monitor**. +2. Select the **Per cluster metrics monitor** option. +3. In the Query section, pick the **Request type** from the dropdown list. +4. (Optional) If you want to filter the API response to use only certain path parameters, enter those parameters under **Query parameters**. Most APIs that can be used to monitor cluster status support path parameters as described in their documentation (for example, comma-separated lists of index names). +5. In the [Triggers]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/) section, indicate which conditions will trigger an alert. The trigger condition autopopulates a `painless ctx` variable. For example, a cluster monitor watching for Cluster Stats uses the trigger condition `ctx.results[0].indices.count <= 0`, which triggers an alert based on the number of indexes returned by the query. For more specificity, add any additional Painless conditions supported by the API. To see an example of the condition response, select **Preview condition response**. +6. In the Actions section, indicate how you want your users to be notified when a trigger condition is met. +7. Select **Create**. Your new monitor appears in the **Monitors** list. + +The following example shows a configuration of a cluster metrics monitor. + +Cluster metrics monitor + +## Supported APIs + +Trigger conditions use responses from the following API endpoints. Most APIs that can be used to monitor cluster status support path parameters (for example, comma-separated lists of index names). They do not support query parameters. + +- [_cluster/health]({{site.url}}{{site.baseurl}}/api-reference/cluster-health/) +- [_cluster/stats]({{site.url}}{{site.baseurl}}/api-reference/cluster-stats/) +- [_cluster/settings]({{site.url}}{{site.baseurl}}/api-reference/cluster-settings/) +- [_nodes/stats]({{site.url}}{{site.baseurl}}/opensearch/popular-api/#get-node-statistics) +- [_cat/indices]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-indices/) +- [_cat/pending_tasks]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-pending-tasks/) +- [_cat/recovery]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-recovery/) +- [_cat/shards]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-shards/) +- [_cat/snapshots]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-snapshots/) +- [_cat/tasks]({{site.url}}{{site.baseurl}}/api-reference/cat/cat-tasks/) + +## Restrict API fields + +If you want to hide fields from the API response and not expose them for alerting, reconfigure the [supported_json_payloads.json](https://github.com/opensearch-project/alerting/blob/main/alerting/src/main/resources/org/opensearch/alerting/settings/supported_json_payloads.json) file inside the Alerting plugin. The file functions as an allow list for the API fields you want to use in an alert. By default, all APIs and their parameters can be used for monitors and trigger conditions. + +However, you can modify the file so that cluster metric monitors can only be created for APIs referenced. Furthermore, only fields referenced in the supported files can create trigger conditions. This `supported_json_payloads.json` allows for a cluster metrics monitor to be created for the `_cluster/stats` API, and triggers conditions for the `indices.shards.total` and `indices.shards.index.shards.min` fields. + +```json +"/_cluster/stats": { + "indices": [ + "shards.total", + "shards.index.shards.min" + ] +} +``` + +## Painless triggers + +Painless scripts define triggers for cluster metrics monitors, similar to per query or per bucket monitors, which are defined using the extraction query definition option. Painless scripts are composed of at least one statement and any additional functions you wish to run. + +The cluster metrics monitor supports up to **ten** triggers. + +In the following example, a JSON object creates a trigger that sends an alert when the cluster health is yellow. `script` points the `source` to the Painless script `ctx.results[0].status == \"yellow\`. + +```json +{ + "name": "Cluster Health Monitor", + "type": "monitor", + "monitor_type": "query_level_monitor", + "enabled": true, + "schedule": { + "period": { + "unit": "MINUTES", + "interval": 1 + } + }, + "inputs": [ + { + "uri": { + "api_type": "CLUSTER_HEALTH", + "path": "_cluster/health/", + "path_params": "", + "url": "http://localhost:9200/_cluster/health/" + } + } + ], + "triggers": [ + { + "query_level_trigger": { + "id": "Tf_L_nwBti6R6Bm-18qC", + "name": "Yellow status trigger", + "severity": "1", + "condition": { + "script": { + "source": "ctx.results[0].status == \"yellow\"", + "lang": "painless" + } + }, + "actions": [] + } + } + ] +} +``` + +See [Trigger variables]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/#trigger-variables) for more `painless ctx` variable options. + +### Limitations + +Per cluster metrics monitors have the following limitations: + +- You cannot create monitors for remote clusters. +- The OpenSearch cluster must be in a state where an index's conditions can be monitored and actions can be executed against the index. +- Removing resource permissions from a user will not prevent that user’s preexisting monitors for that resource from executing. +- Users with permissions to create monitors are not blocked from creating monitors for resources for which they do not have permissions; however, those monitors will not run. diff --git a/_observing-your-data/alerting/per-document-monitors.md b/_observing-your-data/alerting/per-document-monitors.md new file mode 100644 index 0000000000..c1f4c7bf52 --- /dev/null +++ b/_observing-your-data/alerting/per-document-monitors.md @@ -0,0 +1,52 @@ +--- +layout: default +title: Per document monitors +nav_order: 20 +parent: Monitors +grand_parent: Alerting +has_children: false +--- + +# Per document monitors +Introduced 2.0 +{: .label .label-purple } + +Per document monitors are a type of alert monitor that can be used to identify and alert on specific documents in an OpenSearch index. For example, you can use the monitor to: + +- Detect corrupted data or unauthorized changes. +- Enforce data quality policies, such as ensuring all documents contain a certain field or that values in a field are within a certain range. +- Track changes to a specific document over time, which can be helpful for auditing and compliance purposes + +## Defining queries + +Per document monitors allow you to define up to 10 queries that compare a selected field with a desired value. You can define supported field data types using the following operators: + +- `is` +- `is not` +- `is greater than` +- `is greater than equal` +- `is less than` +- `is less than equal` + +You can query each [trigger]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/) using up to 10 tags, adding the tag as a single trigger condition instead of specifying a single query. The [Alerting plugin]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/) processes the trigger conditions from all queries as a logical `OR` operation, so if any of the query conditions are met, it triggers an alert. The Alerting plugin then tells the [Notifications plugin]({{site.url}}{{site.baseurl}}/observing-your-data/notifications/index/) to send the alert notification to a channel. + +You can only use _tags_--- that is, labels that can be applied to multiple queries to combine them with the logical `OR`` operation---in a per document monitor. +{: .important} + +## Document findings + +The Alerting plugin creates a list of _Findings_ that contain metadata about which document matches each query. A _Finding_ is a record of a document identified by the per document monitor query as meeting the alert condition. Key components of a finding include the document ID, timestamp, alert condition details. Findings are stored in the Findings index, `.opensearch-alerting-finding*`. + +Security Analytics can use the findings data to keep track of and analyze the query data separately from the alert processes. See [Working with findings]({{site.url}}{{site.baseurl}}/security-analytics/usage/findings/) to learn more. +{: .note} + +The Alerting API also provides a _document-level monitor_ that programmatically accomplishes the same function as the _per document monitor_ in OpenSearch Dashboards. See [Document-level monitors]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/api/#document-level-monitors) to learn more. + +To prevent a large volume of findings in a high-ingestion cluster, configuring alert notifications for each finding is not recommended unless rules are well defined. +{: .important} + +The following metadata is provided for each document findings entry: + +* **Document**: The document ID and index name. For example: `Re5akdirhj3fl | test-logs-index`. +* **Query**: The query name that matched the document. +* **Time found**: The timestamp that indicates when the document was found during the runtime. diff --git a/_observing-your-data/alerting/per-query-bucket-monitors.md b/_observing-your-data/alerting/per-query-bucket-monitors.md new file mode 100644 index 0000000000..244cf92a60 --- /dev/null +++ b/_observing-your-data/alerting/per-query-bucket-monitors.md @@ -0,0 +1,99 @@ +--- +layout: default +title: Per query and per bucket monitors +nav_order: 5 +parent: Monitors +grand_parent: Alerting +has_children: false +--- + +# Per query and per bucket monitors + +Per query monitors are a type of alert monitor that can be used to identify and alert on specific queries that are run against an OpenSearch index; for example, queries that detect and respond to anomalies in specific queries. Per query monitors only trigger one alert at a time. + +Per bucket monitors are a type of alert monitor that can be used to identify and alert on specific buckets of data that are created by a query against an OpenSearch index. + +## Creating a per query or per bucket monitor + +To create a per query monitor, follow these steps: + +**Step 1.** Define your query and [triggers]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/triggers/). You can use any of these methods: visual editor, query editor, or anomaly detector. + + - Visual definition works well for monitors that can be defined as "some value is above or below some threshold for some amount of time." It also works well for most monitors. + + - Query definition provides flexibility in relation to your query (using [OpenSearch query DSL]({{site.url}}{{site.baseurl}}/opensearch/query-dsl/full-text/index)) and how you evaluate the results of that query (Painless scripting). + +The following example averages the `cpu_usage` field: + +```json + { + "size": 0, + "query": { + "match_all": {} + }, + "aggs": { + "avg_cpu": { + "avg": { + "field": "cpu_usage" + } + } + } + } +``` + +You can also filter query results using `{% raw %}{{period_start}}{% endraw %}` and `{% raw %}{{period_end}}{% endraw %}`: + +```json + { + "size": 0, + "query": { + "bool": { + "filter": [{ + "range": { + "timestamp": { + "from": "{% raw %}{{period_end}}{% endraw %}||-1h", + "to": "{% raw %}{{period_end}}{% endraw %}", + "include_lower": true, + "include_upper": true, + "format": "epoch_millis", + "boost": 1 + } + } + }], + "adjust_pure_negative": true, + "boost": 1 + } + }, + "aggregations": {} + } +``` + +"Start" and "end" refer to the interval at which the monitor runs. See [Monitor variables]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/#monitor-variables). + +To define a monitor visually, choose **Visual editor**. Then choose a source index, a time frame, an aggregation (for example, `count()` or `average()`), a data filter (if you want to monitor a subset of your source index), and a group-by field if you want to include an aggregation field in your query. At least one group-by field is required if you're defining a per bucket monitor. + +Visual definition works well for most monitors. +{: .tip } + +If you use the Security plugin, you can only choose indexes that you have permission to access. For details, see [Alerting security]({{site.url}}{{site.baseurl}}/security/). + +To use a query, choose **Extraction query editor**, add your query (using [OpenSearch query DSL]({{site.url}}{{site.baseurl}}/opensearch/query-dsl/full-text/index)), and test it using the **Run** button. + +The monitor makes this query to OpenSearch as often as the schedule dictates; check the **Query Performance** section and make sure you're comfortable with the performance implications. + +Anomaly detection is available only if you are defining a per query monitor. +{: .warning} + +To use an anomaly detector, choose **Anomaly detector** and select your **Detector**. + +The anomaly detection option is for pairing with the Anomaly Detection plugin. See [Anomaly Detection]({{site.url}}{{site.baseurl}}/monitoring-plugins/ad/). + +For anomaly detector, choose an appropriate schedule for the monitor based on the detector interval. Otherwise, the alerting monitor might miss reading the results. For example, assume you set the monitor interval and the detector interval as 5 minutes, and you start the detector at 12:00. If an anomaly is detected at 12:05, it might be available at 12:06 because of the delay between writing the anomaly and it being available for queries. The monitor reads the anomaly results between 12:00 and 12:05, so it does not get the anomaly results available at 12:06. + +To avoid this issue, make sure the alerting monitor is at least twice the detector interval. When you create a monitor using OpenSearch Dashboards, the anomaly detector plugin generates a default monitor schedule that's twice the detector interval. + +Whenever you update a detector’s interval, make sure to update the associated monitor interval, as the Anomaly Detection plugin does not do this automatically. + +**Step 2.** Choose the frequency to run the monitor, for example, either by time intervals (minutes, hours, days) or on a schedule. If you run it by time interval or on a custom [custom cron expression]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/cron/), then you must provide the time zone. + +**Step 3.** Add a trigger to the monitor. diff --git a/_observing-your-data/alerting/triggers.md b/_observing-your-data/alerting/triggers.md index 5499cbbaba..c89f1c45e6 100644 --- a/_observing-your-data/alerting/triggers.md +++ b/_observing-your-data/alerting/triggers.md @@ -1,7 +1,7 @@ --- layout: default title: Triggers -nav_order: 10 +nav_order: 40 grand_parent: Alerting parent: Monitors --- diff --git a/images/cluster-metrics.png b/images/cluster-metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee172d7c7ef31298a67d52d2c381062618fe7f3 GIT binary patch literal 178274 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

p2HAZ7y-acCz4BqrNblWn8Q=$=i#B0jCv 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 z� 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