REST Resource: projects.locations.investigations

资源:Investigation

描述调查对象的消息 Next 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)

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

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 的其余部分一样,此字段的内容可能会被读取,以用于 Observer 调试。对于敏感数据,请改用 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

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