当前位置: 首页 > 知识库问答 >
问题:

Python烧瓶应用程序使用ACR在AzureLinux容器上使用Datadog跟踪APM日志

顾穆冉
2023-03-14

我目前的组织正在迁移到用于应用程序性能监控的数据狗。我正在使用docker将Python Flask Web应用程序部署到Azure容器注册表。部署到Azure后,应用应在Datadog门户上列出/可用。

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

接下来的步骤

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

>

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

建立形象

在本地服务器上运行容器

无法分配请求的地址

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. 使用代码库部署PythonLinux
  2. 将日志转发到Azure Blob存储
  3. 创建一个BobTrigger Azure函数,将日志转发到DataDogAPI
  4. 我相信用这种方法,我们不能捕获APM日志,但是,我们可以捕获应用程序和控制台日志

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

非常感谢您的帮助,我正在寻找使用选项1的解决方案。我浏览了微软的文章、Datadog文档,但没有找到。

我在Azure portal上设置应用程序注册、管理订阅的读者权限、创建ClientID和应用程序机密。他们都没帮上忙

能否确认是否有办法在不安装Azure代理的情况下收集datadog上的APM日志。

先谢谢你。

共有1个答案

弓明亮
2023-03-14

经过几天的研究和datadog支持团队的跟进,我能够在datadog portal上获取APM日志。

下面是我的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

我的python长期运行应用程序的Dockerfile

FROM python:3.7

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

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

请注意,关于要求。txt文件我已经列出了ddtrace

 类似资料:
  • 我在应用程序帐户下有一个linux apache 2.4.12和mod_wsgi4.5.2(mod_wsgi.so安装到apache中)。Apache在应用程序帐户下的端口8050下运行。按照这个链接测试mod_wsgi工作:http://modwsgi.readthedocs.org/en/develop/user-guides/quick-configuration-guide.html#ws

  • 我正在开发一个用python运行的应用程序(始终是热泵系统的控制器),我使用flask提供一个用户界面来控制应用程序。 烧瓶应用程序有不同的控制项,例如打开或关闭系统的按钮。 我试图从python模块执行一个特定的功能,以响应按钮上的“单击”(最终目标是更改mmap资源中的一个值,该值将在另一个模块中读取以更改系统的状态)。 在flask应用程序中,我有如下内容: 但是,这会产生“内部服务器错误”

  • 在过去的几周里,我花了太多的时间试图让它发挥作用。我的目标是使用烧瓶框架创建一个简单的网络应用程序,但我不断收到错误,几个小时的谷歌搜索和搜索stackoverflow也没有帮助。 我正在学习一个教程,该教程要求我运行:$python3 routes.py 只有我才能得到以下错误: 回溯(最近的最后一次调用):文件“routes.py”,第1行,从flask导入flask中,呈现\u模板导入错误:

  • 我试图设置NGINX,uWSGI和烧瓶。我目前正在得到, uWSGI错误 找不到Python应用程序 我得到了一些奇怪的错误在我的uwsgi错误文件,你可以在我的文章底部找到。 我会直截了当地说,这是在运行Ubuntu 13.04 64位的新VPS上,这些是我运行的命令。 sudo apt-get更新 sudo apt-get安装构建基本 sudo apt-get安装python-dev sudo

  • 我希望能够运行我的破折号应用程序从我的烧瓶应用程序,当我去一个特定的网址/破折号。然而,我得到以下错误。TypeError:视图函数没有返回有效的响应。该函数要么返回无,要么结束时没有返回语句。' flaskapp.py dashapp。派克 如果我对我的flaskapp.py做以下更改, 我得到了以下错误,AttributeError:“非类型”对象没有属性“遍历”

  • 我试图上传一个图像约1.62MB到终端写使用flask.request.files对象总是空的。我检查了以下问题,但没有运气: 烧瓶request.files是空的 https://github.com/requests/requests/issues/2505 如何在烧瓶中使用ajax调用上传文件 这是我的服务器: 我的客户: 在我看来,一切都很干净,我不知道哪里出了问题。请求对象中的“文件”属