设置OpenSearch告警同步到Prometheus
本文主要介绍如何在OpenSearch Dashboard中设置OpenSearch告警同步到Prometheus,实现Prometheus对OpenSearch集群的关键性能指标进行实时监控和分析。
Prometheus是一个开源系统监控和警报工具包,用于记录实时的时间序列数据,特别是指标,并通过灵活的查询语言提供数据查询功能。
约束与限制
仅OpenSearch 2.19.0版本的集群支持设置告警同步到Prometheus。
前提条件
- 已准备好Prometheus监控服务器,并获取Pushgateway地址。Prometheus和OpenSearch之间要保证网络互通,否则告警信息无法成功发送。
- OpenSearch集群处于可用状态。
设置告警同步
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
- 在OpenSearch Dashboards页面,选择左侧导航栏的“菜单 > Notifications”。
- 新建一个Prometheus通道用于发送告警消息。
    - 在Channels页面单击“Create channel”配置通道。 
      表1 Channel参数说明 参数名称 说明 Name 自定义通道名称。 Description 通道描述信息。 Channel type 选择“PROMETHEUS”。 Prometheus Endpoint 输入Prometheus监控服务器的Pushgateway地址。 - 当前仅支持Prometheus Gauge类型的可增可减仪表盘。通过查询具体的语句,将数值型结果同步到Pushgateway用于Prometheus监控。
- 支持HTTP和HTTPS两种Pushgateway地址。
 图1 Create channel 
- 单击“Create”创建通道。
- 返回Channels页面,在列表可见新建的Prometheus目的端,表示创建完成。
      图2 Channels列表 
 
- 在Channels页面单击“Create channel”配置通道。 
      
- 在OpenSearch Dashboards页面,选择左侧导航栏的“菜单 > Alerting”,进入告警插件界面。
- 新建一个监控,并配置告警的触发条件和监控频率。
    - 在Alerting页面选择“Monitors”页签,单击“Create monitors”配置监控信息。 
      表2 Monitors参数说明 参数名称 说明 Monitor details Monitor name 自定义一个监控名称。 Monitor type 选择Monitor类型。 - Per query monitor(普通监控)
- Per bucket monitor(聚合桶监控)
- Per cluster metrics monitor(集群指标监控)
- Per document monitors(文档级监控)
- Composite monitors(复合监控)
 本示例选择“Per query monitor”,其类型的配置指导请参见OpenSearch官方文档Monitors。 Monitor defining method 选择一种方式定义监控,推荐使用“Extraction query editor”。 - Visual editor:可视化的query语句
- Extraction query editor:具体的query语句
- Anomaly detector:异常检测插件的监测
 选择不同的“Monitor type”,所支持的监控方式不同,请以实际界面为准。 Detector 当“Monitor defining method”选择“Anomaly detector”时,请选择异常检测任务。 Frequency 选择监控频率,并设置监控频率的间隔信息。 - By interval:按时间间隔
- Daily:按每天
- Weekly:按每周
- Monthly:按每月
- Custom cron expression:按cron脚本规划
 Select data Index 当“Monitor defining method”选择“Visual editor”或“Extraction query editor”方式定义监控时,需要选择监控的索引。 Time field 当“Monitor defining method”选择“Visual editor”方式定义监控时,需要选择一个字段作为时间字段,来定义count等计数参数。 Query Metrics 当“Monitor defining method”选择“Visual editor”方式定义监控时,需要设置提取统计数据的指标范围。 Time range for the last 当“Monitor defining method”选择“Visual editor”方式定义监控时,需要设置插件应监控的时间范围。 Data filter 当“Monitor defining method”选择“Visual editor”方式定义监控时,需要设置过滤器进行数据检索。 Group by 当“Monitor defining method”选择“Visual editor”方式定义监控时,需要指定一个字段,使其每一个值都会触发告警。 Define extraction query 当“Monitor defining method”选择“Extraction query editor”方式定义监控时,需要输入query语句定义监控。 Request type 当“Monitor type”选择“Per cluster metrics monitor”时,需要指定请求类型来监控集群指标,例如运行状况、CPU使用率等。 Preview query and performance 预览当前Query配置下查询结果。 
- 单击“Create”跳转到“Create trigger”页面。
- 在“Create trigger”页面设置指定告警触发条件及告警时应触发的动作。 
      表3 Trigger参数说明 参数名称 说明 Define trigger Trigger name 自定义一个触发器名称。 Severity level 定义触发器的敏感度,选择触发多少条告警之后发送告警消息,“1”为最高敏感度。 Trigger condition 定义触发条件。满足触发条件就会触发告警。 说明:建议设置一个一定会触发的条件,让查询的指标值每次均同步到Pushgateway。 Configure actions Action name 自定义一个触发器动作名称。 Destination 选择5新建的目的端。 Message 定义消息发布的body体,必须是json格式,参考如下配置。 { "metricsName":"hits_total_value", //Prometheus的指标名称 "metricsLabel": {"label_key1":"label_value1","label_key2":"label_value2"}, //Prometheus的标签 "metricsValue":{{ctx.results.0.hits.total.value}}, //Prometheus的指标值 "jobName":"job_name" //Prometheus的监控任务名 "metricsHelp":"***" //可选参数,指标说明 }throttling 设置消息发送频率用来限制在指定时间段内收到的通知消息数量。 例如设置10分钟,在接下来的10分钟内,即使触发条件满足多次,Prometheus仅发送1次告警通知。超过10分钟后,如果触发告警条件,Prometheus才会再次发送告警通知。 
- 单击“Send test message”,向Prometheus发送测试信息,验证触发器是否设置成功。
      图3 发送验证消息  如图4所示,在Prometheus能够收到触发器的Message消息,表示触发器设置成功。 
- 单击“Create”返回Monitor详情页。
 
- 在Alerting页面选择“Monitors”页签,单击“Create monitors”配置监控信息。 
      
 
     
      