自定义 OpenMetrics 未传播到 DataDog

Custom OpenMetrics Not Being Propagated to DataDog

我正在使用 prometheus-fastapi-instrumentator 程序包来公开我的自定义指标,但 DataDog 似乎没有发现它们。

我在让 DataDog 抓取我的 Counter 指标时遇到了很多麻烦。此外,Histogram 桶似乎没有作为分布指标通过。

有人知道问题出在哪里吗?

这是我的 monitoring.py 文件:https://github.com/rileyhun/fastapi-ml-example/blob/main/app/core/monitoring.py

可重现的例子:

git clone https://github.com/rileyhun/fastapi-ml-example.git

docker build -t ${IMAGE_NAME}:${IMAGE_TAG} -f Dockerfile .
docker tag ${IMAGE_NAME}:${IMAGE_TAG} rhun/${IMAGE_NAME}:${IMAGE_TAG}
docker push rhun/${IMAGE_NAME}:${IMAGE_TAG}

minikube start --driver=docker --memory 4g --nodes 2
kubectl create namespace monitoring
helm install prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring

kubectl apply -f deployment/wine-model-local.yaml
kubectl port-forward svc/wine-model-service 8080:80

python api_call.py

datadog-agent 是否配置为提取您的指标,或者您是否将指标推送到 dogstatsd?

如果 datadog-agent 正在拉取,请确保按照此处的说明进行操作 https://docs.datadoghq.com/integrations/guide/prometheus-host-collection/:

上面的说明有更多细节,但您通常做的是:

  1. 确保您的服务器 returns 端点处的普罗米修斯指标。您可能希望使用保留在内部的不同端口来公开它。
  2. 通过将配置添加到代理来启用 openmetrics 集成,这样它就知道它需要从您在上述步骤中公开的端点提取 prometheus 指标。如果您有 kubernetes 设置,那么此配置在应用程序端指定,通常通过 spec.template.metadata.annotations 中的 Deployment 资源,看起来像:
        ad.datadoghq.com/{name of container declared in spec.containers.name}.check_names : '["openmetrics"]'
        ad.datadoghq.com/{name of container declared in spec.containers.name}.init_configs : '[{}]'
        ad.datadoghq.com/{name of container declared in spec.containers.name}.instances : |
          [
            {
            "prometheus_url" : "http://%%host%%:%%port_0%%/metrics",
            "namespace" : "",
            "metrics": ["*"],
            "tags": {"service": "{name of service for datadog}"},
            "send_histograms_buckets": true,
            "send_distribution_buckets": true,
            "send_distribution_counts_as_monotonic": true
            }
          ]
  1. 如果使用 kubernetes,请重新启动 datadog-agent 或部署