tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

通过 SkyWalking 协议接入 Python 应用

PDF
聚焦模式
字号
最后更新时间: 2025-03-04 22:02:22
本文将为您介绍如何使用 SkyWalking 协议上报 Python 应用数据。

前提条件

Python 使用 SkyWalking 可以实现自动埋点上报,需 Python 3.7及以上版本。
目前我们默认使用 grpc 进行上报。
当前支持自动埋点的组件详情请见 Python Agent 支持框架

操作步骤

步骤1:获取接入点和 Token

1. 登录 腾讯云可观测平台 控制台。
2. 在左侧菜单栏中选择应用性能监控,单击应用列表 > 接入应用
3. 在右侧弹出的页面,选择 Python 语言。
4. 接入 Python 应用页面,选择您所要接入的地域以及业务系统
5. 选择接入协议类型Skywalking
6. 上报方式选择您所想要的上报方式,获取您的接入点Token
说明:
内网上报:使用此上报方式,您的服务需运行在腾讯云 VPC。通过 VPC 直接联通,在避免外网通信的安全风险同时,可以节省上报流量开销。
外网上报:当您的服务部署在本地或非腾讯云 VPC 内,可以通过此方式上报数据。请注意外网通信存在安全风险,同时也会造成一定上报流量费用。

步骤2:安装 SkyWalking Agent 相关依赖

pip install apache-skywalking
# 当前demo使用库
pip install tornado

步骤3:修改启动代码

from skywalking import agent, config
config.init(
# 此处替换成步骤1中获得的接入点
agent_collector_backend_services='ap-guangzhou.apm.tencentcs.com:11800',
agent_name='python-skywalking', # 此处可自定义应用名称
agent_authentication="xxxxxxxxxxxxxx", # 此处替换成步骤1中获得的Token
agent_logging_level="INFO")
agent.start()

完整 demo 代码如下:

import time
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
def get(self):
print("call")
self.write("Hello, world")


class SleepHandler(tornado.web.RequestHandler):
def get(self):
print("call sleep")
time.sleep(0.1)
self.write("sleep 0.1s")


def make_app():
return tornado.web.Application([
(r"/test", MainHandler),
(r"/sleep", SleepHandler),
])


if __name__ == "__main__":
from skywalking import agent, config
config.init(agent_collector_backend_services='{接入点}', # 此处替换成步骤1中获得的接入点
agent_name='python-skywalking',
agent_authentication='{token}', # 此处替换成步骤1中获得的Token
agent_logging_level='INFO')
agent.start()
app = make_app()
port = 9008
app.listen(port)
print("server in %s" % port)
tornado.ioloop.IOLoop.current().start()


步骤4:多线程接入

此步骤可选。完成上面三个步骤,即可在 腾讯云可观测平台 > 应用性能监控 > 应用列表 中看到上报的数据。如果想要多线程接入,可以使用 tornado 包,这里启动需要注意,SkyWalking Agent 需要在进程 fork 之后启动。

引入 tornado 依赖

pip install tornado

完整 demo 代码如下:

import time
import os
import tornado.ioloop
import tornado.web
from tornado.httpserver import HTTPServer


class MainHandler(tornado.web.RequestHandler):
def get(self):
print("call")
self.write("Hello, world")


class Sleep01Handler(tornado.web.RequestHandler):
def get(self):
print("call sleep")
time.sleep(0.1)
self.write("sleep 0.1s")


def make_app():
return tornado.web.Application([
(r"/test", MainHandler),
(r"/sleep", Sleep01Handler),
])


if __name__ == "__main__":
from skywalking import agent, config
config.init(agent_collector_backend_services='{接入点}', # 此处替换成步骤1中获得的接入点
agent_name='python-skywalking-multi',
agent_authentication='{token}', # 此处替换成步骤1中获得的Token
agent_logging_level='INFO')
app = make_app()
port = 9009
num_processes = 4
sockets = tornado.netutil.bind_sockets(port)
tornado.process.fork_processes(num_processes)
# 多进程用法,应在fork进程之后启动
agent.start()
pid = os.getpid()
print("Current process ID:%d" % pid)
server = HTTPServer(app)
server.add_sockets(sockets)
print("server in %s" % port)
tornado.ioloop.IOLoop.current().start()



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈