可观测性 AI 助手

编辑

要在自托管的 Elastic Stack 上运行可观测性 AI 助手,您需要一个适当的许可证

AI 助手使用生成式 AI 提供

  • 上下文见解 — 在整个可观测性中打开提示,解释错误和消息,并提供修复建议。
  • 聊天 — 与 AI 助手进行对话。聊天使用函数调用来请求、分析和可视化您的数据。
Observability AI assistant preview

AI 助手通过我们支持的 Elastic 连接器与您的大型语言模型 (LLM) 提供商集成

AI 助手由与您的大型语言模型 (LLM) 提供商的集成提供支持。众所周知,LLM 有时会提供不正确的信息,并将其视为正确的信息。Elastic 支持配置和连接到 LLM 提供商和您的知识库,但不负责 LLM 的响应。

此外,您提供给可观测性 AI 助手的数据不是匿名的,而是由第三方 AI 提供商存储和处理的。这包括在对话中用于分析或上下文的任何数据,例如警报或事件数据、检测规则配置和查询。因此,在使用此功能时,请谨慎分享任何机密或敏感信息。

要求

编辑

AI 助手需要满足以下条件

  • Elastic Stack 版本 8.9 及更高版本。
  • 一个支持函数调用的第三方生成式 AI 提供商的帐户。可观测性 AI 助手支持以下提供商

    • OpenAI gpt-4+。
    • Azure OpenAI 服务 gpt-4(0613) 或 gpt-4-32k(0613),API 版本为 2023-07-01-preview 或更高版本。
    • AWS Bedrock,特别是 Anthropic Claude 模型。
  • 如果使用搜索连接器将外部数据填充到知识库中,则需要Enterprise Search服务器。
  • 一个第三方生成式 AI 提供商的帐户,最好支持函数调用。如果您的 AI 提供商不支持函数调用,您可以在 堆栈管理 下配置 AI 助手设置以模拟函数调用,但这可能会影响性能。

    请参阅您的提供商的连接器文档,了解支持的模型和默认模型。

  • 知识库需要 4 GB 的机器学习节点。

第三方生成式 AI 提供商提供的免费层可能不足以让 AI 助手正常工作。在大多数情况下,需要订阅其中一个受支持的提供商的付费订阅。

可观测性 AI 助手不支持连接到私有 LLM。Elastic 不建议将私有 LLM 与可观测性 AI 助手一起使用。

在 Elastic Cloud 或 Elastic Cloud Enterprise 中,如果启用了机器学习自动缩放,则在使用知识库和 AI 助手时将启动机器学习节点。因此,使用这些功能将产生额外费用。

您的数据和 AI 助手

编辑

Elastic 不会使用客户数据进行模型训练。这包括您发送给模型的任何内容,例如警报或事件数据、检测规则配置、查询和提示。但是,您提供给 AI 助手的任何数据都将由您在设置 AI 助手时选择的第三方提供商处理,作为 OpenAI 连接器设置的一部分。

Elastic 不控制第三方工具,并且不对其内容、操作或使用承担任何责任或义务,也不对因您使用此类工具而可能造成的任何损失或损害承担责任。使用带有个人、敏感或机密信息的 AI 工具时请务必谨慎。您提交的任何数据都可能被提供商用于 AI 训练或其他目的。无法保证提供商会保证您提供的任何信息的安全或保密。您应该在使用任何生成式 AI 工具之前熟悉其隐私惯例和使用条款。

设置 AI 助手

编辑

要设置 AI 助手

  1. 使用您的 AI 提供商创建一个身份验证密钥,以对来自 AI 助手的请求进行身份验证。您将在下一步中使用它。有关创建身份验证密钥的信息,请参阅您的提供商的文档

  2. 为您的 AI 提供商创建一个连接器。请参阅连接器文档以了解如何操作

  3. 通过提供以下信息来验证可观测性和 AI 提供商之间的通信

    1. URL 字段中,输入 AI 提供商的 API 端点 URL。
    2. 身份验证 下,输入您在上一步中创建的密钥或秘密。

将数据添加到 AI 助手知识库

编辑

如果您在技术预览版中开始使用 AI 助手,则 8.12 之前创建的任何知识库文章都必须重新索引或升级后才能使用。8.12 之前创建的知识库文章使用 ELSER v1。在 8.12 中,知识库文章必须使用 ELSER v2。选项包括

  • 手动清除所有旧知识库文章并重新索引它们。
  • 使用Python 脚本将使用 ELSER v1 索引的所有知识库文章升级到 ELSER v2。

AI 助手使用 Elastic 的语义搜索引擎 ELSER,从其内部知识库索引中检索数据,以创建检索增强生成 (RAG) 响应。将诸如运行手册、GitHub 问题、内部文档和 Slack 消息之类的数据添加到知识库中,可为 AI 助手提供上下文,从而提供更具体的帮助。

您的 AI 提供商可能会在使用 AI 助手时收集遥测数据。请联系您的 AI 提供商,了解有关如何收集数据的信息。

使用以下一种或多种方法将数据添加到知识库

您还可以通过在聊天时要求 AI 助手记住某些内容(例如,“记住下次”)来向知识库添加信息。助手将创建信息摘要并将其添加到知识库。

使用知识库 UI

编辑

要在 Kibana 中向知识库添加外部数据

  1. 要打开 AI 助手设置,请在全局搜索字段中找到 AI 助手
  2. Elastic 可观测性 AI 助手 下,单击 管理设置
  3. 切换到 知识库 选项卡。
  4. 单击 新建条目 按钮,然后选择以下任一项

    • 单条条目:在 UI 中为单个条目编写内容。
    • 批量导入:上传一个换行符分隔的 JSON (ndjson) 文件,其中包含要添加到知识库的条目列表。每个对象应符合以下格式

      {
        "id": "a_unique_human_readable_id",
        "text": "Contents of item"
      }

使用搜索连接器

编辑

本节中描述的搜索连接器与在AI 助手设置期间配置的堆栈管理 → 连接器不同。仅当将外部数据导入 AI 助手的知识库时才需要搜索连接器,而 LLM 的堆栈连接器是 AI 助手工作所必需的。

连接器允许您索引来自外部来源的内容,从而使其可供 AI 助手使用。这可以大大提高 AI 助手响应的相关性。数据可以从诸如 GitHub、Confluence、Google Drive、Jira、AWS S3、Microsoft Teams、Slack 等来源集成。

这些连接器在 Kibana 中的搜索解决方案下进行管理,并且它们需要连接到 Elastic Stack 的Enterprise Search服务器。

默认情况下,AI 助手会查询所有搜索连接器索引。要覆盖此行为并自定义查询的索引,请调整AI 助手设置页面上的 搜索连接器索引模式 设置。这可以精确控制 AI 助手知识库中包含的数据源。

要创建连接器并使其内容可用于 AI 助手知识库,请按照以下步骤操作

  1. 要打开 连接器,请在全局搜索字段中找到 内容 / 连接器

    如果您的 Kibana 空间不包含搜索解决方案,您将必须从不同的空间创建连接器或将您的空间 解决方案视图 设置更改为 经典

  2. 按照说明创建新连接器。

    例如,如果您创建GitHub 本地连接器,则必须设置一个 名称、将其附加到新的或现有的 索引、添加您的 个人访问令牌 并包括要同步的 存储库列表

    在 Enterprise Search 文档中了解有关配置和使用连接器的更多信息。

  3. 创建一个管道并使用 ELSER 处理数据。

    要创建 AI 助手所需的嵌入(将权重和标记转换为稀疏向量字段),您必须创建一个 ML 推理管道

    1. 打开之前创建的连接器,然后选择 管道 选项卡。
    2. 解锁您的自定义管道 框中,选择 复制并自定义 按钮。
    3. 机器学习推理管道 框中,选择 添加推理管道 按钮。
    4. 选择 ELSER(Elastic Learned Sparse EncodeR) ML 模型,以将必要的嵌入添加到数据中。
    5. 选择需要作为推理管道一部分进行评估的字段。
    6. 测试并保存推理管道和整个管道。
  4. 同步数据。

    设置好管道后,对连接器执行 完整内容同步。推理管道将按如下方式处理数据

    • 当数据传入时,ELSER 将应用于数据,并添加嵌入(将权重和标记转换为稀疏向量字段),以捕获数据的语义含义和上下文。
    • 当您查看已摄取的文件时,您可以看到权重和标记如何添加到文件中的 predicted_value 字段。
  5. 检查 AI 助手是否可以使用索引(可选)。

    向 AI 助手询问与索引数据相关的问题。

与 AI 助手互动

编辑

与 AI 助手聊天,或与整个可观察性中的上下文见解进行互动。请查看以下部分,了解有关与 AI 助手互动的更多信息。

在 LLM 每次提供答案后,请告诉我们答案是否有帮助。您的反馈有助于我们改进 AI 助手!

与助手聊天

编辑

选择任何可观察性应用程序右上角的 AI 助手 图标 (AI 助手图标) 以开始聊天。

这将打开 AI 助手浮出层,您可以在其中向助手询问有关实例的问题

Observability AI assistant chat

询问有关数据的问题需要 函数调用,这使 LLM 能够可靠地与第三方生成式 AI 提供商进行交互,以使用客户数据执行搜索或运行高级函数。

当可观察性 AI 助手在集群中执行搜索时,查询将以与用户相同的权限级别运行。

建议函数

编辑

此功能处于测试阶段,可能会发生更改。设计和代码不如官方 GA 功能成熟,并按原样提供,不提供任何保证。测试功能不受官方 GA 功能的支持 SLA 的约束。

AI 助手使用函数通过文本、数据和可视化组件在聊天对话中包含相关上下文。您和 AI 助手都可以建议函数。您还可以编辑 AI 助手的函数建议并检查函数响应。

主要函数

alerts

获取可观察性的警报。

elasticsearch

代表您调用 Elasticsearch API。

kibana

代表您调用 Kibana API。

summarize

总结对话的各个部分。

visualize_query

可视化 ES|QL 查询的图表。

当您的集群具有 APM 数据时,可以使用其他函数

get_apm_correlations

获取前景集中比背景集中更突出的字段值。这有助于确定哪些属性(例如 error.messageservice.node.nametransaction.name)导致了更高的延迟。另一个选项是基于时间的比较,您可以在更改点之前和之后进行比较。

get_apm_downstream_dependencies

获取服务的下游依赖项(服务或未检测的后端)。通过返回 span.destination.service.resourceservice.name 将下游依赖项名称映射到服务。如果需要,可以使用此项进一步向下钻取。

get_apm_error_document

获取基于分组名称的示例错误文档。这还包括错误的堆栈跟踪,这可能提示错误的原因。

get_apm_service_summary

获取单个服务的摘要,包括语言、服务版本、部署、环境和运行的基础设施。例如,Pod 的数量及其下游依赖项的列表。它还会返回活动警报和异常。

get_apm_services_list

获取受监控服务列表、其运行状况和警报。

get_apm_timeseries

显示任何服务或所有服务及其任何或所有依赖项的不同 APM 指标(例如吞吐量、故障率或延迟)。以时间序列和单个统计数据形式显示。此外,该函数还会返回任何更改,例如峰值、步进和趋势更改或下降。您还可以使用它来比较数据,方法是请求两个不同的时间范围,或者例如两个不同的服务版本。

使用上下文提示

编辑

整个可观察性中的 AI 助手上下文提示提供以下信息

  • 通用分析 — 解释您的机群中最昂贵的库和函数,并提供优化建议。
  • 应用程序性能监控 (APM) — 解释 APM 错误并提供补救建议。
  • 基础设施可观察性 — 解释主机上运行的进程。
  • 日志 — 解释日志消息并生成搜索模式以查找类似问题。
  • 警报 — 提供日志速率更改的可能原因和补救建议。

例如,在日志详细信息中,您将看到 此消息是什么?如何查找类似的日志消息? 的提示

Observability AI assistant logs prompts

单击提示会生成特定于该日志条目的消息

Observability AI assistant example

单击 开始聊天 以打开 AI 助手聊天,继续上下文提示中的对话。

将 AI 助手连接器添加到警报工作流

编辑

使用 可观察性 AI 助手连接器将 AI 生成的见解和自定义操作添加到您的警报工作流中,如下所示

  1. 创建(或编辑)警报规则并指定触发警报必须满足的条件。
  2. 操作 下,选择 可观察性 AI 助手 连接器类型。
  3. 连接器 列表中,选择您在设置助手时创建的 AI 连接器。
  4. 消息 字段中,指定要发送给助手的消息

    Add an Observability AI assistant action while creating a rule in the Observability UI

您可以要求助手生成触发的警报报告,回想知识库中存储的过去发生的任何信息或潜在解决方案,提供故障排除指南和解决步骤,并包括其他可能相关的活动警报。作为最后一步,您可以要求助手触发操作,例如将报告(或任何其他消息)发送到 Slack webhook。

目前仅支持 Slack、电子邮件、Jira、PagerDuty 或 webhook 操作。将来将添加其他操作。

触发警报时,有关事件的上下文详细信息(例如触发警报的时间、受影响的服务或主机以及突破的阈值)将与配置期间提供的消息一起发送到 AI 助手。AI 助手运行消息中请求的任务,并创建您可以用来与助手聊天的对话

AI Assistant conversation created in response to an alert

AI 助手创建的对话是公开的,并且每个有权使用助手的用户都可以访问。

AI 助手可能需要一两分钟才能处理消息并创建对话。

请注意,过于宽泛的提示可能会导致请求超出令牌限制。有关详细信息,请参阅 令牌限制。此外,尝试在单个连接器执行中分析多个警报可能会导致您超出函数调用限制。如果发生这种情况,请修改连接器配置中指定的消息,以避免超出限制。

当要求向另一个连接器(例如 Slack)发送消息时,AI 助手会尝试包含指向生成的对话的链接。

必须在 Kibana 设置下正确指定 server.publicBaseUrl 设置,否则 AI 助手将无法生成此链接。

Message sent by Slack by the AI Assistant includes a link to the conversation

当警报触发和恢复时,将调用可观察性 AI 助手连接器。

要了解有关警报、操作和连接器的更多信息,请参阅 警报

AI 助手设置

编辑

要访问 AI 助手设置页面,您可以

  • 全局搜索字段中查找 AI 助手
  • 使用 AI 助手窗口内的 更多操作 菜单。

AI 助手设置页面包含以下选项卡

  • 设置:配置主要的 AI 助手设置,这些设置直接在界面中进行了解释。
  • 知识库:管理 知识库条目
  • 搜索连接器:提供指向 Kibana 搜索内容连接器 UI 的链接,用于连接器配置。

    已知问题

    编辑

令牌限制

编辑

大多数 LLM 都可以在单个对话中管理一定数量的令牌。当您达到令牌限制时,LLM 将引发错误,并且 Elastic 将在 Kibana 中显示“已达到令牌限制”错误。LLM 可以支持的确切令牌数取决于您使用的 LLM 提供商和模型。如果您使用 OpenAI 连接器,请在 OpenAI 令牌使用情况仪表板中监控令牌利用率。有关详细信息,请参阅 OpenAI 连接器文档