• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

通过OpenTelemetry上报Python-flask应用数据阿里云

武飞扬头像
Along20210921
帮助1

参考文档

https://help.aliyun.com/document_detail/611711.html?spm=a2c4g.90499.0.0.34a056ddTu2WWq

先按照 方法一:手动埋点上报Python应用数据 步骤测试上报是否正常。

flas 上报

手动埋点上报Python应用数据 的基础上,上报flask应用的数据,因为上边的文档只有django的,所以在这里记录一下。

安装依赖

  1.  
    pip install opentelemetry-api
  2.  
    pip install opentelemetry-sdk
  3.  
    pip install opentelemetry-exporter-otlp
  4.  
    pip install opentelemetry-instrumentation-flask
  5.  
    pip install opentelemetry-instrumentation-requests

flask 中使用opentelemetry上报

  1.  
    import flask
  2.  
    import requests
  3.  
    from opentelemetry import trace
  4.  
    from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter as OTLPSpanGrpcExporter
  5.  
    from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as OTLPSpanHttpExporter
  6.  
    from opentelemetry.instrumentation.flask import FlaskInstrumentor
  7.  
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
  8.  
    from opentelemetry.sdk.resources import SERVICE_NAME, Resource, HOST_NAME
  9.  
    from opentelemetry.sdk.trace import TracerProvider
  10.  
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
  11.  
     
  12.  
     
  13.  
    def initTracer():
  14.  
    resource = Resource(attributes={
  15.  
    SERVICE_NAME: "aaaaaaaa",
  16.  
    HOST_NAME: "flasksss"
  17.  
    })
  18.  
    # 使用GRPC协议上报
  19.  
    span_processor = BatchSpanProcessor(OTLPSpanGrpcExporter(
  20.  
    endpoint="http://tracing-analysis-dc-hz.aliyuncs.com:8090",
  21.  
    headers=("Authentication=emyaq87zvp@84d4c400bdb6eed_emyaq87zvp@53df7ad2afe8301")
  22.  
    ))
  23.  
    # 使用HTTP协议上报
  24.  
    # span_processor = BatchSpanProcessor(OTLPSpanHttpExporter(
  25.  
    # endpoint="<endpoint>",
  26.  
    # ))
  27.  
    trace_provider = TracerProvider(resource=resource, active_span_processor=span_processor)
  28.  
    trace.set_tracer_provider(trace_provider)
  29.  
     
  30.  
     
  31.  
    # flask init
  32.  
    app = flask.Flask(__name__)
  33.  
     
  34.  
    # instrumentation init
  35.  
    initTracer()
  36.  
    FlaskInstrumentor().instrument_app(app)
  37.  
    RequestsInstrumentor().instrument()
  38.  
     
  39.  
     
  40.  
    @app.route("/")
  41.  
    def hello():
  42.  
    tracer = trace.get_tracer(__name__)
  43.  
    # 上报requests请求
  44.  
    with tracer.start_as_current_span("request_server"):
  45.  
    requests.get("http://www.taobao.com")
  46.  
    print(11111111111)
  47.  
    return "hello"
  48.  
     
  49.  
     
  50.  
    @app.route("/acb")
  51.  
    def aabc():
  52.  
    return 'abc'
  53.  
     
  54.  
     
  55.  
    app.run(debug=True, port=5001, host='0.0.0.0')
学新通

代码解释

  • initTrace函数:初始化上报功能,参数意义参见 方法一:手动埋点上报Python应用数据学新通

效果展示

学新通

学新通

遇到问题解决:

学新通
出现这个问题好像是用GRPC协议上报的时候rpc出问题了,改成用HTTP协议上报上报就可以了。

不同的上报协议endpoint的值不一样哦,要填对。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfbeg
系列文章
更多 icon
同类精品
更多 icon
继续加载