未验证 提交 3f2fb8db 编写于 作者: J Jared Tan 提交者: GitHub

Merge pull request #1981 from a198720/len

add system env for trace ignore plugin
......@@ -16,7 +16,8 @@
~
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
......@@ -30,11 +31,15 @@
<name>apm-test-tools</name>
<url>http://maven.apache.org</url>
<properties>
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>${junit.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -20,4 +20,4 @@
# /path/* Match any number of characters
# /path/** Match any number of characters and support multilevel directories
# Multiple path comma separation, like trace.ignore_path=/eureka/**,/consul/**
#trace.ignore_path=/eureka/**
#trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/eureka/**}
......@@ -16,7 +16,8 @@
~
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>optional-plugins</artifactId>
<groupId>org.apache.skywalking</groupId>
......@@ -29,4 +30,17 @@
<name>apm-trace-ignore-plugin</name>
<url>http://maven.apache.org</url>
<properties>
<ststem-rules.version>1.18.0</ststem-rules.version>
</properties>
<dependencies>
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>${ststem-rules.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
......@@ -18,25 +18,15 @@
package org.apache.skywalking.apm.plugin.trace.ignore.conf;
import org.apache.skywalking.apm.agent.core.boot.AgentPackageNotFoundException;
import org.apache.skywalking.apm.agent.core.boot.AgentPackagePath;
import java.io.*;
import java.util.*;
import org.apache.skywalking.apm.agent.core.boot.*;
import org.apache.skywalking.apm.agent.core.conf.ConfigNotFoundException;
import org.apache.skywalking.apm.agent.core.logging.api.ILog;
import org.apache.skywalking.apm.agent.core.logging.api.LogManager;
import org.apache.skywalking.apm.util.ConfigInitializer;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import org.apache.skywalking.apm.agent.core.logging.api.*;
import org.apache.skywalking.apm.util.*;
/**
*
* @author liujc [liujunc1993@163.com]
*
*/
public class IgnoreConfigInitializer {
private static final ILog LOGGER = LogManager.getLogger(IgnoreConfigInitializer.class);
......@@ -44,7 +34,8 @@ public class IgnoreConfigInitializer {
private static String ENV_KEY_PREFIX = "skywalking.";
/**
* Try to locate `apm-trace-ignore-plugin.config`, which should be in the /optional-plugins/apm-trace-ignore-plugin/ dictionary of agent package.
* Try to locate `apm-trace-ignore-plugin.config`, which should be in the /optional-plugins/apm-trace-ignore-plugin/
* dictionary of agent package.
* <p>
* Also try to override the config by system.env and system.properties. All the keys in these two places should
* start with {@link #ENV_KEY_PREFIX}. e.g. in env `skywalking.trace.ignore_path=your_path` to override
......@@ -57,19 +48,25 @@ public class IgnoreConfigInitializer {
configFileStream = loadConfigFromAgentFolder();
Properties properties = new Properties();
properties.load(configFileStream);
PropertyPlaceholderHelper helper = PropertyPlaceholderHelper.INSTANCE;
for (String key : properties.stringPropertyNames()) {
String value = (String)properties.get(key);
//replace the key's value. properties.replace(key,value) in jdk8+
properties.put(key, PropertyPlaceholderHelper.INSTANCE.replacePlaceholders(value, properties));
}
ConfigInitializer.initialize(properties, IgnoreConfig.class);
} catch (Exception e) {
LOGGER.error(e, "Failed to read the config file, skywalking is going to run in default config.");
}
try {
overrideConfigBySystemEnv();
overrideConfigBySystemProp();
} catch (Exception e) {
LOGGER.error(e, "Failed to read the system env.");
}
}
private static void overrideConfigBySystemEnv() throws IllegalAccessException {
private static void overrideConfigBySystemProp() throws IllegalAccessException {
Properties properties = new Properties();
Properties systemProperties = System.getProperties();
Iterator<Map.Entry<Object, Object>> entryIterator = systemProperties.entrySet().iterator();
......@@ -86,7 +83,6 @@ public class IgnoreConfigInitializer {
}
}
/**
* Load the config file, where the agent jar is.
*
......
......@@ -18,22 +18,26 @@
package org.apache.skywalking.apm.plugin.trace.ignore;
import java.util.Properties;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.context.AbstractTracerContext;
import org.apache.skywalking.apm.agent.core.context.ContextManagerExtendService;
import org.apache.skywalking.apm.agent.core.context.IgnoredTracerContext;
import org.apache.skywalking.apm.agent.core.context.TracingContext;
import org.apache.skywalking.apm.agent.core.context.*;
import org.apache.skywalking.apm.agent.test.tools.AgentServiceRule;
import org.apache.skywalking.apm.plugin.trace.ignore.conf.IgnoreConfig;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.apache.skywalking.apm.util.*;
import org.junit.*;
import org.junit.contrib.java.lang.system.EnvironmentVariables;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
/**
* @author liujc [liujunc1993@163.com]
*/
public class TraceIgnoreTest {
@Rule
public final EnvironmentVariables environmentVariables = new EnvironmentVariables().set("SW_AGENT_TRACE_IGNORE_PATH", "path_test");
@Rule
public AgentServiceRule serviceRule = new AgentServiceRule();
......@@ -54,4 +58,12 @@ public class TraceIgnoreTest {
Assert.assertEquals(TracingContext.class, traceContext.getClass());
}
@Test
public void testTraceIgnoreConfigOverridingFromSystemEnv() throws IllegalAccessException {
Properties properties = new Properties();
properties.put("trace.ignore_path", "${SW_AGENT_TRACE_IGNORE_PATH:/path/eureka/**}");
properties.put("trace.ignore_path", PropertyPlaceholderHelper.INSTANCE.replacePlaceholders((String)properties.get("trace.ignore_path"), properties));
ConfigInitializer.initialize(properties, IgnoreConfig.class);
assertThat(IgnoreConfig.Trace.IGNORE_PATH, is("path_test"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册