From e9f8a92ba9489916b90b0c32ac5df7b17500962f Mon Sep 17 00:00:00 2001 From: Melissa Vagi Date: Wed, 19 Jul 2023 14:54:37 -0600 Subject: [PATCH] [DOC] Add new cluster metrics monitor supported APIs (#4525) *Add new cluster metrics monitors APIs --------- Signed-off-by: Melissa Vagi --- _observing-your-data/alerting/actions.md | 64 ++ _observing-your-data/alerting/api.md | 21 +- .../alerting/dashboards-alerting.md | 2 +- _observing-your-data/alerting/index.md | 43 +- _observing-your-data/alerting/monitors.md | 560 +++--------------- _observing-your-data/alerting/security.md | 2 +- _observing-your-data/alerting/triggers.md | 141 +++++ breaking-changes.md | 2 +- images/monitors.png | Bin 0 -> 190163 bytes 9 files changed, 335 insertions(+), 500 deletions(-) create mode 100644 _observing-your-data/alerting/actions.md create mode 100644 _observing-your-data/alerting/triggers.md create mode 100644 images/monitors.png diff --git a/_observing-your-data/alerting/actions.md b/_observing-your-data/alerting/actions.md new file mode 100644 index 00000000000..c14f66031a2 --- /dev/null +++ b/_observing-your-data/alerting/actions.md @@ -0,0 +1,64 @@ +--- +layout: default +title: Actions +nav_order: 15 +grand_parent: Alerting +parent: Monitors +redirect_from: + - /monitoring-plugins/alerting/monitors/ +--- + +# Actions + +Actions send notifications when trigger conditions are met. See [Notifications]({{site.url}}{{site.baseurl}}/notifications-plugin/index/) to learn about creating notifications. If you don't want to receive notifications, don't add actions to your triggers. + +## Adding actions + +To add an action: + +1. In the **Triggers** panel, select **Add action**. +1. Enter the action details, including action name, notification channel, and notification message body, in the **Notification** section. + + 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, and all [actions variables](#actions-variables). + + If your notification channel is a custom webhook that expects a particular data format, include JSON (or 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 the preceding example, 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, 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 time frame. + + 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 Analytics]({{site.url}}{{site.baseurl}}/security-analytics/index/) plugin. Securing access to the message (for example, access to the Slack channel) is your responsibility. + +#### Example 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 %} +``` + +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 } + +#### Actions variables + +Variable | Data type | Description +:--- | :--- | : --- +`ctx.trigger.actions.id` | String | The action ID. +`ctx.trigger.actions.name` | String | The action 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](#adding-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. diff --git a/_observing-your-data/alerting/api.md b/_observing-your-data/alerting/api.md index 9712ee8d3ac..4b97730e10b 100644 --- a/_observing-your-data/alerting/api.md +++ b/_observing-your-data/alerting/api.md @@ -11,16 +11,7 @@ redirect_from: Use the Alerting API to programmatically create, update, and manage monitors and alerts. ---- - -#### Table of contents -- TOC -{:toc} - - ---- - -## Create a query-level monitor +## Query-level monitors Introduced 1.0 {: .label .label-purple } @@ -324,7 +315,7 @@ For a full list of timezone names, refer to [Wikipedia](https://en.wikipedia.org --- -## Create a bucket-level monitor +## Bucket-level monitors Bucket-level monitors categorize results into buckets separated by fields. The monitor then runs your script with each bucket's results and evaluates whether to trigger an alert. For more information about bucket-level and query-level monitors, see [Create monitors]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/monitors/). @@ -588,12 +579,11 @@ Introduced 2.0 Document-level monitors check whether individual documents in an index match trigger conditions. If so, the monitor generates an alert notification. When you run a query with a document-level monitor, the results are returned for each document that matches the trigger condition. You can create trigger conditions based on query names, query IDs, or tags that combine multiple queries. -To learn more about per document monitors that function similarly to the document-level monitor API, see [Monitor types]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/monitors/#monitor-types). +To learn more about per document monitors that function similarly to the document-level monitor API, see [Monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/). -### Search for monitor findings - -You can use the Alerting search API operation to search the findings index `.opensearch-alerting-finding*` for available document findings with a GET request. By default, a GET request without path parameters returns all available findings. To learn more about monitor findings, see [Document findings]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/monitors/#document-findings). +### Search the findings index +You can use the Alerting search API operation to search the findings index `.opensearch-alerting-finding*` for available document findings with a GET request. By default, a GET request without path parameters returns all available findings. To retrieve any available findings, send a GET request without any path parameters as follows: @@ -621,7 +611,6 @@ Path parameter | Description | Usage `startIndex` | The pagination indicator. | Default is `0`. `searchString` | The finding attribute you want returned in the search. | To search in a specific index, specify the index name in the request path. For example, to search findings in the `indexABC` index, use `searchString=indexABC'. - ### Create a document-level monitor You can create a document-level monitor with a POST request that provides the monitor details in the request body. diff --git a/_observing-your-data/alerting/dashboards-alerting.md b/_observing-your-data/alerting/dashboards-alerting.md index 25f8d675c66..3c7719edfc2 100644 --- a/_observing-your-data/alerting/dashboards-alerting.md +++ b/_observing-your-data/alerting/dashboards-alerting.md @@ -46,7 +46,7 @@ Keep in mind the following requirements when setting up or creating alerting vis ## Creating alerting monitors -By default, when you begin to create the alert monitor workflow using the Dashboard interface, you are presented with a menu-driven interface. This interface provides a range of options that are displayed in full screen, in pop-ups, in pull-downs, or in dropdowns. They allow you to define the metrics that can be monitored, set thresholds, customize triggers that automate workflows, and generate actions when conditions are met. Currently, you can only create [per query monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/#monitor-types). +By default, when you begin to create the alert monitor workflow using the Dashboard interface, you are presented with a menu-driven interface. This interface provides a range of options that are displayed in full screen, in pop-ups, in pull-downs, or in dropdowns. They allow you to define the metrics that can be monitored, set thresholds, customize triggers that automate workflows, and generate actions when conditions are met. Currently, you can only create [per query monitors]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/). To create an alerting monitor: diff --git a/_observing-your-data/alerting/index.md b/_observing-your-data/alerting/index.md index fa033ce1110..b2f9477b9d2 100644 --- a/_observing-your-data/alerting/index.md +++ b/_observing-your-data/alerting/index.md @@ -9,17 +9,44 @@ redirect_from: --- # Alerting -OpenSearch Dashboards -{: .label .label-yellow :} -You can use the Alerting plugin in OpenSearch Dashboards to monitor your data and create alert notifications that trigger when conditions occur in one or more indexes. +To create an alert, do the following: -You create a monitor with trigger conditions that generate various alert notifications through the message channel you select as a destination. Notifications can be sent to email, Slack, or Amazon Chime. +- Configure a _monitor_, which is a job that runs on a defined schedule and queries OpenSearch indexes. Required. +- 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. -The monitor you create notifies you when data from one or more OpenSearch indexes meets certain conditions. For example, you might want to notify a [Slack](https://slack.com/) channel if your application logs more than five HTTP 503 errors in one hour, or you might want to page a developer if no new documents have been indexed in the past 20 minutes. +## Getting started -To get started, choose **Alerting** in OpenSearch Dashboards. +To get started with creating alerts: -![OpenSearch Dashboards side bar with link]({{site.url}}{{site.baseurl}}/images/dashboards-nav.png) +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/). -***Figure 1: Alerting plugin in OpenSearch Dashboards*** +## Alerting terminology + +The following table lists alerting terminology commonly used in OpenSearch. + +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*`. + +## Alert states + +The following table lists the alert 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. Alerts also can be moved out of the active state if the trigger condition is no longer met. For example, if an index has 4,000 documents and a trigger condition is `numOfDocs > 5000`, an active alert is generated when 3,000 documents are added to the index. If the added 3,000 documents are then deleted from the index, the alert changes to the completed state because the condition is no longer triggered. +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. diff --git a/_observing-your-data/alerting/monitors.md b/_observing-your-data/alerting/monitors.md index 4d9b0c651d3..dfc806d00e2 100644 --- a/_observing-your-data/alerting/monitors.md +++ b/_observing-your-data/alerting/monitors.md @@ -3,349 +3,44 @@ layout: default title: Monitors nav_order: 1 parent: Alerting -has_children: false +has_children: true redirect_from: - /monitoring-plugins/alerting/monitors/ --- # Monitors -#### Table of contents -- TOC -{:toc} +Proactively monitor your data in OpenSearch with alerting and anomaly detection. Set up alerts to receive notifications when your data exceeds certain thresholds. Anomaly detection uses machine learning (ML) to automatically detect any outliers in your streaming data. You can pair anomaly detection with alerting to ensure that you're notified as soon as an anomaly is detected. ---- - -## Monitor types - -The OpenSearch Dashboard Alerting plugin provides four monitor types: -* **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. - -## 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}}/monitoring-plugins/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 for monitor findings]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/api/#search-for-monitor-findings). - -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. +See [Creating monitors](#creating-monitors), [Triggers]({{site.url}}{{site.baseurl}}/observing-your-data/monitors/triggers/), [Actions]({{site.url}}{{site.baseurl}}/observing-your-data/monitors/actions/), and [Notifications]({{site.url}}{{site.baseurl}}/observing-your-data/notifications/index/) to learn more about the use of these alerting features in OpenSearch. +The Alerting plugin provides four monitor types: -#### Manage email groups or recipients +1. **per query**: Runs a query and generates alert notifications based on the matching criteria. +1. **per bucket**: Runs a query that evaluates trigger criteria based on aggregated values in the dataset. +1. **per cluster metrics**: Runs API requests on the cluster to monitor its health. +1. **per document**: Runs a query (or multiple queries combined by a tag) that returns individual documents that match the alert notification trigger condition. -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 +![Monitor types in OpenSearch]({{site.url}}{{site.baseurl}}/images/monitors.png) -Steps to create a trigger differ depending on whether you chose **Visual editor**, **Extraction query editor**, or **Anomaly detector** when you created the monitor. +## Creating monitors -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. +To create a monitor: -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. +1. In the **OpenSearch Plugins** main menu, choose **Alerting**. +1. Choose **Create monitor**. +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]({{site.url}}{{site.baseurl}}/observing-your-data/triggers/). +1. Select **Create**. -### Visual editor +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/). +{: .note} -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." +## Monitor variables -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. - -Document-level monitors provide the added option to use tags that represent multiple queries connected by the logical OR operator. - -To create a multiple query combination trigger, do the following steps: - -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. - -### 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; -} -``` - -Below are some variables you can include in your message using Mustache templates to see more information about your monitors. - -### Available variables - -#### Monitor variables +The following table lists the variables you can use to customize your monitors. Variable | Data type | Description :--- | :--- | :--- @@ -360,166 +55,81 @@ 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 - -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.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.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. -`ctx.dedupedAlerts` | Object | Alerts that have already been triggered. OpenSearch keeps the existing alert to prevent the plugin from creating endless amounts of the same alerts. Only available with bucket-level monitors. -`ctx.newAlerts` | Object | Newly created alerts. Only available with bucket-level monitors. -`ctx.completedAlerts` | Object | Alerts that are no longer ongoing. Only available with bucket-level monitors. -`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. +## Creating per document monitors +Introduced 2.0 +{: .label .label-purple } -Q: Can I still create destinations? -A: No, destinations have been deprecated and can no longer be created/edited. +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: -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. +- `is` +- `is not` +- `is greater than` +- `is greater than equal` +- `is less than` +- `is less than equal` -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. +You can 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. The Alerting plugin then tells the Notifications plugin to send the alert notification to a channel. -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. +The Alerting plugin also creates a list of document findings that contain 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 OpenSearch Dashboards. See [Document-level monitors]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/api/#document-level-monitors) to learn more. +{: .note} ---- +### Searching document findings -## Work with alerts +When a per document monitor runs 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. See [Search the findings index]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/api/#search-the-findings-index) for more information. -Alerts persist until you resolve the root cause and have the following states: +The following metadata is provided for each document findings entry: -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. +* **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. ---- +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} -## Create cluster metrics monitor +## Creating cluster metrics monitors 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 +- The cluster health status is yellow or red. +- Cluster-level metrics, such as CPU usage and JVM memory usage, reach a specified threshold. +- 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 threshold. 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. +1. In the **OpenSearch Plugins** main menu, select **Alerting**. +1. Select **Monitors**, then **Create monitor**. +1. Select **Per cluster metrics monitor**. +1. In the Query section, select **Request type** from the dropdown. +1. To filter the API response to use only certain path parameters, enter those parameters in the **Query parameters** field. Most APIs that can be used to monitor cluster status support path parameters, as described in their respective documentation (for example, comma-separated lists of index names). +1. In the Triggers section, define the conditions that will trigger an alert. The trigger condition auto-populates 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 preview the condition response, select **Preview condition response**. +1. In the Actions section, indicate how users are to be notified when a trigger condition is met. +1. Select **Create**. The new monitor is listed under **Monitors**. ### 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. +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/) -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/) +### Restricting API fields -### Restrict API fields +To hide fields from being exposed in the API response, 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. -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. +You can modify the file so that cluster metric monitors can only be created for referenced APIs. Only fields referenced in the supported files can create trigger conditions. The `supported_json_payloads.json` file 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. -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. +#### Example ```json "/_cluster/stats": { @@ -532,11 +142,11 @@ However, you can modify the file so that cluster metric monitors can only be cre ### 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. +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 comprise at least one statement and any additional functions you want to run. The cluster metrics monitor supports up to **10** triggers. -The cluster metrics monitor supports up to **ten** triggers. +In the following example, a JSON object defines 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\`. -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\`. +#### Example ```json { @@ -579,13 +189,17 @@ In this example, a JSON object creates a trigger that sends an alert when the Cl } ``` -See [trigger variables](#trigger-variables) for more painless ctx options. - ### Limitations -Currently, the cluster metrics monitor has the following limitations: +The cluster metrics monitor has the following limitations: + +- Monitors cannot be created for remote clusters. +- The OpenSearch cluster must be in a state where an index's conditions can be monitored and actions can be run against the index. +- Removing resource permissions from a user does not prevent that user’s preexisting monitors for that resource from running. +- Users with permissions to create monitors are not blocked from creating monitors for resources for which they do not have permissions. While the monitors will run, they will not be able to run the API calls, and a permissions alert will be generated, for example, `no permissions for [cluster:monitor/health]`. + +## Next steps -- 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. +- Learn about [Triggers]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/triggers/). +- Learn about [Actions]({{site.url}}{{site.baseurl}}/observing-your-data/alerting/monitors/actions/). +- Learn about [Notifications]({{site.url}}{{site.baseurl}}/observing-your-data/notifications/index/). diff --git a/_observing-your-data/alerting/security.md b/_observing-your-data/alerting/security.md index de4d488af26..76475c2a897 100644 --- a/_observing-your-data/alerting/security.md +++ b/_observing-your-data/alerting/security.md @@ -128,4 +128,4 @@ The following sample shows the RBAC roles specified by the RBAC parameter: } ``` -To see a full request sample, see [Create a monitor]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/api/#create-a-query-level-monitor). \ No newline at end of file +To see a full request sample, see [Create a monitor]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/api/#query-level-monitors). \ No newline at end of file diff --git a/_observing-your-data/alerting/triggers.md b/_observing-your-data/alerting/triggers.md new file mode 100644 index 00000000000..854dd60d6e7 --- /dev/null +++ b/_observing-your-data/alerting/triggers.md @@ -0,0 +1,141 @@ +--- +layout: default +title: Triggers +nav_order: 10 +grand_parent: Alerting +parent: Monitors +redirect_from: + - /monitoring-plugins/alerting/monitors/ +--- + +# Triggers + +How you create a trigger differs depending on the monitor method selected when the monitor was created. The monitor methods are **Visual editor**, **Extraction query editor**, and **Anomaly detector**. Learn more about each type in the following sections. + +## Creating triggers + +To create a trigger: + +1. In the **Create monitor** window, select **Add trigger**. +2. Enter the trigger name, severity level, and trigger condition. Severity levels, which range from 1 (highest) to 5 (lowest) help manage alerts. For example, a trigger with a high severity level (for example, 1 or 2) may notify a specific individual, whereas a trigger with a low severity level (4 or 5) might notify a chat room. Trigger conditions include "IS ABOVE," "IS BELOW," and "IS EXACTLY." + +Query-level monitors run your trigger's script once against the query's results, and bucket-level monitors run your trigger's script on each bucket. Create a trigger that best fits the monitor method. To run multiple scripts, you must create multiple triggers. +{: .note} + +## Visual editor + +For a query-level monitor's trigger condition, specify a threshold for the aggregation and time frame you chose when you created the monitor (for example, "IS BELOW 1,000" or "IS EXACTLY 10"). The line moves up and down as you increase or decrease the threshold. Once this line is crossed, the trigger evaluates to `true`. + +For a bucket-level monitor, you must specify a threshold and value for the aggregation and time frame. You can use a maximum of five conditions to refine your trigger. Optionally, you can also use a keyword filter to filter for a specific field in your index. + +For document-level monitors, use tags that represent multiple queries connected by the logical `OR` operator. To create a multiple-query trigger: + +1. Select **Per document monitor**. +2. Select a data source. +3. Enter the query name and field information. For example, set the query to search for the `region` field with either the operator "is" or "is not" and the value "us-west-2". +4. Select **Add tag** and enter a tag name. +5. Create the second query by selecting **Add another query** and add the same tag to it. + +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, the alert notification is generated. + +## Extraction query editor + +For 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, the 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 that the trigger condition has been met and the trigger should run its actions. Test the 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`: Maps variable names to metrics to use in your script. +- `parent_bucket_path`: The 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`: The script that OpenSearch runs to evaluate whether to trigger any alerts. + +The following is an example script: + +```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. The `composite_agg` is a path to a multi-bucket aggregation. + +## Anomaly detector + +To use the anomaly detector method: + +1. For **Trigger type**, choose **Anomaly detector grade and confidence**. +2. Specify the **Anomaly grade condition** for the aggregation and time frame you chose when you created the monitor, for example, "IS ABOVE 0.7" or "IS EXACTLY 0.5." The *anomaly grade* is a number between 0 and 1 that indicates how anomalous a data point is. +3. Specify the **Anomaly confidence condition** for the aggregation and time frame 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 + + +```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; +} +``` + +#### Trigger variables + +Variable | Data type | Description +:--- | :--- | : --- +`ctx.trigger.id` | String | The trigger ID. +`ctx.trigger.name` | String | The trigger name. +`ctx.trigger.severity` | String | The trigger severity. +`ctx.trigger.condition`| Object | Contains the Painless script used when the monitor was created. +`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. + +#### Other variables + +Variable | Data type | Description +:--- | :--- : :--- +`ctx.results` | Array | An array with one element (`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 was 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 displayed if the trigger was unable to retrieve results or could not be evaluated, 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. +`ctx.dedupedAlerts` | Object | Alerts that have been triggered. OpenSearch keeps the existing alert to prevent the plugin from creating endless numbers of the same alert. Only available with bucket-level monitors. +`ctx.newAlerts` | Object | Newly created alerts. Only available with bucket-level monitors. +`ctx.completedAlerts` | Object | Alerts that are no longer ongoing. Only available with bucket-level monitors. +`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`. diff --git a/breaking-changes.md b/breaking-changes.md index 93ab061a896..22c6f99c56c 100644 --- a/breaking-changes.md +++ b/breaking-changes.md @@ -22,7 +22,7 @@ Non-inclusive terms are deprecated in version 2.x and will be permanently remove ### Add OpenSearch Notifications plugins -In OpenSearch 2.0, the Alerting plugin is now integrated with new plugins for Notifications. If you want to continue to use the notification action in the Alerting plugin, install the new backend plugins `notifications-core` and `notifications`. If you want to manage notifications in OpenSearch Dashboards, use the new `notificationsDashboards` plugin. For more information, see [Questions about destinations]({{site.url}}{{site.baseurl}}/monitoring-plugins/alerting/monitors#questions-about-destinations) on the Monitors page. +In OpenSearch 2.0, the Alerting plugin is now integrated with new plugins for Notifications. If you want to continue to use the notification action in the Alerting plugin, install the new backend plugins `notifications-core` and `notifications`. If you want to manage notifications in OpenSearch Dashboards, use the new `notificationsDashboards` plugin. For more information, see [Notifications]({{site.url}}{{site.baseurl}}/observing-your-data/notifications/index/) on the OpenSearch documentation page. ### Drop support for JDK 8 diff --git a/images/monitors.png b/images/monitors.png new file mode 100644 index 0000000000000000000000000000000000000000..012433b2d03ab4bfa4a79dcd7bf6c144a92eb2f0 GIT binary patch literal 190163 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 cnbBz5aT)7Exd`?