Skywalking常用插件


配置覆蓋

可以使用Skywalking提供的配置覆蓋功能通過啟動命令動態指定服務名,這樣agent只需要部署一份即可。Skywalking支持的幾種配置方式:
系統配置(System properties)
使用 skywalking. + 配置文件中的配置名作為系統配置項來進行覆蓋.為什么需要添加前綴 ?agent的系統配置和環境與目標應用共享,所以加上前綴可以有效的避免沖突。
通過 如下進行 agent.service_name 的覆蓋

-Dskywalking.agent.service_name=skywalking_mysql

探針配置( Agent options)
Add the properties after the agent path in JVM arguments.

-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]

案例
通過 如下進行 agent.service_name 的覆蓋

-javaagent:/path/to/skywalking-agent.jar=agent.service_name=skywalking_mysql

特殊字符
如果配置中包含分隔符( , 或者 = ) , 就必須使用引號包裹起來

-javaagent:/path/to/skywalking-agent.jar=agent.ignore_suffix='.jpg,.jpeg'

系統環境變量( System environment variables)
案例
由於agent.service_name配置項如下所示:

# The service name in UI
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

可以在環境變量中設置 SW_AGENT_NAME的值來指定服務名。
覆蓋優先級
探針配置 > 系統配置 >系統環境變量 > 配置文件中的值

所以我們的啟動命令可以修改為:

java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_mysql/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_mysql -jar skywalking_mysql.jar &

或者

java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_mysql/skywalking-agent.jar=agent.service_name=skywalking_mysql -jarskywalking_mysql.jar &

獲取追蹤ID

Skywalking提供我們Trace工具包,用於在追蹤鏈路時進行信息的打印或者獲取對應的追蹤ID。我們使用Spring Boot編寫一個案例,也可以直接使用資源下的 skywalking_plugins.jar 進行測試。
pom:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--skywalking trace工具包-->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>${skywalking.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

PluginController:

@RestController
public class PluginController {

    //獲取trace id,可以在RocketBot追蹤中進行查詢
    @GetMapping("/getTraceId")
    public String getTraceId(){
        //使當前鏈路報錯,並且提示報錯信息
        ActiveSpan.error(new RuntimeException("Test-Error-Throwable"));
        //打印info信息
        ActiveSpan.info("Test-Info-Msg");
        //打印debug信息
        ActiveSpan.debug("Test-debug-Msg");
        return TraceContext.traceId();
    }
}

使用 TraceContext.traceId()可以打印出當前追蹤的ID,方便在RocketBot中進行搜索。
ActiveSpan提供了三個方法進行信息的打印:
error方法會將本次調用變為失敗狀態,同時可以打印對應的堆棧信息和錯誤提示。
info方法打印info級別的信息。
debug方法打印debug級別的信息。
部署方式
1、將 skywalking_plugins.jar 上傳至 /usr/local/skywalking 目錄下。
2、啟動skywalking_plugins應用,等待啟動成功。

[root@middleware skywalking-jar]# java -javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dskywalking.trace.ignore_path=/exclude -Dserver.port=8087 -jar skywalking_plugins.jar  &
[5] 82425
[4]   已殺死               java -javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dskywalking.trace.ignore_path=/exclude -Dserver.port=8087 -jar skywalking_plugins.jar
[root@middleware skywalking-jar]# DEBUG 2020-11-25 10:32:10:952 main AgentPackagePath : The beacon class location is jar:file:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class.
INFO 2020-11-25 10:32:10:956 main SnifferConfigInitializer : Config file found in /root/apache-skywalking-apm-bin/agent/config/agent.config.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v2.1.10.RELEASE)

4 、調用接口,接口地址為: http://192.168.1.108:8088/getTraceId
5、此時如果頁面顯示

image-20201125094643689

可以搜索到對應的追蹤記錄,但是顯示調用是失敗的,這是因為使用了 ActiveSpan.error方法。點開追
蹤的詳細信息:

image-20201125105012468

異常的信息包含了以下幾個部分:
1.事件類型為error
2.調用方法時傳遞的異常類型RuntimeException
3.調用方法時傳遞的異常信息Test-Error-Throwable
4.異常堆棧
通過上述內容,我們可以根據業務來定制調用異常時的詳細信息。

image-20201125105103278

除了異常信息之外,還有 info信息和debug信息也都會被打印。

過濾指定的端點

在開發過程中,有一些端點(接口)並不需要去進行監控,比如Swagger相關的端點。這個時候我們就可以使用Skywalking提供的過濾插件來進行過濾。在skywalking_plugins中編寫兩個接口進行測試:

@RestController
public class FilterController {
    //此接口可以被追蹤
    @GetMapping("/include")
    public String include(){
        return "include";
    }

    //此接口不可被追蹤
    @GetMapping("/exclude")
    public String exclude(){
        return "exclude";
    }
}

部署方式
1、將 skywalking_plugins.jar 上傳至 /usr/local/skywalking 目錄下。
2、將agent中的 /agent/optional -plugins/apm-trace-ignore-plugin-6.4.0.jar 插件拷貝到plugins目錄中。

3、啟動skywalking_plugins應用,等待啟動成功。

[root@middleware skywalking-jar]# java -javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dskywalking.trace.ignore_path=/exclude -Dserver.port=8087 -jar skywalking_plugins.jar  &

exclude 接口已經被過濾,只有include接口能被看到。

image-20201125103407288


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM