释放观测云超能力:在Azure App Service中实现无侵入式应用性能监测
本文介绍如何通过观测云在 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 查看观测云

Get a tailored plan
Contact us
Join the community
Scan with WeChat
to join the community
to join the community
Try Guance
Start online and pay only for what you use.
Get startedChoose a Guance plan