Loading apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +4 −1 Original line number Diff line number Diff line Loading @@ -71,6 +71,8 @@ public class ComponentsDefine { public static final OfficialComponent GRPC = new OfficialComponent(23, "GRPC"); public static final OfficialComponent ELASTIC_JOB = new OfficialComponent(24, "ElasticJob"); private static ComponentsDefine instance = new ComponentsDefine(); private String[] components; Loading @@ -80,7 +82,7 @@ public class ComponentsDefine { } public ComponentsDefine() { components = new String[24]; components = new String[25]; addComponent(TOMCAT); addComponent(HTTPCLIENT); addComponent(DUBBO); Loading @@ -104,6 +106,7 @@ public class ComponentsDefine { addComponent(SHARDING_JDBC); addComponent(POSTGRESQL); addComponent(GRPC); addComponent(ELASTIC_JOB); } private void addComponent(OfficialComponent component) { Loading apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/pom.xml 0 → 100644 +54 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-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"> <parent> <artifactId>apm-sdk-plugin</artifactId> <groupId>org.skywalking</groupId> <version>3.3.0-2017</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>apm-elastic-job-2.x-plugin</artifactId> <packaging>jar</packaging> <name>elastic-job-2.x-plugin</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-common-core</artifactId> <version>[2.0.0,3.0.0)</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> </plugin> <plugin> <!-- 源码插件 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <!-- 发布时自动将源码同时发布的配置 --> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/src/main/java/org/skywalking/apm/plugin/esjob/JobExecutorInterceptor.java 0 → 100644 +65 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.plugin.esjob; import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.executor.ShardingContexts; import com.google.common.base.Strings; import java.lang.reflect.Method; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.skywalking.apm.network.trace.component.ComponentsDefine; /** * {@link JobExecutorInterceptor} enhances {@link com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor#process(ShardingContext)} * ,creating a local span that records job execution. * * @author gaohongtao */ public class JobExecutorInterceptor implements InstanceMethodsAroundInterceptor { @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, MethodInterceptResult result) throws Throwable { ShardingContexts shardingContexts = (ShardingContexts)allArguments[0]; Integer item = (Integer)allArguments[1]; ShardingContext shardingContext = new ShardingContext(shardingContexts, item); String operateName = shardingContext.getJobName(); if (!Strings.isNullOrEmpty(shardingContext.getShardingParameter())) { operateName += "-" + shardingContext.getShardingParameter(); } AbstractSpan span = ContextManager.createLocalSpan(operateName); span.setComponent(ComponentsDefine.ELASTIC_JOB); span.tag("sharding_context", shardingContext.toString()); } @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Object ret) throws Throwable { ContextManager.stopSpan(); return ret; } @Override public void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Throwable t) { ContextManager.activeSpan().errorOccurred().log(t); } } apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/src/main/java/org/skywalking/apm/plugin/esjob/define/JobExecutorInstrumentation.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.plugin.esjob.define; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.matcher.ElementMatcher; import org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; import org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; import org.skywalking.apm.agent.core.plugin.match.ClassMatch; import static org.skywalking.apm.agent.core.plugin.bytebuddy.ArgumentTypeNameMatch.takesArgumentWithType; import static org.skywalking.apm.agent.core.plugin.match.NameMatch.byName; /** * {@link JobExecutorInstrumentation} presents that skywalking intercepts {@link com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor}. * * @author gaohongtao */ public class JobExecutorInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { private static final String ENHANCE_CLASS = "com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor"; private static final String JOB_EXECUTOR_INTERCEPTOR_CLASS = "org.skywalking.apm.plugin.esjob.JobExecutorInterceptor"; @Override protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { return new ConstructorInterceptPoint[0]; } @Override protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { return new InstanceMethodsInterceptPoint[]{ new InstanceMethodsInterceptPoint() { @Override public ElementMatcher<MethodDescription> getMethodsMatcher() { return takesArgumentWithType(2, "com.dangdang.ddframe.job.event.type.JobExecutionEvent"); } @Override public String getMethodsInterceptor() { return JOB_EXECUTOR_INTERCEPTOR_CLASS; } @Override public boolean isOverrideArgs() { return false; } } }; } @Override protected ClassMatch enhanceClass() { return byName(ENHANCE_CLASS); } } apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/src/main/resources/skywalking-plugin.def 0 → 100644 +1 −0 Original line number Diff line number Diff line elastic-job-2.x=org.skywalking.apm.plugin.esjob.define.JobExecutorInstrumentation No newline at end of file Loading
apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +4 −1 Original line number Diff line number Diff line Loading @@ -71,6 +71,8 @@ public class ComponentsDefine { public static final OfficialComponent GRPC = new OfficialComponent(23, "GRPC"); public static final OfficialComponent ELASTIC_JOB = new OfficialComponent(24, "ElasticJob"); private static ComponentsDefine instance = new ComponentsDefine(); private String[] components; Loading @@ -80,7 +82,7 @@ public class ComponentsDefine { } public ComponentsDefine() { components = new String[24]; components = new String[25]; addComponent(TOMCAT); addComponent(HTTPCLIENT); addComponent(DUBBO); Loading @@ -104,6 +106,7 @@ public class ComponentsDefine { addComponent(SHARDING_JDBC); addComponent(POSTGRESQL); addComponent(GRPC); addComponent(ELASTIC_JOB); } private void addComponent(OfficialComponent component) { Loading
apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/pom.xml 0 → 100644 +54 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-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"> <parent> <artifactId>apm-sdk-plugin</artifactId> <groupId>org.skywalking</groupId> <version>3.3.0-2017</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>apm-elastic-job-2.x-plugin</artifactId> <packaging>jar</packaging> <name>elastic-job-2.x-plugin</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-common-core</artifactId> <version>[2.0.0,3.0.0)</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> </plugin> <plugin> <!-- 源码插件 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <!-- 发布时自动将源码同时发布的配置 --> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/src/main/java/org/skywalking/apm/plugin/esjob/JobExecutorInterceptor.java 0 → 100644 +65 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.plugin.esjob; import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.executor.ShardingContexts; import com.google.common.base.Strings; import java.lang.reflect.Method; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.skywalking.apm.network.trace.component.ComponentsDefine; /** * {@link JobExecutorInterceptor} enhances {@link com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor#process(ShardingContext)} * ,creating a local span that records job execution. * * @author gaohongtao */ public class JobExecutorInterceptor implements InstanceMethodsAroundInterceptor { @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, MethodInterceptResult result) throws Throwable { ShardingContexts shardingContexts = (ShardingContexts)allArguments[0]; Integer item = (Integer)allArguments[1]; ShardingContext shardingContext = new ShardingContext(shardingContexts, item); String operateName = shardingContext.getJobName(); if (!Strings.isNullOrEmpty(shardingContext.getShardingParameter())) { operateName += "-" + shardingContext.getShardingParameter(); } AbstractSpan span = ContextManager.createLocalSpan(operateName); span.setComponent(ComponentsDefine.ELASTIC_JOB); span.tag("sharding_context", shardingContext.toString()); } @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Object ret) throws Throwable { ContextManager.stopSpan(); return ret; } @Override public void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Throwable t) { ContextManager.activeSpan().errorOccurred().log(t); } }
apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/src/main/java/org/skywalking/apm/plugin/esjob/define/JobExecutorInstrumentation.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.plugin.esjob.define; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.matcher.ElementMatcher; import org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; import org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; import org.skywalking.apm.agent.core.plugin.match.ClassMatch; import static org.skywalking.apm.agent.core.plugin.bytebuddy.ArgumentTypeNameMatch.takesArgumentWithType; import static org.skywalking.apm.agent.core.plugin.match.NameMatch.byName; /** * {@link JobExecutorInstrumentation} presents that skywalking intercepts {@link com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor}. * * @author gaohongtao */ public class JobExecutorInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { private static final String ENHANCE_CLASS = "com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor"; private static final String JOB_EXECUTOR_INTERCEPTOR_CLASS = "org.skywalking.apm.plugin.esjob.JobExecutorInterceptor"; @Override protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { return new ConstructorInterceptPoint[0]; } @Override protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { return new InstanceMethodsInterceptPoint[]{ new InstanceMethodsInterceptPoint() { @Override public ElementMatcher<MethodDescription> getMethodsMatcher() { return takesArgumentWithType(2, "com.dangdang.ddframe.job.event.type.JobExecutionEvent"); } @Override public String getMethodsInterceptor() { return JOB_EXECUTOR_INTERCEPTOR_CLASS; } @Override public boolean isOverrideArgs() { return false; } } }; } @Override protected ClassMatch enhanceClass() { return byName(ENHANCE_CLASS); } }
apm-sniffer/apm-sdk-plugin/elastic-job-2.x-plugin/src/main/resources/skywalking-plugin.def 0 → 100644 +1 −0 Original line number Diff line number Diff line elastic-job-2.x=org.skywalking.apm.plugin.esjob.define.JobExecutorInstrumentation No newline at end of file