【问题标题】:How to be notified on Google Cloud Function timeout?如何在 Google Cloud Function 超时时收到通知?
【发布时间】:2019-07-22 22:49:09
【问题描述】:

我已经在 Stackdriver 中启用了通知,并且收到了异常通知电子邮件。

问题是我没有收到任何超时通知。

当 Google Cloud Function 因超时而终止时,有什么方法可以得到通知?

【问题讨论】:

  • 这听起来像是超时被记录为非错误这一事实的副作用。这是一个已知问题,如果您提交错误报告以添加您的声音,它可能会有所帮助。 Firebase 对此有一个表格,但我不了解 Cloud。 firebase.google.com/support/contact/bugs-features

标签: google-cloud-platform google-cloud-functions


【解决方案1】:
  • 使用仪表板顶部的搜索框导航到“创建提醒政策”。
  • 在“您要跟踪什么?”下点击“添加条件”。
  • 像这样配置新条件:

  • 点击“添加”。
  • 点击“下一步”。
  • 选择一个通知渠道或创建一个新渠道。
  • 我取消选中“事件解决通知”。
  • 点击“下一步”。
  • 提供描述性警报名称和可选文档。
  • 点击“保存”。
  • 确保您在政策顶部看到“已启用”字样以及绿色复选标记。

【讨论】:

    【解决方案2】:

    通过在 Cloud Functions 超时之前强制出错来解决此问题。在工作流程方面,我认为这更容易控制并且能够将所有错误整合到一个地方,而不必在其他地方配置设置。

    基本上类似于下面的代码sn-p:

    exports.cloudFunction = async (event, context, callback) => {
        try {
            const timeout = setTimeout(function(){ 
                throw new Error(`Timeout: ${event}`); 
            }, 58000); // 2sec buffer off the default 60s timeout
    
            // DO SOMETHING
    
            clearTimeout(timeout);
            callback();
    
        } catch(e) {
    
            // HANDLE ERROR
    
            callback(e);
        }
    }
    

    【讨论】:

      【解决方案3】:

      即使超时未报告为错误,您仍然可以为超时日志条目设置指标,然后在指标超过零阈值时发出警报。

      1. 从 GCP 控制台,转到 Stackdriver Logging 查看器 (/logs/viewer),然后构建一个过滤器,如下所示:
      resource.type="cloud_function"
      resource.labels.function_name="[YOUR_FUNCTION_NAME_HERE]"
      "finished with status: 'timeout'"
      

      第三行是“包含”文本过滤器。超时消息始终包含此文本。您可以根据需要添加其他内容或进行修改。

      1. 单击创建指标。为度量标准命名,如“函数超时”,并确保类型为计数器。您可以将可选字段留空。提交表单,您应该会被重定向到 /logs/metrics。

      2. 用户定义的指标下,您应该会看到您的新指标。单击右侧的三点按钮并选择从指标创建警报

      3. 为警报策略指定一个有意义的名称。在目标下,您可能还会收到一些关于无法生成线图的红色文本。单击有用的链接将对齐器切换为均值,将聚合器切换为无。然后在配置下,将条件设置为“高于”,将阈值设置为“0”,并设置为“最新值”。

      4. 根据需要继续构建通知和文档。确保添加通知渠道,以便收到提醒。用户界面应包含每个字段的提示。

      更多详情请见official documentation

      【讨论】:

      • 我删除了 resource.labels.function_name="[YOUR_FUNCTION_NAME_HERE]" 行,因此它适用于所有已部署的 Google Cloud Functions。您仍然可以恢复相同的数据,因为资源类型具有 funciton_name 作为标签。缺点是日志量较高,但通常我希望在我的任何功能超时时收到警报。
      猜你喜欢
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      相关资源
      最近更新 更多