You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by GitBox <gi...@apache.org> on 2018/05/31 05:06:48 UTC

[GitHub] yrjjf commented on issue #1297: tiny框架插件开发,遇到探针启动报错

yrjjf commented on issue #1297: tiny框架插件开发,遇到探针启动报错
URL: https://github.com/apache/incubator-skywalking/issues/1297#issuecomment-393404343
 
 
   package com.hsjry.monitor.sw.client.agent;
   
   import com.google.common.base.MoreObjects;
   import org.apache.skywalking.apm.agent.core.context.CarrierItem;
   import org.apache.skywalking.apm.agent.core.context.ContextCarrier;
   import org.apache.skywalking.apm.agent.core.context.ContextManager;
   import org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan;
   import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer;
   import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance;
   import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
   import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
   import org.apache.skywalking.apm.network.trace.component.Component;
   import org.tinygroup.event.Event;
   
   import java.lang.reflect.Method;
   
   public class TinyRPCInterceptor implements InstanceMethodsAroundInterceptor {
   
       private static String generateViewPoint(Event request) {
           StringBuilder viewPoint = new StringBuilder(request.getServiceRequest().getNodeName());
           viewPoint.append("." + request.getServiceRequest().getServiceId());
           viewPoint.append("(" + request.getServiceRequest().getContext().getItemMap().toString() + ")");
           return viewPoint.toString();
       }
   
       @Override
       public void beforeMethod(EnhancedInstance enhancedInstance, Method method, Object[] objects, Class<?>[] classes, MethodInterceptResult methodInterceptResult) throws Throwable {
           Event request = (Event)objects[0];
           ContextCarrier contextCarrier = new ContextCarrier();
           CarrierItem next = contextCarrier.items();
           while (next.hasNext()) {
               next = next.next();
               next.setHeadValue(MoreObjects.toStringHelper(request.getServiceRequest().getContext().getItemMap().get(next.getHeadKey())).toString());
           }
   
           AbstractSpan span = ContextManager.createEntrySpan(generateViewPoint(request), contextCarrier);
           SpanLayer.asRPCFramework(span);
           span.setComponent(new Component() {
               @Override
               public int getId() {
                   return 110;
               }
   
               @Override
               public String getName() {
                   return "tiny-rpc";
               }
           });
       }
   
       @Override
       public Object afterMethod(EnhancedInstance enhancedInstance, Method method, Object[] objects, Class<?>[] classes, Object o) throws Throwable {
           Event response = (Event)o;
           if (response != null && response.getThrowable() != null) {
               AbstractSpan span = ContextManager.activeSpan();
               span.log(response.getThrowable());
               span.errorOccurred();
           }
           ContextManager.stopSpan();
           return o;
       }
   
       @Override
       public void handleMethodException(EnhancedInstance enhancedInstance, Method method, Object[] objects, Class<?>[] classes, Throwable throwable) {
           AbstractSpan activeSpan = ContextManager.activeSpan();
           activeSpan.errorOccurred();
           activeSpan.log(throwable);
       }
   }
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services