本文档介绍了如何为批处理作业启用、生成和查看 Cloud Logging 中的日志。
您可以使用日志获取对分析作业有用的相关信息。例如,日志可以帮助您调试失败的作业。
值得注意的是,只有在作业开始运行后,并且仅当为作业启用了日志记录功能时,才会生成日志。如果您需要分析没有日志的作业,请改为查看状态事件。
准备工作
- 如果您之前未使用过批处理功能,请参阅开始使用批处理,并完成适用于项目和用户的前提条件,以启用批处理功能。
-
如需获得使用日志分析作业所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如需创建作业,请执行以下操作:
-
项目的 Batch Job Editor (
roles/batch.jobsEditor
) -
作业的服务账号(默认是默认的 Compute Engine 服务账号)上的 Service Account User (
roles/iam.serviceAccountUser
)
-
项目的 Batch Job Editor (
-
如需查看日志,请使用以下角色:
项目的 Logs Viewer (
roles/logging.viewer
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
如需创建作业,请执行以下操作:
为作业启用日志记录
如需允许为作业生成日志,请在创建作业时通过 Cloud Logging 启用日志:
- 如果您使用 Google Cloud 控制台创建作业,则 Cloud Logging 中的日志始终处于启用状态。
如果您使用 gcloud CLI 或批处理 API 创建作业,则 Cloud Logging 中的日志默认处于停用状态。如需启用 Cloud Logging 日志,请在创建作业时为
logsPolicy
字段添加以下配置:{ ... "logsPolicy": { "destination": "CLOUD_LOGGING" } ... }
为作业写入和生成日志
为作业启用 Cloud Logging 日志后,Cloud Logging 会自动生成为作业写入的所有日志。具体而言,批处理作业可以具有以下日志类型:
代理日志 (
batch_agent_logs
):Batch Service Agent 中的活动日志。批处理作业会自动为已启用日志记录功能的每个作业写入代理日志。
任务日志 (
batch_task_logs
):您配置作业的可运行项将数据写入标准输出 (stdout
) 流或标准错误 (stderr
) 流的任何数据的日志。您可以选择为启用了日志记录的每个作业写入任务日志。
查看作业的日志
您可以使用 Google Cloud 控制台、gcloud CLI、Logging API、Go、Java、Python 或 C++ 查看作业的日志。
控制台
如需使用 Google Cloud 控制台查看作业的日志,请执行以下操作:
gcloud
如需使用 gcloud CLI 查看日志,请使用 gcloud logging read
命令:
gcloud logging read "QUERY"
其中 QUERY
是对包含批处理过滤条件参数的批处理日志的查询。
API
如需使用 Logging API 查看日志,请使用 entries.list
方法:
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "QUERY"
"orderBy": "timestamp desc"
}
替换以下内容:
Go
Go
如需了解详情,请参阅 批处理 Go API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
如需了解详情,请参阅 批处理 Java API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
如需了解详情,请参阅 批处理 Python API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C++
C++
如需了解详情,请参阅 批处理 C++ API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
过滤批量日志
您可以编写包含以下一个或多个过滤参数以及零个或多个布尔运算符(AND
、OR
和 NOT
)的查询,以过滤出批处理日志。
如需过滤特定作业中的日志,请指定作业的唯一 ID (UID):
labels.job_uid=JOB_UID
其中,
JOB_UID
是作业的 UID。如需获取作业的 UID,请查看作业的详细信息。如需过滤出特定类型的批处理日志,请指定日志类型:
logName=projects/PROJECT_ID/logs/BATCH_LOG_TYPE
替换以下内容:
PROJECT_ID
:您要查看日志的项目的项目 ID。BATCH_LOG_TYPE
:您要查看的批处理日志的类型,对于任务日志为batch_task_logs
,对于代理日志为batch_agent_logs
。
如需过滤包含自定义状态事件的日志,请指定日志必须定义
jsonPayload.batch/custom/event
字段:jsonPayload.batch"/"custom"/"event!=NULL_VALUE
如需过滤出一个或多个特定严重级别的日志,请指定以下比较:
severityCOMPARISON_OPERATORSEVERITY_ENUM
替换以下内容:
COMPARISON_OPERATOR
:比较运算符,例如>=
。SEVERITY_ENUM
:一个LogSeverity
枚举,用于描述日志的严重性,例如ERROR
。
如需了解更多过滤选项,请参阅 Cloud Logging 查询语言文档。
后续步骤
- 详细了解如何排查问题。
- 详细了解 Cloud Logging。
- 了解如何写入任务日志。
- 了解如何导出作业信息。
- 了解如何删除作业。