Пользовательские данные OpenMetrics Не распространяются в DataDog

#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/:

В приведенных выше инструкциях содержится более подробная информация, но то, что вы обычно делаете, это:

  1. Убедитесь, что ваш сервер возвращает метрики prometheus в конечной точке. Возможно, вы захотите раскрыть это, используя другой порт, который остается внутренним.
  2. Включите интеграцию 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
            }
          ]
 
  1. Перезапустите datadog-агент или развертывание, если вы используете kubernetes