配置OpenDistro告警通知(SMN)
在实时大数据监控场景下,运维人员需要第一时间获知集群健康状态或业务指标的异常波动。虽然Elasticsearch提供了强大的检索能力,但原生系统缺乏与云原生通知服务的深度集成。通过CSS服务给Elasticsearch集群预置的OpenDistro告警插件,可以对接消息通知服务(SMN)。通过配置监控器实时轮询索引数据,当数据满足触发条件时,CSS服务将调用SMN接口将告警信息推送至订阅者,构建起一套“无人值守”的自动化监控闭环。
功能介绍
Elasticsearch集群预置的开源OpenDistro告警插件(opendistro_alerting),用于提供数据满足特定条件时的通知功能。
- Monitor(监控器)定义了查询条件,如“去哪个索引查”、“多久查一次”。
- Trigger(触发器)根据查询条件进行决策,满足什么条件触发告警(如查询结果“count > 100”)以及触发后的动作(Action)。
- Destination(目的端)是消息通路,定义了告警发往SMN主题。
- CSS集群通过服务授权委托使用SMN的权限。
- SMN将收到的告警信息推送至订阅者。
OpenDistro告警插件的详细信息请参见官方文档OpenDistro Alerting。
约束与限制
Elasticsearch集群仅7.6.2和7.10.2版本预置了OpenDistro告警插件,只有满足版本要求的集群才支持配置SMN告警通知。
准备工作
- 准备SMN主题。在SMN服务创建主题并添加订阅者(手机号/邮箱)。操作指导请参见通过SMN发布模板消息
- 开启SMN服务授权。通过配置IAM委托,授权CSS服务访问SMN服务。
- 使用CSS服务的管理员账号登录云搜索服务管理控制台。 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"
- 在左侧导航栏选择“服务授权”。
- 在服务授权页面,单击“创建SMN委托”,在弹窗中确认委托创建成功。
- 如果已经创建过委托,则右上角会提示“css_smn_agency exist, no need to created.”。
- 如果无创建权限,则右上角会提示“当前用户没有操作权限,请通过IAM检查账户权限!”,请确认该管理员账号是否配置了IAM使用权限。
- 使用CSS服务的管理员账号登录云搜索服务管理控制台。
配置SMN告警通知
- 登录云搜索服务管理控制台。
使用具有CSS服务操作权限的账号登录即可。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”。
- 在集群列表,选择目标集群,单击操作列的“Kibana”,登录Kibana。
- 在Kibana页面,选择左侧导航栏的“Open Distro for Elasticsearch > Alerting”。
- 新建一个SMN目的端用于发送告警消息。
- 在“Alerting”页面选择“Destinations”页签,单击“Add destination”配置目的端信息。
表1 Destinations参数说明 参数名称
说明
Name
自定义目的端名称。建议使用英文/数字标识业务。
Type
选择通知类型。请固定选择“SMN”。
Topic
关联SMN主题。选择准备工作中创建的SMN主题名。
图2 Add destination
- 单击“Create”完成目的端配置。
- 返回Destinations列表,在列表可见新建的SMN目的端,表示创建完成。 图3 Destinations列表
- 在“Alerting”页面选择“Destinations”页签,单击“Add destination”配置目的端信息。
- 新建监控器与触发器,定义告警的触发条件和监控频率。
- 在“Alerting”页面选择“Monitors”页签,单击“Create monitors”配置监控器。
表2 Monitors参数说明 参数名称
说明
Configure monitor
Monitor name
自定义一个监控器名称。
Monitor state
选择是否关闭监控器。
- 勾选Disable monitor:关闭监控器,将无法使用。
- 取消勾选Disable monitor(推荐):启用监控器。
Define monitor
Method of definition
选择一种方式定义监控器,推荐使用“Define using extraction query”。
- Define using visual graph:可视化的query语句
- Define using extraction query:具体的query语句
Index
选择监控的索引。
Time field
时间字段,用于定义count等计数参数。
仅当选择“Define using visual graph”方式定义监控器时,才需配置。
Monitor schedule
Frequency
选择监控频率,并设置监控频率的间隔信息。
- By interval:按时间间隔
- Daily:按每天
- Weekly:按每周
- Monthly:按每月
- Custom cron expression:按cron脚本规划
- 单击“Create”跳转到“Create trigger”页面。
- 在“Create trigger”页面设置指定告警触发条件及告警时应触发的动作。
表3 Trigger参数说明 参数名称
说明
Define trigger
Trigger name
自定义一个触发器名称。
Severity level
定义触发器的敏感度,选择触发多少条告警之后发送告警消息,“1”为最高敏感度。
Trigger condition
定义触发条件。满足触发条件就会触发告警。
Configure actions
Action name
自定义一个触发器动作名称。
Destination
选择5创建的SMN目的端。
Message subject
定义告警消息的标题。仅Elasticsearch 7.10.2版本的集群需要设置。
Message
设置SMN主题发送的body,定义消息发布的文本。默认定义了目的端是Email类型时的主题和正文,详细参数说明请参见消息发布。
Action throttling
设置消息发送频率用来限制在指定时间段内收到的通知消息数量,防止在异常波动期间瞬间产生数千条消息致资费消耗或信息轰炸。
例如设置10分钟,在接下来的10分钟内,即使触发条件满足多次,SMN仅发送1次告警通知。超过10分钟后,如果触发告警条件,SMN才会再次发送告警通知。
图4 设置触发器动作的目的端
- 单击“Send test message”验证告警通知链路。 图5 发送验证信息
- 如图6所示,SMN主题订阅者成功收到消息,则表示告警通知设置成功。
- 单击“Create”返回Monitor详情页,完成配置。
- 在“Alerting”页面选择“Monitors”页签,单击“Create monitors”配置监控器。
