我已经在Stackdriver中启用了通知,并且收到有关异常的通知电子邮件。
问题是我没有收到任何有关超时的通知。
当Google Cloud Function被超时杀死时,是否有任何通知方式?
答案 0 :(得分:2)
即使未将超时报告为错误,您仍然可以为超时日志条目设置指标,然后针对该指标的警报超过零阈值。
resource.type="cloud_function"
resource.labels.function_name="[YOUR_FUNCTION_NAME_HERE]"
"finished with status: 'timeout'"
第三行是“包含”文本过滤器。超时消息始终包含此文本。您可以添加其他内容或根据需要进行修改。
点击创建指标。为指标指定一个类似“函数超时”的名称,并确保类型为计数器。您可以将可选字段保留为空白。提交表单,您应该被重定向到/ logs / metrics。
在用户定义的指标下,您应该看到新指标。点击右侧的三点按钮,然后选择从指标创建警报。
为警报策略指定一个有意义的名称。在目标下,您可能还会收到一些关于无法生成折线图的红色文本。单击有用的链接可将对齐器切换为均值,将聚合器切换为无。然后在“配置”下,将条件设置为“高于”,将阈值设置为“ 0”,并设置为“最新值”。
根据需要继续构建通知和文档。确保添加通知通道,以便收到警报。用户界面应在每个字段上都包含提示。
更多详细信息,请参见official documentation。
答案 1 :(得分:1)
答案 2 :(得分:0)
通过在Cloud Functions超时之前强制执行错误来解决此问题。在工作流程方面,我认为这比在其他位置配置设置要容易得多,并且可以将所有错误集中在一个地方。
基本上类似于下面的代码片段:
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);
}
}