Skywalking apm-trace-ignore-plugin插件環(huán)境變量不生效解決辦法

2023年12月13日20:30:56 發(fā)表評(píng)論 3,706 ℃

Skywalking的這個(gè)插件apm-trace-ignore-plugin不知道為什么要設(shè)置為可選插件,我感覺(jué)基本上都會(huì)屏蔽一些沒(méi)用的接口,避讓監(jiān)控檢查之類的。

以前在8.x版本的時(shí)候直接配置環(huán)境變量skywalking.trace.ignore_path就可以了。

最近skywalking換到9.7版本以后,配置這個(gè)插件怎么都不生效。

先看看官方9.1給的配置方法:

有兩種方法可以配置忽略模式。通過(guò)系統(tǒng)環(huán)境進(jìn)行設(shè)置具有更高的優(yōu)先級(jí)。

1.通過(guò)系統(tǒng)環(huán)境變量設(shè)置,需要將skywalking.trace.ignore_path添加到系統(tǒng)變量中,該值為需要忽略的路徑,多個(gè)路徑之間應(yīng)分隔。

2.在/agent/config/dir中創(chuàng)建名為apm-trace-ignore-plugin.config的文件,并添加規(guī)則以篩選跟蹤

trace.ignore_path=/your/path/1/**,/your/path/2/**

方案一也是支持skywalking.trace.ignore_path環(huán)境變量。

我的配置是:

skywalking.trace.ignore_path: /actuator/health,/actuator/**, /actuator/*

怎么測(cè)試都不生效。

Skywalking apm-trace-ignore-plugin插件環(huán)境變量不生效解決辦法

看了skywalking的日志發(fā)現(xiàn)有個(gè)ignore的報(bào)錯(cuò)

ERROR 2023-12-13 11:23:25.571 main IgnoreConfigInitializer : Failed to read the config file, skywalking is going to run in default config.
org.apache.skywalking.apm.agent.core.conf.ConfigNotFoundException: Fail to load ignore config file.
        at org.apache.skywalking.apm.plugin.trace.ignore.conf.IgnoreConfigInitializer.loadConfigFromAgentFolder(IgnoreConfigInitializer.java:99)
        at org.apache.skywalking.apm.plugin.trace.ignore.conf.IgnoreConfigInitializer.initialize(IgnoreConfigInitializer.java:50)
        at org.apache.skywalking.apm.plugin.trace.ignore.TraceIgnoreExtendService.boot(TraceIgnoreExtendService.java:50)
        at org.apache.skywalking.apm.agent.core.boot.ServiceManager.lambda$startup$2(ServiceManager.java:115)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:483)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
        at org.apache.skywalking.apm.agent.core.boot.ServiceManager.startup(ServiceManager.java:113)
        at org.apache.skywalking.apm.agent.core.boot.ServiceManager.boot(ServiceManager.java:45)
        at org.apache.skywalking.apm.agent.SkyWalkingAgent.premain(SkyWalkingAgent.java:142)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
        at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)

我猜測(cè)應(yīng)該是apm-trace-ignore-plugin插件新版本沒(méi)有默認(rèn)的配置文件導(dǎo)致。

于是我手動(dòng)創(chuàng)建了一個(gè)/skywalking/agent/config/apm-trace-ignore-plugin.config

trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/test}

然后再配置

SW_AGENT_TRACE_IGNORE_PATH: /actuator/health

測(cè)試發(fā)現(xiàn)還是不生效,但是日志沒(méi)有報(bào)錯(cuò)了。

最后發(fā)現(xiàn)需要配置methods方法:

SW_AGENT_TRACE_IGNORE_PATH: GET:/actuator/health

Skywalking apm-trace-ignore-plugin插件環(huán)境變量不生效解決辦法

另外新版本中skywalking.trace.ignore_path環(huán)境變量也不行了。

在k8s中可以選項(xiàng)在初始化鏡像的時(shí)候創(chuàng)建一個(gè)默認(rèn)配置文件,也可以使用ConfigMap的方式掛載到POD里面。

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: