日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過Jaeger上報(bào)Python應(yīng)用數(shù)據(jù)

通過Jaeger為應(yīng)用埋點(diǎn)并上報(bào)鏈路數(shù)據(jù)至可觀測鏈路 OpenTelemetry 版后,可觀測鏈路 OpenTelemetry 版即可開始監(jiān)控應(yīng)用,您可以查看應(yīng)用拓?fù)?、調(diào)用鏈路、異常事務(wù)、慢事務(wù)和SQL分析等一系列監(jiān)控?cái)?shù)據(jù)。本文介紹如何使用Jaeger為Python應(yīng)用埋點(diǎn)并上報(bào)數(shù)據(jù)。

重要

為獲得更豐富的功能、更先進(jìn)的鏈路追蹤能力,以及最佳使用體驗(yàn),建議您使用OpenTelemetry協(xié)議將應(yīng)用接入可觀測鏈路 OpenTelemetry 版

我們?yōu)槟峁┝嗽敿?xì)的OpenTelemetry接入指南和最佳實(shí)踐,幫助您快速上手可觀測鏈路 OpenTelemetry 版。更多信息,請(qǐng)參見接入應(yīng)用。

前提條件

獲取接入點(diǎn)信息

  1. 登錄ARMS控制臺(tái),在左側(cè)導(dǎo)航欄單擊接入中心。

  2. 服務(wù)端應(yīng)用區(qū)域單擊Jaeger卡片。

  3. 在彈出的Jaeger面板中選擇數(shù)據(jù)需要上報(bào)的地域。

    說明

    初次接入的地域?qū)?huì)自動(dòng)進(jìn)行資源初始化。

  4. 選擇連接方式上報(bào)方式,然后復(fù)制接入點(diǎn)信息。

    • 連接方式:若您的服務(wù)部署在阿里云上,且所屬地域與選擇的接入地域一致,推薦使用阿里云內(nèi)網(wǎng)方式,否則選擇公網(wǎng)方式。

    • 上報(bào)方式:根據(jù)客戶端支持的協(xié)議類型選擇HTTP或gRPC協(xié)議上報(bào)數(shù)據(jù)。

    image.png

背景信息

數(shù)據(jù)是如何上報(bào)的?

  • 不通過Jaeger Agent而直接上報(bào)數(shù)據(jù)的原理如下圖所示。

    image
  • 通過Jaeger Agent上報(bào)數(shù)據(jù)的原理如下圖所示。

    image

注意事項(xiàng)

  • 針對(duì)Python語言,最新v1.25版本的Jaeger僅支持通過Jaeger Agent而不支持直接使用HTTP協(xié)議上報(bào)調(diào)用鏈路數(shù)據(jù)。更多信息,請(qǐng)參見Jaeger官方文檔

  • 針對(duì)Python語言,最新v1.25版本的Jaeger僅支持通過UDP協(xié)議從Jaeger Client端上報(bào)至Jaeger Agent端。由于UDP協(xié)議并不保證通信的可靠性,因此為了保證調(diào)用鏈路數(shù)據(jù)的可靠性,一般情況下需要將Jaeger Client端和Jaeger Agent端運(yùn)行在同一個(gè)主機(jī)內(nèi)。

步驟一:搭建環(huán)境

本文演示示例中對(duì)Docker、Jaeger Agent、Jaeger Client和Python的版本要求如下。

Docker和Jaeger Agent環(huán)境

Docker版本:20.10.7

Jaeger Agent版本:1.25

  1. 在DockerHub中執(zhí)行以下命令拉取v1.25版本的Jaeger Agent鏡像。

    docker pull jaegertracing/jaeger-agent:1.25
  2. 執(zhí)行以下命令運(yùn)行v1.25版本的Jaeger Agent。

    docker run -d --name jaeger-agent  -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778/tcp jaegertracing/jaeger-agent:1.25 --reporter.type=grpc --reporter.grpc.host-port=<endpoint>(填寫對(duì)應(yīng)的接入點(diǎn)信息) --agent.tags=<auth>(填寫對(duì)應(yīng)的認(rèn)證信息)
    說明

    請(qǐng)將<endpoint><auth>替換成控制臺(tái)集群配置頁面相應(yīng)客戶端地域的接入點(diǎn)信息。獲取接入點(diǎn)信息的方法,請(qǐng)參見前提條件。

Python和Jaeger Client環(huán)境

Python版本:3.8.5

Jaeger Client版本:4.6.0

在Python中安裝以下Python包配置Jaeger Client環(huán)境。

certifi==2021.5.30
charset-normalizer==2.0.4
idna==3.2
jaeger-client==4.6.0
opentracing==2.4.0
requests==2.26.0
six==1.16.0
threadloop==1.0.2
thrift==0.13.0
tornado==6.1
urllib3==1.26.6

步驟二:創(chuàng)建Tracer對(duì)象

  1. 創(chuàng)建包含如下內(nèi)容的Python文件。

    通過以下代碼創(chuàng)建Tracer對(duì)象,并通過Tracer對(duì)象創(chuàng)建Span來上報(bào)數(shù)據(jù)至可觀測鏈路 OpenTelemetry 版后臺(tái)。

    import logging
    import time
    from jaeger_client import Config
    
    
    def construct_span(tracer):
        with tracer.start_span('AliyunTestSpan') as span:
            span.log_kv({'event': 'test message', 'life': 42})
            print("tracer.tages: ", tracer.tags)
            with tracer.start_span('AliyunTestChildSpan', child_of=span) as child_span:
                span.log_kv({'event': 'down below'})
            return span
    
    
    if __name__ == "__main__":
        log_level = logging.DEBUG
        logging.getLogger('').handlers = []
        logging.basicConfig(format='%(asctime)s %(message)s', level=log_level)
    
        config = Config(
            config={ # usually read from some yaml config
                'sampler': {
                    'type': 'const',
                    'param': 1,
                },
                'local_agent': {
                    # 注意這里是指定了JaegerAgent的host和port。
                    # 根據(jù)官方建議為了保證數(shù)據(jù)可靠性,JaegerClient和JaegerAgent運(yùn)行在同一臺(tái)主機(jī)內(nèi),因此reporting_host填寫為127.0.0.1。
                    'reporting_host': '127.0.0.1',
                    'reporting_port': 6831,
                },
                'logging': True,
            },
            #這里填寫應(yīng)用名稱
            service_name="mytest3",
            validate=True
        )
    
        # this call also sets opentracing.tracer
        tracer = config.initialize_tracer()
    
        span = construct_span(tracer)
    
        time.sleep(2)   # yield to IOLoop to flush the spans - https://github.com/jaegertracing/jaeger-client-python/issues/50
        tracer.close()  # flush any buffered spans
  2. 執(zhí)行新建的Python文件。

在控制臺(tái)查看數(shù)據(jù)

  1. 登錄ARMS控制臺(tái),在左側(cè)導(dǎo)航欄選擇應(yīng)用監(jiān)控 > 應(yīng)用列表

  2. 應(yīng)用列表頁面頂部選擇目標(biāo)地域,然后單擊目標(biāo)應(yīng)用名稱。

    說明

    語言列顯示image圖標(biāo)的應(yīng)用為接入應(yīng)用監(jiān)控的應(yīng)用,顯示-圖標(biāo)的應(yīng)用為接入可觀測鏈路 OpenTelemetry 版的應(yīng)用。

  3. 應(yīng)用總覽頁面,您可以查看該應(yīng)用的性能關(guān)鍵指標(biāo)和拓?fù)鋱D詳情。

    圖1.應(yīng)用總覽界面

  4. 在左側(cè)導(dǎo)航欄單擊應(yīng)用詳情

    應(yīng)用詳情頁面,您可以查看該應(yīng)用的概覽信息。圖2.應(yīng)用詳情-概覽界面

  5. 應(yīng)用詳情頁面單擊調(diào)用鏈路頁簽。

    調(diào)用鏈路頁簽,您可以查看該應(yīng)用的調(diào)用鏈路。圖3.應(yīng)用詳情-調(diào)用鏈路界面

參考信息

此處提供了Jaeger常見的使用方法,更多信息,請(qǐng)參見Jaeger官方文檔

  • 創(chuàng)建Trace。

    from jaeger_client import Config
    
    def init_jaeger_tracer(service_name='your-app-name'):
        config = Config(config={}, service_name=service_name)
        return config.initialize_tracer()
  • 創(chuàng)建和結(jié)束Span。

    # 開始無Parent的Span。
    tracer.start_span('TestSpan') 
    # 開始有Parent的Span。
    tracer.start_span('ChildSpan', child_of=span)
    # 結(jié)束Span。
     span.finish()
  • 透傳SpanContext。

    # 將spanContext透傳到下一個(gè)Span中(序列化)。
    tracer.inject(
            span_context=span.context, format=Format.TEXT_MAP, carrier=carrier
        )
    # 解析透傳過來的spanContxt(反序列化)。
    span_ctx = tracer.extract(format=Format.TEXT_MAP, carrier={})