google-cloud-platform - 当 Vertex AI 训练作业失败(尝试 3 次后)时,如何创建 Logs Router Sink?
问题描述
我正在运行Vertex AI custom training job
(使用自定义容器进行机器学习训练)GCP
。我想Pub/Sub
在作业失败时创建一条消息,以便我可以在 Slack 等聊天中发布消息。日志文件(Cloud Logging)
看起来像这样:
{
insertId: "xxxxx"
labels: {
ml.googleapis.com/endpoint: ""
ml.googleapis.com/job_state: "FAILED"
}
logName: "projects/xxx/logs/ml.googleapis.com%2F1113875647681265664"
receiveTimestamp: "2021-07-09T15:05:52.702295640Z"
resource: {
labels: {
job_id: "1113875647681265664"
project_id: "xxx"
task_name: "service"
}
type: "ml_job"
}
severity: "INFO"
textPayload: "Job failed."
timestamp: "2021-07-09T15:05:52.187968162Z"
}
我正在使用以下查询创建日志路由器接收器:
resource.type="ml_job" AND textPayload:"Job failed" AND labels."ml.googleapis.com/job_state":"FAILED"
我面临的问题是 Vertex AI 在将作业声明为失败之前会重试作业 3 次,但在日志文件中消息是相同的。下面你有 3 个例子,只有最后一个失败了 3 次的例子最后真的失败了。
例如,在日志文件中,我没有任何计数 ID。知道如何解决这个问题吗?如果我需要在我的所有项目中这样做,那么创建一个 BigQuery 表来跟踪每次失败的次数resource.labels.job_id
似乎有点过头了。有没有办法resource.labels.job_id
在 Logs Router Sink 中进行分组和计数?
解决方案
日志接收器非常简单:提供一个过滤器,它将在 PubSub 主题中发布与此过滤器匹配的每个条目。没有分组,没有计数,什么都没有!!
我建议您结合使用基于日志的指标和云监控。
- 首先,在您的作业失败日志条目上创建一个基于日志的指标
- 使用以下键值在此基于日志的指标上创建警报
- 按您想要的方式设置组,例如 jobID(我不知道 VertexAI 作业的相关值是什么)
- 当阈值等于或高于 3 时设置警报
- 添加通知渠道并设置 PubSub 通知(仍处于测试阶段)
使用此配置,当出现 3 次相同的 jobID 时,警报将仅在 PubSub 中发布一次。
推荐阅读
- twilio - 发送响应时如何向接收者隐藏我的 twilio 号码
- image-processing - 如何更改 RGBA 图像的单个像素?
- python - Graphviz 命令 '['dot', '-Tdot']' 返回非零退出状态 -11
- python - Distributed Tensorflow: Internal Error - Blas GEMM launch failed
- android - 从 csv 读取到 sqlite 时的分隔符问题
- c# - Asp.net mvc EF 代码首先不创建表
- c - 在棋盘上移动马的程序
- javascript - 如何在日历表单中引用输入日历弹出窗口?
- google-cloud-platform - 为 Compute Engine 虚拟机设置环境变量
- c# - 您不能对状态为 Existing 的对象执行删除操作