BTrace詳細操作流程

需求場景

1.在不影響生產環境的前提下,獲取指定日誌,分析bug原因等

工作流程

1,下載BTrace包至生產環境

下載相應包:https://github.com/btraceio/btrace/releases

獲取fastjson包 :https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.54/fastjson-1.2.54.jar   //利於解析參數

2,編寫相應BTrace代碼

unsafe模式需要注意註解@BTrace(unsafe = true)

關於腳本擴展可參考:https://my.oschina.net/yaofull/blog/2967478

package com.sun.btrace.bin;

import com.sun.btrace.AnyType;

import com.sun.btrace.annotations.*;

import java.util.*;
import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.serializer.SerializeConfig; 
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; 
import static com.sun.btrace.BTraceUtils.*;

@BTrace(unsafe = true)

public class Test{

    //監控某一個方法的輸入輸出
    @OnMethod(clazz = "com.cetc.hubble.dataquality.controller.RuleController",method = "getAllRules",location=@Location(Kind.RETURN))

    public static void printMethodRunTime(@Self Object self,String keyword,@Return AnyType result){
        println( "keyword: " + keyword );
        println("result: " +JSON.toJSONString(result));
    }

}

3,修改BTrace腳本,配置環境變量

在bin目錄下btrace腳本開頭加入如下語句,注意修改爲正確的相應路徑

#Btrace解壓路徑

export BTRACE_HOME="/home/yao/Documents/btrace/btrace-bin-1.3.11.1" 

#java環境變量已配置可不用
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"

最終如下圖所示:

4,獲得指定進程的id

ps -aux|grep java

5,執行Btrace腳本

#注意用戶與相應進程用戶一致 

#fastjson.jar與腳本Test.java 放於bin目錄下

#unsafe模式才能使用fastjson 注意參數 -u

sudo -u root ./btrace -cp fastjson-1.2.54.jar -u 28589 Test.java > log

6,操作查看相應日誌

tail命令,如下:

參考文檔

https://github.com/btraceio/btrace

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章