APM(三):监控Python服务链

作者:互联网

2026-03-20

AI教程

在上一篇文章中,我们使用Skywalking成功坚控了Python Flask单体服务。本文将构建BService来调用已有的AService,观察分布式场景下的坚控效果。

先启动好后端服务,包括Skywalking和Easysearch。启动完成后能通过Web UI访问Skywalking。

我们编写一个简单的BService服务程序,只要访问localhost:8082/b就会调用AService并返回相关信息。

from flask import Flaskimport requestsapp = Flask(__name__)SERVICE_A_URL = 'http://localhost:8081/a'@app.route('/b', methods=['GET'])def call_service_a():    response = requests.get(SERVICE_A_URL)    if response.status_code == 200:        return f"Hello, I'am Server B and {response.text} from Service A'    else:        return 'Error calling Service A'if __name__ == '__main__':    app.run(host='0.0.0.0',port=8082)

运行前,要安装好依赖。

pip3 install flaskpip3 install apache-skywalkingpip3 install requests

为了让服务能成功把相关信息发送到Skywalking后端,启动前我们还要设置两个环境变量告诉服务程序该往哪里发送信息。

export SW_AGENT_COLLECTOR_BACKEND_SERVICES=localhost:11800export SW_AGENT_NAME=BService-python

一切准备妥当后,运行我们的服务程序。

sw-python run python3 BService.py

程序启动后会8082端口。

我们通过浏览器访问下BService,它调用了AService。

在Skywalking的Web UI上查看服务的信息是否采集到。

服务调用频率、成功率、延时等。

通过对比直接调用AService和通过BService间接调用的坚控数据,可以清晰观察到服务间的调用关系和性能指标,验证了Skywalking在分布式系统中的追踪能力。

相关标签:

Skywalking PythonFlask 服务监控 WebUI 服务调用 调用链