gpt4 book ai didi

python Flask 应用程序使用 ACR 在 Azure Linux 容器上使用 Datadog 跟踪 APM 日志

转载 作者:行者123 更新时间:2023-12-05 02:45:08 26 4
gpt4 key购买 nike

我当前的组织正在迁移到 DataDog 以进行应用程序性能监控。我正在使用 docker 将 Python Flask Web 应用程序部署到 Azure 容器注册表。部署到 Azure 后,该应用程序应在 Datadog 门户上列出/可用。

请注意,我刚刚开始学习 Docker 容器。我很有可能完全错了。请多多包涵

遵循的步骤

选项 1:在本地计算机上创建 Docker 容器并推送到 ACR

  1. 向 docker 镜像添加了 dd-trace python 库

  2. 在 docker 文件中添加了 dd-trace run 命令

  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:将日志转发到 Azure Blob 存储,但过程繁重

  1. 使用代码库 Linux 部署 Python
  2. 将日志转发到 Azure Blob 存储
  3. 创建 BlobTrigger Azure 函数以将日志转发到 DataDogAPI
  4. 我相信通过这种方法我们无法捕获 APM 日志,但我们可以捕获应用程序和控制台日志

选项 3:使用 Serilog,但是,我的组织不想使用第三方日志记录框架,我们有自己的日志记录框架

非常感谢任何帮助,我正在寻找使用选项 1 的解决方案。我浏览了 Microsoft 文章、Datadog 文档,但没有成功。

我设置应用程序注册、管理订阅的读者权限、在 Azure 门户上创建 ClientID 和应用程序 secret 。他们都没有帮助

您能否确认是否有一种方法可以在 Azure 上不安装代理的情况下收集 Datadog 上的 APM 日志。

提前谢谢您。

最佳答案

经过几天的研究并与 datadog 支持团队跟进后,我能够在 datadog 门户上获取 APM 日志。

Below is my docker-compose.yml file configuration, I believe it helps someone in future

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

The Dockerfile for my python long running application

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

关于python Flask 应用程序使用 ACR 在 Azure Linux 容器上使用 Datadog 跟踪 APM 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66113635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com