向机器学习结果添加自定义 URL
Elastic Stack 无服务器
您可以选择性地将一个或多个自定义 URL 附加到异常检测作业。 这些链接显示在异常资源管理器和单指标查看器中的异常表中,可以将您定向到仪表板、Discover 应用程序或外部网站。 例如,您可以定义一个自定义 URL,为用户提供一种从结果集中向下钻取到源数据的方式

当您在 Kibana 中创建或编辑异常检测作业时,它可以简化 Kibana 仪表板和 Discover 应用程序的自定义 URL 的创建,并使您能够测试您的 URL。 例如

对于每个自定义 URL,您必须提供 URL 和标签,标签是显示在异常表中的链接文本。 您还可以选择性地提供时间范围。 当您链接到 Discover 或 Kibana 仪表板时,您将拥有其他选项来指定相关的数据视图或仪表板名称和查询实体。
您可以在自定义 URL 中使用美元符号 ($) 分隔的令牌。 这些令牌会被替换为异常记录中相应字段的值。 例如,Raw data
URL 可能会解析为 discover#/?_g=(time:(from:'$earliest$',mode:absolute,to:'$latest$'))&_a=(index:ff959d40-b880-11e8-a6d9-e546fe2bba5f,query:(language:kuery,query:'customer_full_name.keyword:"$customer_full_name.keyword$"'))
。 在这种情况下,当您单击该链接时,customer_full_name.keyword
字段的相关值将传递到目标页面。
并非源数据中的所有字段都存在于异常结果中。 例如,如果在检测器中将字段指定为 field_name
、by_field_name
、over_field_name
或 partition_field_name
,则可以在自定义 URL 中使用它。 但是,仅在 categorization_field_name
属性中使用的字段不会存在于异常结果中。 当您在 Kibana 中创建自定义 URL 时,仅当检测器中存在适当的字段时,才会显示查询实体选项。
$earliest$
和 $latest$
令牌将所选异常的时间跨度的开始和结束传递到目标页面。 这些令牌被替换为 ISO-8601 格式的日期时间字符串。 如果您为异常表选择了 1 小时的间隔,则这些令牌使用异常时间前后各一小时作为最早和最晚时间。 您可以通过为自定义 URL 设置时间范围来更改此行为。
还有 $mlcategoryregex$
和 $mlcategoryterms$
令牌,它们与您对字段值进行分类的异常检测作业有关。 有关此类分析的更多信息,请参见检测异常数据类别。 $mlcategoryregex$
令牌传递所选异常类别的正则表达式值,该值由异常记录的 mlcategory
字段的值标识。 $mlcategoryterms$
令牌传递所选异常类别的术语值。 每个分类术语都以加号 (+) 字符为前缀,因此当令牌传递到 Kibana 仪表板时,生成的仪表板查询会寻求与该类别的所有术语匹配。 例如,以下 API 更新作业以添加使用 $earliest$
、$latest$
和 $mlcategoryterms$
令牌的自定义 URL
POST _ml/anomaly_detectors/sample_job/_update
{
"custom_settings": {
"custom_urls": [
{
"url_name": "test-link1",
"time_range": "1h",
"url_value": "discover#/?_g=(time:(from:'$earliest$',mode:quick,to:'$latest$'))&_a=(index:'90943e30-9a47-11e8-b64d-95841ca0b247',query:(language:lucene,query_string:(analyze_wildcard:!t,query:'$mlcategoryterms$')),sort:!(time,desc))"
}
]
}
}
当您在 Kibana 的异常表中单击此自定义 URL 时,它会打开 Discover 页面,并显示异常发生前后一小时内的源数据。 由于此作业正在对日志消息进行分类,因此传递到查询中目标页面的某些 $mlcategoryterms$
令牌值可能包括 +REC +Not +INSERTED +TRAN +Table +hostname +dbserver.acme.com
。
- 异常表中的自定义 URL 链接使用弹出窗口。 您必须配置您的 Web 浏览器,使其不会阻止弹出窗口,或者为您的 Kibana URL 创建例外。
- 在创建到 Kibana 仪表板的链接时,仪表板的 URL 可能非常长。 请注意拼写错误、行尾字符和 URL 编码。 还要确保您为目标 Kibana 数据视图使用适当的索引 ID。
- 如果使用影响因素名称进行字符串替换,请记住它可能并不总是出现在分析结果中,并且在这些情况下,URL 无效。 并非每个异常都始终存在具有统计意义的影响因素。
- 替换为
$earliest$
和$latest$
令牌的日期采用 ISO-8601 格式,并且目标系统必须理解此格式。 - 如果作业对嵌套的 JSON 字段执行分析,则用于字符串替换的令牌可以使用点表示法引用这些字段。 例如,
$cpu.total$
。 - Elasticsearch 源数据映射可能会使查询字符串难以正常工作。 在保存作业配置之前测试自定义 URL,以检查它是否按预期工作,尤其是在使用字符串替换时。