REST Resource: projects.locations.investigations

资源:Investigation

描述调查对象的消息;下一个 ID:24

JSON 表示法
{
  "name": string,
  "createTime": string,
  "updateTime": string,
  "labels": {
    string: string,
    ...
  },
  "revision": string,
  "revisionIndex": integer,
  "revisionPredecessor": string,
  "annotations": {
    object (InvestigationAnnotations)
  },
  "executionState": enum (InvestigationExecutionState),
  "error": {
    object (Status)
  },
  "operation": string,
  "title": string,
  "observations": {
    string: {
      object (Observation)
    },
    ...
  },
  "observerStatuses": {
    string: {
      object (ObserverStatus)
    },
    ...
  },
  "clarificationsNeeded": {
    string: {
      object (ClarificationNeeded)
    },
    ...
  }
}
字段
name

string

标识符。资源的名称

createTime

string (Timestamp format)

仅限输出。[仅限输出] 创建时间戳

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

updateTime

string (Timestamp format)

仅限输出。[仅限输出] 更新时间戳

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

labels

map (key: string, value: string)

可选。标签作为键值对

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

revision

string

仅限输出。[仅限输出] 调查的当前修订版本

revisionIndex

integer

仅限输出。[仅限输出] 调查的当前修订版本的索引。该索引从 1 开始计数。

revisionPredecessor

string

可选。相应修订版本的前代修订版本的名称。例如,如果因有内容修改而创建了新的修订版本,则界面会将此字段设置为现有修订版本。

annotations

object (InvestigationAnnotations)

可选。调查的注解。与标签不同,在运行调查时,这些注解可能会提供语义含义,并且不会被其他系统(如结算系统)读取。

executionState

enum (InvestigationExecutionState)

仅限输出。[仅限输出] 相应调查的执行状态。

error

object (Status)

仅限输出。[仅限输出] 如果调查执行状态为“FAILED”,则此字段将包含错误消息。

operation

string

仅限输出。最近对调查执行的“运行”操作。

title

string

必需。调查的人类可读显示标题。

observations

map (key: string, value: object (Observation))

可选。从观察 ID 到观察的映射。该映射让我们能够使用最新修订版本中的观察结果版本来明确覆盖旧版观察结果。如需有关选择 ID 的指导,请参阅“观察结果”。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

observerStatuses

map (key: string, value: object (ObserverStatus))

可选。上述内容的复数形式。代码会逐渐过渡到这种形式。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

clarificationsNeeded

map (key: string, value: object (ClarificationNeeded))

可选。系统需要向用户提出的问题。界面会将结果作为新的观察结果传递回来。相应观察结果的 ID 将是 clarificationsNeeded 映射中条目的键。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

InvestigationAnnotations

用户定义的有关调查的其他注解。其中有一些是预定义注解,还提供了一个映射可供新应用添加自己的注解。

JSON 表示法
{
  "followUp": boolean,
  "extrasMap": {
    string: string,
    ...
  },
  "revisionLastRunInterval": {
    object (Interval)
  }
}
字段
followUp

boolean

仅限输出。需要提供跟进信息才能继续完成调查。该字段通常由问题排查工具设置为 true,并在问题回答完毕后设置为 false。

extrasMap

map (key: string, value: string)

可选。应用所需的其他注解。这些注解不会被隐去,并且不应包含任何 CCC/PII。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

revisionLastRunInterval

object (Interval)

可选。上次运行修订版本时的开始/结束时间。

间隔

表示时间间隔,以开始时间戳(含)和结束时间戳(不含)的形式编码。

开始时间必须早于或等于结束时间。如果开始时间与结束时间相同,则时间间隔为空(不会匹配任何时间)。如果开始时间和结束时间都未指定,则时间间隔会匹配任何时间。

JSON 表示法
{
  "startTime": string,
  "endTime": string
}
字段
startTime

string (Timestamp format)

可选。时间间隔的开始时间(含)。

如果指定,则与此时间间隔匹配的时间戳必须等于或晚于开始时间。

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

endTime

string (Timestamp format)

可选。时间间隔的结束时间(不含)。

如果指定,则与此时间间隔匹配的时间戳必须早于结束时间。

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

InvestigationExecutionState

调查的执行状态。

枚举
INVESTIGATION_EXECUTION_STATE_UNSPECIFIED 默认值。此值未使用。
INVESTIGATION_EXECUTION_STATE_RUNNING 调查正在执行。
INVESTIGATION_EXECUTION_STATE_MODIFIED 自上次更新问题以来,尚未执行过调查。
INVESTIGATION_EXECUTION_STATE_FAILED 调查执行完毕,但执行失败。
INVESTIGATION_EXECUTION_STATE_COMPLETED 所有执行任务均已完成,且调查当前处于静止状态。

观察

观察是用户与系统之间或系统不同组件之间进行数据交换的基本单位;是具有相关性的元素。因此,它们应该相对较小;如果您希望用户对观察结果的“一部分”做出反应,则应将其分解为更小的观察结果。特定的 runbook 运行、特定的用户参数输入、特定的相关日志条目都可以是单独的观察结果。这意味着,在一次调查中,可能有数十个或数百个观察结果。下一个 ID:26

JSON 表示法
{
  "id": string,"timeIntervals": [
    {
      object (Interval)
    }
  ],
  "title": string,
  "observationType": enum (ObservationType),
  "observerType": enum (ObserverType),
  "text": string,
  "data": {
    object
  },
  "dataUrls": {
    string: string,
    ...
  },
  "knowledgeUrls": {
    string: string,
    ...
  },
  "baseObservations": [
    string
  ],
  "relevantResources": [
    string
  ],
  "recommendation": string,
  "systemRelevanceScore": number,
  "relevanceOverride": enum (UserRelevance),
  "observationCompletionState": enum (ObservationCompletionState),
  "observedNormalOperation": boolean
}
字段
id

string

必需。相应观察结果的唯一标识符。应取决于观察结果的“核心内容”,而不是取决于相关性等其他因素。不应取决于任何可能因所运行修订版本而异的不可预测因素。这也是父级调查中的映射键。应具有层次结构,以“.”作为分隔符,并以观察方的名称开头。例如,diagnostics.runbook.ABC、signals.logs 或 user.input.2。应可用作网址组成部分。(不区分大小写 [a-z0-9-._]+)该字段不会向用户呈现,但会在数据模型中显示。Google 工程师将利用该字段来找到 bug 的位置,因此该字段应具有一定的可读性。

timeIntervals[]

object (Interval)

可选。相应观察发生的时间段。观察应至少包含一个时间范围,以便在时间轴上显示观察结果,并方便找到相关事件。对于重复但不连续的事件,应当有多个范围。界面可能会将这些范围合并显示。

title

string

可选。界面中显示的标签。该值在一次调查中不必是唯一的。不过,标签应尽量具体但长度不得超过 80 个字符,以便用户轻松浏览多项观察结果。例如,“配置了所有已丢弃功能的 Nettools Pod”就要比“相关 Pod 配置”好得多。

observationType

enum (ObservationType)

必需。观察结果的类型(例如日志、指标等)。

observerType

enum (ObserverType)

必需。数据的来源,例如用户、系统代码、LLM 等。

text

string

可选。与观察结果关联的自然语言 [Markdown] 文本。这应是核心内容,而不是元数据说明。

data

object (Struct format)

可选。观察方选择的对观察结果的结构化表示形式。可选。如果提供该字段,观察方还应提供观察结果的文本说明,以便 LLM 进行处理并在界面中呈现。

dataUrls

map (key: string, value: string)

可选。从人类可读名称到提供支持性证据的网址的映射。映射键将作为网址定位文字呈现。如果观察结果取决于系统之外的因素,请填写此字段。例如,可以重新生成观察结果的日志记录/指标/查询等。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

knowledgeUrls

map (key: string, value: string)

可选。从人类可读名称到文档网址的映射。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

baseObservations[]

string

可选。相应观察所基于的其他观察的 ID。例如,一条结论性观察结果会记录用于生成该结论的观察。一个提取的参数将用来记录其提取来源。在修订版本中,前提和结论图将是无环图。

relevantResources[]

string

可选。与观察结果相关的 Google Cloud 资源。应是资源的完全限定 URI,例如“//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance”

recommendation

string

可选。自然语言 [markdown] 文本,用于描述建议采取的用于修复根本原因的措施。此字段没有格式限制,目前不会进行机器处理。建议可以包括:- 修复说明概要 - 包含可执行命令的具体的战术性修复步骤 - 包含可执行命令的具体的战术性问题排查步骤,用于确定下一步的调查方向

systemRelevanceScore

number

可选。系统推断出的相应观察结果与调查的相关程度。可选。应在 [-1, 1] 范围内。对于 OBSERVATION_TYPE_HYPOTHESIS,表示对解释的置信度。只有根本原因假设会相互比较排名。对于其他 ObservationType,此值表示相关性得分,并且会相互比较排名。值为 0 表示中性。

relevanceOverride

enum (UserRelevance)

可选。用户的相关性判断。

observationCompletionState

enum (ObservationCompletionState)

可选。ObservationCompletionState 表示发出的观察结果是否已完全形成且应向用户显示。通过此字段,可以隐藏处于中间状态的观察结果。

observedNormalOperation

boolean

可选。相应观察结果是提供了有关问题/根本原因的信息 (false),还是表明正常运行状态 (true)。这在概念上与相关性不同,使用方式也不同。无关的观察结果应向 LLM 和用户隐藏。对问题的相关观察应显示为观察结果,并应激发假设。表明正常运行状态的相关发现结果不一定会显示在界面中,但应由 LLM 用来过滤掉已被相应发现结果反驳的假设。

ObservationType

表示构成观察结果的数据类型。该字段与来源无关:日志可能由用户明确提供,也可能通过 AI 提取,还可能由 runbook 发现。

枚举
OBSERVATION_TYPE_UNSPECIFIED 请勿使用。指定观察结果类型。如有需要,可以添加新的枚举值。
OBSERVATION_TYPE_CLOUD_LOG 观察结果的文本是一条日志条目。
OBSERVATION_TYPE_CLOUD_METRIC 观察结果的内容是一个指标或一组指标。
OBSERVATION_TYPE_CAIS_CONFIG 配置
OBSERVATION_TYPE_CAIS_CONFIG_DIFF 配置更改
OBSERVATION_TYPE_CLOUD_ALERT 提醒
OBSERVATION_TYPE_CICD_EVENT 来自持续集成系统的事件,例如探测器故障。
OBSERVATION_TYPE_TEXT_DESCRIPTION 自由文本输入,例如初始用户输入。可以是 Markdown。
OBSERVATION_TYPE_HYPOTHESIS 这是系统得出的 [暂定] 结论。这些数据可以成为后续修订版本的输入。在这种情况下,系统会使用建议,但不会使用修复。
OBSERVATION_TYPE_STRUCTURED_INPUT 结构化输入,例如整理到表单中的 runbook 参数
OBSERVATION_TYPE_COMPOSITE 用于包含多种证据的观察结果,例如 runbook 输出。
OBSERVATION_TYPE_OTHER 如果其他类型都不适用,runbook 输出也可以归入“其他”类别。
OBSERVATION_TYPE_LOG_THEME 日志中发现的主题。
OBSERVATION_TYPE_CONFIG_ANALYSIS 包含 LLM 分析的配置的信号输出。
OBSERVATION_TYPE_OUTAGE 包含来自 PSH 的中断事件的信号输出。
OBSERVATION_TYPE_KNOWLEDGE 提供有关特定用户问题的相关信息的文本。例如,错误目录说明/外部链接、RAG 等。

ObserverType

表示数据是如何进入调查的。

枚举
OBSERVER_TYPE_UNSPECIFIED 请勿使用。指定观察结果的来源。如有需要,可以添加新的枚举值。
OBSERVER_TYPE_DIAGNOSTICS 出于内部归因方面的考虑,我们会将这些类型区分开。诊断具有明确的根本原因概念,例如通过 runbook。
OBSERVER_TYPE_SIGNALS 信号则用于没有明确根本原因的处理操作。
OBSERVER_TYPE_DETERMINISTIC_CODE 用于仅依赖于本地数据的代码。尤其是错误目录查找。
OBSERVER_TYPE_AI 用于在整个过程中做出的仅依赖于前提中所列观察结果的 AI 推理。
OBSERVER_TYPE_USER 用户输入观察结果,包括对澄清问题的回答。
OBSERVER_TYPE_ALERT 来自 GCA 外部提醒的观察结果。

UserRelevance

表示用户对观察结果做出的相关性判断。界面将类似于“我喜欢”或“不喜欢”按钮这样的形式。

枚举
USER_RELEVANCE_UNSPECIFIED 用户尚未将相应观察结果标记为相关或不相关。
USER_RELEVANCE_PROMOTED 用户将相应观察结果标记为相关。
USER_RELEVANCE_REJECTED 用户将相应观察结果标记为不相关。

ObservationCompletionState

确定观察结果是否已完全形成并完整。该字段有一个副作用,就是会根据字段值来决定是否向用户显示观察结果。

枚举
OBSERVATION_COMPLETION_STATE_UNSPECIFIED 请勿使用。
OBSERVATION_COMPLETION_STATE_COMPLETE 观察结果已完全形成且应向用户显示。
OBSERVATION_COMPLETION_STATE_INCOMPLETE 观察结果缺少一些信息,或者需要由其他观察方进一步处理。此类观察结果不应保留到未来的调查修订版本中。

ObserverStatus

ObserverStatus 表示在调查执行期间,观察方在特定时间点的状态。注意:默认情况下,此消息中的所有内容都不会被隐去。各构件不应在此处放入 PII/CCC 数据,除非已事先隐去。下一个 ID:13

JSON 表示法
{
  "observer": string,
  "observerExecutionState": enum (ObserverExecution),
  "observerDisplayName": string,
  "updateTime": string,
  "startTime": string,
  "updateComment": string,
  "observerErrors": [
    {
      object (Status)
    }
  ]
}
字段
observer

string

必需。相应状态所针对的观察方的 ID。观察方 ID 应采用人类可读分层结构,例如“signals.logs.firewall_rules”或“diagnostics.error_catalog”。

observerExecutionState

enum (ObserverExecution)

可选。观察方的当前执行状态。

observerDisplayName

string

必需。描述相应观察方时向用户显示的名称。请注意,界面可能会将此字符串替换为国际化版本,因此不应动态生成此字符串。必需,以便用户了解系统所指的观察方(例如 runbook)。

updateTime

string (Timestamp format)

可选。状态的更新时间。可选,由观察方负责设置该字段。在观察方完成观察后,该字段会变为 endTime。

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

startTime

string (Timestamp format)

可选。观察方开始时间。可选,由观察方负责设置该字段。在观察方完成观察后,该字段与 updateTime 之间的差值即为观察方运行时间。

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

updateComment

string

可选。来自观察方的状态更新。可能会被记录以用于调试目的。这些内容可能会向用户显示。良好的更新状态应为“参数匹配,已加入队列等待执行”或“已检查日志文件 2/5”。

observerErrors[]

object (Status)

可选。调查系统中的一种错误,该错误会导致观察方无法执行特定观察。此处的错误字符串将显示给用户。该错误可能会重复出现,因为观察方可能缺少多项权限。

ObserverExecution

观察方的状态。

枚举
OBSERVER_EXECUTION_UNSPECIFIED 观察方状态未指定。
OBSERVER_EXECUTION_NOT_STARTED 调查尚未开始。
OBSERVER_EXECUTION_RUNNING 调查正在运行,并且相应观察方可运行或正在运行。
OBSERVER_EXECUTION_COMPLETE 观察方已完成观察,且没有出现内部错误。
OBSERVER_EXECUTION_FAILED 观察方尝试运行,但因错误而失败。此消息特定于某个构件,如果显示观察结果,则可能会在界面中呈现此消息,但优先级非常低。
OBSERVER_EXECUTION_BLOCKED 观察方处于停滞状态,并在等待输入。
OBSERVER_EXECUTION_INVESTIGATION_BLOCKED 观察方报告了会阻碍或严重影响调查的错误,例如 CAIS 或日志记录被停用。应在界面中以醒目方式呈现。
OBSERVER_EXECUTION_INVESTIGATION_DEGRADED 观察方报告了会导致调查降级的错误,可能需要用户在修复造成错误的原因后升级或重新运行调查。

AbsentObservation

所需观察结果的标识符。通常是一个参数,但也可以扩展为其他类型。

JSON 表示法
{

  // Union field t can be only one of the following:
  "param": string,
  "generalMissingObservation": {
    object (GeneralAbsentObservation)
  },
  "pendingObservation": string
  // End of list of possible types for union field t.
}
字段
联合字段 t。缺少多种参数。t 只能是下列其中一项:
param

string

可选。runbook 参数。

generalMissingObservation

object (GeneralAbsentObservation)

可选。用户可以提供的缺失观察结果(非 runbook 参数)。

pendingObservation

string

可选。尚未创建的观察结果,观察方应通过运行相应观察进行创建。这可能会提示系统执行 runbook。

GeneralAbsentObservation

缺少的观察结果(非 runbook 参数)。

JSON 表示法
{
  "id": string,
  "title": string,
  "validationRegex": string
}
字段
id

string

可选。缺失观察结果的 ID。

title

string

可选。要在界面中显示的标题

validationRegex

string

可选。回答必须匹配的正则表达式。必须符合 JavaScript 的正则表达式字符串格式语法。请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp#syntax

ObserverLogEntry

来自观察方的日志条目。

JSON 表示法
{
  "logTime": string,
  "logMessage": string,
  "logSeverity": enum (LogSeverity),
  "data": {
    object
  },
  "sensitiveData": {
    object
  }
}
字段
logTime

string (Timestamp format)

必需。日志的创建时间。

采用 RFC 3339 标准,生成的输出将始终在末尾带 Z,并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

logMessage

string

必需。人类可读消息。

logSeverity

enum (LogSeverity)

必需。日志消息的严重级别。

data

object (Struct format)

可选。任何其他数据,例如 RPC 错误。警告:与 ObserverStatus 的其余部分一样,此字段的内容可能会被读取,以用于观察方调试目的。对于敏感数据,请改用 sensitiveData

sensitiveData

object (Struct format)

可选。可能包含有关被调查项目的敏感信息的任何其他数据。出于调试目的读取 ObserverStatus 时,此字段将被隐去。

LogSeverity

日志条目中所述事件的严重级别,以下列标准严重级别之一表示。为方便您参考,各级别均分配了所列数值。使用所列值以外数值的效果未定义。

您可以按严重级别过滤日志条目。例如,以下过滤条件表达式将匹配严重级别为 INFONOTICEWARNING 的日志条目:

severity > DEBUG AND severity <= WARNING

如果您在编写日志条目,则应将其他类型的严重级别编码映射到这些标准级别中的一种。例如,您可以将 Java 的所有 FINE、FINER 和 FINEST 级别映射到 LogSeverity.DEBUG。您可以根据需要保留日志条目载荷中的原始严重级别。

枚举
DEFAULT (0) 日志条目未分配严重级别。
DEBUG (100) 调试或跟踪记录信息。
INFO (200) 常规信息,例如进行中操作的状态或性能。
NOTICE (300) 正常但重要的事件,例如启动、关停或配置更改。
WARNING (400) 警告事件可能会导致问题。
ERROR (500) 错误事件很可能会导致问题。
CRITICAL (600) 严重事件会导致更为严重的问题或服务中断。
ALERT (700) 必须立即采取应对措施。
EMERGENCY (800) 一个或多个系统无法使用。

ClarificationNeeded

系统需要澄清说明。

JSON 表示法
{
  "runbookParameter": {
    object (RunbookParameter)
  },
  "generalMissingObservation": {
    object (GeneralAbsentObservation)
  },
  "parentObserverNames": [
    string
  ]
}
字段
runbookParameter

object (RunbookParameter)

可选。澄清说明的结果是一项观察结果。用户需要提供的 runbook 参数。

generalMissingObservation

object (GeneralAbsentObservation)

可选。缺少的观察结果(非 runbook 参数)。

parentObserverNames[]

string

可选。请求此澄清说明的观察方的显示名称。界面将按这些名称进行分组。

RunbookParameter

由诊断任务更新的 runbook 的参数元数据。

JSON 表示法
{
  "id": string,
  "displayName": string,
  "description": string,
  "exampleValues": [
    string
  ],
  "value": string,
  "associatedAssetTypes": [
    string
  ]
}
字段
id

string

可选。参数的名称。

displayName

string

可选。要向用户显示的参数的名称。

description

string

可选。参数说明。

exampleValues[]

string

可选。参数值的示例。

value

string

可选。参数的值(如有)。

associatedAssetTypes[]

string

可选。如果存在,则为此参数可能所属资源类型的列表。例如,“compute.googleapis.com/Instance”。

方法

create

在给定的项目和位置中创建新调查。

delete

删除单个调查。

get

获取单个调查的详细信息。

getIamPolicy

获取资源的访问权限控制政策。

list

列出给定项目和位置中的调查。

patch

更新单个调查的参数。

setIamPolicy

针对指定资源设置访问权限控制政策。

testIamPermissions

返回调用者对指定资源拥有的权限。