
# 配置OpenSearch告警通知（SMN）
在实时大数据监控场景下，运维人员需要第一时间获知集群健康状态或业务指标的异常波动。虽然OpenSearch提供了强大的检索能力，但原生系统缺乏与云原生通知服务的深度集成。通过CSS服务给OpenSearch集群预置的告警插件与通知插件，可以对接消息通知服务（SMN）。通过配置监控器实时轮询索引数据，当数据满足触发条件时，CSS服务将调用SMN接口将告警信息推送至订阅者，构建起一套"无人值守"的自动化监控闭环。
#### 功能介绍
OpenSearch集群预置的开源OpenSearch告警插件（opensearch-alerting）与OpenSearch通知插件（opensearch-notifications、opensearch-notifications-core），用于提供数据满足特定条件时的通知功能。
图1告警通知链路   
![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002554119613.png "点击放大")
1. Monitor（监控器）定义了查询条件，如"去哪个索引查"、"多久查一次"。
2. Trigger（触发器）根据查询条件进行决策，满足什么条件触发告警（如查询结果"count \> 100"）以及触发后的动作（Action）。
3. Destination/Channel（目的端/通道）是消息通路，定义了告警发往SMN主题。
4. CSS集群通过服务授权委托CSS使用SMN的权限。
5. SMN将收到的告警信息推送至订阅者。
告警插件的详细信息请参见官方文档[Alerting - OpenSearch Documentation](https://docs.opensearch.org/2.19/observing-your-data/alerting/index/)，通知插件的详细信息请参见官方文档[Notifications - OpenSearch Documentation](https://docs.opensearch.org/2.19/observing-your-data/notifications/index/)。
#### 约束与限制
OpenSearch集群仅1.3.6、2.19.0和3.4.0版本预置了告警插件，只有满足版本要求的集群才支持配置SMN告警通知。
- OpenSearch 1.3.6集群预置了OpenSearch告警插件（opensearch-alerting）。OpenSearch告警插件包含Alerts、Monitors、Destinations三个组件，CSS服务在Destinations组件中适配了消息通知服务SMN，支持通过SMN服务作为目的端（Destination）进行告警消息发送。
- OpenSearch 2.19.0和OpenSearch 3.4.0（镜像版本不低于3.4.0_26.6.0_xxx）集群预置了OpenSearch告警插件（opensearch-alerting）与OpenSearch通知插件（opensearch-notifications、opensearch-notifications-core）。OpenSearch告警插件中的Destinations组件成为独立的通知插件，管理通知通道（Channel）。CSS服务在通知插件中适配了消息通知服务SMN，支持通过SMN服务作为通知通道。
 
 #### 准备工作
1. 准备SMN主题。在SMN服务创建主题并添加订阅者（手机号/邮箱）。操作指导请参见[通过SMN发布模板消息](https://support.huaweicloud.com/qs-smn/smn_template.html)
2. 开启SMN服务授权。通过配置IAM委托，授权CSS服务访问SMN服务。
   1. 使用CSS服务的管理员账号登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
      CSS服务的管理员账号需要如下IAM最小权限：
      ```
      "iam:agencies:listAgencies",
      "iam:roles:listRoles",
      "iam:agencies:getAgency",
      "iam:agencies:createAgency",
      "iam:permissions:listRolesForAgency",
      "iam:permissions:grantRoleToAgency",
      "iam:permissions:listRolesForAgencyOnProject",
      "iam:permissions:revokeRoleFromAgency",
      "iam:roles:createRole"
      ```
      
   
   2. 在左侧导航栏选择"服务授权"。
   
   3. 在服务授权页面，单击"创建SMN委托"，在弹窗中确认委托创建成功。
      - 如果已经创建过委托，则右上角会提示"SMN授权委托已存在。" ，表示已开启SMN服务授权。
      
      - 如果无创建权限，则右上角会提示"当前用户没有操作权限，请通过IAM检查账户权限！"，请确认该管理员账号是否配置了IAM使用权限。
       
    
 
#### 配置SMN告警通知（OpenSearch 2.19.0或3.4.0）
![](https://support.huaweicloud.com/usermanual-css/public_sys-resources/caution_3.0-zh-cn.png)
OpenSearch 3.4.0要求镜像版本不低于3.4.0_26.6.0_xxx才支持配置SMN告警通知。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
   使用具有CSS服务操作权限的账号登录即可。
   
2. 在左侧导航栏，选择"集群管理 \> OpenSearch"。
3. 在集群列表，选择目标集群，单击操作列的"Dashboards"，登录OpenSearch Dashboards。
4. 在OpenSearch Dashboards页面，选择左侧导航栏的"Management \> Notifications"，进入通知插件界面。
5. 新建一个SMN通道用于发送告警消息。
   1. 在Channels页面单击"Create channel"配置通道信息。
      表1Channel参数说明 
      | 参数名称         | 说明                                                                                |
      |:---|:---|
      | Name         | 自定义通道名称。                                                                          |
      | Description  | 通道描述信息。                                                                           |
      | Channel type | 选择通知类型。请固定选择"SMN"。                                                                |
      | Topic        | 关联SMN主题。选择[准备工作]中创建的SMN主题名。 |
         
      图2Create channel   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002417423609.png) 
   
   2. 单击"Create"创建通道。
   
   3. 返回Channels页面，在列表可见新建的SMN目的端，表示创建完成。
      图3Channels列表   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002417543465.png "点击放大") 
    
6. 在Dashboards页面，选择左侧导航栏的"OpenSearch Plugins \> Alerting"，进入告警插件界面。
7. 新建监控器与触发器，定义告警的触发条件和监控频率。
   1. 在Alerting页面选择"Monitors"页签，单击"Create monitor"配置监控器。
      表2Monitors参数说明 
      | 参数名称                                           || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      |:---|---|:---|
      | Monitor details | Monitor name                  | 自定义一个监控器名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      | Monitor details | Monitor type                  | 选择Monitor类型。 - Per query monitor（普通监控）  - Per bucket monitor（聚合桶监控）  - Per cluster metrics monitor（集群指标监控）  - Per document monitors（文档级监控）  - Composite monitors（复合监控）   本示例选择"Per query monitor"，其类型的配置指导请参见OpenSearch官方文档[Monitors](https://docs.opensearch.org/2.19/observing-your-data/alerting/monitors/)。 |
      | Monitor details | Monitor defining method       | 选择一种方式定义监控器，推荐使用"Extraction query editor"。 - Visual editor：可视化的query语句  - Extraction query editor：具体的query语句  - Anomaly detector：异常检测插件的监测   选择不同的"Monitor type"，所支持的监控方式不同，请以实际界面为准。                                                                                                                                                                                                                                                                                                                   |
      | Monitor details | Detector                      | 当"Monitor defining method"选择"Anomaly detector"时，请选择异常检测任务。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | Monitor details | Frequency                     | 选择监控频率，并设置监控频率的间隔信息。 - By interval：按时间间隔  - Daily：按每天  - Weekly：按每周  - Monthly：按每月  - Custom cron expression：按cron脚本规划                                                                                                                                                                                 |
      | Select data     | Index                         | 当"Monitor defining method"选择"Visual editor"或"Extraction query editor"方式定义监控时，需要选择监控的索引。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      | Select data     | Time field                    | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要选择一个字段作为时间字段，来定义count等计数参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | Query           | Metrics                       | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要设置提取统计数据的指标范围。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | Query           | Time range for the last       | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要设置插件应监控的时间范围。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      | Query           | Data filter                   | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要设置过滤器进行数据检索。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | Query           | Group by                      | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要指定一个字段，使其每一个值都会触发告警。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      | Query           | Define extraction query       | 当"Monitor defining method"选择"Extraction query editor"方式定义监控时，需要输入query语句定义监控。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      | Query           | Request type                  | 当"Monitor type"选择"Per cluster metrics monitor"时，需要指定请求类型来监控集群指标，例如运行状况、CPU使用率等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | Query           | Preview query and performance | 预览当前Query配置下查询结果。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
         
      
   
   2. 单击"Add trigger"添加Triggers指定告警触发条件及告警时应触发的动作。
   
   3. 在"Triggers"设置触发告警的灵敏度和目的端的消息发布。
      表3Trigger参数说明 
      | 参数名称                                 || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      |:---|---|:---|
      | Define trigger    | Trigger name      | 自定义一个触发器名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | Define trigger    | Severity level    | 定义触发器的敏感度，选择触发多少条告警之后发送告警消息，"1"为最高敏感度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | Define trigger    | Trigger condition | 定义触发条件。满足触发条件就会触发告警。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | Configure actions | Action name       | 自定义一个触发器动作名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      | Configure actions | Channels          | 选择[5]创建的SMN通道。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      | Configure actions | Message subject   | 消息的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | Configure actions | Message           | 设置SMN主题发送的body，定义消息发布的文本。默认定义了目的端是Email类型时的主题和正文，详细参数说明请参见[消息发布](https://support.huaweicloud.com/api-smn/PublishMessage.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      | Configure actions | Perform action    | 当"Monitor type"选择"Per bucket monitor"时，需要设置告警是否组合发送。 - Per execution：多个指标触发条件后组合发送告警。  - Per alert：多个指标触发条件后各自发送告警。                                                                                                                                                                        |
      | Configure actions | Actionable alerts | 当"Monitor type"选择"Per bucket monitor"、"Perform action"选择"Per alert"时，需要设置触发条件后可执行的告警。 - De-duplicated：已触发的告警，OpenSearch保留现有告警，以防止多次创建相同告警。  - New：新创建的告警。  - Completed：不持续触发的告警。   |
      | Configure actions | Throttling        | 设置消息发送频率用来限制在指定时间段内收到的通知消息数量，防止在异常波动期间瞬间产生数千条消息致资费消耗或信息轰炸。 例如设置10分钟，在接下来的10分钟内，即使触发条件满足多次，SMN仅发送1次告警通知。超过10分钟后，如果触发告警条件，SMN才会再次发送告警通知。                                                                                                                                                                                                                                                                                                                                                                                                 |
         
      图4设置触发器动作的目的端   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002383984212.png "点击放大") 
   
   4. 单击"Send test message"验证告警通知链路。
   
   5. 如[图6]所示，SMN主题订阅者成功收到消息，则表示告警通知设置成功。
      图5发送验证信息   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002417543469.png "点击放大")
      图6成功收到邮件通知   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002383824328.png "点击放大") 
   
   6. 单击"Create"返回Monitor详情页，完成配置。
    
 
#### 配置SMN告警通知（OpenSearch 1.3.6）
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
   使用具有CSS服务操作权限的账号登录即可。
   
2. 在左侧导航栏，选择"集群管理 \> OpenSearch"。
3. 在集群列表，选择目标集群，单击操作列的"Dashboards"，登录OpenSearch Dashboards。
4. 在OpenSearch Dashboards页面，选择左侧导航栏的"菜单 \> Alerting"。
5. 新建一个SMN目的端用于发送告警消息。
   1. 在Alerting页面选择"Destinations"页签，单击"Add destination"配置目的端信息。
      表4Destinations参数说明 
      | 参数名称  | 说明                                                                                |
      |:---|:---|
      | Name  | 自定义目的端名称。                                                                         |
      | Type  | 选择通知类型。请固定选择"SMN"。                                                                |
      | Topic | 关联SMN主题。选择[准备工作]中创建的SMN主题名。 |
         
      图7Add destination   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000001965417005.png "点击放大") 
   
   2. 单击"Create"创建Destinations。
   
   3. 返回Destinations页面，在列表可见新建的SMN目的端，表示创建完成。
      图8Destinations列表   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000001938378012.png "点击放大") 
    
6. 新建监控器与触发器，定义告警的触发条件和监控频率。
   1. 在Alerting页面选择"Monitors"页签，单击"Create monitor"配置监控器。
      表5Monitors参数说明 
      | 参数名称                                     || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      |:---|---|:---|
      | Monitor details | Monitor name            | 自定义一个监控器名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
      | Monitor details | Monitor type            | 选择Monitor类型。 - Per query monitor（普通监控）  - Per bucket monitor（聚合桶监控）  - Per cluster metrics monitor（集群指标监控）  - Per document monitors（文档级监控）  - Composite monitors（复合监控）   本示例选择"Per query monitor"，其类型的配置指导请参见OpenSearch官方文档[Monitors](https://docs.opensearch.org/2.19/observing-your-data/alerting/monitors/)。 |
      | Monitor details | Monitor defining method | 选择一种方式定义监控器，推荐使用"Extraction query editor"。 - Visual editor：可视化的query语句  - Extraction query editor：具体的query语句  - Anomaly detector：异常检测插件的监测   选择不同的"Monitor type"，所支持的监控方式不同，请以实际界面为准。                                                                                                                                                                                                                                                                                                               |
      | Monitor details | Detector                | 当"Monitor defining method"选择"Anomaly detector"时，请选择异常检测任务。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      | Monitor details | Frequency               | 选择监控频率，并设置监控频率的间隔信息。 - By interval：按时间间隔  - Daily：按每天  - Weekly：按每周  - Monthly：按每月  - Custom cron expression：按cron脚本规划                                                                                                                                                                                     |
      | Data source     | Index                   | 当"Monitor defining method"选择"Visual editor"或"Extraction query editor"方式定义监控时，需要选择监控的索引。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      | Data source     | Time field              | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要选择一个字段作为时间字段，来定义count等计数参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | Query           | Metrics                 | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要设置提取统计数据的指标范围。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      | Query           | Time range for the last | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要设置插件应监控的时间范围。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | Query           | Data filter             | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要设置过滤器进行数据检索。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      | Query           | Group by                | 当"Monitor defining method"选择"Visual editor"方式定义监控时，需要指定一个字段，使其每一个值都会触发告警。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | Query           | Define extraction query | 当"Monitor defining method"选择"Extraction query editor"方式定义监控时，需要输入query语句定义监控。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      | Query           | Request type            | 当"Monitor type"选择"Per cluster metrics monitor"时，需要指定请求类型来监控集群指标，例如运行状况、CPU使用率等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
         
      
   
   2. 单击"Add trigger"添加Triggers指定告警触发条件及告警时应触发的动作。
   
   3. 在"Triggers"设置触发告警的灵敏度和目的端的消息发布。
      表6Trigger参数说明 
      | 参数名称                                 || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      |:---|---|:---|
      | Define trigger    | Trigger name      | 自定义一个触发器名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | Define trigger    | Severity level    | 定义触发器的敏感度，选择触发多少条告警之后发送告警消息，"1"为最高敏感度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
      | Define trigger    | Trigger condition | 定义触发条件。满足触发条件就会触发告警。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | Configure actions | Action name       | 自定义一个触发器动作名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | Configure actions | Destination       | 选择[5]创建的SMN目的端。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | Configure actions | Message           | 设置SMN主题发送的body，定义消息发布的文本。默认定义了目的端是Email类型时的主题和正文，详细参数说明请参见[消息发布](https://support.huaweicloud.com/api-smn/PublishMessage.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      | Configure actions | Perform action    | 当"Monitor type"选择"Per bucket monitor"时，需要设置告警是否组合发送。 - Per execution：多个指标触发条件后组合发送告警。  - Per alert：多个指标触发条件后各自发送告警。                                                                                                                                                            |
      | Configure actions | Actionable alerts | 当"Monitor type"选择"Per bucket monitor"、"Perform action"选择"Per alert"时，需要设置触发条件后可执行的告警。 - De-duplicated：已触发的告警，OpenSearch保留现有告警，以防止多次创建相同告警。  - New：新创建的告警。  - Completed：不持续触发的告警。   |
      | Configure actions | Throttling        | 设置消息发送频率用来限制在指定时间段内收到的通知消息数量，防止在异常波动期间瞬间产生数千条消息致资费消耗或信息轰炸。 例如设置10分钟，在接下来的10分钟内，即使触发条件满足多次，SMN仅发送1次告警通知。超过10分钟后，如果触发告警条件，SMN才会再次发送告警通知。                                                                                                                                                                                                                                                                                                                                                                                         |
         
      图9设置触发器动作的目的端   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000001938378016.png "点击放大") 
   
   4. 单击"Send test message"验证告警通知链路。
      图10发送验证信息   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002523275034.png "点击放大") 
   
   5. 如[图11]所示，SMN主题订阅者成功收到消息，则表示告警通知设置成功。
      图11成功收到邮件通知   
      ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000001965497233.png "点击放大") 
   
   6. 单击"Create"返回Monitor详情页，完成配置。
    
 
