自定义 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/:
上面的说明有更多细节,但您通常做的是:
- 确保您的服务器 returns 端点处的普罗米修斯指标。您可能希望使用保留在内部的不同端口来公开它。
- 通过将配置添加到代理来启用 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
}
]
- 如果使用 kubernetes,请重新启动 datadog-agent 或部署
我正在使用 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/:
上面的说明有更多细节,但您通常做的是:
- 确保您的服务器 returns 端点处的普罗米修斯指标。您可能希望使用保留在内部的不同端口来公开它。
- 通过将配置添加到代理来启用 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
}
]
- 如果使用 kubernetes,请重新启动 datadog-agent 或部署