可观测性#

NV-CLIP NIM 支持以 OpenTelemetry 兼容的格式导出指标和追踪。

此外,底层的 Triton 服务通过 Prometheus 端点公开其自身的指标。

要收集这些指标和追踪,请将它们导出到正在运行的 OpenTelemetry Collector 实例,然后该实例可以将它们导出到任何 OTLP 兼容的后端。

指标#

您可以从 ${embedding_long_name} 容器和底层的 Triton 实例收集指标。

服务指标#

要从 NIM Web 服务启用指标导出,请在启动 NV-CLIP NIM 容器时设置 NIM_OTEL_SERVICE_NAMENIM_OTEL_METRICS_EXPORTERNIM_OTEL_EXPORTER_OTLP_ENDPOINT 环境变量。

Triton 指标#

Triton 以 Prometheus 格式在端口 8002 上公开其指标。要收集这些指标,请使用 Prometheus receiver 来抓取 Triton 端点,并以 OpenTelemetry 兼容的格式导出它们。有关详细信息,请参见以下示例。

追踪#

要从 NIM Web 服务启用追踪导出,请在启动 NV-CLIP NIM 容器时设置 NIM_OTEL_SERVICE_NAMENIM_OTEL_TRACES_EXPORTERNIM_OTEL_EXPORTER_OTLP_ENDPOINT` 环境变量。

示例#

以下示例要求 OpenTelemetry Collector 的实例正在端口 <opentelemetry-collector-port> 上的 <opentelemetry-collector-endpoint> 运行。

启动启用 OpenTelemetry 的 NIM 容器#

# Choose a container name for bookkeeping
export NIM_MODEL_NAME=nvidia/nvclip-vit-h-14
export CONTAINER_NAME=$(basename $NIM_MODEL_NAME)

# Choose a NIM Image from NGC
export IMG_NAME="nvcr.io/nim/$NIM_MODEL_NAME:1.0.0"

# Set the OTEL environment variables to enable metrics exporting
export NIM_OTEL_SERVICE_NAME=$CONTAINER_NAME
export NIM_OTEL_METRICS_EXPORTER=otlp
export NIM_OTEL_TRACES_EXPORTER=otlp
export NIM_OTEL_EXPORTER_OTLP_ENDPOINT="http://<opentelemetry-collector-endpoint>:<opentelemetry-collector-port>"

docker run -it --rm --name=$CONTAINER_NAME \
... \
-e NIM_OTEL_SERVICE_NAME \
-e NIM_OTEL_METRICS_EXPORTER \
-e NIM_OTEL_TRACES_EXPORTER \
-e NIM_OTEL_EXPORTER_OTLP_ENDPOINT \
... \
$IMG_NAME

使用 OpenTelemetry Collector 接收和导出遥测数据#

以下 OpenTelemetry Collector 配置同时启用指标和追踪导出。

定义了两个接收器

  • OTLP 接收器能够接收来自 NIM 的指标和追踪数据。

  • Prometheus 接收器用于抓取 Triton 自身的指标。

定义了三个导出器

  • 一个 OTLP 导出器,用于导出到下游收集器或后端。例如,Datadog

  • 一个 debug 导出器,它将接收到的数据打印到控制台。这对于测试和开发目的非常有用。

追踪被配置为仅由 OTLP 接收器接收,并由 debug 导出器导出。指标被配置为由 OTLP 和 Prometheus 接收器接收,并由 OTLP 和 debug 导出器导出。

receivers:
otlp:
    protocols:
    grpc:
    http:
        cors:
        allowed_origins:
            - "*"
prometheus:
    config:
    scrape_configs:
        - job_name: nim-triton-metrics
        scrape_interval: 10s
        static_configs:
            - targets: ["<nim-endpoint>":8002"]
exporters:
debug:
    verbosity: detailed

service:
pipelines:
    traces:
    receivers: [otlp]
    exporters: [debug]
    metrics:
    receivers: [otlp, prometheus]
    exporters: [debug]