Python探针简介

Python探针是天眼FAST提供的一款基于Skywalking与Newrelic的探针产品,具有高性能、无侵入、易部署的特点。目前提供以下特性:

  • 内置HTTP、数据库、消息队列、缓存等日志采集。
  • 支持自定义日志上报。

目前python探针支持的python版本有:
3.5+
3.6+
3.7+
支持的框架及版本有:
tornado 5.1.1
hug > 2.2.0

需注意,若使用falcon作为底层插件,则需要falcon版本大于1.0.0

探针的安装

准备工作

安装探针

1. 使用pip下载安装最新版python探针扩展

pip install fast-tracker

2. 添加探针配置文件

新建探针配置文件FastTracker.json,内容类似:

    {
      "Enable": true,                                              // 开启探针
      "Debug": false,                                              // 开启探针日志
      "ProductCode": "fast-test",                            // 产品编码
      "AppCode": "tracker-test-pytho",                      // 应用编码
      "EnvCode": "test",                                          // 环境编码
      "ServiceName": "tarodo_test1",                             // 服务名称
      "SocketPath": "udp://127.0.0.1:5140",              // 收集器地址,
      "ReportMode": 1,                                          // Forward上报模式
      // 设置默认租户编码和用户编码 
      "TenantCode": {默认租户编码},                              // 租户编码
      "UserCode": {默认用户编码},                                // 用户编码
      // 如需要,可以设置动态获取租户编码、用户编码的方式,如下: 
      "TenantCodeReader": {"ReaderType": "RequestHeader", "ReaderKey": "tenant_code"},
      "UserCodeReader": {"ReaderType": "QueryString", "ReaderKey": "user_code"},  
      // 如需要,设置上报的组件
    "Event": {"Components": {"SqlClient": true, "HttpClient": true,"Logging":true,"CustomEvent":true,"Datastore":true}},

    }

修改其中产品编码、应用编码、收集器地址等,使用从天眼获取的信息。详细信息参考:服务端探针配置
若不清楚,可咨询相关对接人员。

3. 启动python服务

FastTracker_ConfigPath=FastTracker.json fast-admin run-program $YOUR_COMMAND_OPTIONS


自定义日志

应用通过调用探针API可以上报两类自定义日志:一类是组件(Component)字段值为Logging的自定义Logging日志;一类是组件(Component)值支持应用设置的自定义组件日志。

上报自定义Logging日志

上报Logging类日志通过调用FastTracker类的实例方法实现,上报日志的component字段的值为Logging,上报的自定义日志内容被放到日志的Logging字段。Python探针目前提供5个方法分别对应五个级别的自定义日志:

  1. debug
  2. info
  3. warnning(warn别名)
  4. error
  5. critical

    使用方式:

    from fast_tracker.fast_tracker import FastTracker
    ft = FastTracker()
    ft.debug("debug信息")
    ft.info("info信息")
    ft.warning("警告信息");
    ft.error("错误信息");
    ft.critical("致命信息");
    

    上报的日志结构为:

    {
         ...
         "t":2,                                 -- span_type:2 -本地调用
         "y":0,                                 -- span_layer:0 -LOCAL
         "c":"Log"                              -- component:Log
         "o":"Logging"                          -- operation:Logging
         "l":[                                  -- logs
             {
                 "Timestamp":"UTC毫秒时间戳",
                 "Data":{
                     "event":"Logging",
                     "error_kind": "log level",
                     "message":"日志信息",
                 }
             ]
    
     }
    

    自定义组件

    上报日志自定义组件日志通过调用FastTracker类的FastTracker().begin_span()开启自定义组件日志上报,提供的方法和伪代码如下:

    ft = FastTracker()
    log = ft.begin_span("CustomEvent_operation")
    log.set_component('UserDefinded')
    log.add_tag("自定义info日志1", "wererere")
    log.add_tag("chinese string","上来看技术上fsdfsdfsdfsSDK发生的")
    log.add_log("自定义info日志1")
    log.error_occurred(Exception("错误信息"))
    log.end_span()
    

    注意: begin_span 和 end_span必须同时出现,一一对应,否则会导致上报日志异常。

环境变量设置

用户可以通过自定义配置覆盖探针默认的配置项,自定义配置文件的字段和默认配置的字段保持一致,为方便用户部署,同时提供以环境变量的方式来配置探针。为了避免变量名称冲突探针配置项统一以FastTracker开头。
示例:

FastTracker_Enable=true
FastTracker_TenantCodeReader_ReaderType=RequestHeader
...

或者:

FastTracker_Enable=true FastTracker_ConfigPath=FastTracker.json fast-admin run-program $YOUR_COMMAND_OPTIONS

动态调用API接口设置配置信息

还可以通过调用API接口进行配置设置:

from fast_tracker.fast_tracker import FastTracker
ft = FastTracker()
ft.tenant_code = "租户code信息" # 设置租户信息
ft.tenant_code                # 获取租户信息

提供的API接口有:

  • tenant_code
  • env_code
  • user_code
  • product_code
  • app_code
  • service_name
  • event
  • begin_span()
  • set_component()
  • add_tag()
  • add_log()
  • error_occurred()
  • end_span()
  • debug()
  • info()
  • warning()
  • warn() # warning别名
  • error()
  • critical()
  • get_config() # 获取所有配置信息,注意:此为静态方法

附录1:目前支持采集的组件列表

通信类

  • HTTP

    数据库

  • MySQL

    存储类

  • redis

  • mongodb
  • kafka # 仅支持 kafka-python 2.0.2版本

results matching ""

    No results matching ""