在这个易于跟随的教程中,你将学习如何使用分布式追踪来监控你的 Python 应用程序。
你将学到什么:✨
-
如何在 Python 中构建微服务 🐍。
-
为微服务设置 Docker 容器 📦。
-
配置 Kubernetes 以管理微服务。
-
集成追踪后端以可视化追踪信息 🕵️♂️。
准备好提升你的 Python 应用程序监控技能了吗? 🔥
设置说明
🚨 在本博客的这一部分,我们将构建一个示例 Python 微服务应用程序。如果你已经有一个应用程序并且在跟随教程,可以跳过这部分。
创建你的应用程序的初始文件夹结构,如下所示。 👇
mkdir python-microservices && cd python-microservices mkdir src && cd src mkdir microservice1 microservice2
设置服务器 🖥️
为了演示,我将创建两个相互通信的微服务,最终我们可以用它来可视化分布式追踪。
构建和 Docker 化微服务 1
在 /microservice1
目录下,创建一个新的 Python 虚拟环境,安装必要的依赖项,并初始化一个 Flask 应用程序。
🚨 我假设你是在 Unix 系统上进行操作。如果你是在 Windows 系统上,一些命令会有所不同。
cd microservice1 python -m venv .venv source .venv/bin/activate
💡 如果你使用的是 fish shell,请运行以下命令来激活虚拟环境。
source .venv/bin/activate.fish
安装所需的依赖项:
pip install Flask requests
获取已安装的依赖项列表,并将其保存到 requirements.txt
文件中,以便我们稍后在容器中安装这些依赖项。
pip freeze > requirements.txt
创建一个名为 app.py
的新文件,并添加以下代码:
# 👇 src/microservice1/app.py import socket import requests from flask import Flask, jsonify, render_template app = Flask(__name__) def user_os_details(): hostname = socket.gethostname() hostip = socket.gethostbyname(hostname) return hostname, hostip @app.route("/") def index(): return "<p>Welcome to Flask microservice 1</p>" @app.route("/health") def health(): return jsonify(status="Microservice 1 Running...") @app.route("/get-users") def get_users(): response = requests.get("http://microservice2:5001/get-gh-users") return render_template("index.html", users=response.json()) @app.route("/os-details") def details(): host_name, host_ip = user_os_details() return jsonify(hostname=host_name, hostip=host_ip) if __name__ == "__main__": app.run("0.0.0.0", 5000)
💡 如果你注意到了,我们从
http://microservice2:5001/get-gh-users
请求数据。你可能会问,这个 microservice2 是什么?实际上,我们可以在 Docker 的同一网络中使用服务名称作为主机名。我们稍后会在完成编写和 Docker 化这个微服务后来构建这个服务。
如你所见,这是一个非常简单的 Flask 应用程序,包含几个端点。user_os_details()
函数用于获取机器的 主机名 和 IP 地址。
@app.route("/")
和 @app.route("/health")
装饰器定义了 Flask 应用程序的根路径和