Agent 365 可观测性属性参考

这是Agent 365的导入流程所采用的标准属性逐属性规范。 Agent 365 接收的每个区间——无论是由 Microsoft OpenTelemetry DistroAgent 365 SDK 的 SDK 发送,还是通过 direct OTel 发送的,都必须符合该信号。 每个条目都列出了该属性适用的操作类型,是否为强制操作,高级查找查询中值的字段名称(如果有的话),以及跳过时的影响。

如果你用的是SDK或发行版,SDK会帮你输出这些属性,选 取值 部分只在你需要覆盖默认值时生效。 如果你走的是直接的OTel路径,所有属性都是手动输出的;关于如何将它们组装成请求,请参见 集成指南

Attribute table

所有值都发送为 stringValue - 令牌计数必须为 "42" (not 42);端口计数必须为 "443" (not 443)。

传奇行动。IAs = invoke_agentET = execute_toolCH, = chatOM, = output_messagesAll = 适用于所有操作。

Required legend.

  • M: mandatory.
  • M*¹:仅对具身代理者强制(代理拥有自己的Entra 智能体 ID用户账户)。
  • M*²:仅在代理间通话时强制使用。
  • M*³:仅非根跨必须使用。 根 invoke_agent 没有父本。
  • O*⁴:可选,仅在显示状态为错误时才有意义。
  • O: optional.
  • 不:不要发射。 特工365自动生成。

“RawEventData 字段” 列中指定了一个 JSON 键 CloudAppEvents.RawEventData ,在 验证采集 中,规范的高级狩猎查询会解析它。 空白单元格表示该属性在CloudAppEvents中暴露not——你仍然应该根据“必需”列发出它,因为Agent 365用它来获取、父分辨率和Microsoft Defender的agent-activity视图,但目前Microsoft Defender高级狩猎系统无法直接查询它。

Note

Agent 365 会自动填充静态记录字段(Id, , RecordTypeWorkloadUserTypeVersion)和生成的请求/响应 ID。

Attribute Applies to Required RawEventData field 如果缺少注释/影响
gen_ai.operation.name All M Operation invoke_agent, execute_tool, chat, output_messages之一。 如果缺失或未被识别,Span会下降。
microsoft.tenant.id All M OrganizationId 网址 {tenantId} 是权威的。 如果你设置了这个,但系统不同意,请求将被拒绝(403)。
gen_ai.agent.id All M TargetAgentId (IA,也为顶层 AgentId); AgentId (ET,CH) 通话应用的 应用。 必须匹配URL {agentId} 和认证应用。 错配返回403。
gen_ai.agent.name All M TargetAgentName (IA); AgentName (ET,CH) 如果缺少,Defender / Admin Center 会显示原始的 GUID,而不是名字。
microsoft.a365.agent.blueprint.id All M TargetAgentBlueprintID (IA); AgentBlueprintId (ET,CH) 蓝图是 应用的。 对于没有蓝图的标准Entra应用,可以重复使用代理的appId。 否则管理中心的蓝图汇总会崩溃。
gen_ai.agent.description All O -- 管理中心的详细查看中,代理是空白的。
gen_ai.agent.type All O PlatformTargetAgentType (IA); PlatformAgentType (ET); CopilotEventData.PlatformAgentType (CH) 一个身份 系统标签,配合 microsoft.a365.agent.platform.id 代理没有Entra注册时的标签。 自由形式文本;选择一个唯一标识你身份系统的值。 当代理有Entra注册时省略——代理365会自动分类。 不要使用Microsoft保留值(参见选择值)。
microsoft.a365.agent.platform.id All O PlatformTargetAgentId (IA,也为顶层 AlternateId); PlatformAgentId (ET,CH) 代理人在你非Entra身份系统中的唯一ID。 Free-form text. 集合为 gen_ai.agent.type。 当代理有Entra注册时,可以省略。 参见 “选取价值”。
gen_ai.conversation.id All M ConversationId (IA,ET); CopilotEventData.ConversationId / CopilotEventData.ThreadId (CH) 运行时的主连接键。 没有它,运行不会出现在 Defender 代理活动视图或管理中心。
microsoft.channel.name All M ChannelName (IA,ET) 特工奔跑的表面。 使用简短的小写令牌;目前Defender/管理中心过滤器使用的标准值是msteamsoutlook。 自定义字符串(例如 web<your-product-name>)被接受,但在内置通道滤波器中不会进行枢轴。 每个跨度的数值都一样。 参见 “选取价值”。
microsoft.channel.link All O -- Channel deep-link.
microsoft.session.id All O SessionIdentity 如果缺少会话,转轴会是空白的。
microsoft.session.description All O -- Session description.
microsoft.conversation.item.link All O -- 信息深度链接。
correlation.id All O -- Cross-service tracing. 今天高级狩猎中没有出现。
operation.source All O InvokeSource (IA) SDK/服务的标识符,用于发送遥测数据。 可能是资源属性。
client.address IA、ET、CH M ClientIP (IA,ET) Caller IP. 基于IP的调查如果是空白会被屏蔽。
server.address IA、ET、CH M ServerAddress (IA,ET) 端点是你的服务呼叫的。
server.port IA、ET、CH M ServerPort (IA) 字符串编码(例如 "443")。
user.id IA M UserKey Microsoft Entra 用户调用者的对象 ID。 没有这个,“谁在操控这个特工”就是空白的。
user.email IA O UserId 来电者的UPN频道。
user.name IA O -- 显示来电者的姓名。
gen_ai.input.messages IA, CH M -- 请求有效载荷(JSON字符串)。 捕获用于下游分析,但尚未在高级狩猎中浮出水面。
gen_ai.output.messages IA、CH、OM M -- 响应负载(JSON 字符串)。
gen_ai.execution.type IA O -- 其中HumanToAgent一个,Agent2Agent,。 EventToAgent
microsoft.a365.agent.thought.process IA, CH O -- 自由文本推理/思路链。
gen_ai.author.app.id OM O -- Microsoft Entra 应用 ID 是创建/创建代理的应用程序。
gen_ai.tool.name ET M ToolName Tool name. 如果缺少,Defender工具使用视图为空白。
gen_ai.tool.type ET M ToolType 其中function一个 , Power Platform ConnectorMCP ServerAPIKnowledge Sourcebing_groundingcode_interpreterfile_search
gen_ai.tool.call.id ET M ToolId 本次工具调用的标识符。
gen_ai.tool.call.arguments ET M -- 工具参数(JSON字符串)。 被捕获但尚未在高级狩猎中浮出水面。
gen_ai.tool.call.result ET M -- 工具结果(JSON字符串)。
gen_ai.tool.description ET O ToolDescription Tool description.
gen_ai.tool.server.name ET O -- 工具服务器主机名。 为MCP工具设置此属性。
gen_ai.request.model CH M -- 型号名称(例如, gpt-4o)。 被捕获但尚未在高级狩猎中浮出水面。
gen_ai.provider.name CH M -- 提供者名称(例如, openai)。
gen_ai.usage.input_tokens CH O -- 输入令牌计数,字符串编码。
gen_ai.usage.output_tokens CH O -- 输出令牌计数,字符串编码。
gen_ai.response.finish_reasons CH O -- Finish reason(s).
microsoft.a365.caller.agent.id IA M*² -- 致电 代理AppId。 特工对特工的必备条件。
microsoft.a365.caller.agent.name IA M*² -- 呼叫代理显示名称。
microsoft.a365.caller.agent.blueprint.id IA M*² AgentBlueprintId 正在联系代理人的蓝图 AppId。 具备A2A的必修条件。
microsoft.a365.caller.agent.user.id IA M*² -- 呼叫客服用户ID。
microsoft.a365.caller.agent.user.email IA M*² -- 呼叫UPN特工。
microsoft.a365.caller.agent.platform.id IA N/A -- 保留给非Entra备用ID。
gen_ai.caller.agent.type IA N/A -- 365号特工自动分类。
microsoft.agent.user.id IA、ET、CH M*¹ TargetAgentUserKey (IA); UserKey (ET,CH) Microsoft Entra 代理自身用户账户的对象 ID。 AI队友/实体特工必备。
microsoft.agent.user.email IA、ET、CH O*¹ UserId (ET,CH) 代理用户账户的UPN。
span.SpanId All M OpId OTel SDK 会发出这个。
span.ParentSpanId All M*³ ParentId 仅对非根跨要求;根 invoke_agent 部没有。
span.StartTimeUnixNano All M 顶层 TimeGenerated (也在 CreationTimeRawEventData Unix 时代的纳米作为字符串。
span.EndTimeUnixNano All M CompletionTime (IA,ET); CopilotEventData.CompletionTime (CH) 如果缺少,持续时间无法计算。
span.Status.Message All O*⁴ ErrorMessage (IA,ET); CopilotEventData.ErrorMessage (CH) 失败运行的根本原因如果缺失则为空。
span.Status.Code All O*⁴ ErrorType (IA); CopilotEventData.ErrorType (CH) 如果缺少错误类别,则为空白。

Note

你发出的几个属性(如工具参数/结果、模型参数和通道深度链接)被 Agent 365 接受并被下游 Microsoft Defender 视图使用,但尚未作为 CloudAppEvents.RawEventData JSON 键公开。 无论如何,还是按照“必需”栏设置它们——它们可能会在未来的版本中加入狩猎载荷。

当你没有自然的明暗时选择

一些必需属性描述了你的代理架构中可能不存在的概念。 如果没有自然值,这里可以设置。 不要把必填字段留空——即使是全零的GUID,也会让你的游戏在面对客户时隐藏起来。

问题/情景 Field(s) 设置什么
我的经纪人是标准Entra应用注册(不是基于Entra 智能体 ID蓝图构建的)。 gen_ai.agent.id Entra 应用的 appId
↑ 同样的情景 microsoft.a365.agent.blueprint.id 重复使用与 gen_ai.agent.id (代理的 appId)相同的值。 该模式要求非空值;当没有蓝图时,重用代理AppId是安全的默认选择。
我的特工是基于Entra 智能体 ID蓝图构建的——一个或多个特工身份都是基于同一蓝图铸造的。 gen_ai.agent.id 代理身份的 appId(实例 appId,不是蓝图的)。
↑ 同样的情景 microsoft.a365.agent.blueprint.id 蓝图是 应用的。 所有从同一蓝图铸造的实例共享此值。
来电者是人类用户,不是其他代理。 全部 microsoft.a365.caller.agent.*gen_ai.caller.agent.* 属性 Omit. 只有在特工对特工的情境下才是强制的。
在代理对代理中:呼叫代理是一个标准的Entra应用(没有蓝图)。 microsoft.a365.caller.agent.blueprint.id 重复使用呼叫代理的 appId
我的代理 不是AI团队成员 ——它在租户里没有自己的用户账户。 所有 microsoft.agent.user.* 属性 Omit. 只有当客服拥有自己的Entra 智能体 ID用户账户时,才是强制的。
我的经纪人对“会谈”除了单次运行之外,完全没有概念。 microsoft.session.id 可选——省略。 如果你想让每次运行都独立一个会话,可以设置为每个运行一个GUID。
我的经纪人完全没有对话的概念(一次性、无状态)。 gen_ai.conversation.id 每次运行都生成一个新的GUID。 该场地为必修;跳过它会移除 Defender 代理活动视图和 Microsoft 365 管理中心 的运行。
呼叫方没有IP(例如,自动定时触发器)。 client.address 使用你控制的稳定占位符(例如)。 "0.0.0.0" 该场地为必修;空值则移除基于IP的调查枢轴的运行。
代理在过程中运行;没有单独的“服务器”被调用。 server.address / server.port 使用运行该代理的机器的主机名(例如) myagent.example.com和终端监听的端口。 即使没有单独的下游服务,也必须这样做。
我的 chat span 没有模型代币使用。 gen_ai.usage.input_tokens / gen_ai.usage.output_tokens 可选——省略。 如果你有近似计数,可以发送为 stringValue
我的跨度没有任何可报告的错误。 span.Status.Messagespan.Status.Code 将OTel状态 OK 设置为(数字代码1),并省略该消息。 管道仅在状态为 Error时才会查询这些字段。
我的代理使用 非Entra身份系统 (代理没有Entra注册)。 microsoft.a365.agent.platform.idgen_ai.agent.type 每个跨度都设置好。 platform.id代理在你 身份系统中的唯一ID; agent.type 是一个简短标签,用于标识所属的身份系统。 两者都是自由形式文字——选择适合你系统的内容。 不要使用Microsoft保留的类型值:CustomBuiltAgentsUsingSDKCopilotStudioFoundryDeclarativeAgentCustom(这些值保留给内部Microsoft曲面)。 你认证的呼叫应用仍然需要Entra注册才能使用这些路由——备用ID对描述的是 目标 代理,而不是呼叫者。
我应该投入 microsoft.channel.name什么价值? microsoft.channel.name 特工奔跑的表面。 Defender 和 admin center 会从字面字符串中筛选密钥,所以使用短小、稳定、小写的标记。 如今,规范值为 msteamsoutlook;常见的面向客户的表面也使用 webofficesharepoint<your-product-name>。 选一个数值并坚持使用——工具无法将msteamsMicrosoft Teams调和为同一通道。
我应该设置吗 gen_ai.agent.type gen_ai.agent.type 只有当你也在设置 microsoft.a365.agent.platform.id (比如你的代理人没有Entra注册)时才会这样。 两人告诉365号特工该特工来自哪个身份系统。 选择一个能独特识别 身份体系的简短标签。 不要使用CustomBuiltAgentsUsingSDKCopilotStudioFoundryDeclarativeAgentCustom——这些数值保留给内部Microsoft使用。 对于Entra注册代理人,请省略该字段;365号特工补填了它。
我应该在跨度上设置什么OTLP kind span.kind 使用整数枚举值,而非原始枚举字符串 - 1 (), (SERVER), 2 (), 4CLIENT3PRODUCER()。 5CONSUMERINTERNAL Agent 365 接受这些选项,且不会从 kind中推导出客户可见的行为,因此 1 (INTERNAL)是每个区间的安全默认。 如果你想让“kind”反映呼声形状, INTERNAL foroutput_messages / CLIENTinvoke_agent和forchat / execute_tool是合理的。