释放观测云超能力:在Azure App Service中实现无侵入式应用性能监测
一、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 查看观测云
