向机器学习结果添加自定义 URL

编辑

您可以选择性地将一个或多个自定义 URL 附加到您的异常检测任务。这些链接会出现在 异常浏览器单指标查看器 中的异常表格中,可以将您定向到仪表板、Discover 应用或外部网站。例如,您可以定义一个自定义 URL,为用户提供一种从结果集中向下钻取到源数据的方式。

An example of the custom URL links in the Anomaly Explorer anomalies table

当您在 Kibana 中创建或编辑异常检测任务时,它可以简化 Kibana 仪表板和 Discover 应用的自定义 URL 创建,并允许您测试 URL。例如:

Add a custom URL in Kibana

对于每个自定义 URL,您必须提供 URL 和标签,标签是异常表格中显示的链接文本。您还可以选择性地提供时间范围。当您链接到 Discover 或 Kibana 仪表板时,您将有其他选项来指定相关的数据视图或仪表板名称以及查询实体。

自定义 URL 中的字符串替换

编辑

您可以在自定义 URL 中使用美元符号 ($) 分隔的标记。这些标记会被替换为异常记录中相应字段的值。例如,原始数据 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_nameby_field_nameover_field_namepartition_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,以检查它是否按预期工作,尤其是在使用字符串替换时。