函数监控#

问题排查#

有关排查部署失败问题,请参阅 部署失败

有关排查调用失败问题,请参阅 状态和错误

请参阅下文,了解如何向您的推理容器添加日志记录,以及如何查看指标。

日志记录和指标#

本节概述了 Cloud Functions UI 中可用的指标和日志。请注意,为了全面监控生产工作负载,建议从您的容器中将日志、指标、分析数据等发送到第三方监控工具。

发送和查看推理容器日志#

在 Cloud Functions UI 中,通过函数详情页面的“日志”选项卡查看推理容器日志。要访问此页面,请从“函数”列表中点击任何函数版本,然后点击右侧边栏上的“查看详情”。

Function Details Logs Tab

日志目前可查看长达 48 小时的历史记录,并且可以展开行进行扫描,或者以“窗口”视图方便复制和粘贴。每个容器每分钟最多记录 3000 行日志。如果超出此限制,则最新消息将被替换为警告,并且所有后续消息都将被丢弃,直到下一个窗口打开(即进入下一分钟)。

警告

请注意,作为前提条件,您的推理容器必须经过检测才能发送日志。强烈建议这样做。

如何向您的推理容器添加日志#

以下是添加 NVCF 兼容日志的示例。下面的日志记录辅助函数以及其他辅助函数可以从 辅助函数 存储库导入。

 1 import logging
 2
 3 def get_logger() -> logging.Logger:
 4     """
 5     gets a Logger that logs in a format compatible with NVCF
 6     :return: logging.Logger
 7     """
 8     sys.stdout.reconfigure(encoding="utf-8")
 9     logging.basicConfig(
10         level=logging.INFO,
11         format="%(asctime)s [%(levelname)s] [INFERENCE] %(message)s",
12         handlers=[logging.StreamHandler(sys.stdout)],
13     )
14     logger = logging.getLogger(__name__)
15     return logger
16
17 class MyServer:
18
19     def __init__(self):
20         self.logger = get_logger()
21
22     def _infer_fn(self, request):
23         self.logger.info("Got a request!")

查看函数指标#

NVCF 默认公开以下指标。

  • 实例计数(当前、最小和最大)

  • 调用活动和队列深度

  • 总调用次数、成功率和失败次数

  • 平均推理时间

点击“函数”列表页面中的任何函数即可查看指标。函数概览页面将显示所有函数版本的聚合值。

Function Overview Metrics

当点击函数版本的详情页面时,您将看到此特定函数版本的指标。

Function Details Metrics

警告

指标摄取可能最多有 5 分钟的延迟。 页面内的任何时间序列查询都以 5 分钟的间隔聚合,步长设置为显示 500 个数据点。所有统计查询均基于所选的总时间段,并简化为显示最新的总值或平均值。

使用 OpenTelemetry 进行检测#

用户可以使用 OpenTelemetry SDK(自动)检测其 容器 函数,并将信号(日志、跟踪和指标)发送到可观测性后端,例如 Grafana Cloud。

有关 容器 函数的示例,请参阅 GitHub