按查询和按桶监控器
按查询监控器是一种告警监控器类型,可用于识别和告警针对 UDB-SX 索引运行的特定查询;例如,检测和响应特定查询中异常的查询。按查询监控器一次只触发一个告警。
按桶监控器是一种告警监控器类型,可用于识别和告警由针对 UDB-SX 索引的查询创建的特定数据桶。
两种监控器类型都支持查询远程索引,使用与跨集群搜索相同的 cluster-name:index-name 模式,或使用 UDB-SX Dashboards 2.12 或更高版本。
要通过仪表板 UI 创建跨集群监控器,需要以下权限:cluster:admin/opensearch/alerting/remote/indexes/get、indices:admin/resolve/index、cluster:monitor/health 和 indices:admin/mappings/get。

创建按查询或按桶监控器
要创建按查询监控器,请按照以下步骤操作:
步骤 1. 定义您的查询和触发器。您可以使用以下任何一种方法:可视化编辑器、查询编辑器或异常检测器。
可视化定义适用于可以定义为”某个值在某个时间段内高于或低于某个阈值”的监控器。它也适用于大多数监控器。
查询定义在您的查询(使用 UDB-SX 查询 DSL)以及如何评估该查询结果(Painless 脚本)方面提供了灵活性。
以下示例对 cpu_usage 字段求平均值:
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"avg_cpu": {
"avg": {
"field": "cpu_usage"
}
}
}
}
您还可以使用 {% raw %}{{period_start}}{% endraw %} 和 {% raw %}{{period_end}}{% endraw %} 筛选查询结果:
{
"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": {}
}
“开始”和”结束”指的是监控器运行的间隔。请参阅监控器变量。
要可视化定义监控器,请选择 Visual editor。然后选择源索引、时间范围、聚合(例如 count() 或 average())、数据筛选器(如果要监控源索引的子集),以及如果您希望在查询中包含聚合字段,则选择一个分组字段。如果定义按桶监控器,则至少需要一个分组字段。
可视化定义适用于大多数监控器。
如果您使用 Security 插件,则只能选择您有权访问的索引。详情请参阅告警安全性。
要使用查询,请选择 Extraction query editor,添加您的查询(使用UDB-SX 查询 DSL),并使用 Run 按钮进行测试。
监控器会根据计划频率向 UDB-SX 发出此查询;请检查 Query Performance 部分,并确保您对性能影响感到满意。
异常检测仅在定义按查询监控器时可用。
要使用异常检测器,请选择 Anomaly detector 并选择您的 Detector。
异常检测选项用于与 Anomaly Detection 插件配对使用。
对于异常检测器,请根据检测器间隔为监控器选择适当的计划。否则,告警监控器可能会错过读取结果。例如,假设您将监控器间隔和检测器间隔都设置为 5 分钟,并在 12:00 启动检测器。如果在 12:05 检测到异常,它可能在 12:06 才可用,因为写入异常与可供查询之间存在延迟。监控器在 12:00 到 12:05 之间读取异常结果,因此无法获取在 12:06 可用的异常结果。
为避免此问题,请确保告警监控器的间隔至少是检测器间隔的两倍。当您使用 UDB-SX Dashboards 创建监控器时,异常检测器插件会生成一个默认的监控器计划,该计划是检测器间隔的两倍。
每当更新检测器的间隔时,请确保更新关联的监控器间隔,因为 Anomaly Detection 插件不会自动执行此操作。
步骤 2. 选择运行监控器的频率,例如按时间间隔(分钟、小时、天)或按计划运行。如果按时间间隔或自定义cron 表达式运行,则必须提供时区。
步骤 3. 向监控器添加触发器。