本文档介绍如何在 Cloud Logging 中为批量作业启用、生成和查看日志。
您可以使用日志来获取对分析作业有用的信息。例如,日志可以帮助您调试失败的作业。
请注意,只有在作业开始运行且为作业启用日志记录的情况下,系统才会生成日志。如果您需要分析不含日志的作业,请改为查看状态事件。
准备工作
- 如果您之前未使用过 Batch,请查看 Batch 使用入门,并在满足项目和用户的前提条件以启用 Batch。
-
如需获取使用日志分析作业所需的权限,请让管理员授予您以下 IAM 角色:
-
如需创建任务,请执行以下操作:
-
项目的 Batch Job Editor (
roles/batch.jobsEditor
) -
对作业的服务帐号拥有的 Service Account User (
roles/iam.serviceAccountUser
),默认为默认的 Compute Engine 服务帐号
-
项目的 Batch Job Editor (
-
如需查看日志,请执行以下操作:
针对项目的日志查看器 (
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_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
是针对包含批量过滤器参数的批处理日志的查询。
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
过滤 Batch 日志
您可以通过编写包含以下一个或多个过滤条件参数以及零个或多个布尔运算符(AND
、OR
和 NOT
)的查询来过滤 Batch 日志。
如需过滤来自特定作业的日志,请指定作业的唯一 ID (UID):
labels.job_uid=JOB_UID
其中,
JOB_UID
是作业的 UID。如需获取作业的 UID,请查看作业的详细信息。如需过滤特定类型的 Batch 日志,请指定日志类型:
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。
- 了解如何写入任务日志。
- 了解如何删除和导出作业。