通过OpenTelemetry上报Python-flask应用数据阿里云
参考文档
https://help.aliyun.com/document_detail/611711.html?spm=a2c4g.90499.0.0.34a056ddTu2WWq
先按照 方法一:手动埋点上报Python应用数据 步骤测试上报是否正常。
flas 上报
在 手动埋点上报Python应用数据 的基础上,上报flask应用的数据,因为上边的文档只有django的,所以在这里记录一下。
安装依赖
-
pip install opentelemetry-api
-
pip install opentelemetry-sdk
-
pip install opentelemetry-exporter-otlp
-
pip install opentelemetry-instrumentation-flask
-
pip install opentelemetry-instrumentation-requests
flask 中使用opentelemetry上报
-
import flask
-
import requests
-
from opentelemetry import trace
-
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter as OTLPSpanGrpcExporter
-
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as OTLPSpanHttpExporter
-
from opentelemetry.instrumentation.flask import FlaskInstrumentor
-
from opentelemetry.instrumentation.requests import RequestsInstrumentor
-
from opentelemetry.sdk.resources import SERVICE_NAME, Resource, HOST_NAME
-
from opentelemetry.sdk.trace import TracerProvider
-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
-
-
-
def initTracer():
-
resource = Resource(attributes={
-
SERVICE_NAME: "aaaaaaaa",
-
HOST_NAME: "flasksss"
-
})
-
# 使用GRPC协议上报
-
span_processor = BatchSpanProcessor(OTLPSpanGrpcExporter(
-
endpoint="http://tracing-analysis-dc-hz.aliyuncs.com:8090",
-
headers=("Authentication=emyaq87zvp@84d4c400bdb6eed_emyaq87zvp@53df7ad2afe8301")
-
))
-
# 使用HTTP协议上报
-
# span_processor = BatchSpanProcessor(OTLPSpanHttpExporter(
-
# endpoint="<endpoint>",
-
# ))
-
trace_provider = TracerProvider(resource=resource, active_span_processor=span_processor)
-
trace.set_tracer_provider(trace_provider)
-
-
-
# flask init
-
app = flask.Flask(__name__)
-
-
# instrumentation init
-
initTracer()
-
FlaskInstrumentor().instrument_app(app)
-
RequestsInstrumentor().instrument()
-
-
-
@app.route("/")
-
def hello():
-
tracer = trace.get_tracer(__name__)
-
# 上报requests请求
-
with tracer.start_as_current_span("request_server"):
-
requests.get("http://www.taobao.com")
-
print(11111111111)
-
return "hello"
-
-
-
@app.route("/acb")
-
def aabc():
-
return 'abc'
-
-
-
app.run(debug=True, port=5001, host='0.0.0.0')
代码解释
- initTrace函数:初始化上报功能,参数意义参见 方法一:手动埋点上报Python应用数据
效果展示
遇到问题解决:
出现这个问题好像是用GRPC协议上报的时候rpc出问题了,改成用HTTP协议上报上报就可以了。
不同的上报协议endpoint的值不一样哦,要填对。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggfbeg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13