按查询和按桶监控器
按查询监视器是一种警报监视器,可用于识别针对 OpenSearch 索引运行的特定查询并发出警报;例如,检测并响应特定查询中异常的查询。按查询监视器一次只触发一个警报。
按桶监视器是一种警报监视器,可用于识别由针对 OpenSearch 索引的查询创建的特定数据桶并发出警报。
这两种监视器类型都支持使用与跨集群搜索相同的 cluster-name:index-name
模式或使用 OpenSearch Dashboards 2.12 或更高版本来查询远程索引。
通过 Dashboards UI 创建跨集群监视器需要以下权限:cluster:admin/opensearch/alerting/remote/indexes/get
、indices:admin/resolve/index
、cluster:monitor/health
和 indices:admin/mappings/get
。
创建按查询或按桶监视器
要创建按查询监视器,请按照以下步骤操作
步骤 1. 定义查询和触发器。您可以使用以下任何一种方法:可视化编辑器、查询编辑器或异常检测器。
-
可视化定义适用于可以定义为“某个值在某个时间段内高于或低于某个阈值”的监视器。它也适用于大多数监视器。
-
查询定义提供了关于您的查询(使用OpenSearch 查询 DSL)以及如何评估查询结果(Painless 脚本编写)的灵活性。
以下示例计算 cpu_usage
字段的平均值
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"avg_cpu": {
"avg": {
"field": "cpu_usage"
}
}
}
}
您还可以使用 {{period_start}}
和 {{period_end}}
过滤查询结果
{
"size": 0,
"query": {
"bool": {
"filter": [{
"range": {
"timestamp": {
"from": "{{period_end}}||-1h",
"to": "{{period_end}}",
"include_lower": true,
"include_upper": true,
"format": "epoch_millis",
"boost": 1
}
}
}],
"adjust_pure_negative": true,
"boost": 1
}
},
"aggregations": {}
}
“开始”和“结束”是指监视器运行的间隔。请参阅监视器变量。
要可视化定义监视器,请选择 Visual editor。然后选择一个源索引、一个时间范围、一个聚合(例如,count()
或 average()
)、一个数据过滤器(如果您想监视源索引的子集)以及一个分组字段(如果您想在查询中包含聚合字段)。如果您要定义按桶监视器,则至少需要一个分组字段。
可视化定义适用于大多数监视器。
如果您使用安全插件,则只能选择您有权访问的索引。有关详细信息,请参阅警报安全。
要使用查询,请选择 Extraction query editor,添加您的查询(使用OpenSearch 查询 DSL),然后使用运行按钮进行测试。
监视器会按照计划指示的频率向 OpenSearch 发出此查询;检查查询性能部分,确保您对性能影响感到满意。
异常检测仅在您定义按查询监视器时可用。
要使用异常检测器,请选择 Anomaly detector 并选择您的检测器。
异常检测选项用于与异常检测插件配对。请参阅异常检测。
对于异常检测器,请根据检测器间隔为监视器选择适当的计划。否则,警报监视器可能会错过读取结果。例如,假设您将监视器间隔和检测器间隔都设置为 5 分钟,并且您在 12:00 启动检测器。如果在 12:05 检测到异常,它可能在 12:06 才可用,因为写入异常和异常可用于查询之间存在延迟。监视器在 12:00 到 12:05 之间读取异常结果,因此它不会获取 12:06 可用的异常结果。
为了避免此问题,请确保警报监视器的间隔至少是检测器间隔的两倍。当您使用 OpenSearch Dashboards 创建监视器时,异常检测器插件会生成一个默认的监视器计划,该计划是检测器间隔的两倍。
每当您更新检测器的间隔时,请务必更新关联的监视器间隔,因为异常检测插件不会自动执行此操作。
步骤 2. 选择监视器运行的频率,例如按时间间隔(分钟、小时、天)或按计划。如果您按时间间隔或自定义 自定义 Cron 表达式运行它,则必须提供时区。
步骤 3. 为监视器添加一个触发器。