#python #prometheus #metrics #fastapi #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
Ответ №1:
Настроен ли агент datadog для извлечения ваших показателей или вы отправляете показатели в dogstatsd?
Если агент-регистратор данных тянет, убедитесь, что вы следуете инструкциям здесь https://docs.datadoghq.com/integrations/guide/prometheus-host-collection/:
В приведенных выше инструкциях содержится более подробная информация, но то, что вы обычно делаете, это:
- Убедитесь, что ваш сервер возвращает метрики prometheus в конечной точке. Возможно, вы захотите раскрыть это, используя другой порт, который остается внутренним.
- Включите интеграцию openmetrics, добавив конфигурацию агенту, чтобы он знал, что ему необходимо извлечь метрики prometheus из конечной точки, которую вы указали на предыдущем шаге. Если у вас есть настройка kubernetes, то эта конфигурация указана на конце приложения, обычно через
Deployment
ресурс, вspec.template.metadata.annotations
котором будет выглядеть примерно так:
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
}
]
- Перезапустите datadog-агент или развертывание, если вы используете kubernetes