管理预测器
在您创建预测器后,您可以使用**详细信息**页面管理其生命周期和配置。这包括启动或停止预测器、更新其设置或完全删除它。使用此页面可以监控预测器状态、排查问题并随时间推移微调行为。
预测器表
**预测器**表提供您已配置的每个预测器的概览。
列 | 描述 |
---|---|
名称 | 您在创建预测器时分配的名称。 |
状态 | 当前的生命周期状态,例如 Running (正在运行)、Initializing (正在初始化)或 Test complete (测试完成)。单击 图标可获取更多信息,包括最近状态更改的时间戳和任何失败消息。 |
索引 | 预测器从中读取的源索引或别名。 |
上次更新 | 最近配置更改的时间戳。 |
快速操作 | 上下文相关按钮,例如**启动**、**停止**或**删除**,具体取决于预测器的当前状态。 |
执行状态
预测器(即底层预测作业)可以处于以下任何状态。标有*自动*的转换无需用户操作即可发生;其他转换则需要您手动选择**启动**或**停止**。
状态 | 描述 | 典型触发器 |
---|---|---|
非活动 | 预测器已创建但从未启动。 | 无。 |
非活动:已停止 | 预测器在运行后已手动停止。 | 用户选择**停止预测**。 |
等待数据以初始化预测 | 作业正在尝试启动但缺少足够的历史数据。 | 自动。 |
等待数据以重新启动预测 | 作业在数据中断后正在恢复,并等待新数据。 | 数据中断后自动。 |
正在初始化测试 | 正在为一次性回溯测试构建模型。 | 在**创建并测试**或**启动测试**时自动。 |
测试完成 | 回溯测试已完成,作业不再运行。 | 自动。 |
正在初始化预测 | 正在训练模型以进行连续实时预测。 | 选择**启动预测**后自动。 |
运行中 | 作业正在流式传输实时数据并生成预测。 | 初始化成功完成后自动。 |
初始化测试失败 | 测试失败,通常是由于数据不足。 | 自动。 |
初始化预测失败 | 实时模式初始化失败。 | 自动。 |
预测失败 | 作业已启动但遇到运行时错误,例如分片失败。 | 自动,但需要用户关注。 |
下图说明了状态之间的关系和转换。
查找和过滤预测器
如果您有许多预测器,请使用表格底部的分页控件在页面之间导航。您还可以使用搜索栏按**名称**、**状态**或**索引**进行过滤,这在管理大量预测器时会很有帮助。
基于预测值进行警报
由于预测结果索引不是系统索引,您可以像处理任何其他用户索引一样为结果索引创建警报监视器。
警报监视器示例
例如,以下是一个高基数预测器的监视器。您可以修改计划、查询和聚合以匹配您的用例
{
"name": "test",
"type": "monitor",
"monitor_type": "query_level_monitor",
"enabled": true,
"schedule": {
"period": {
"unit": "MINUTES",
"interval": 1
}
},
"inputs": [
{
"search": {
"indices": [
"opensearch-forecast-results*"
],
"query": {
"size": 1,
"query": {
"bool": {
"filter": [
{
"range": {
"execution_end_time": {
"from": "{{period_end}}||-15m",
"to": "{{period_end}}",
"include_lower": true,
"include_upper": true,
"format": "epoch_millis",
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"aggregations": {
"metric": {
"max": {
"field": "forecast_upper_bound"
}
}
}
}
}
}
],
"triggers": [
{
"query_level_trigger": {
"id": "29oAl5cB5QuI4WJQ3hnx",
"name": "breach",
"severity": "1",
"condition": {
"script": {
"source": "return ctx.results[0].aggregations.metric.value == null ? false : ctx.results[0].aggregations.metric.value > 10000",
"lang": "painless"
}
},
"actions": [
{
"id": "notification378084",
"name": "email",
"destination_id": "2uzIlpcBMf-0-aT5HOtn",
"message_template": {
"source": "Monitor **{{ctx.monitor.name}}** entered **ALERT** state — please investigate.\n\nTrigger : {{ctx.trigger.name}}\nSeverity : {{ctx.trigger.severity}}\nTime range : {{ctx.periodStart}} → {{ctx.periodEnd}} UTC\n\nEntity\n{{#ctx.results.0.hits.hits.0._source.entity}}\n • {{name}} = {{value}}\n{{/ctx.results.0.hits.hits.0._source.entity}}\n",
"lang": "mustache"
},
"throttle_enabled": true,
"subject_template": {
"source": "Alerting Notification action",
"lang": "mustache"
},
"throttle": {
"value": 15,
"unit": "MINUTES"
}
}
]
}
}
],
"ui_metadata": {
"schedule": {
"timezone": null,
"frequency": "interval",
"period": {
"unit": "MINUTES",
"interval": 1
},
"daily": 0,
"weekly": {
"tue": false,
"wed": false,
"thur": false,
"sat": false,
"fri": false,
"mon": false,
"sun": false
},
"monthly": {
"type": "day",
"day": 1
},
"cronExpression": "0 */1 * * *"
},
"monitor_type": "query_level_monitor",
"search": {
"searchType": "query",
"timeField": "execution_end_time",
"aggregations": [
{
"aggregationType": "max",
"fieldName": "forecast_upper_bound"
}
],
"groupBy": [],
"bucketValue": 15,
"bucketUnitOfTime": "m",
"filters": []
}
}
}
监视器设计
下表解释了示例警报监视器中使用的每个设计选择及其重要性。
设计选择 | 理由 |
---|---|
搜索输入中的 size: 1 | 检索单个文档,以便您可以在通知中引用 ctx.results.0.hits.hits.0 ,以识别是哪个实体(例如 host 或 service )触发了警报。 |
execution_end_time 范围 "now-15m" → now | 根据结果创建时间戳(反映预测生成时间)进行过滤。这避免了因摄入延迟造成的延误。如果您的索引包含迟到数据(例如回填日志),请避免根据 data_end_time 进行过滤。 |
将 max(forecast_upper_bound) 作为度量 | 检测上限峰值。替代方案包括 用于突然下降的 min(forecast_lower_bound) 。用于趋势变化的 avg(forecast_value) 。有关其他字段,请参阅预测结果模式。 |
索引模式 opensearch-forecast-results* | 匹配默认结果索引模式。如果您将结果路由到自定义索引,例如 opensearch-forecast-result-abc* ,请更新此模式。 |
forecaster_id 上的可选术语过滤器 | 使用此过滤器可以定位特定的预测器,并避免匹配不相关的预测。 |
每 1 分钟监控一次,查询窗口 15 分钟 | 每分钟评估预测以快速检测异常。15 分钟的回溯增加了对时间延迟的弹性。结合 15 分钟的警报限制,这避免了同一事件的重复通知。 |
Mustache 块打印所有实体维度 | 显示单维度 (host=server_3 ) 和多维度 (host=server_3 , service=auth ) 实体值。您还可以包含指向预过滤仪表板的链接,以便更快地进行分类。 |
阈值 | 使用 OpenSearch Dashboards 可视化编辑器分析最近的预测值,并确定可靠指示异常的适当阈值。 |
警报示例
以下示例显示了由监视器生成的示例警报电子邮件,该监视器检测到预测值何时超出定义的阈值。在此示例中,监视器正在跟踪高基数预测器,并已针对特定实体 (host = server_3
) 触发警报
Monitor **test** entered **ALERT** state — please investigate.
Trigger : breach
Severity : 1
Time range : 2025-06-22T09:56:14.490Z → 2025-06-22T09:57:14.490Z UTC
Entity
• host = server_3
后续步骤
设置和管理预测器后,您可能需要控制谁可以访问和修改它们。要了解如何管理权限、保护结果索引和应用细粒度访问控制,请参阅安全页面。