释放观测云超能力:在Azure App Service中实现无侵入式应用性能监测

本文介绍如何通过观测云在 Azure App Service 中实现链路追踪数据的无侵入式采集与可视化分析。

最佳实践
banner.jpg

一、App Service

Azure App Service 是微软全托管的 PaaS 级应用托管平台,秒级弹性、自动补丁、内建 CI/CD,支持 Windows/Linux 双引擎与 .NET、Java、Node.js、Python、PHP 等多语言运行时,一键即可将 Web/API 部署到全球 60+ 区域,并自带负载均衡、自动扩缩、SSL 续期、蓝绿发布和企业级安全合规。

  • Azure App Service(Linux)
    • 不是可 SSH 控制的 VM , 是平台托管的 Linux Sandbox
    • 代码运行在 Oryx 自动生成的 Python 虚拟环境中(默认名:antenv
  • Python 包的正确安装路径:/home/site/wwwroot/antenv/

二、接入说明

  • 可以在 Azure App Service(Linux,代码模式,非容器)中稳定接入 DDTrace
  • 不需要自建主机 / VM
  • 不需要 Docker
  • DDTrace 可通过 Oryx build 正常安装到虚拟环境(antenv)
  • 链路数据可正常上报到观测云
  • 关键点:DDTrace 必须在 App Service 的 Python 虚拟环境中安装成功

三、最终可验证的最小代码

#执行
mkdir ~/appservice-demo
cd ~/appservice-demo


#创建代码
cat > app.py << 'EOF'
from flask import Flask

app = Flask(__name__)

@app.route("/ping")
def ping():
    return "pong"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)
EOF
#创建 requirements.txt
cat > requirements.txt << 'EOF'
flask
gunicorn
EOF
#确认
ls
cat app.py
cat requirements.txt
#打包
zip app.zip app.py requirements.txt

四、进行部署

4.1 部署应用

4.2 修改环境变量

如果应用没有拉起来,看看是不是 DDTrace 问题,有报错

有可能是没有重新 build 成功,可以通过 SCM_DO_BUILD_DURING_DEPLOYMENT 试试强制 build,然后看看 SCM_DO_BUILD_DURING_DEPLOYMENT 。

4.3 查看 Python 版本

4.4 启动、重启、查看应用状态、登录

4.5 找一台主机部署 DataKit

开启 DDTrace

cp /usr/local/datakit/conf.d/samples/ddtrace.conf.sample /usr/local/datakit/conf.d/ddtrace.conf
vim /usr/local/datakit/conf.d/datakit.conf

修改 DataKit 配置文件

[http_api]
  rum_origin_ip_header = "X-Forwarded-For"
  listen_socket = ""
  listen = "0.0.0.0:9529"
  disable_404page = false
  rum_app_id_white_list = []
  public_apis = ["/v1/write/tracing","/v1/write/metrics","/v1/write/logging"]
  
 #重启datakit
 datakit service -R

4.6 访问应用

https://sutt-xxxxxx.xxxxxx.azurewebsites.net/ping (按照实际域名地址来)

4.7 查看观测云

Get a tailored plan

Contact us

Join the community

Scan with WeChat
to join the community

Try Guance

Start online and pay only for what you use.

Get started

Choose a Guance plan

Code hosting