如果发送的消息计数为零,则 pubsub 触发警报

问题描述 投票:0回答:1

我有一个用于对象终结的存储桶通知的 pubsub 主题。因此,每当在存储桶中添加新文件时,订阅者都会收到存储桶中的文件名,并且代码会在 k8s 应用程序中处理该文件后确认该消息。

我正在为两种情况创建警报策略:

  1. 如果应用程序无法 ack() 消息。 (检查代码或文件是否有问题)
  2. 如果文件没有到达存储桶。 (至少 1 个文件应在 30 分钟内到达存储桶)

对于案例 1,我能够通过使用指标

pubsub.googleapis.com/subscription/backlog_bytes
获得警报,最小阈值为 X 小时内 N 字节。

对于情况 2,我不确定使用哪个指标。我尝试过

pubsub.googleapis.com/subscription/sent_message_count
。仅当存储桶中实际添加了文件时它才有效。当桶内一定时间没有添加文件时,该指标不可用。但我真的想检查存储桶是否在 30 分钟内至少接收到 1 个文件。我怎样才能实现这个目标?

google-cloud-platform google-cloud-pubsub
1个回答
0
投票

如果您能够提供案例 2 的半工作代码,那么即使在特定时间间隔内没有添加文件,它也应该可以修改为工作。当指标可用时,将时间戳存储在变量中,当指标不可用时,则不执行任何操作。然后只需检查变量即可查看文件上传的最新时间戳以及是否超过 30 分钟。

或者每分钟迭代一次存储桶的对象,检查过去 30 分钟内是否创建了任何对象

from google.cloud import storage
from datetime import datetime, timedelta


def has_recent_upload():
    client = storage.Client()
    bucket = client.get_bucket("your_bucket_name_here")
    objects = list(bucket.list_blobs())
    for object in objects:
        if object.time_created >= datetime.utcnow() - timedelta(minutes=30):
            return True
    return False

© www.soinside.com 2019 - 2024. All rights reserved.