本文档介绍了如何为批量作业启用、生成和查看 Cloud Logging中的日志 。
您可以使用日志获取有助于分析作业的信息。例如,日志可以帮助您调试失败的作业。
值得注意的是,日志仅在作业开始运行后生成,并且仅当为作业启用了日志记录时才会生成。 如果您需要在没有日志的情况下分析作业, 请改为查看状态事件。
准备工作
- 如果您之前未使用过 Batch,请查看 Batch 使用入门 ,并完成 项目和用户的前提条件以启用 Batch。
-
如需获得使用日志分析作业所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如需创建作业:
- Batch Job Editor (
roles/batch.jobsEditor) 项目的 - Service Account User (
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 控制台查看作业的日志,请执行以下操作:
在 Google Cloud 控制台中,前往作业列表页面。
在作业名称 列中,点击作业的名称。 作业详情 页面随即打开。
点击日志 标签页。Batch 会显示与作业关联的所有日志。
可选:如需过滤日志,请执行以下任一操作:
在 过滤条件 字段中输入 过滤条件。
在严重程度列表中,选择严重程度。
点击 在 Logs Explorer 中查看 以使用 Batch 过滤条件参数在 Logs Explorer 中 构建查询。
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"
}
替换以下内容:
PROJECT_ID:项目的 项目 ID 。QUERY:包含 Batch 过滤条件参数的 Batch 日志查询。
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 日志的类型,可以是任务日志的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。
- 了解如何写入任务日志。
- 了解如何导出作业信息。
- 了解如何删除作业。