本文档介绍了如何为 Batch 作业启用、生成和查看 Cloud Logging 中的日志。
您可以使用日志获取有助于分析作业的信息。例如,日志可以帮助您调试失败的作业。
值得注意的是,只有在作业开始运行后且仅当为作业启用了日志记录功能时,才会生成日志。如果您需要在没有日志的情况下分析作业,请改为查看状态事件。
准备工作
- 如果您之前未使用过 Batch,请查看开始使用 Batch 并完成项目和用户的前提条件,以启用 Batch。
-
如需获得使用日志分析作业所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如需创建作业,请执行以下操作:
-
项目的 Batch Job Editor (
roles/batch.jobsEditor
) -
服务账号用户 (
roles/iam.serviceAccountUser
) 在作业的服务账号(默认情况下为 Compute Engine 默认服务账号)上
-
项目的 Batch Job Editor (
-
如需查看日志,请使用以下角色:
项目的 Logs Viewer (
roles/logging.viewer
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
如需创建作业,请执行以下操作:
为作业启用日志记录
如需允许为作业生成日志,请在创建作业时启用 Cloud Logging 中的日志:
- 如果您使用 Google Cloud 控制台创建作业,系统始终会启用 Cloud Logging 中的日志。
如果您使用 gcloud CLI 或 Batch API 创建作业,则默认情况下会停用 Cloud Logging 中的日志。如需启用 Cloud Logging 中的日志,请在创建作业时为
logsPolicy
字段添加以下配置:{ ... "logsPolicy": { "destination": "CLOUD_LOGGING" } ... }
为作业编写和生成日志
为作业启用 Cloud Logging 中的日志后,Cloud Logging 会自动生成为该作业写入的任何日志。具体而言,Batch 作业可以具有以下日志类型:
代理日志 (
batch_agent_logs
):Batch 服务代理执行活动的日志。对于已启用日志记录的每个作业,Batch 会自动写入代理日志。
任务日志 (
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
是包含 Batch 过滤条件参数的 Batch 日志查询。
API
如需使用 Logging API 查看日志,请使用 entries.list
方法:
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "QUERY"
"orderBy": "timestamp desc"
}
替换以下内容:
Go
Go
如需了解详情,请参阅 Batch Go API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
如需了解详情,请参阅 Batch Java API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
如需了解详情,请参阅 Batch Python API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C++
C++
如需了解详情,请参阅 Batch C++ API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
过滤批处理日志
您可以编写包含以下一个或多个过滤参数以及零个或多个布尔运算符(AND
、OR
和 NOT
)的查询,以过滤 Batch 日志。
如需过滤特定作业的日志,请指定该作业的唯一 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。
- 了解如何写入任务日志。
- 了解如何导出作业信息。
- 了解如何删除作业。