本页面提供的信息可帮助您监控工作流部署和 执行。
访问工作流部署和删除日志
您可以在以下位置访问与工作流的部署和删除相关的错误日志: Google Cloud 控制台。
在 Google Cloud 控制台中,进入 Workflows 页面:
点击工作流的名称以显示其工作流详情页面。
点击日志标签页。
要按严重性过滤日志,请在默认列表中选择要显示的日志类型。
访问工作流执行结果
您可以通过 Google Cloud 控制台或使用 gcloud CLI 来访问工作流执行结果。
控制台
在 Google Cloud 控制台中,进入 Workflows 页面:
如需访问工作流的执行结果,请点击工作流的名称以转到其工作流详情页面。
如需详细了解特定执行,请在执行标签页中点击列表中的执行 ID,前往其执行详情页面。
在摘要标签页上,每个执行都包含以下信息:
如需将工作流执行记录视为步骤条目列表进行查看,请点击步骤标签页。如需了解详情,请参阅查看执行步骤的历史记录。
如需查看工作流执行的日志,请点击日志标签页。
如需过滤执行日志,请使用位于表格顶部的过滤条件字段。例如,如果只想显示失败的执行尝试,请在过滤条件的文本字段中输入
failed
。
gcloud
如需查看工作流执行的完整列表,请输入以下命令:
gcloud workflows executions list WORKFLOW_NAME
将
WORKFLOW_NAME
替换为您的工作流的名称。 复制您感兴趣的执行的 ID。如需查看工作流的执行日志,请输入以下命令:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
替换以下内容:
WORKFLOW_NAME
:工作流的名称EXECUTION_ID
:执行的唯一 ID。
此命令返回类似于以下内容的输出:
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
:传递给工作流的运行时参数(如果有的话)。endTime
:执行结束时间。error
:在导致执行失败的异常中抛出的错误消息。name
:执行的完整名称,包括项目的名称、工作流的位置、工作流的名称以及执行 ID。startTime
:执行开始时间。state
:指出工作流的结束状态。status
:执行的当前或最终工作流步骤workflowRevisionID
:执行时的当前修订版本。
执行错误映射
当工作流在执行过程中抛出一个错误,而该错误在
try/except
代码块,
执行失败,并且系统会生成描述错误的错误映射(JSON 字典),
返回。
在工作流执行期间抛出的错误包含标记,以帮助您确定错误的原因。例如,从连接器返回的错误可以包含两个键(tags
和 message
),如下所示:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
可以有多个代码。如需检查特定代码,您可以使用表达式。例如:
${'SystemError' in e.tags}
以字符串形式返回的访问错误数据
某些连接器和 HTTP API 会先将错误序列化为字符串,然后再返回错误。您可以使用标准库函数将载荷恢复到
原始错误。例如,要将错误字符串转换为映射,您可以使用
json.decode
和 text.encode
函数:
json.decode(text.encode(ERROR_FROM_API))
错误标记
下表介绍了不同错误标记的含义。
标记 | 说明 |
---|---|
AuthError | 为 HTTP 请求生成凭据失败时引发。 |
ConnectionError | 与端点成功建立连接时引发 但在数据传输期间出现了连接问题。通过 在收到完整响应和消息前终止连接 尚未传送到端点系统可能不支持重试 幂等性。 |
ConnectionFailedError | 在未与 API 端点建立连接时引发;用于 例如,由于域名不正确、DNS 解析问题或其他 网络问题。重试是幂等的。 |
HttpError | HTTP 请求失败并显示 HTTP 错误状态时会引发该错误。引发此异常时,响应是包含以下元素的映射:
|
IndexError | 当序列子脚本超出范围整数时会引发该错误。 |
KeyError | 在现有键集中找到映射键时会引发该错误。 |
OperationError | 当长时间运行的操作未能成功完成时引发。 |
ParallelNestingError | 当超出并行步骤可嵌套的深度上限时,会引发此错误。 |
RecursionError | 在解释器检测到 超出调用堆栈深度上限。 |
ResourceLimitError | 资源利用率达到上限时会引发该错误。在内部引发该错误时,无法捕获此类型的错误,从而导致立即执行失败。 |
ResponseTypeError | 在长时间运行的操作返回错误响应时引发 类型。 |
SystemError | 当解释器发现内部错误时会引发该错误。 |
TimeoutError | 当系统函数在系统级别超时时会引发该错误。 |
TypeError | 在将操作或函数应用于不兼容类型的对象时引发。关联值是一个字符串,提供类型不匹配的详细信息。 |
UnhandledBranchError | 当一个或多个分支或迭代遇到最多 个未处理的运行时错误时,引发此错误。 |
ValueError | 当操作或函数收到的参数具有正确的类型但值不正确,并且该情况没有一个更精确的异常(例如 IndexError )进行说明时,就会引发该错误。 |
ZeroDivisionError | 当除法或取模运算的第二个参数为零时会引发该错误。关联值是一个字符串,指出操作数和运算的类型。 |
查看执行状态
您可以使用多个命令来帮助检查工作流执行的状态。
如需检索工作流的执行尝试及其 ID 列表,请输入以下命令:
gcloud workflows executions list WORKFLOW_NAME
将
WORKFLOW_NAME
替换为工作流的名称。该命令会返回类似于以下内容的
NAME
值:projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
复制执行 ID 以在下一个命令中使用。
如需检查执行尝试的状态并等待尝试完成,请输入以下命令:
gcloud workflows executions wait EXECUTION_ID
将
EXECUTION_ID
替换为执行尝试的 ID。该命令会等到执行尝试完成后,再返回结果。
要等待上次执行完成,然后返回 完成执行,请输入以下命令:
gcloud workflows executions wait-last
如果您在同一个
gcloud
会话中进行了先前的执行尝试,该命令将等到前一个执行尝试完成后,再返回已完成的执行的结果。如果之前没有尝试过,gcloud
会返回以下错误:ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
要获取上次执行的状态,请输入 以下命令:
gcloud workflows executions describe-last
如果您在同一个
gcloud
会话中进行了先前的执行尝试,该命令会返回上次执行的结果,即使该命令正在运行也是如此。如果前一个尝试不存在,gcloud
将返回以下错误:ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
过滤执行
您可以将过滤器应用于
workflows.executions.list
方法。
您可以按以下字段进行过滤:
createTime
disableOverflowBuffering
duration
endTime
executionId
label
startTime
state
stepName
workflowRevisionId
例如,如需按标签 (labels."fruit":"apple"
) 进行过滤,您可以发出类似于以下内容的 API 请求:
GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
其中:
view=full
会指定一个视图,用于定义应在 执行的返回操作次数;在本示例中,所有数据labels.%22fruit%22%3A%22apple%22
是网址编码的过滤条件语法
如需了解详情,请参阅 AIP-160 过滤。
将日志发送到 Cloud Logging
Workflows 会自动为 Cloud Logging 中的工作流执行生成执行日志。
您还可以启用调用日志记录。或者,您可以创建使用来源中的 sys.log
函数的自定义日志。使用调用日志记录和自定义日志,您可以控制在工作流执行期间日志发送到 Logging 的时间,并且在调试工作流时尤其有用。
如需了解详情(包括 engine_call
和 executions_system
日志记录 proto 文件),请参阅此 GitHub 代码库。
执行日志
每个工作流执行都至少会自动触发两个执行日志:一个在执行开始时,一个在执行结束时。
如需详细了解 Logging 中提供的 Workflows 平台日志,请参阅 Google Cloud Platform 日志。
调用日志记录
您可以设置标志,以便记录工作流执行期间的每个调用步骤,以及返回步骤名称、函数名称、函数参数和调用响应。或者,您也可以记录 或停止调用的事件。
系统只会记录明确的调用步骤;例如,对子工作流或库函数的调用。系统不会记录在表达式或标准库函数(例如,sys.log
中的 http.post
)内以及连接器内的调用。
HTTP Authorization
请求标头会从 HTTP 调用的日志中隐去。
将通话记录应用于 工作流定义 或发送到 工作流的执行过程 您可以指定所需的日志记录级别除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
请注意,Cloud Logging 设置的日志条目大小限制也适用于调用日志记录。
自定义日志
如需在工作流执行期间在 Logging 中创建日志条目,请在工作流中定义调用 sys.log
函数的步骤:
YAML
- step1: assign: - varA: "Hello" - varB: "World" - logStep: call: sys.log args: text: TEXT severity: SEVERITY - step2: return: ${varA + " " + varB}
JSON
[ { "step1": { "assign": [ { "varA": "Hello" }, { "varB": "World" } ] } }, { "logStep": { "call": "sys.log", "args": { "text": "TEXT", "severity": "SEVERITY" } } }, { "step2": { "return": "${varA + " " + varB}" } } ]
创建日志条目时,请定义以下内容:
TEXT
:必填。要记录的文本。如果需要记录映射的值,请使用${json.encode_to_string(myMap)}
。SEVERITY
:可选。日志条目的严重级别。例如INFO
、WARNING
或CRITICAL
。
如需了解详情,请参阅 sys.log
函数参考文档。
所需权限
如需应用调用日志记录或将自定义日志发送到 Logging,工作流必须与具有 logging.logEntries.create
权限的服务账号相关联(例如 roles/logging.logWriter
角色)。如果您需要更改与您的工作流一起更新的服务账号,请参阅更新工作流。如需详细了解如何创建服务账号并分配角色,请参阅管理对项目、文件夹和组织的访问权限。
查看工作流日志
您可以在 Workflows 或 Logging 中查看日志。如需查看单个工作流的日志,请使用 Workflows 中的日志标签页。如需获取所有工作流的日志的汇总视图,请使用 Logging 中的日志浏览器页面。
在 Workflows 中查看日志
如需在 Workflows 中查看工作流的日志,请执行以下操作:
在 Google Cloud 控制台中,转到 Workflows 页面:
如需访问工作流的日志,请点击工作流的名称以转到其详情页面。
如需查看日志,请点击日志。
要按严重性过滤日志,请在默认列表中选择要显示的日志类型。默认情况下,系统会显示所有严重程度的日志。
工作流详情页面上的日志标签页会显示以下类型的日志:
发送到 Logging 的日志
对工作流执行的任何操作(例如更新工作流定义)的审核日志
在 Logging 中查看日志
如需在 Logging 中查看日志,请执行以下操作:
在 Google Cloud 控制台中,前往 Logs Explorer 页面:
在查询构建器中,点击资源并输入
workflow
。从列表中选择 Cloud 工作流,然后点击添加。点击运行查询。
如需详细了解如何在 Logging 查看日志,请参阅使用日志浏览器。