приложение python flask для отслеживания журналов APM с помощью Datadog в контейнерах Azure Linux с использованием ACR

Моя текущая организация переходит на DataDog для мониторинга производительности приложений. Я развертываю веб-приложение Python Flask с помощью докера в Реестре контейнеров Azure. После развертывания в Azure приложение должно быть указано / доступно на портале Datadog.

Обратите внимание, я только начал изучать контейнеры Docker. Есть большая вероятность, что я ошибаюсь. Пожалуйста, потерпите меня

Шаги следуют

Вариант 1. Создайте контейнер докеров на локальном компьютере и отправьте его в ACR

  1. Добавлена ​​dd-trace библиотека python в образ докера

  2. Добавлена ​​команда запуска dd-trace в файл докера

  3. построить образ

  4. запустить контейнер на локальном

    Получение OSError: [Errno 99] Невозможно назначить запрошенный адрес

    FROM python:3.7
    ENV VIRTUAL_ENV=/opt/venv
    RUN python -m venv $VIRTUAL_ENV
    ENV PATH="$VIRTUAL_ENV/bin:$PATH"
    
    ENV DD_API_KEY=apikeyfromdatadoghq
    ENV DD_ENV=safhire-dev
    ENV DD_LOGS_ENABLED=true
    ENV DD_LOGS_INJECTION=true
    ENV DD_SERVICE=dev-az1-pythonbusinessservice
    ENV DD_TAGS=products:myprojects
    ENV DD_TRACE_DEBUG=true
    ENV DD_TRACE_ENABLED=true
    ENV DOCKER_ENABLE_CI=true
    
    COPY /app /app
    
    
    COPY requirements.txt /
    RUN pip install --no-cache-dir -U pip
    RUN pip install --no-cache-dir -r /requirements.txt
    CMD ddtrace-run python app/main.py runserver 127.0.0.1:3000
    

Вариант 2. Перенаправить журналы в хранилище BLOB-объектов Azure, но это сложный процесс

  1. Развертывание Python с использованием Code base Linux
  2. Перенаправить журналы в хранилище BLOB-объектов Azure
  3. Создайте функцию Azure BlobTrigger для пересылки журналов в DataDogAPI.
  4. Я считаю, что с таким подходом мы не можем захватить журналы APM, но мы можем захватить журналы приложений и консоли.

Вариант 3: использую Serilog, но моя организация не хочет использовать стороннюю платформу ведения журналов, у нас есть собственная структура ведения журналов

Любая помощь приветствуется, я ищу решение, использующее вариант 1. Я просмотрел статьи Microsoft, документацию Datadog, но безуспешно.

Я настраиваю регистрацию приложений, управляю разрешениями читателей в подписке, создаю ClientID и секреты приложений на портале Azure. никто из них не помог

Не могли бы вы подтвердить, есть ли способ собирать журналы APM на datadog без установки агента в Azure.

Заранее спасибо.


person Dangerous Dev    schedule 09.02.2021    source источник
comment
Я не знаком с Datadog, поэтому могу помочь по Docker. Я вижу, вы создаете DockerFile, а что еще вам нужно?   -  person Charles Xu    schedule 16.02.2021
comment
Мне удалось запустить контейнер докеров на локальном компьютере. но я не могу увидеть эту услугу на портале datadog.   -  person Dangerous Dev    schedule 16.02.2021
comment
Это проблема с Datadog, возможно, вам нужно что-то установить в контейнере докера, например, агент.   -  person Charles Xu    schedule 16.02.2021
comment
@CharlesXu, это правильно, мне нужно установить агент datadog при запуске в контейнере. Спасибо за ответы. Я выложил полную конфигурацию   -  person Dangerous Dev    schedule 19.02.2021


Ответы (1)


После нескольких дней исследований и последующих действий с командой поддержки datadog я смог получить журналы APM на портале datadog.

Ниже приведена конфигурация моего docker-compose.yml файла, я считаю, что это поможет кому-то в будущем

version: "3"
services:
  web:
    build: web
    command: ddtrace-run python standalone_api.py 
    volumes:
      - .:/usr/src/app
    depends_on: 
      datadog-agent:
        condition: service_healthy         
    image: pythonbusinessservice:ICDNew
    ports: 
     - 5000:5000
    environment:     
    - DATADOG_HOST=datadog-agent
    - DD_TRACE_AGENT_PORT=8126
    - DD_AGENT_HOST=datadog-agent
  datadog-agent:
    build: datadog
    image: gcr.io/datadoghq/agent:latest
    ports: 
     - 8126:8126          
    environment: 
     - DD_API_KEY=9e3rfg*****************adf3
     - DD_SITE=datadoghq.com
     - DD_HOSTNAME=pythonbusinessservice
     - DD_TAGS=env:dev      
     - DD_APM_ENABLED=true
     - DD_APM_NON_LOCAL_TRAFFIC=true
     - DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true     
     - DD_SERVICE=pythonbusinessservice 
     - DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true 
     - DD_CONTAINER_EXCLUDE="name:datadog-agent"      
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock
     - /proc/:/host/proc/:ro
     - /opt/datadog-agent/run:/opt/datadog-agent/run:rw
     - /sys/fs/cgroup:/host/sys/fs/cgroup:ro

Dockerfile для моего долго работающего приложения на Python

FROM python:3.7

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

CMD ["ddtrace-run python", "/app/standalone_api.py"]

Обратите внимание: в файле requirements.txt у меня указан пакет ddtrace.

person Dangerous Dev    schedule 19.02.2021