├── .gitignore ├── LICENSE ├── README.md ├── README_CN.md ├── bin ├── deploy.sh ├── package.sh ├── package_async.sh ├── release.sh └── release_async.sh ├── doc ├── FAQ.md ├── FAQEnglish.md ├── HowToBuild.md ├── HowToBuildInEnglish.md ├── QuickStart.md ├── QuickStartInEnglish.md ├── imgs │ ├── img.png │ ├── log.jpg │ ├── loglist.jpg │ ├── plugin-add-config.jpg │ ├── plugin-add-pluginclass.jpg │ ├── plugin-new-module.jpg │ └── showlog.jpg ├── instrument-modules │ ├── PluginDev.md │ ├── PluginDevInEnglish.md │ ├── README.md │ └── READMEInEnglish.md ├── instrument-simulator │ ├── README.md │ └── READMEInEnglish.md └── simulator-agent │ └── README.md ├── instrument-modules ├── bin │ └── packages.sh ├── biz-classloader-inject │ ├── README.md │ ├── biz-classloader-inject-shadow-job │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── shadowjob │ │ │ └── obj │ │ │ ├── PtDataflowJob.java │ │ │ ├── PtElasticJobSimpleJob.java │ │ │ └── quartz │ │ │ ├── PtJob.java │ │ │ └── PtQuartzJobBean.java │ ├── biz-classloader-inject.properties │ └── pom.xml ├── checkstyle.xml ├── pom.xml └── user-modules │ ├── module-activemq │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── activemq │ │ │ ├── ActiveMQConstants.java │ │ │ ├── ActiveMQPlugin.java │ │ │ └── interceptor │ │ │ ├── ConsumerOnMessageInterceptor.java │ │ │ └── ProducerSendInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-activemqv2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── activemqv2 │ │ │ ├── ActiveMQV2Plugin.java │ │ │ ├── consumer │ │ │ ├── ActiveMQShadowConsumerExecute.java │ │ │ ├── config │ │ │ │ └── ActiveMQConsumerConfig.java │ │ │ └── server │ │ │ │ └── ActiveMQShadowServer.java │ │ │ ├── producer │ │ │ ├── factory │ │ │ │ ├── ActiveMQProducerResource.java │ │ │ │ └── ShadowProducerFactory.java │ │ │ └── proxy │ │ │ │ └── SendProxy.java │ │ │ └── util │ │ │ └── ActiveMQDestinationUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-aerospike │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── aerospike │ │ │ ├── AerospikeConstants.java │ │ │ ├── AerospikePlugin.java │ │ │ └── interceptor │ │ │ ├── AreospikeOperateInterceptor.java │ │ │ ├── AreospikeScanAllInterceptor.java │ │ │ ├── AreospikeScanNodeInterceptor.java │ │ │ ├── KeyConstructorInterceptor.java │ │ │ ├── ScanAllParameterWrapInterceptor.java │ │ │ └── ScanNodeParameterWrapInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-akka │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── akka │ │ │ ├── AkkaConstants.java │ │ │ ├── AkkaPlugin.java │ │ │ └── interceptor │ │ │ ├── MailboxDequeueInterceptor.java │ │ │ └── MailboxEnqueueInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-alibaba-druid │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── alibaba │ │ │ └── druid │ │ │ ├── AlibabaDruidPlugin.java │ │ │ ├── destroy │ │ │ └── DruidDestroy.java │ │ │ ├── interceptor │ │ │ ├── DruidGetConnectionDirectInterceptor.java │ │ │ └── DruidInjectGetConnectionInterceptor.java │ │ │ ├── listener │ │ │ ├── DruidShadowActiveEventListener.java │ │ │ └── DruidShadowDisableEventListener.java │ │ │ ├── obj │ │ │ ├── BizConnection.java │ │ │ ├── DbDruidMediatorDataSource.java │ │ │ ├── DruidPooledNormalConnection.java │ │ │ └── DruidPooledPressureConnection.java │ │ │ └── util │ │ │ ├── DataSourceWrapUtil.java │ │ │ └── DruidDatasourceUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-alibaba-rocketmq │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── alibaba │ │ │ └── rocketmq │ │ │ ├── RocketMQPlugin.java │ │ │ ├── RocketmqConstants.java │ │ │ ├── common │ │ │ ├── ConsumerRegistry.java │ │ │ ├── MQTraceBean.java │ │ │ ├── MQTraceConstants.java │ │ │ ├── MQTraceContext.java │ │ │ ├── MQType.java │ │ │ ├── MixUtils.java │ │ │ ├── OrderlyTraceContexts.java │ │ │ └── PradarLogUtils.java │ │ │ ├── destroy │ │ │ └── MqDestroy.java │ │ │ ├── hook │ │ │ ├── PullConsumeMessageHookImpl.java │ │ │ ├── PushConsumeMessageHookImpl.java │ │ │ └── SendMessageHookImpl.java │ │ │ ├── interceptor │ │ │ ├── AbstractUseShadowConsumerReplaceInterceptor.java │ │ │ ├── ConcurrentlyTraceInterceptor.java │ │ │ ├── DefaultMQPushConsumerImplHasHookListener.java │ │ │ ├── DefaultPushConsumerCreateTopicInterceptor.java │ │ │ ├── DefaultPushConsumerEarliestMsgStoreTimeInterceptor.java │ │ │ ├── DefaultPushConsumerFetchSubscribeMessageQueuesInterceptor.java │ │ │ ├── DefaultPushConsumerMaxOffsetInterceptor.java │ │ │ ├── DefaultPushConsumerMinOffsetInterceptor.java │ │ │ ├── DefaultPushConsumerQueryMessageInterceptor.java │ │ │ ├── DefaultPushConsumerSearchOffsetInterceptor.java │ │ │ ├── DefaultPushConsumerShutdownInterceptor.java │ │ │ ├── DefaultPushConsumerViewMessageInterceptor.java │ │ │ ├── MQProducerInterceptor.java │ │ │ ├── MQProducerSendInterceptor.java │ │ │ ├── OrderlyTraceAfterInterceptor.java │ │ │ ├── OrderlyTraceBeforeInterceptor.java │ │ │ ├── OrderlyTraceContextInterceptor.java │ │ │ ├── PullConsumerInterceptor.java │ │ │ └── TransactionCheckInterceptor.java │ │ │ ├── pub │ │ │ └── MQSendMessageTraceLog.java │ │ │ └── sub │ │ │ └── MQConsumeMessageTraceLog.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-alibaba-rocketmqv2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── alibaba │ │ │ └── rocketmqv2 │ │ │ ├── RocketMqv2Plugin.java │ │ │ ├── consumer │ │ │ ├── RocketmqShadowConsumerExecute.java │ │ │ ├── config │ │ │ │ └── RocketmqConsumerConfig.java │ │ │ └── server │ │ │ │ └── RocketmqShadowServer.java │ │ │ └── producer │ │ │ ├── factory │ │ │ ├── DefaultMqProducerFactory.java │ │ │ ├── DefaultMqProducerImplResource.java │ │ │ └── DefaultMqProducerResource.java │ │ │ └── proxy │ │ │ └── SendProxy.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-axis │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── axis │ │ │ ├── AxisConstants.java │ │ │ ├── AxisPlugin.java │ │ │ └── interceptor │ │ │ └── CallInvokeInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-cxf │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── cxf │ │ │ ├── CxfConstants.java │ │ │ ├── CxfPlugin.java │ │ │ └── interceptor │ │ │ └── InvokeInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-dubbo │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── dubbo │ │ │ ├── ApacheDubboPlugin.java │ │ │ ├── DubboConstants.java │ │ │ ├── adpater │ │ │ ├── AttachmentCleaner.java │ │ │ ├── DubboAttachmentCleanerWrapper.java │ │ │ └── impl │ │ │ │ ├── DubboHigherAttachmentCleaner.java │ │ │ │ └── DubboLowerAttachmentCleaner.java │ │ │ ├── interceptor │ │ │ ├── DubboConsumerInterceptor.java │ │ │ ├── DubboProviderInterceptor.java │ │ │ └── DubboUtils.java │ │ │ └── utils │ │ │ └── ClassTypeUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-hbase │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── hbase │ │ │ ├── ApacheHbasePlugin.java │ │ │ ├── HbaseConstants.java │ │ │ ├── interceptor │ │ │ ├── ConnectionShadowInterceptor.java │ │ │ ├── HConnectionShadowReplaceInterceptor.java │ │ │ ├── TableCutoffInterceptor.java │ │ │ └── shadowserver │ │ │ │ └── HbaseMediatorConnection.java │ │ │ └── utils │ │ │ └── ShadowConnectionHolder.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-kafka-stream │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-kafkastream │ │ └── org │ │ │ └── apache │ │ │ └── kafka │ │ │ └── streams │ │ │ └── kstream │ │ │ └── KStreamBuilder.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── kafka │ │ │ └── stream │ │ │ ├── KafkaStreamPlugin.java │ │ │ ├── common │ │ │ ├── KStreamProcessorProcessTypeEnum.java │ │ │ └── KafkaStreamRequestTracer.java │ │ │ ├── constants │ │ │ └── KafkaStreamsCaches.java │ │ │ ├── destroy │ │ │ └── KafkaStreamDestroy.java │ │ │ ├── interceptor │ │ │ ├── AbstractKStreamProcessorProcessInterceptor.java │ │ │ ├── KStreamMapProcessorProcessInterceptor.java │ │ │ ├── KStreamPeekProcessorProcessInterceptor.java │ │ │ └── KafkaStreamsCloseInterceptor.java │ │ │ └── obj │ │ │ ├── KafkaStreamConfig.java │ │ │ ├── PTForeachAction.java │ │ │ └── PTMapKeyValueMapper.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-kafka-streamv2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-kafkastream │ │ └── org │ │ │ └── apache │ │ │ └── kafka │ │ │ └── streams │ │ │ └── kstream │ │ │ └── KStreamBuilder.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── kafka │ │ │ └── streamv2 │ │ │ ├── KafkaStreamV2plugin.java │ │ │ └── consumer │ │ │ ├── AbstractKafkaStreamExecute.java │ │ │ ├── KafkaShadowStreamMapExecute.java │ │ │ ├── KafkaShadowStreamPeekExecute.java │ │ │ ├── KafkaShadowStreamStartExecute.java │ │ │ ├── config │ │ │ └── KafkaShadowStreamConfig.java │ │ │ └── server │ │ │ └── KafkaShadowStreamServer.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-kafka │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-kafka │ │ ├── java │ │ │ └── time │ │ │ │ └── Duration.java │ │ └── org │ │ │ └── apache │ │ │ └── kafka │ │ │ └── common │ │ │ ├── security │ │ │ └── JaasContext.java │ │ │ └── utils │ │ │ └── Timer.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── kafka │ │ │ ├── ConfigCache.java │ │ │ ├── KafkaConstants.java │ │ │ ├── KafkaPlugin.java │ │ │ ├── destroy │ │ │ ├── KafkaDestroy.java │ │ │ └── ShadowConsumerDisableListenerImpl.java │ │ │ ├── header │ │ │ ├── HeaderProcessor.java │ │ │ ├── HeaderProvider.java │ │ │ ├── ProducerConfigProcessor.java │ │ │ ├── ProducerConfigProvider.java │ │ │ └── impl │ │ │ │ ├── DefaultHeaderProcessor.java │ │ │ │ ├── DisabledHeaderProcessor.java │ │ │ │ ├── DisabledProducerConfigProcessor.java │ │ │ │ ├── ProducerConfigLowerProcessor.java │ │ │ │ └── ProducerConfigNewerProcessor.java │ │ │ ├── interceptor │ │ │ ├── AbstractConfigGetInstanceInterceptor.java │ │ │ ├── AbstractProxiedConsumerInterceptor.java │ │ │ ├── ConsumerAcquireMethodInterceptor.java │ │ │ ├── ConsumerCommitAsyncInterceptor.java │ │ │ ├── ConsumerCommitSyncInterceptor.java │ │ │ ├── ConsumerConstructorInterceptor.java │ │ │ ├── ConsumerMultiRecordEntryPointInterceptor.java │ │ │ ├── ConsumerMultiRecordEntryPointInterceptor2.java │ │ │ ├── ConsumerOtherMethodInterceptor.java │ │ │ ├── ConsumerPollInterceptor.java │ │ │ ├── ConsumerRecordEntryPointInterceptor.java │ │ │ ├── ConsumerRecordEntryPointInterceptor2.java │ │ │ ├── ConsumerTraceInterceptor.java │ │ │ ├── CreateRawConsumerInterceptor.java │ │ │ ├── KafkaListenerContainerInterceptor.java │ │ │ ├── OriginProducerSendInterceptor.java │ │ │ ├── ProducerSendInterceptor.java │ │ │ ├── SpringKafkaPollAndInvokeInterceptor.java │ │ │ └── SpringKafkaProcessSeeksInterceptor.java │ │ │ ├── listener │ │ │ └── KafkaShadowPreCheckEventListener.java │ │ │ ├── origin │ │ │ ├── ConsumerHolder.java │ │ │ ├── ConsumerMetaData.java │ │ │ ├── ConsumerProxy.java │ │ │ ├── WithTryCatchConsumerProxy.java │ │ │ └── selector │ │ │ │ ├── LagDetectionSelector.java │ │ │ │ ├── PollConsumerSelector.java │ │ │ │ ├── PollingSelector.java │ │ │ │ ├── RatioSelector.java │ │ │ │ └── RecordsRatioPollSelector.java │ │ │ └── util │ │ │ ├── AopTargetUtil.java │ │ │ ├── KafkaUtils.java │ │ │ └── ShadowConsumerHolder.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-kafkav2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-kafka │ │ ├── java │ │ │ └── time │ │ │ │ └── Duration.java │ │ └── org │ │ │ └── apache │ │ │ └── kafka │ │ │ └── common │ │ │ ├── security │ │ │ └── JaasContext.java │ │ │ └── utils │ │ │ └── Timer.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── kafkav2 │ │ │ ├── KafkaV2Plugin.java │ │ │ ├── constant │ │ │ └── KafkaConstants.java │ │ │ ├── consumer │ │ │ ├── KafkaExecute.java │ │ │ ├── config │ │ │ │ └── KafkaShadowConsumerConfig.java │ │ │ └── server │ │ │ │ └── KafkaShadowConsumerServer.java │ │ │ ├── producer │ │ │ ├── factory │ │ │ │ ├── ApacheKafkaProducerFactory.java │ │ │ │ ├── ApacheProducerResource.java │ │ │ │ ├── KafkaJavaApiProducerResource.java │ │ │ │ └── KafkaProducerFactory.java │ │ │ └── proxy │ │ │ │ ├── JavaApiProducerSendProxy.java │ │ │ │ └── SendMethodProxy.java │ │ │ └── util │ │ │ ├── KafkaUtil.java │ │ │ └── ReflectUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-rocketmq │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── rocketmq │ │ │ ├── RocketMQPlugin.java │ │ │ ├── RocketmqConstants.java │ │ │ ├── common │ │ │ ├── ConsumerRegistry.java │ │ │ ├── MQTraceBean.java │ │ │ ├── MQTraceConstants.java │ │ │ ├── MQTraceContext.java │ │ │ ├── MQType.java │ │ │ ├── MixUtils.java │ │ │ ├── OrderlyTraceContexts.java │ │ │ └── PradarLogUtils.java │ │ │ ├── destroy │ │ │ └── MqDestroy.java │ │ │ ├── hook │ │ │ ├── PullConsumeMessageHookImpl.java │ │ │ ├── PushConsumeMessageHookImpl.java │ │ │ └── SendMessageHookImpl.java │ │ │ ├── interceptor │ │ │ ├── AbstractUseShadowConsumerReplaceInterceptor.java │ │ │ ├── ConcurrentlyTraceInterceptor.java │ │ │ ├── DefaultMQPushConsumerImplHasHookListener.java │ │ │ ├── DefaultPushConsumerCreateTopicInterceptor.java │ │ │ ├── DefaultPushConsumerEarliestMsgStoreTimeInterceptor.java │ │ │ ├── DefaultPushConsumerFetchSubscribeMessageQueuesInterceptor.java │ │ │ ├── DefaultPushConsumerMaxOffsetInterceptor.java │ │ │ ├── DefaultPushConsumerMinOffsetInterceptor.java │ │ │ ├── DefaultPushConsumerQueryMessageInterceptor.java │ │ │ ├── DefaultPushConsumerSearchOffsetInterceptor.java │ │ │ ├── DefaultPushConsumerShutdownInterceptor.java │ │ │ ├── DefaultPushConsumerViewMessageInterceptor.java │ │ │ ├── MQClientAPIImplInterceptor.java │ │ │ ├── MQProducerSendInterceptor.java │ │ │ ├── OrderlyTraceAfterInterceptor.java │ │ │ ├── OrderlyTraceBeforeInterceptor.java │ │ │ ├── OrderlyTraceContextInterceptor.java │ │ │ ├── PullConsumerInterceptor.java │ │ │ └── TransactionCheckInterceptor.java │ │ │ ├── listener │ │ │ └── RocketMQShadowPreCheckEventListener.java │ │ │ ├── pub │ │ │ └── MQSendMessageTraceLog.java │ │ │ └── sub │ │ │ └── MQConsumeMessageTraceLog.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-rocketmqv2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── rocketmqv2 │ │ │ ├── RocketMqv2Plugin.java │ │ │ ├── consumer │ │ │ ├── RocketmqShadowConsumerExecute.java │ │ │ ├── config │ │ │ │ └── RocketmqConsumerConfig.java │ │ │ └── server │ │ │ │ └── RocketmqShadowServer.java │ │ │ └── producer │ │ │ ├── factory │ │ │ ├── DefaultMQProducerImplResource.java │ │ │ └── DefaultMqProducerFactory.java │ │ │ └── proxy │ │ │ └── SendProxy.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-apache-tomcat-jdbc │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── apache │ │ │ └── tomcatjdbc │ │ │ ├── ApacheTomcatJdbcConstants.java │ │ │ ├── ApacheTomcatJdbcPlugin.java │ │ │ ├── destroy │ │ │ └── TomcatJdbcDestroy.java │ │ │ ├── interceptor │ │ │ ├── TomcatJdbcDataSourceProxyGetConnectionInterceptor.java │ │ │ └── TomcatJdbcPoolGetConnectionInterceptor.java │ │ │ ├── obj │ │ │ └── TomcatJdbcMediatorDataSource.java │ │ │ └── util │ │ │ ├── DataSourceWrapUtil.java │ │ │ ├── TomcatJdbcConstants.java │ │ │ └── TomcatJdbcDatasourceUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-async-httpclient │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── async │ │ │ └── http │ │ │ └── client │ │ │ └── plugin │ │ │ ├── AsyncHttpClientConstants.java │ │ │ ├── AsyncHttpClientPlugin.java │ │ │ ├── interceptor │ │ │ └── NettyRequestSenderSendRequestInterceptor.java │ │ │ └── utils │ │ │ ├── DefaultAsyncResponse.java │ │ │ └── DefaultListenableFuture.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-atomikos │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── atomikos │ │ │ ├── AtomikosPlugin.java │ │ │ ├── connection │ │ │ ├── AtomikosBizConnection.java │ │ │ ├── AtomikosNormalConnection.java │ │ │ └── AtomikosPressureConnection.java │ │ │ ├── destroy │ │ │ └── AtomikosDestroy.java │ │ │ ├── interceptor │ │ │ └── DataSourceGetConnectionCutoffInterceptor.java │ │ │ └── utils │ │ │ ├── AtomikosDataSourceBeanMediaDataSource.java │ │ │ ├── AtomikosDataSourceBeanWrapUtil.java │ │ │ ├── AtomikosNonXADataSourceBeanMediaDataSource.java │ │ │ └── AtomikosNonXADataSourceBeanWrapUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-c3p0 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── c3p0 │ │ │ ├── C3p0Plugin.java │ │ │ ├── ListenerRegisterStatus.java │ │ │ ├── destroy │ │ │ └── C3p0Destroy.java │ │ │ ├── interceptor │ │ │ ├── C3p0PoolGetConnectionInterceptor.java │ │ │ ├── DataSourceGetConnectionArgsCutoffInterceptor.java │ │ │ └── DataSourceGetConnectionCutoffInterceptor.java │ │ │ ├── listener │ │ │ ├── C3p0ShadowActiveEventListener.java │ │ │ └── C3p0ShadowDisableEventListener.java │ │ │ └── utils │ │ │ ├── C3p0MediaDataSource.java │ │ │ └── DataSourceWrapUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-caffeine │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── caffeine │ │ │ ├── CaffeineConstants.java │ │ │ ├── CaffeinePlugin.java │ │ │ ├── interceptor │ │ │ ├── AbstractChangeCacheKeyAndLambdaInterceptor.java │ │ │ ├── AbstractChangeCacheKeyTraceInterceptor.java │ │ │ ├── AbstractCommonTraceInterceptor.java │ │ │ ├── AbstractFilterInterceptor.java │ │ │ ├── CacheLoaderInterceptor.java │ │ │ ├── ComputeIfAbsentInterceptor.java │ │ │ ├── ComputeInterceptor.java │ │ │ ├── EntrySetInterceptor.java │ │ │ ├── FirstKeyInterceptor.java │ │ │ ├── FirstKeyWithBiFunctionInterceptor.java │ │ │ ├── FirstKeyWithFunctionInterceptor.java │ │ │ ├── GetAllInterceptor.java │ │ │ ├── IsEmptyInterceptor.java │ │ │ ├── IterableKeyInterceptor.java │ │ │ ├── KeySetInterceptor.java │ │ │ └── PutAllInterceptor.java │ │ │ └── utils │ │ │ ├── WrapBiFunction.java │ │ │ ├── WrapEntry.java │ │ │ ├── WrapFunction.java │ │ │ └── WrapLambda.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-catalina │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-catalina │ │ └── org │ │ │ └── apache │ │ │ └── catalina │ │ │ └── connector │ │ │ └── Request.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── catalina │ │ │ ├── CatalinaAsyncListener.java │ │ │ ├── CatalinaConstans.java │ │ │ ├── CatalinaPlugin.java │ │ │ ├── common │ │ │ ├── BufferedReaderWrapper.java │ │ │ ├── BufferedServletRequestWrapper.java │ │ │ ├── BufferedServletRequestWrapper9x.java │ │ │ ├── CatalinaVersion.java │ │ │ └── Servlet2ApiHelperImpl.java │ │ │ ├── interceptor │ │ │ ├── RequestStartAsyncInterceptor.java │ │ │ ├── SpringMvcApiInterceptor.java │ │ │ ├── SpringMvcInterceptor.java │ │ │ └── StandardHostValveInvokeInterceptor.java │ │ │ └── utils │ │ │ └── Constants.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-cluster-test-check │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── cluster │ │ │ └── test │ │ │ └── check │ │ │ ├── CheckPlugin.java │ │ │ ├── exception │ │ │ └── ClusterTestNotReadyException.java │ │ │ ├── interceptor │ │ │ ├── AbstractCheckInterceptor.java │ │ │ ├── rpc │ │ │ │ ├── DubboInterceptor.java │ │ │ │ ├── GrpcInterceptor.java │ │ │ │ └── MotanInterceptor.java │ │ │ └── web │ │ │ │ ├── ChannelInboundHandlerInterceptor.java │ │ │ │ ├── ServletInterceptor.java │ │ │ │ ├── SpringHttpHandlerInterceptor.java │ │ │ │ ├── SpringWebHandlerInterceptor.java │ │ │ │ └── UndertowHttpHandlerInterceptor.java │ │ │ └── utils │ │ │ └── ClassUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-command-channel │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── command │ │ │ ├── CommandChannelConstants.java │ │ │ ├── CommandChannelPlugin.java │ │ │ └── handler │ │ │ └── DispatcherCommandHandler.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-cus-trace │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── cus │ │ │ └── trace │ │ │ ├── CusTracePlugin.java │ │ │ ├── interceptor │ │ │ └── CusTraceInterceptor.java │ │ │ └── module │ │ │ ├── CusTraceConfig.java │ │ │ └── CusTraceConstans.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-datasource-common │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── common │ │ │ └── datasource │ │ │ ├── DatasourceCommonModule.java │ │ │ ├── TraceConnection.java │ │ │ ├── WrappedDbMediatorDataSource.java │ │ │ ├── biz │ │ │ ├── BizCallableStatement.java │ │ │ ├── BizConnection.java │ │ │ ├── BizPreparedStatement.java │ │ │ ├── BizStatement.java │ │ │ └── package-info.java │ │ │ ├── check │ │ │ ├── NormalCheckPreparedStatement.java │ │ │ └── NormalCheckStatement.java │ │ │ ├── hbaseserver │ │ │ ├── InvokeSwitcher.java │ │ │ └── MediatorConnection.java │ │ │ ├── normal │ │ │ ├── NormalConnection.java │ │ │ ├── NormalPreparedStatement.java │ │ │ └── NormalStatment.java │ │ │ ├── pressure │ │ │ ├── PressureCallableStatement.java │ │ │ ├── PressureConnection.java │ │ │ ├── PressurePreparedStatement.java │ │ │ └── PressureStatment.java │ │ │ ├── redisserver │ │ │ ├── AbstractRedisServerFactory.java │ │ │ ├── DefaultRedisServerMatch.java │ │ │ ├── RedisClientMediator.java │ │ │ ├── RedisServerMatchStrategy.java │ │ │ └── RedisServerNodesStrategy.java │ │ │ ├── trace │ │ │ ├── CheckedTraceCallableStatement.java │ │ │ ├── CheckedTracePreparedStatement.java │ │ │ ├── CheckedTraceStatement.java │ │ │ ├── JdbcPradar.java │ │ │ ├── PradarHelper.java │ │ │ ├── SqlTraceMetaData.java │ │ │ └── impl │ │ │ │ └── JdbcPradarImpl.java │ │ │ └── utils │ │ │ ├── ProxyFlag.java │ │ │ └── SqlUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-dbcp │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── dbcp │ │ │ ├── DbcpPlugin.java │ │ │ ├── ListenerRegisterStatus.java │ │ │ ├── destroy │ │ │ └── DbcpDestroy.java │ │ │ ├── interceptor │ │ │ ├── DataSourceGetConnectionCutoffArgsInterceptor.java │ │ │ ├── DataSourceGetConnectionCutoffInterceptor.java │ │ │ └── DbcpPoolingDataSourceGetConnectionInterceptor.java │ │ │ ├── listener │ │ │ ├── DbcpShadowActiveEventListener.java │ │ │ └── DbcpShadowDisableEventListener.java │ │ │ └── utils │ │ │ ├── DataSourceWrapUtil.java │ │ │ └── DbcpMediaDataSource.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-dbcp2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── dbcp2 │ │ │ ├── Dbcp2Plugin.java │ │ │ ├── ListenerRegisterStatus.java │ │ │ ├── destroy │ │ │ └── Dbcp2Destroy.java │ │ │ ├── interceptor │ │ │ ├── DataSourceGetConnectionCutoffArgsInterceptor.java │ │ │ ├── DataSourceGetConnectionCutoffInterceptor.java │ │ │ └── Dbcp2PoolingDataSourceGetConnectionInterceptor.java │ │ │ ├── listener │ │ │ ├── Dbcp2ShadowActiveEventListener.java │ │ │ └── Dbcp2ShadowDisableEventListener.java │ │ │ └── utils │ │ │ ├── DataSourceWrapUtil.java │ │ │ └── DbcpMediaDataSource.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-dynamic-resource │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── dynamic │ │ │ ├── Attachment.java │ │ │ ├── AttributeResolver.java │ │ │ ├── Constant.java │ │ │ ├── DynamicResourceModule.java │ │ │ ├── Filter.java │ │ │ ├── MiddleWareType.java │ │ │ ├── Resolver.java │ │ │ ├── ResourceManager.java │ │ │ └── template │ │ │ ├── DruidTemplate.java │ │ │ ├── DynamicResourceManager.java │ │ │ ├── HttpTemplate.java │ │ │ └── Template.java │ │ └── resources │ │ └── module.config │ ├── module-ehcache │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── ehcache │ │ │ ├── EhcacheConstants.java │ │ │ ├── EhcachePlugin.java │ │ │ ├── Iter.java │ │ │ └── interceptor │ │ │ ├── BaseStoreCheckTypeInterceptor.java │ │ │ ├── CacheGetAllRemoveAllInterceptor.java │ │ │ ├── CacheGetAllWithLoaderInterceptor.java │ │ │ ├── CacheGetKeysInterceptor.java │ │ │ ├── CacheGetWithLoaderInterceptor.java │ │ │ ├── CacheIteratorInterceptor.java │ │ │ ├── CacheKeyInterceptor.java │ │ │ ├── CacheKeyInterceptor0.java │ │ │ ├── CacheKeyInterceptor1.java │ │ │ ├── CacheLoadAllInterceptor.java │ │ │ ├── CacheParameterCollectionInterceptor.java │ │ │ ├── CachePutAllInterceptor.java │ │ │ ├── ElementGetObjectKeyInterceptor.java │ │ │ └── PreferredLoaderObjectInputStreamResolveClassInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-elasticsearch │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-elasticsearch │ │ └── org │ │ │ └── elasticsearch │ │ │ ├── action │ │ │ ├── ActionType.java │ │ │ ├── admin │ │ │ │ └── indices │ │ │ │ │ └── warmer │ │ │ │ │ ├── delete │ │ │ │ │ └── DeleteWarmerRequest.java │ │ │ │ │ ├── get │ │ │ │ │ └── GetWarmersRequest.java │ │ │ │ │ └── put │ │ │ │ │ └── PutWarmerRequest.java │ │ │ ├── bulk │ │ │ │ ├── BulkRequest.java │ │ │ │ └── byscroll │ │ │ │ │ ├── AbstractBulkByScrollRequest.java │ │ │ │ │ └── DeleteByQueryRequest.java │ │ │ ├── percolate │ │ │ │ ├── MultiPercolateRequest.java │ │ │ │ └── PercolateRequest.java │ │ │ ├── suggest │ │ │ │ └── SuggestRequest.java │ │ │ └── support │ │ │ │ └── ActiveShardCount.java │ │ │ ├── client │ │ │ └── transport │ │ │ │ └── TransportClient.java │ │ │ └── common │ │ │ ├── transport │ │ │ └── InetSocketTransportAddress.java │ │ │ └── xcontent │ │ │ ├── DeprecationHandler.java │ │ │ ├── NamedXContentRegistry.java │ │ │ └── ToXContentObject.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── es │ │ │ ├── ElasticSearchPlugin.java │ │ │ ├── ElasticsearchConstants.java │ │ │ ├── common │ │ │ ├── AbstractRequestIndexRename.java │ │ │ ├── ElasticSearchParser.java │ │ │ ├── RequestIndexRename.java │ │ │ ├── RequestIndexRenameProvider.java │ │ │ ├── RestClientHighLowFlag.java │ │ │ └── impl │ │ │ │ ├── AbstractReadRequestIndexRename.java │ │ │ │ ├── AbstractWriteRequestIndexRename.java │ │ │ │ ├── AnalyzeRequestIndexRename.java │ │ │ │ ├── AnalyzeRequestIndexRename0.java │ │ │ │ ├── BulkRequestIndexRename.java │ │ │ │ ├── ClearIndicesCacheRequestIndexRename.java │ │ │ │ ├── ClearScrollRequestRename.java │ │ │ │ ├── CloseIndexRequestIndexRename.java │ │ │ │ ├── CloseIndexRequestIndexRename0.java │ │ │ │ ├── ClusterHealthRequestRename.java │ │ │ │ ├── ClusterStateRequestRename.java │ │ │ │ ├── CountRequestIndexRename.java │ │ │ │ ├── CreateIndexRequest1Rename.java │ │ │ │ ├── CreateIndexRequestRename.java │ │ │ │ ├── DeleteAliasRequestRename.java │ │ │ │ ├── DeleteByQueryRequestIndexRename.java │ │ │ │ ├── DeleteByQueryRequestIndexRename0.java │ │ │ │ ├── DeleteIndexRequestIndexRename.java │ │ │ │ ├── DeleteIndexTemplateRequestIndexRename.java │ │ │ │ ├── DeleteRequestIndexRename.java │ │ │ │ ├── DeleteWarmerRequestIndexRename.java │ │ │ │ ├── ExplainRequestIndexRename.java │ │ │ │ ├── FlushRequestIndexRename.java │ │ │ │ ├── ForceMergeRequestIndexRename.java │ │ │ │ ├── FreezeIndexRequestRename.java │ │ │ │ ├── GetAliasesRequestIndexRename.java │ │ │ │ ├── GetFieldMappingsRequestIndexRename.java │ │ │ │ ├── GetIndexRequestIndex1Rename.java │ │ │ │ ├── GetIndexRequestIndexRename.java │ │ │ │ ├── GetIndexTemplatesRequestIndexRename.java │ │ │ │ ├── GetMappingsRequestIndexRename.java │ │ │ │ ├── GetRequestIndexRename.java │ │ │ │ ├── GetSettingsRequestIndexRename.java │ │ │ │ ├── GetWarmersRequestIndexRename.java │ │ │ │ ├── IndexRequestIndexRename.java │ │ │ │ ├── IndicesAliasesRequestIndexRename.java │ │ │ │ ├── IndicesExistsRequestIndexRename.java │ │ │ │ ├── IndicesSegementsRequestIndexRename.java │ │ │ │ ├── IndicesShardStoresRequestIndexRename.java │ │ │ │ ├── IndicesStatsRequestIndexRename.java │ │ │ │ ├── MainRequestIndexRename.java │ │ │ │ ├── MultiGetRequestIndexRename.java │ │ │ │ ├── MultiPercolateRequestIndexRename.java │ │ │ │ ├── MultiTermVectorsRequestIndexRename.java │ │ │ │ ├── OpenIndexRequestIndexRename.java │ │ │ │ ├── PercolateRequestIndexRename.java │ │ │ │ ├── PutMappingRequestIndexRename.java │ │ │ │ ├── PutWarmerRequestIndexRename.java │ │ │ │ ├── RecoveryRequestIndexRename.java │ │ │ │ ├── RefreshRequestIndexRename.java │ │ │ │ ├── RestRequestIndexRename.java │ │ │ │ ├── SearchRequestIndexRename.java │ │ │ │ ├── SearchScrollIndexRename.java │ │ │ │ ├── ShardFlushRequestIndexRename.java │ │ │ │ ├── ShardUpgradeRequestIndexRename.java │ │ │ │ ├── SuggestRequestIndexRename.java │ │ │ │ ├── SyncedFlushRequestIndexRename.java │ │ │ │ ├── TermVectorsRequestIndexRename.java │ │ │ │ ├── TypeExistsRequestIndexRename.java │ │ │ │ ├── UpdateRequestIndexRename.java │ │ │ │ ├── UpdateSettingsRequestIndexRename.java │ │ │ │ ├── UpgradeRequestIndexRename.java │ │ │ │ ├── UpgradeStatusRequestIndexRename.java │ │ │ │ └── ValidateQueryRequestIndexRename.java │ │ │ ├── destroy │ │ │ └── ElasticSearchDestroy.java │ │ │ ├── interceptor │ │ │ ├── AbstractRestClientShadowServerInterceptor.java │ │ │ ├── BulkRequestAddInterceptor.java │ │ │ ├── ElasticSearchExecuteInterceptor.java │ │ │ ├── RestClientPerformAsyncLowVersionRequestInterceptor.java │ │ │ ├── RestClientPerformAsyncLowVersionRequestTraceInterceptor.java │ │ │ ├── RestClientPerformAsyncRequestInterceptor.java │ │ │ ├── RestClientPerformRequestInterceptor.java │ │ │ ├── RestClientTraceInterceptor.java │ │ │ ├── RestHighLevelClientInterceptor.java │ │ │ ├── TransportClientExecuteInterceptor.java │ │ │ └── TransportClientTraceInterceptor.java │ │ │ ├── listener │ │ │ ├── EsShadowActiveEventListener.java │ │ │ ├── EsShadowDisableEventListener.java │ │ │ └── EsShadowPreCheckEventListener.java │ │ │ ├── shadowserver │ │ │ ├── ShadowEsClientHolder.java │ │ │ ├── rest │ │ │ │ ├── RestClientDefinitionStrategy.java │ │ │ │ ├── RestClientDescribe.java │ │ │ │ └── definition │ │ │ │ │ ├── AbstractRestClientDefinition.java │ │ │ │ │ ├── RestClient61Definition.java │ │ │ │ │ ├── RestClient68Definition.java │ │ │ │ │ ├── RestClient70Definition.java │ │ │ │ │ ├── RestClientDefinition.java │ │ │ │ │ └── TransportClientDefinition.java │ │ │ ├── transport │ │ │ │ ├── TransportClientDefinitionStrategy.java │ │ │ │ └── definition │ │ │ │ │ ├── AbstractTransportClientDefinition.java │ │ │ │ │ ├── PreBuiltTransportClientDefinition.java │ │ │ │ │ └── TransportClient2XDefinition.java │ │ │ └── utils │ │ │ │ └── HostAndPort.java │ │ │ └── utils │ │ │ └── AsyncLowTraceUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-feign │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── feign │ │ │ ├── FeignConstants.java │ │ │ ├── FeignPlugin.java │ │ │ └── interceptor │ │ │ ├── EurekaRestRequestInterceptor.java │ │ │ ├── FeignDataPassInterceptor.java │ │ │ ├── FeignMockInterceptor.java │ │ │ └── GuavaCacheSkipInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-google-guava │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── guava │ │ │ ├── GoogleGuavaConstants.java │ │ │ ├── GoogleGuavaPlugin.java │ │ │ └── interceptor │ │ │ ├── CacheAsMapInterceptor.java │ │ │ ├── CacheLoaderKeyConvertInterceptor.java │ │ │ ├── CacheOperationGetAllResInterceptor.java │ │ │ ├── CacheOperationInterceptor.java │ │ │ └── CacheOperationTraceInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-google-httpclient │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── google │ │ │ └── httpclient │ │ │ ├── GoogleHttpClientPlugin.java │ │ │ ├── HttpClientConstants.java │ │ │ └── interceptor │ │ │ └── HttpRequestExecuteMethodInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-grpc │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── grpc │ │ │ ├── GrpcConstants.java │ │ │ ├── GrpcPlugin.java │ │ │ └── interceptor │ │ │ ├── ChannelNewCallInterceptor.java │ │ │ ├── ClientCallStartInterceptor.java │ │ │ ├── ServerPreesureConstructorInterceptor.java │ │ │ ├── ServerPreesureResetInterceptor.java │ │ │ ├── ServerPressurePassInterceptor.java │ │ │ ├── ServerStreamCreatedInterceptor.java │ │ │ ├── ServerStreamListenerImplHalfClosedInterceptor.java │ │ │ ├── ServerStreamListenerImplMessagesAvailableInterceptor.java │ │ │ └── ServerTransportListenerImplStartCallInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-hbase │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── hbase │ │ │ ├── HbaseConstants.java │ │ │ ├── HbasePlugin.java │ │ │ ├── destroy │ │ │ └── HbaseDestroyed.java │ │ │ ├── interceptor │ │ │ ├── AliHBaseMultiTableInterceptor.java │ │ │ ├── AliHBaseUETableInterceptor.java │ │ │ ├── AsyncHbaseMethodInterceptor.java │ │ │ ├── AsyncHbaseTableInterceptor.java │ │ │ ├── DdlTracerInterceptor.java │ │ │ ├── HbaseClientMethodInterceptor.java │ │ │ ├── HbaseInterceptor.java │ │ │ ├── HbaseTableInterceptor.java │ │ │ ├── HbaseTableValueOfInterceptor.java │ │ │ ├── LindormWideColumnServiceInterceptor.java │ │ │ └── WrappedHBTableGetNameInterceptor.java │ │ │ └── util │ │ │ ├── HBaseTableNameUtils.java │ │ │ └── SocketAddressUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-hessian │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── hessian │ │ │ ├── HessianConstants.java │ │ │ ├── HessianPlugin.java │ │ │ ├── common │ │ │ ├── HessianProxyWrapper.java │ │ │ ├── RequestUtils.java │ │ │ ├── WrapperRequest.java │ │ │ └── WrapperServletInputStream.java │ │ │ └── interceptor │ │ │ ├── BurlapServletServiceInterceptor.java │ │ │ ├── HessianProxyAddRequestHeadersInterceptor.java │ │ │ ├── HessianProxyFactoryCreateInterceptor.java │ │ │ ├── HessianServiceExporterHandleRequestInterceptor.java │ │ │ ├── HessianServletServiceInterceptor.java │ │ │ └── HessianServletWrapperRequestInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-hikariCP │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── hikariCP │ │ │ ├── HikariCPPlugin.java │ │ │ ├── ListenerRegisterStatus.java │ │ │ ├── destroy │ │ │ └── HikariCPDestroy.java │ │ │ ├── interceptor │ │ │ ├── DataSourceConnectionInterceptor.java │ │ │ ├── DataSourceConstructorInterceptor.java │ │ │ └── HikariPoolGetConnectionInterceptor.java │ │ │ ├── listener │ │ │ ├── HikaricpShadowActiveEventListener.java │ │ │ └── HikaricpShadowDisableEventListener.java │ │ │ └── utils │ │ │ ├── DataSourceWrapUtil.java │ │ │ └── HikariMediaDataSource.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-httpclient │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── httpclient │ │ │ ├── HttpClientConstants.java │ │ │ ├── HttpClientPlugin.java │ │ │ ├── interceptor │ │ │ ├── AsyncHttpClientv4MethodInterceptor.java │ │ │ ├── AsyncHttpClientv4MethodInterceptor1.java │ │ │ ├── AsyncHttpClientv4MethodInterceptor2.java │ │ │ ├── AsyncHttpClientv5MethodInterceptor.java │ │ │ ├── AsyncHttpClientv5MethodInterceptor1.java │ │ │ ├── AsyncHttpClientv5MethodInterceptor2.java │ │ │ ├── HttpClientV4ConnPoolGetConnInterceptor.java │ │ │ ├── HttpClientv3MethodInterceptor.java │ │ │ ├── HttpClientv4MethodInterceptor.java │ │ │ ├── HttpClientv4MethodInterceptor1.java │ │ │ ├── HttpClientv5MethodInterceptor.java │ │ │ └── HttpClientv5MethodInterceptor1.java │ │ │ └── utils │ │ │ ├── BlackHostChecker.java │ │ │ ├── HttpClientAsyncFixJsonStrategies.java │ │ │ ├── HttpClientAsyncMockStrategies.java │ │ │ ├── HttpRequestUtil.java │ │ │ └── ResponseHandlerUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-httpserver │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── httpserver │ │ │ ├── HttpServerConstants.java │ │ │ ├── HttpServerPlugin.java │ │ │ ├── common │ │ │ └── HttpExchangeRequestTracer.java │ │ │ └── interceptor │ │ │ └── FilterChainDoFilterInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-hystrix │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── hystrix │ │ │ ├── HystrixConstants.java │ │ │ ├── HystrixPlugin.java │ │ │ └── interceptor │ │ │ ├── ConstructorInterceptor.java │ │ │ └── InvokeInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-isolation │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── shulie │ │ │ │ └── instrument │ │ │ │ └── module │ │ │ │ └── isolation │ │ │ │ ├── IsolationManager.java │ │ │ │ ├── IsolationModule.java │ │ │ │ ├── common │ │ │ │ ├── ResourceInit.java │ │ │ │ ├── ShadowResourceLifecycleModule.java │ │ │ │ └── ShadowTargetCache.java │ │ │ │ ├── enhance │ │ │ │ ├── EnhanceClass.java │ │ │ │ └── EnhanceMethod.java │ │ │ │ ├── exception │ │ │ │ └── IsolationRuntimeException.java │ │ │ │ ├── proxy │ │ │ │ ├── ProxyCache.java │ │ │ │ ├── ShadowMethodProxy.java │ │ │ │ ├── ShadowMethodProxyUtils.java │ │ │ │ ├── ShadowProxy.java │ │ │ │ └── impl │ │ │ │ │ ├── AddClusterRouteShadowMethodProxy.java │ │ │ │ │ ├── ModifyParamShadowMethodProxy.java │ │ │ │ │ ├── NoSupportShadowMethodProxy.java │ │ │ │ │ └── RouteShadowMethodProxy.java │ │ │ │ ├── register │ │ │ │ └── ShadowProxyConfig.java │ │ │ │ ├── resource │ │ │ │ ├── ShadowCacheManager.java │ │ │ │ ├── ShadowResourceLifecycle.java │ │ │ │ └── ShadowResourceProxyFactory.java │ │ │ │ └── route │ │ │ │ ├── exception │ │ │ │ └── IsolationRouteRuntimeException.java │ │ │ │ └── interceptor │ │ │ │ └── RouteInterceptor.java │ │ └── resources │ │ │ ├── README.md │ │ │ └── module.config │ │ └── test │ │ └── java │ │ └── io │ │ └── shulie │ │ └── instrument │ │ └── module │ │ └── Main.java │ ├── module-jdbc-trace │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── jdbc │ │ │ └── trace │ │ │ ├── JdbcTraceConstants.java │ │ │ ├── JdbcTrackPlugin.java │ │ │ ├── interceptor │ │ │ ├── CreatePreparedStatementInterceptor.java │ │ │ ├── PreparedStatementInterceptor.java │ │ │ ├── PreparedStatementSetParamsInterceptor.java │ │ │ └── StatementTraceInterceptor.java │ │ │ ├── model │ │ │ └── JdbcTraceBean.java │ │ │ └── utils │ │ │ └── JdbcTraceUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-jdk-http │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── jdk │ │ │ └── http │ │ │ ├── JdkHttpConstants.java │ │ │ ├── JdkHttpPlugin.java │ │ │ └── interceptor │ │ │ ├── HttpClientInterceptor.java │ │ │ ├── HttpURLConnectionGetInputStreamInterceptor.java │ │ │ ├── HttpURLConnectionInterceptor.java │ │ │ └── JavaNetHttpURLConnectionGetHeaderInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-jersey │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── jersey │ │ │ ├── JerseyConstants.java │ │ │ ├── JerseyPlugin.java │ │ │ └── interceptor │ │ │ ├── client │ │ │ └── ClientInterceptor.java │ │ │ └── server │ │ │ ├── ServerInterceptor.java │ │ │ └── trace │ │ │ └── JerseyRequestTracer.java │ │ └── resources │ │ └── module.config │ ├── module-jetcache │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── jetcache │ │ │ ├── JetCacheConstants.java │ │ │ ├── JetCachePlugin.java │ │ │ └── interceptor │ │ │ ├── EmbeddedCacheBuildKeyInterceptor.java │ │ │ └── ExternalCacheBuildKeyInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-jetty │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-jetty │ │ └── org │ │ │ └── eclipse │ │ │ └── jetty │ │ │ ├── continuation │ │ │ ├── Continuation.java │ │ │ ├── ContinuationListener.java │ │ │ └── ContinuationThrowable.java │ │ │ └── server │ │ │ ├── AbstractHttpConnection.java │ │ │ ├── AsyncContext.java │ │ │ └── HttpConnection.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── jetty │ │ │ ├── Jetty7xAsyncListener.java │ │ │ ├── Jetty9xAsyncListener.java │ │ │ ├── JettyConstans.java │ │ │ ├── JettyPlugin.java │ │ │ └── interceptor │ │ │ ├── AbstractServerHandleInterceptor.java │ │ │ ├── Jetty6xServerHandleInterceptor.java │ │ │ ├── Jetty7xRequestStartAsync.java │ │ │ ├── Jetty9xRequestStartAsync.java │ │ │ ├── JettyRequestStartAsync.java │ │ │ ├── JettyServerHandleInterceptor.java │ │ │ └── RequestStartAsyncInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-log-data-pusher │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── module │ │ │ └── log │ │ │ └── data │ │ │ └── pusher │ │ │ ├── LogDataPusherModule.java │ │ │ ├── enums │ │ │ └── DataPushEnum.java │ │ │ ├── log │ │ │ ├── AgentLogFileEnum.java │ │ │ ├── JVMLogResponse.java │ │ │ ├── PullLogResponse.java │ │ │ ├── callback │ │ │ │ └── LogCallback.java │ │ │ ├── package-info.java │ │ │ └── reader │ │ │ │ ├── FileFetcher.java │ │ │ │ ├── FileReader.java │ │ │ │ └── impl │ │ │ │ ├── DefaultFileReader.java │ │ │ │ ├── LogPusher.java │ │ │ │ └── LogPusherOptions.java │ │ │ ├── push │ │ │ ├── DataPushManager.java │ │ │ ├── DataPusher.java │ │ │ ├── ServerOptions.java │ │ │ ├── http │ │ │ │ └── HttpDataPusher.java │ │ │ ├── impl │ │ │ │ └── DefaultDataPushManager.java │ │ │ ├── package-info.java │ │ │ └── tcp │ │ │ │ ├── ResponseFuture.java │ │ │ │ └── TcpDataPusher.java │ │ │ ├── server │ │ │ ├── ConnectInfo.java │ │ │ ├── HttpPushOptions.java │ │ │ ├── PusherOptions.java │ │ │ ├── ServerAddrProvider.java │ │ │ ├── ServerProviderOptions.java │ │ │ ├── hash │ │ │ │ └── Node.java │ │ │ └── impl │ │ │ │ └── DefaultServerAddrProvider.java │ │ │ └── utils │ │ │ ├── FileReaderUtils.java │ │ │ └── ReversedLinesFileReader.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-log4j │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── log4j │ │ │ ├── Log4jConstants.java │ │ │ ├── Log4jPlugin.java │ │ │ ├── destroy │ │ │ └── Log4jDestroy.java │ │ │ ├── interceptor │ │ │ ├── v1 │ │ │ │ ├── AppenderV1RegisterInterceptor.java │ │ │ │ ├── AppenderV1RouterInterceptor.java │ │ │ │ └── creator │ │ │ │ │ ├── DailyRollingFileShadowAppenderCreator.java │ │ │ │ │ ├── FileShadowAppenderCreator.java │ │ │ │ │ ├── RollingFileShadowAppenderCreator.java │ │ │ │ │ ├── ShadowAppenderCreatorFacadeV1.java │ │ │ │ │ └── ShadowAppenderCreatorV1.java │ │ │ └── v2 │ │ │ │ ├── AppenderRegisterAttachInterceptor.java │ │ │ │ ├── AppenderRouterInterceptor.java │ │ │ │ ├── AppenderTypes.java │ │ │ │ ├── appender │ │ │ │ └── creator │ │ │ │ │ ├── FileShadowAppenderCreator.java │ │ │ │ │ ├── RollingFileShadowAppenderCreator.java │ │ │ │ │ ├── RollingRandomAccessFileShadowAppenderCreator.java │ │ │ │ │ ├── ShadowAppenderCreator.java │ │ │ │ │ └── ShadowAppenderCreatorFacade.java │ │ │ │ ├── async │ │ │ │ └── AsyncTestMarkSetInterceptor.java │ │ │ │ └── holder │ │ │ │ └── Cache.java │ │ │ ├── message │ │ │ └── WithTestFlagMessage.java │ │ │ └── policy │ │ │ ├── TriggeringPolicies.java │ │ │ └── copier │ │ │ ├── CompositeTriggeringPolicyCopier.java │ │ │ ├── SizeBasedTriggeringPolicyCopier.java │ │ │ ├── TimeBasedTriggeringPolicyCopier.java │ │ │ └── TriggeringPolicyCopier.java │ │ └── resources │ │ └── module.config │ ├── module-logback │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── logback │ │ │ ├── Constants.java │ │ │ ├── LogbackConstants.java │ │ │ ├── LogbackPlugin.java │ │ │ ├── interceptor │ │ │ ├── ComponentTrackerInterceptor.java │ │ │ ├── LogInterceptor.java │ │ │ └── SiftingAppenderBaseInterceptor.java │ │ │ └── utils │ │ │ ├── AppenderHolder.java │ │ │ ├── ClusterTestMarker.java │ │ │ └── LogEventTestFlagUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-messaging-common │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── module │ │ │ ├── Main.java │ │ │ └── messaging │ │ │ ├── MessagingCommonPlugin.java │ │ │ ├── annoation │ │ │ └── NotNull.java │ │ │ ├── common │ │ │ └── ResourceInit.java │ │ │ ├── consumer │ │ │ ├── ConsumerManager.java │ │ │ ├── execute │ │ │ │ ├── ShadowConsumerExecute.java │ │ │ │ └── ShadowServer.java │ │ │ ├── isolation │ │ │ │ ├── ConsumerIsolationCache.java │ │ │ │ ├── ConsumerIsolationLifecycle.java │ │ │ │ └── ConsumerIsolationProxyFactory.java │ │ │ └── module │ │ │ │ ├── ConsumerConfig.java │ │ │ │ ├── ConsumerConfigWithData.java │ │ │ │ ├── ConsumerIsolationRegister.java │ │ │ │ ├── ConsumerRegister.java │ │ │ │ ├── ConsumerRegisterModule.java │ │ │ │ ├── ShadowConsumer.java │ │ │ │ └── isolation │ │ │ │ └── ConsumerClass.java │ │ │ ├── exception │ │ │ └── MessagingRuntimeException.java │ │ │ ├── handler │ │ │ └── ConsumerRouteHandler.java │ │ │ ├── kafka │ │ │ ├── ApacheKafkaHandler.java │ │ │ ├── common │ │ │ │ ├── KafkaCommonConfig.java │ │ │ │ └── KafkaCommonServer.java │ │ │ ├── model │ │ │ │ └── KafkaConsumerMetaData.java │ │ │ └── util │ │ │ │ ├── ConsumerConfigHolder.java │ │ │ │ ├── KafkaUtil.java │ │ │ │ └── ReflectUtil.java │ │ │ ├── ons │ │ │ ├── OnsShadowClusterConfigEntity.java │ │ │ └── OnsShadowClusterConfigure.java │ │ │ └── utils │ │ │ └── ShadowConsumerPrefixUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-mock │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── mock │ │ │ ├── MockConstants.java │ │ │ ├── MockPlugin.java │ │ │ └── interceptor │ │ │ └── MockAdviceListener.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-mongodb │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-mongdb │ │ └── com │ │ │ └── mongodb │ │ │ └── client │ │ │ └── internal │ │ │ └── ClientSessionBinding.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── mongodb │ │ │ ├── MongoDBPlugin.java │ │ │ ├── MongodbConstants.java │ │ │ ├── common │ │ │ ├── ClientSessionBindingBuilderProvider.java │ │ │ ├── MongoClientConstructor.java │ │ │ ├── MongoClientHolder.java │ │ │ ├── MongoClientPtCreate.java │ │ │ ├── MongoOperationUtil.java │ │ │ ├── ReadWriteBindingBuilder.java │ │ │ └── impl │ │ │ │ ├── ClientSessionBindingBuilder0.java │ │ │ │ └── ClientSessionBindingBuilder1.java │ │ │ ├── destroy │ │ │ └── MogoDestroyed.java │ │ │ ├── interceptor │ │ │ ├── AggregateOperationImplInterceptor.java │ │ │ ├── AsyncOperationExecutorImplInterceptor.java │ │ │ ├── DelegateOperationExecutorInterceptor.java │ │ │ ├── DelegateOperationExecutorTraceInterceptor.java │ │ │ ├── MongoCollectionInternalTraceInterceptor.java │ │ │ ├── MongoCollectionTraceInterceptor.java │ │ │ ├── MongoDBMongoClientDelegateConstructorInterceptor.java │ │ │ ├── MongoDBMongoConstructorInterceptor.java │ │ │ ├── MongoDBMongoConstructor_1_Interceptor.java │ │ │ ├── MongoDBMongoConstructor_2_Interceptor.java │ │ │ ├── MongoDBMongoConstructor_3_Interceptor.java │ │ │ ├── MongoExecuteCutoffInterceptor.java │ │ │ ├── MongoExecuteInterceptor.java │ │ │ ├── MongoExecuteTraceInterceptor.java │ │ │ ├── SyncDelegateOperationExecutorInterceptor.java │ │ │ └── mongo2_14_3 │ │ │ │ ├── AbstractDBCollectionInterceptor.java │ │ │ │ ├── DBCollectionAggregateInterceptor.java │ │ │ │ ├── DBCollectionCountInterceptor.java │ │ │ │ ├── DBCollectionCreateIndexInterceptor.java │ │ │ │ ├── DBCollectionDistinctInterceptor.java │ │ │ │ ├── DBCollectionDropIndexesInterceptor.java │ │ │ │ ├── DBCollectionDropInterceptor.java │ │ │ │ ├── DBCollectionExplainAggregateInterceptor.java │ │ │ │ ├── DBCollectionFindAndModifyInterceptor.java │ │ │ │ ├── DBCollectionFindInterceptor.java │ │ │ │ ├── DBCollectionFineOneInterceptor.java │ │ │ │ ├── DBCollectionGetDBInterceptor.java │ │ │ │ ├── DBCollectionGetIndexInfoInterceptor.java │ │ │ │ ├── DBCollectionGroupInterceptor.java │ │ │ │ ├── DBCollectionInitializeOrderedBulkOperationInterceptor.java │ │ │ │ ├── DBCollectionInitializeUnorderedBulkOperationInterceptor.java │ │ │ │ ├── DBCollectionInsertInterceptor.java │ │ │ │ ├── DBCollectionParallelScanInterceptor.java │ │ │ │ ├── DBCollectionRemoveInterceptor.java │ │ │ │ ├── DBCollectionTraceInterceptor.java │ │ │ │ └── DBCollectionUpdateInterceptor.java │ │ │ ├── listener │ │ │ ├── MongoDBShadowPreCheckEventListener.java │ │ │ └── MongoDbShadowDisableEventListener.java │ │ │ ├── obj │ │ │ ├── BusinessDelegateOperationExecutor.java │ │ │ └── DelegateOperationExecutorWrapper.java │ │ │ └── utils │ │ │ ├── Caches.java │ │ │ ├── OperationAccessor.java │ │ │ ├── OperationAccessorFactory.java │ │ │ ├── ReflectOperationAccessorAdaptor.java │ │ │ └── mongo343 │ │ │ └── ClientManagerUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-mongodb4 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-mongdb │ │ └── com │ │ │ └── mongodb │ │ │ └── client │ │ │ └── internal │ │ │ └── ClientSessionBinding.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── mongodb │ │ │ ├── MongoDBPlugin.java │ │ │ ├── MongodbConstants.java │ │ │ ├── common │ │ │ ├── MongoClientHolder.java │ │ │ └── MongoClientPtCreate.java │ │ │ ├── destroy │ │ │ └── MogoDestroyed.java │ │ │ ├── interceptor │ │ │ ├── AggregateOperationImplInterceptor.java │ │ │ ├── DelegateOperationExecutorInterceptor.java │ │ │ ├── DelegateOperationExecutorTraceInterceptor.java │ │ │ └── MongoCollectionInternalTraceInterceptor.java │ │ │ ├── listener │ │ │ ├── MongoDB4ShadowPreCheckEventListener.java │ │ │ └── MongoDb4ShadowDisableEventListener.java │ │ │ └── utils │ │ │ ├── Caches.java │ │ │ ├── OperationAccessor.java │ │ │ ├── OperationAccessorFactory.java │ │ │ └── ReflectOperationAccessorAdaptor.java │ │ └── resources │ │ └── module.config │ ├── module-motan │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── motan │ │ │ ├── MotanConstants.java │ │ │ ├── MotanPlugin.java │ │ │ └── interceptor │ │ │ ├── AbstractRefererCallInterceptor.java │ │ │ └── ProviderMessageRouterCallInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-mule │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── mule │ │ │ ├── MulePlugin.java │ │ │ ├── interceptor │ │ │ └── MuleHttpRequestDispatcherFilterInterceptor.java │ │ │ └── obj │ │ │ ├── RequestTracer.java │ │ │ └── resource │ │ │ └── StaticFileFilter.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-mybatis │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── mybatis │ │ │ ├── MybatisConstants.java │ │ │ ├── MybatisPlugin.java │ │ │ └── interceptor │ │ │ ├── MappedStatementGetCacheInterceptor.java │ │ │ ├── MapperBuilderAssistantAddMappedStatement.java │ │ │ ├── MapperBuilderAssistantUseNewCacheInterceptor.java │ │ │ ├── MapperMethodExecuteTraceInterceptor.java │ │ │ └── SqlSessionOperationInterceptor.java │ │ └── resources │ │ └── module.config │ ├── module-neo4j │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── neo4j │ │ │ ├── ListenerRegisterStatus.java │ │ │ ├── Neo4JConstants.java │ │ │ ├── Neo4JPlugin.java │ │ │ ├── config │ │ │ ├── DriverConfig.java │ │ │ ├── Neo4JSessionExt.java │ │ │ └── Neo4JSessionOperation.java │ │ │ ├── destroy │ │ │ └── Neo4jDestroy.java │ │ │ ├── interceptors │ │ │ ├── Neo4jSessionConstructorInterceptor.java │ │ │ ├── Neo4jSessionOperationCutOffInterceptor.java │ │ │ └── Neo4jSessionOperationTraceInterceptor.java │ │ │ ├── operation │ │ │ ├── AbstractOperation.java │ │ │ ├── BeginTransactionOperation.java │ │ │ ├── ClearOperation.java │ │ │ ├── ContextOperation.java │ │ │ ├── CountEntitiesOfTypeOperation.java │ │ │ ├── DebugOperation.java │ │ │ ├── DeleteAllOperation.java │ │ │ ├── DeleteOperation.java │ │ │ ├── DetachNodeEntityOperation.java │ │ │ ├── DetachRelationshipEntityOperation.java │ │ │ ├── DisposeOperation.java │ │ │ ├── DoInTransactionOperation.java │ │ │ ├── EntityTypeOperation.java │ │ │ ├── EventsEnabledOperation.java │ │ │ ├── GetTransactionOperation.java │ │ │ ├── InfoOperation.java │ │ │ ├── LoadAllOperation.java │ │ │ ├── LoadOperation.java │ │ │ ├── MetaDataOperation.java │ │ │ ├── NotifyListenersOperation.java │ │ │ ├── Operation.java │ │ │ ├── PurgeDatabaseOperation.java │ │ │ ├── QueryForObjectOperation.java │ │ │ ├── QueryOperation.java │ │ │ ├── QueryStatementsForOperation.java │ │ │ ├── RegisterOperation.java │ │ │ ├── RequestHandlerOperation.java │ │ │ ├── ResolveGraphIdForOperation.java │ │ │ ├── SaveOperation.java │ │ │ ├── SetDriverOperation.java │ │ │ ├── TransactionManagerOperation.java │ │ │ └── WarnOperation.java │ │ │ └── utils │ │ │ └── DataSourceWrapUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-netty-time-wheel │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── netty │ │ │ ├── NettyTimeWheelConstants.java │ │ │ ├── NettyTimeWheelPlugin.java │ │ │ ├── interceptor │ │ │ ├── HashedWheelTimeoutTaskInterceptor.java │ │ │ └── HashedWheelTimerNewTimeoutInterceptor.java │ │ │ └── job │ │ │ └── obj │ │ │ └── TraceTimerTask.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-netty │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── netty │ │ │ ├── NettyConstants.java │ │ │ ├── NettyHttpPlugin.java │ │ │ └── interceptor │ │ │ ├── ChannelPipelineWriteInterceptor.java │ │ │ ├── ChannelPromiseAddListenerInterceptor.java │ │ │ └── HttpEncoderInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-okhttp │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── okhttp │ │ │ ├── OKHttpConstants.java │ │ │ ├── OKHttpPlugin.java │ │ │ ├── utils │ │ │ ├── MockReturnUtils.java │ │ │ └── RealResponseBodyUtil.java │ │ │ ├── v2 │ │ │ └── interceptor │ │ │ │ ├── AsyncCallConstructorV2Interceptor.java │ │ │ │ ├── RealCallEnqueueV2Interceptor.java │ │ │ │ ├── RealCallExecuteV2Interceptor.java │ │ │ │ ├── RequestBuilderBuildMethodV2Interceptor.java │ │ │ │ └── WrapperCallback.java │ │ │ └── v3 │ │ │ ├── Version.java │ │ │ └── interceptor │ │ │ ├── AsyncCallConstructorV3Interceptor.java │ │ │ ├── RealCallEnqueueV3Interceptor.java │ │ │ ├── RealCallExecuteV3Interceptor.java │ │ │ ├── RequestBuilderBuildMethodV3Interceptor.java │ │ │ └── WrapperCallback.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-oscache │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── oscache │ │ │ ├── OscacheConstants.java │ │ │ ├── OscachePlugin.java │ │ │ └── interceptor │ │ │ └── CacheKeyInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-perf │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── perf │ │ │ ├── PerfConstants.java │ │ │ ├── PerfPlugin.java │ │ │ ├── builder │ │ │ └── PerfResponseBuilder.java │ │ │ └── entity │ │ │ ├── PerfResponse.java │ │ │ └── ThreadVO.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-pradar-config-fetcher │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── module │ │ │ └── config │ │ │ └── fetcher │ │ │ ├── ConfigFetcherConstants.java │ │ │ ├── ConfigFetcherModule.java │ │ │ └── config │ │ │ ├── AbstractConfig.java │ │ │ ├── ConfigManager.java │ │ │ ├── DefaultConfigFetcher.java │ │ │ ├── IConfig.java │ │ │ ├── SimulatorDetail.java │ │ │ ├── event │ │ │ ├── ConfigEvent.java │ │ │ ├── ConfigEventEnum.java │ │ │ ├── ConfigListener.java │ │ │ ├── FIELDS.java │ │ │ └── model │ │ │ │ ├── CacheKeyAllowList.java │ │ │ │ ├── ContextPathBlockList.java │ │ │ │ ├── EsShadowServerConfig.java │ │ │ │ ├── GlobalSwitch.java │ │ │ │ ├── IChange.java │ │ │ │ ├── MQWhiteList.java │ │ │ │ ├── MaxRedisExpireTime.java │ │ │ │ ├── MockConfigChanger.java │ │ │ │ ├── RedisShadowServerConfig.java │ │ │ │ ├── RpcAllowList.java │ │ │ │ ├── SearchKeyWhiteList.java │ │ │ │ ├── ShadowDatabaseConfigs.java │ │ │ │ ├── ShadowHbaseConfigs.java │ │ │ │ ├── ShadowJobConfig.java │ │ │ │ ├── SilenceSwitch.java │ │ │ │ ├── UrlWhiteList.java │ │ │ │ └── WhiteListSwitch.java │ │ │ ├── impl │ │ │ ├── ApplicationConfig.java │ │ │ └── ClusterTestConfig.java │ │ │ ├── resolver │ │ │ ├── ConfigResolver.java │ │ │ ├── http │ │ │ │ ├── AbstractHttpResolver.java │ │ │ │ ├── ApplicationConfigHttpResolver.java │ │ │ │ └── ClusterTestConfigHttpResolver.java │ │ │ └── zk │ │ │ │ └── ZookeeperOptions.java │ │ │ └── utils │ │ │ └── ObjectUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-pradar-core │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ ├── pamirs │ │ │ └── pradar │ │ │ │ ├── AbstractContext.java │ │ │ │ ├── AppNameUtils.java │ │ │ │ ├── AsyncAppender.java │ │ │ │ ├── AsyncCollectorAppender.java │ │ │ │ ├── BaseContext.java │ │ │ │ ├── BaseContextEncoder.java │ │ │ │ ├── ConfigNames.java │ │ │ │ ├── Constants.java │ │ │ │ ├── CutOffResult.java │ │ │ │ ├── ErrorTypeEnum.java │ │ │ │ ├── FastDateFormat.java │ │ │ │ ├── IdentityHashSet.java │ │ │ │ ├── InvokeContext.java │ │ │ │ ├── JSONDumpField.java │ │ │ │ ├── JvmUtils.java │ │ │ │ ├── LoadMsg.java │ │ │ │ ├── MiddlewareType.java │ │ │ │ ├── MurmurHash3.java │ │ │ │ ├── NoOpAppender.java │ │ │ │ ├── Pradar.java │ │ │ │ ├── PradarAppender.java │ │ │ │ ├── PradarCoreUtils.java │ │ │ │ ├── PradarLogDaemon.java │ │ │ │ ├── PradarRollingCollectorAppender.java │ │ │ │ ├── PradarRollingFileAppender.java │ │ │ │ ├── PradarSwitcher.java │ │ │ │ ├── ResultCode.java │ │ │ │ ├── ScanJarPomUtils.java │ │ │ │ ├── SyncAppender.java │ │ │ │ ├── Throwables.java │ │ │ │ ├── TraceCoreUtils.java │ │ │ │ ├── TraceEncoder.java │ │ │ │ ├── TraceIdGenerator.java │ │ │ │ ├── TroEntity.java │ │ │ │ ├── cache │ │ │ │ └── ClusterTestCacheWrapperKey.java │ │ │ │ ├── common │ │ │ │ ├── Builder.java │ │ │ │ ├── ByteUtils.java │ │ │ │ ├── BytesUtils.java │ │ │ │ ├── Charsets.java │ │ │ │ ├── ChunkedInputStream.java │ │ │ │ ├── ClassAssignableUtil.java │ │ │ │ ├── ClassUtils.java │ │ │ │ ├── ContentLengthInputStream.java │ │ │ │ ├── FormatUtils.java │ │ │ │ ├── HeaderMark.java │ │ │ │ ├── HttpUtils.java │ │ │ │ ├── IOUtils.java │ │ │ │ ├── PropertyPlaceholderHelper.java │ │ │ │ ├── ReflectionToStringBuilder.java │ │ │ │ ├── RuntimeUtils.java │ │ │ │ ├── ServerDetector.java │ │ │ │ ├── ToStringBuilder.java │ │ │ │ └── ToStringStyle.java │ │ │ │ ├── debug │ │ │ │ └── DebugHelper.java │ │ │ │ ├── degrade │ │ │ │ ├── CombineResourceLimitDegradeDetect.java │ │ │ │ ├── DegradeDetector.java │ │ │ │ ├── action │ │ │ │ │ ├── DegradeAction.java │ │ │ │ │ ├── ReduceSamplingRateDegradeAction.java │ │ │ │ │ └── SilenceDegradeAction.java │ │ │ │ └── resources │ │ │ │ │ ├── ContainerCpuUsageResourceDetector.java │ │ │ │ │ ├── CpuUsageResourceDetector.java │ │ │ │ │ ├── LoadResourceDetector.java │ │ │ │ │ ├── MemoryResourceDetector.java │ │ │ │ │ └── ResourceDetector.java │ │ │ │ ├── event │ │ │ │ ├── ErrorEvent.java │ │ │ │ ├── Event.java │ │ │ │ └── PradarSwitchEvent.java │ │ │ │ ├── exception │ │ │ │ ├── PradarException.java │ │ │ │ └── PressureMeasureError.java │ │ │ │ ├── flag │ │ │ │ └── GuavaCacheSkipFlag.java │ │ │ │ ├── gson │ │ │ │ ├── FastjsonDateToGsonTypeAdapter.java │ │ │ │ ├── GsonFactory.java │ │ │ │ ├── ObjectTypeAdapterFactory.java │ │ │ │ └── SuperclassExclusionStrategy.java │ │ │ │ ├── interceptor │ │ │ │ ├── AfterTraceInterceptor.java │ │ │ │ ├── AfterTraceInterceptorAdapter.java │ │ │ │ ├── AroundInterceptor.java │ │ │ │ ├── BaseInterceptor.java │ │ │ │ ├── BeforeTraceInterceptor.java │ │ │ │ ├── BeforeTraceInterceptorAdapter.java │ │ │ │ ├── ContextInject.java │ │ │ │ ├── ContextTransfer.java │ │ │ │ ├── CutoffInterceptor.java │ │ │ │ ├── CutoffInterceptorAdaptor.java │ │ │ │ ├── InterceptorInvokerHelper.java │ │ │ │ ├── Interceptors.java │ │ │ │ ├── ModificationInterceptor.java │ │ │ │ ├── ModificationInterceptorAdaptor.java │ │ │ │ ├── ParametersWrapperInterceptor.java │ │ │ │ ├── ParametersWrapperInterceptorAdaptor.java │ │ │ │ ├── ResultInterceptor.java │ │ │ │ ├── ResultInterceptorAdaptor.java │ │ │ │ ├── ReverseTraceInterceptor.java │ │ │ │ ├── ReversedTraceInterceptor.java │ │ │ │ ├── ReversedTraceInterceptorAdaptor.java │ │ │ │ ├── ScopedAroundInterceptor.java │ │ │ │ ├── ScopedCutoffInterceptor.java │ │ │ │ ├── ScopedInterceptor.java │ │ │ │ ├── ScopedModificationInterceptor.java │ │ │ │ ├── ScopedParametersWrapperInterceptor.java │ │ │ │ ├── ScopedResultInterceptor.java │ │ │ │ ├── ScopedTraceInterceptor.java │ │ │ │ ├── SpanRecord.java │ │ │ │ ├── TraceInterceptor.java │ │ │ │ └── TraceInterceptorAdaptor.java │ │ │ │ ├── json │ │ │ │ └── ResultSerializer.java │ │ │ │ ├── pressurement │ │ │ │ ├── ClusterTestUtils.java │ │ │ │ ├── agent │ │ │ │ │ ├── event │ │ │ │ │ │ ├── IEvent.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── ClusterTestSwitchOffEvent.java │ │ │ │ │ │ │ ├── ClusterTestSwitchOnEvent.java │ │ │ │ │ │ │ ├── MockConfigAddEvent.java │ │ │ │ │ │ │ ├── MockConfigModifyEvent.java │ │ │ │ │ │ │ ├── MockConfigRemoveEvent.java │ │ │ │ │ │ │ ├── MqWhiteListConfigEvent.java │ │ │ │ │ │ │ ├── ShadowConsumerDisableEvent.java │ │ │ │ │ │ │ ├── ShadowConsumerEnableEvent.java │ │ │ │ │ │ │ ├── ShadowDataSourceConfigModifyEvent.java │ │ │ │ │ │ │ ├── ShadowEsServerDisableEvent.java │ │ │ │ │ │ │ ├── ShadowEsServerRegisterEvent.java │ │ │ │ │ │ │ ├── ShadowHbaseDisableEvent.java │ │ │ │ │ │ │ ├── ShadowHbaseDynamicEvent.java │ │ │ │ │ │ │ ├── ShadowJobDisableEvent.java │ │ │ │ │ │ │ ├── ShadowJobRegisterEvent.java │ │ │ │ │ │ │ ├── ShadowRedisServerDisableEvent.java │ │ │ │ │ │ │ ├── SilenceSwitchOffEvent.java │ │ │ │ │ │ │ ├── SilenceSwitchOnEvent.java │ │ │ │ │ │ │ ├── WhiteListSwitchOffEvent.java │ │ │ │ │ │ │ ├── WhiteListSwitchOnEvent.java │ │ │ │ │ │ │ └── preparation │ │ │ │ │ │ │ ├── ShadowDataSourceActiveEvent.java │ │ │ │ │ │ │ ├── ShadowDataSourceDisableEvent.java │ │ │ │ │ │ │ ├── ShadowEsActiveEvent.java │ │ │ │ │ │ │ ├── ShadowEsDisableEvent.java │ │ │ │ │ │ │ ├── ShadowEsPreCheckEvent.java │ │ │ │ │ │ │ ├── ShadowMongoDisableEvent.java │ │ │ │ │ │ │ ├── ShadowMongoPreCheckEvent.java │ │ │ │ │ │ │ ├── ShadowMqPreCheckEvent.java │ │ │ │ │ │ │ ├── ShadowSfKafkaActiveEvent.java │ │ │ │ │ │ │ └── ShadowSfKafkaPreCheckEvent.java │ │ │ │ │ ├── holder │ │ │ │ │ │ └── SfKafkaHolder.java │ │ │ │ │ ├── listener │ │ │ │ │ │ ├── EventResult.java │ │ │ │ │ │ ├── PradarEventListener.java │ │ │ │ │ │ ├── ShadowConsumerDisableListener.java │ │ │ │ │ │ ├── impl │ │ │ │ │ │ │ └── ShadowImplListener.java │ │ │ │ │ │ └── model │ │ │ │ │ │ │ ├── ShadowConsumerDisableInfo.java │ │ │ │ │ │ │ └── ShadowConsumerEnableInfo.java │ │ │ │ │ └── shared │ │ │ │ │ │ ├── constant │ │ │ │ │ │ ├── BusinssClassIgnore.java │ │ │ │ │ │ ├── DataConstants.java │ │ │ │ │ │ └── DoorConstants.java │ │ │ │ │ │ ├── custominterfacebase │ │ │ │ │ │ ├── Entrance.java │ │ │ │ │ │ └── Exit.java │ │ │ │ │ │ ├── domain │ │ │ │ │ │ └── DoorPlank.java │ │ │ │ │ │ ├── dubbo │ │ │ │ │ │ └── ReferenceProxy.java │ │ │ │ │ │ ├── dynamic │ │ │ │ │ │ ├── ShaDowJobEvent.java │ │ │ │ │ │ └── ShaDowJobListener.java │ │ │ │ │ │ ├── exit │ │ │ │ │ │ ├── ArbiterHttpExit.java │ │ │ │ │ │ ├── HttpMatcher.java │ │ │ │ │ │ └── Matcher.java │ │ │ │ │ │ ├── service │ │ │ │ │ │ ├── DataSourceMeta.java │ │ │ │ │ │ ├── ErrorReporter.java │ │ │ │ │ │ ├── EurakaContext.java │ │ │ │ │ │ ├── EventRouter.java │ │ │ │ │ │ ├── GlobalConfig.java │ │ │ │ │ │ ├── ShadowDatabaseConfigParser.java │ │ │ │ │ │ ├── SimulatorDynamicConfig.java │ │ │ │ │ │ ├── event │ │ │ │ │ │ │ └── IEvent.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── ArbiterEntrance.java │ │ │ │ │ │ └── util │ │ │ │ │ │ ├── PradarSpringUtil.java │ │ │ │ │ │ ├── RocketMQUtils.java │ │ │ │ │ │ └── TbScheduleUtil.java │ │ │ │ ├── base │ │ │ │ │ ├── custominterface │ │ │ │ │ │ ├── AppInterfaceDetailDomain.java │ │ │ │ │ │ └── AppInterfaceDomain.java │ │ │ │ │ └── util │ │ │ │ │ │ └── PropertyUtil.java │ │ │ │ ├── datasource │ │ │ │ │ ├── DatabaseUtils.java │ │ │ │ │ ├── DbMediatorDataSource.java │ │ │ │ │ ├── SqlParser.java │ │ │ │ │ ├── TableParserResult.java │ │ │ │ │ └── util │ │ │ │ │ │ ├── DbType.java │ │ │ │ │ │ ├── DbUrlUtils.java │ │ │ │ │ │ ├── JdbcUrlParser.java │ │ │ │ │ │ ├── ObjectUtils.java │ │ │ │ │ │ ├── SqlMetaData.java │ │ │ │ │ │ └── SqlMetadataParser.java │ │ │ │ ├── entry │ │ │ │ │ └── CheckerEntry.java │ │ │ │ └── mock │ │ │ │ │ ├── ForwardStrategy.java │ │ │ │ │ ├── JsonMockStrategy.java │ │ │ │ │ ├── MockStrategy.java │ │ │ │ │ └── WhiteListStrategy.java │ │ │ │ ├── protocol │ │ │ │ └── udp │ │ │ │ │ ├── DataType.java │ │ │ │ │ ├── TStressTestAgentData.java │ │ │ │ │ ├── UdpThriftSerializer.java │ │ │ │ │ └── UdpTransport.java │ │ │ │ ├── scope │ │ │ │ ├── ConcurrentPool.java │ │ │ │ ├── DefaultInterceptorScope.java │ │ │ │ ├── DefaultInterceptorScopeInvocation.java │ │ │ │ ├── InterceptorScopeFactory.java │ │ │ │ ├── Pool.java │ │ │ │ ├── PoolObjectFactory.java │ │ │ │ └── ScopeFactory.java │ │ │ │ ├── script │ │ │ │ ├── ScriptEvaluator.java │ │ │ │ ├── ScriptManager.java │ │ │ │ ├── bsh │ │ │ │ │ └── GlobalCacheBshScriptEvaluator.java │ │ │ │ └── commons │ │ │ │ │ └── InterpreterWrapper.java │ │ │ │ ├── spi │ │ │ │ ├── ShadowDataSourceProvider.java │ │ │ │ ├── ShadowDataSourceSPIManager.java │ │ │ │ └── ShadowDataSourceServiceProvider.java │ │ │ │ ├── upload │ │ │ │ ├── HttpOnceUploader.java │ │ │ │ ├── HttpScheduledUploader.java │ │ │ │ ├── IUploader.java │ │ │ │ ├── info │ │ │ │ │ ├── AgentInfo.java │ │ │ │ │ └── AppJarInfo.java │ │ │ │ └── uploader │ │ │ │ │ ├── AgentOnlineUploader.java │ │ │ │ │ └── AgentUpdateStatusUploader.java │ │ │ │ └── utils │ │ │ │ ├── ContainerStatsInfoCollector.java │ │ │ │ ├── InnerWhiteListCheckUtil.java │ │ │ │ ├── InsideContainerResourcesInfoCollector.java │ │ │ │ ├── MD5Util.java │ │ │ │ ├── MonitorCollector.java │ │ │ │ ├── ObjectMatchers.java │ │ │ │ └── OutsideContainerResourcesInfoCollector.java │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── module │ │ │ └── pradar │ │ │ └── core │ │ │ ├── PradarCoreModule.java │ │ │ ├── handler │ │ │ ├── DefaultExceptionHandler.java │ │ │ ├── DefaultExecutionTagSupplier.java │ │ │ ├── EmptyExecutionTagSupplier.java │ │ │ └── OnlySilenceExecutionTagSupplier.java │ │ │ └── service │ │ │ ├── DefaultGlobalConfigService.java │ │ │ ├── DefaultPradarInternalService.java │ │ │ └── DefaultPradarService.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-pradar-register │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── module │ │ │ └── register │ │ │ ├── NodeRegisterModule.java │ │ │ ├── register │ │ │ ├── Register.java │ │ │ ├── RegisterFactory.java │ │ │ ├── RegisterOptions.java │ │ │ └── impl │ │ │ │ ├── KafkaRegister.java │ │ │ │ └── ZookeeperRegister.java │ │ │ ├── utils │ │ │ └── SimulatorStatus.java │ │ │ └── zk │ │ │ ├── Lifecycle.java │ │ │ ├── Stoppable.java │ │ │ ├── ZkClient.java │ │ │ ├── ZkHeartbeatNode.java │ │ │ ├── ZkNodeCache.java │ │ │ ├── ZkNodeStat.java │ │ │ ├── ZkPathChildrenCache.java │ │ │ └── impl │ │ │ ├── CuratorZkHeartbeatNode.java │ │ │ ├── CuratorZkNodeCache.java │ │ │ ├── CuratorZkPathChildrenCache.java │ │ │ ├── NetflixCuratorZkClient.java │ │ │ ├── NetflixCuratorZkClientFactory.java │ │ │ ├── ZipCompressionProvider.java │ │ │ ├── ZkClientSpec.java │ │ │ ├── ZkPathStore.java │ │ │ └── ZookeeperClientProvider.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-proxool │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── pamirs │ │ │ │ └── attach │ │ │ │ └── plugin │ │ │ │ └── proxool │ │ │ │ ├── ListenerRegisterStatus.java │ │ │ │ ├── ProxoolConst.java │ │ │ │ ├── ProxoolPlugin.java │ │ │ │ ├── destroy │ │ │ │ └── ProxoolDestroy.java │ │ │ │ ├── interceptor │ │ │ │ ├── ConnectionPoolManagerCreateConnectionPoolInterceptor.java │ │ │ │ ├── DataSourceGetConnectionCutoffInterceptor.java │ │ │ │ ├── ProxoolDriverConnectInterceptor.java │ │ │ │ └── ProxyStatementInvokeInterceptor.java │ │ │ │ └── utils │ │ │ │ ├── ConnectionPoolUtils.java │ │ │ │ ├── DataSourceWrapUtil.java │ │ │ │ └── ProxoolMediaDataSource.java │ │ └── resources │ │ │ ├── README.md │ │ │ └── module.config │ │ └── test │ │ ├── java │ │ └── printCode.groovy │ │ └── resources │ │ └── configName │ ├── module-pulsar │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── pulsar │ │ │ ├── PulsarConstants.java │ │ │ ├── PulsarPlugin.java │ │ │ ├── cache │ │ │ └── ProducerCache.java │ │ │ ├── common │ │ │ ├── MQTraceBean.java │ │ │ ├── MQTraceConstants.java │ │ │ ├── MQTraceContext.java │ │ │ ├── MQType.java │ │ │ ├── MixUtils.java │ │ │ └── PradarLogUtils.java │ │ │ ├── interceptor │ │ │ ├── PulsarProducerInterceptor.java │ │ │ ├── PulsarTraceConsumerInterceptor.java │ │ │ ├── PulsarTraceConsumerInterceptor1.java │ │ │ └── PulsarTraceProducerInterceptor.java │ │ │ ├── pub │ │ │ └── MQSendMessageTraceLog.java │ │ │ └── sub │ │ │ └── MQConsumeMessageTraceLog.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-rabbitmq │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java-rabbitmq │ │ │ └── com │ │ │ │ └── rabbitmq │ │ │ │ └── client │ │ │ │ └── impl │ │ │ │ └── CredentialsProvider.java │ │ ├── java │ │ │ └── com │ │ │ │ └── pamirs │ │ │ │ └── attach │ │ │ │ └── plugin │ │ │ │ └── rabbitmq │ │ │ │ ├── RabbitMQPlugin.java │ │ │ │ ├── RabbitmqConstants.java │ │ │ │ ├── common │ │ │ │ ├── ChannelHolder.java │ │ │ │ ├── ConfigCache.java │ │ │ │ ├── ConsumerDetail.java │ │ │ │ ├── LastMqWhiteListHolder.java │ │ │ │ ├── RabbitmqUtils.java │ │ │ │ ├── ShadowConsumerProxy.java │ │ │ │ └── ThreadPoolInfo.java │ │ │ │ ├── consumer │ │ │ │ ├── AdminApiConsumerMetaDataBuilder.java │ │ │ │ ├── AutorecoveringChannelConsumerMetaDataBuilder.java │ │ │ │ ├── ConsumerMetaData.java │ │ │ │ ├── ConsumerMetaDataBuilder.java │ │ │ │ ├── SpringConsumerDecoratorMetaDataBuilder.java │ │ │ │ ├── SpringConsumerMetaDataBuilder.java │ │ │ │ └── admin │ │ │ │ │ └── support │ │ │ │ │ ├── ConsumerApiResult.java │ │ │ │ │ └── cache │ │ │ │ │ ├── AbstractCacheSupport.java │ │ │ │ │ ├── CacheSupport.java │ │ │ │ │ ├── CacheSupportFactory.java │ │ │ │ │ ├── SimpleLocalCacheSupport.java │ │ │ │ │ ├── WithCacheKey.java │ │ │ │ │ ├── WithIpCacheKeyBuilder.java │ │ │ │ │ ├── WithoutIpCacheKey.java │ │ │ │ │ ├── WithoutIpCacheKeyBuilder.java │ │ │ │ │ ├── ZkUtils.java │ │ │ │ │ ├── ZkWithIpCacheSupport.java │ │ │ │ │ └── ZkWithoutIpCacheSupport.java │ │ │ │ ├── destroy │ │ │ │ ├── RabbitmqDestroy.java │ │ │ │ └── ShadowConsumerDisableListenerImpl.java │ │ │ │ ├── interceptor │ │ │ │ ├── AMQConnectionInterceptor.java │ │ │ │ ├── ChannelNAckInterceptor.java │ │ │ │ ├── ChannelNBasicCancelInterceptor.java │ │ │ │ ├── ChannelNBasicGetInterceptor.java │ │ │ │ ├── ChannelNBasicPublishInterceptor.java │ │ │ │ ├── ChannelNExchangeDeclareInterceptor.java │ │ │ │ ├── ChannelNProcessDeliveryInterceptor.java │ │ │ │ ├── ChannelNQueueBindInterceptor.java │ │ │ │ ├── ChannelNQueueDeclareInterceptor.java │ │ │ │ ├── NotifyConsumerOfShutdownInterceptor.java │ │ │ │ ├── QueueingConsumerHandleInterceptor.java │ │ │ │ ├── SpringBlockingQueueConsumerDeliveryInterceptor.java │ │ │ │ ├── SpringBlockingQueueConsumerDeliveryInterceptorV2.java │ │ │ │ ├── SpringRabbitRabbitAdminDeclareQueueInterceptor.java │ │ │ │ ├── StreamListenerMessageHandlerIntercepter.java │ │ │ │ └── StrictExceptionHandlerInterceptor.java │ │ │ │ ├── listener │ │ │ │ └── RabbitMQShadowPreCheckEventHandler.java │ │ │ │ └── utils │ │ │ │ ├── AddressUtils.java │ │ │ │ ├── AdminAccessInfo.java │ │ │ │ ├── HttpUtils.java │ │ │ │ ├── OnceExecutor.java │ │ │ │ └── RabbitMqUtils.java │ │ └── resources │ │ │ ├── README.md │ │ │ └── module.config │ │ └── test │ │ └── java │ │ └── com │ │ └── pamirs │ │ └── attach │ │ └── plugin │ │ └── rabbitmq │ │ └── interceptor │ │ └── RabbitMqPushConsumerInterCeptorTest.java │ ├── module-rabbitmqv2 │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-rabbitmq │ │ └── com │ │ │ └── rabbitmq │ │ │ └── client │ │ │ └── impl │ │ │ └── CredentialsProvider.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── rabbitmqv2 │ │ │ ├── RabbitMqV2Plugin.java │ │ │ ├── constant │ │ │ └── RabbitMqConstant.java │ │ │ ├── consumer │ │ │ ├── RabbitMqV2Execute.java │ │ │ ├── common │ │ │ │ ├── ChannelHolder.java │ │ │ │ └── ThreadPoolInfo.java │ │ │ ├── config │ │ │ │ └── RabbitMqShadowConfig.java │ │ │ ├── model │ │ │ │ └── AdminAccessInfo.java │ │ │ └── server │ │ │ │ └── RabbitMqShadowServer.java │ │ │ ├── producer │ │ │ ├── factory │ │ │ │ ├── ChannelNFactory.java │ │ │ │ └── ChannelNResource.java │ │ │ └── proxy │ │ │ │ └── BasicPublishProxy.java │ │ │ └── utils │ │ │ └── RabbitMqUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-redis-jedis │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── pamirs │ │ │ │ └── attach │ │ │ │ └── plugin │ │ │ │ └── jedis │ │ │ │ ├── JedisPlugin.java │ │ │ │ ├── RedisConstants.java │ │ │ │ ├── destroy │ │ │ │ └── JedisDestroyed.java │ │ │ │ ├── interceptor │ │ │ │ ├── JedisClusterConnectionInterceptor.java │ │ │ │ ├── JedisConnectionSendCommandInterceptor.java │ │ │ │ ├── JedisConnectionSendCommandTraceInterceptor.java │ │ │ │ ├── JedisConnectionSendProtocolCommandInterceptor.java │ │ │ │ ├── JedisConnectionSendProtocolCommandTraceInterceptor.java │ │ │ │ ├── JedisInterceptor.java │ │ │ │ ├── JedisPipelineBaseInterceptor.java │ │ │ │ ├── JedisSentinelShadowServerInterceptor.java │ │ │ │ ├── JedisSingleClientCutOffInterceptor.java │ │ │ │ ├── MJedisInterceptor.java │ │ │ │ ├── PluginMaxRedisExpireTimeInterceptor.java │ │ │ │ ├── PoolCloseInterceptor.java │ │ │ │ └── RedisDataCheckInterceptor.java │ │ │ │ ├── shadowserver │ │ │ │ ├── JedisClusterFactory.java │ │ │ │ ├── JedisClusterNodesStrategy.java │ │ │ │ ├── JedisFactory.java │ │ │ │ ├── JedisMatchStrategy.java │ │ │ │ ├── JedisNodesStrategy.java │ │ │ │ ├── JedisSentinelFactory.java │ │ │ │ └── JedisSentinelNodesStrategy.java │ │ │ │ └── util │ │ │ │ ├── JedisCacheHandler.java │ │ │ │ ├── JedisConstant.java │ │ │ │ ├── Model.java │ │ │ │ ├── ParameterUtils.java │ │ │ │ └── RedisUtils.java │ │ └── resources │ │ │ ├── README.md │ │ │ └── module.config │ │ └── test │ │ └── java │ │ └── MJedisInterceptorTest.java │ ├── module-redis-lettuce │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── lettuce │ │ │ ├── LettuceConstants.java │ │ │ ├── LettucePlugin.java │ │ │ ├── destroy │ │ │ └── LettuceDestroy.java │ │ │ ├── interceptor │ │ │ ├── ConnectionInterceptor.java │ │ │ ├── DefaultRedisElementWriterWriteInterceptor.java │ │ │ ├── LettuceCloseInterceptor.java │ │ │ ├── LettuceCommandDispatchClusterTestInterceptor.java │ │ │ ├── LettuceCommandDispatchTraceInterceptor.java │ │ │ ├── LettuceMethodClusterTestFirstArgsInterceptor.java │ │ │ ├── LettuceMethodClusterTestFirstSecondArgsArraySplitInterceptor.java │ │ │ ├── LettuceMethodClusterTestFirstSecondArgsInterceptor.java │ │ │ ├── LettuceMethodClusterTestFirstThirdArgsArraySplitInterceptor.java │ │ │ ├── LettuceMethodClusterTestFirstThirdArgsInterceptor.java │ │ │ ├── LettuceMethodClusterTestInterceptor.java │ │ │ ├── LettuceMethodClusterTestSecondArgsInterceptor.java │ │ │ ├── LettuceMethodClusterTestSecondThirdArgsInterceptor.java │ │ │ ├── LettuceMethodClusterTestThirdArgsInterceptor.java │ │ │ ├── LettuceMethodFirstKeyAndOtherKeysInterceptor.java │ │ │ ├── LettuceMethodFirstKeyStreamOffsetArrayInterceptor.java │ │ │ ├── LettuceMethodFirstKeyStreamOffsetInterceptor.java │ │ │ ├── LettuceMethodInterceptor.java │ │ │ ├── LettuceMethodMigrateInterceptor.java │ │ │ ├── LettuceMethodShutdownInterceptor.java │ │ │ ├── MasterSlaveTopologyRefreshGetconnectionInteceptor.java │ │ │ ├── PluginMaxRedisExpireTimeInterceptor.java │ │ │ ├── RedisChannelWriterWriteInterceptor.java │ │ │ ├── RedisClientAttachRedisURIsInterceptor.java │ │ │ ├── RedisClientConstructorInterceptor.java │ │ │ ├── RedisClientPerformanceInterceptor.java │ │ │ ├── RedisClusterClientConstructorInterceptor.java │ │ │ ├── RedisCommandResultInterceptor.java │ │ │ ├── RedisMasterSlaveAttachRedisURIsInterceptor.java │ │ │ ├── RedisMasterSlavePerformanceInterceptor.java │ │ │ ├── SentinelConnectorInterceptor.java │ │ │ ├── SpringLettuceShadowDbInterceptor.java │ │ │ ├── StatefulRedisConnectionAttachRedisURIsInterceptor.java │ │ │ └── spring │ │ │ │ ├── LettuceFactoryProxy.java │ │ │ │ ├── MatchStrategy.java │ │ │ │ ├── SpringRedisClientInfoCollector.java │ │ │ │ └── SpringRedisClientPerformanceInterceptor.java │ │ │ ├── shadowserver │ │ │ ├── LettuceClusterConnectionMediator.java │ │ │ ├── LettuceConnectionMediator.java │ │ │ ├── LettuceDefaultConnectionMediator.java │ │ │ ├── LettuceFactory.java │ │ │ ├── LettuceMasterSlaveFactory.java │ │ │ ├── LettuceMasterStrategy.java │ │ │ ├── LettuceNodesStrategy.java │ │ │ ├── RedisClientPressure.java │ │ │ └── RedisClusterClientPressure.java │ │ │ └── utils │ │ │ ├── InvalidatedResourcesEvictor.java │ │ │ ├── LettuceMetaData.java │ │ │ ├── LettuceUtils.java │ │ │ ├── ParameterUtils.java │ │ │ ├── RedisSerializerHolder.java │ │ │ ├── RedisUtils.java │ │ │ ├── Switcher.java │ │ │ └── Version.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-redis-redisson │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── redisson │ │ │ ├── DeclaredMethod.java │ │ │ ├── RedissonConstants.java │ │ │ ├── RedissonPlugin.java │ │ │ ├── RedissonVersion.java │ │ │ ├── constant │ │ │ └── Constant.java │ │ │ ├── destroy │ │ │ ├── RedissonDestroy.java │ │ │ └── RedissonDestroyed.java │ │ │ ├── factory │ │ │ ├── RedissonClientMediator.java │ │ │ ├── RedissonFactory.java │ │ │ ├── RedissonNodesStrategy.java │ │ │ ├── RedissonReactiveClientMediator.java │ │ │ └── RedissonRxClientMediator.java │ │ │ ├── interceptor │ │ │ ├── BaseRedissonTimeSeriesMethodInterceptor.java │ │ │ ├── ClusterTestArgsWrapperInterceptor.java │ │ │ ├── CommandAsyncServiceMethodInterceptor.java │ │ │ ├── PluginMaxRedisExpireTimeInterceptor.java │ │ │ ├── PluginMaxRedisExpireTimeOneTwoInterceptor.java │ │ │ ├── PluginMaxRedisExpireTimeTwoThreeInterceptor.java │ │ │ ├── PluginMaxRedisExpireTimeZeroOneInterceptor.java │ │ │ ├── ReactiveMethodInterceptor.java │ │ │ ├── RedissonMethodInterceptor.java │ │ │ ├── RedissonStreamAddCustomAsyncInterceptor.java │ │ │ ├── RedissonTraceMethodInterceptor.java │ │ │ ├── RedissonWrapFirstKeyClusterTestInterceptor.java │ │ │ ├── RedissonWrapSecondKeyClusterTestInterceptor.java │ │ │ ├── ShadowDbMethodInterceptor.java │ │ │ └── ShutdownMethodInterceptor.java │ │ │ └── utils │ │ │ ├── CutOffSwitcher.java │ │ │ ├── ParameterUtils.java │ │ │ ├── RedisUtils.java │ │ │ └── RedissonUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-resin │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── resin │ │ │ ├── ResinAsyncListener.java │ │ │ ├── ResinConstans.java │ │ │ ├── ResinPlugin.java │ │ │ └── interceptor │ │ │ ├── HttpServletRequestImplStartAsyncInterceptor.java │ │ │ └── ServletInvocationServiceInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-saturn │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── saturn │ │ │ ├── SaturnPlugin.java │ │ │ └── interceptor │ │ │ └── SaturnJavaJobInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-servlet-common │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── common │ │ │ └── web │ │ │ ├── BufferedServletRequestWrapper.java │ │ │ ├── IBufferedServletRequestWrapper.java │ │ │ ├── PradarServletUtils.java │ │ │ ├── RepeatReadServletRequest.java │ │ │ ├── RequestTracer.java │ │ │ ├── ServletCommonModule.java │ │ │ ├── ServletRequestTracer.java │ │ │ ├── StaticFileFilter.java │ │ │ ├── servlet │ │ │ ├── ServletApiHelper.java │ │ │ └── impl │ │ │ │ ├── Servlet2ApiHelper.java │ │ │ │ └── Servlet3ApiHelper.java │ │ │ └── utils │ │ │ └── Constants.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-shadow-job │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-quartz │ │ └── org │ │ │ └── quartz │ │ │ ├── CronScheduleBuilder.java │ │ │ ├── JobBuilder.java │ │ │ ├── JobKey.java │ │ │ ├── Matcher.java │ │ │ ├── ScheduleBuilder.java │ │ │ ├── Scheduler.java │ │ │ ├── SimpleScheduleBuilder.java │ │ │ ├── Trigger.java │ │ │ ├── TriggerBuilder.java │ │ │ ├── TriggerKey.java │ │ │ ├── impl │ │ │ ├── matchers │ │ │ │ ├── GroupMatcher.java │ │ │ │ └── StringMatcher.java │ │ │ └── triggers │ │ │ │ ├── AbstractTrigger.java │ │ │ │ ├── CoreTrigger.java │ │ │ │ ├── CronTriggerImpl.java │ │ │ │ └── SimpleTriggerImpl.java │ │ │ ├── spi │ │ │ ├── MutableTrigger.java │ │ │ └── OperableTrigger.java │ │ │ └── utils │ │ │ └── Key.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── shadowjob │ │ │ ├── ShadowJobConstants.java │ │ │ ├── ShadowJobPlugin.java │ │ │ ├── adapter │ │ │ ├── LtsAdapter.java │ │ │ ├── QuartzAdapter.java │ │ │ └── XxlJobAdapter.java │ │ │ ├── cache │ │ │ └── ElasticJobCache.java │ │ │ ├── common │ │ │ ├── ClassGeneratorManager.java │ │ │ ├── ElasticJobConfig.java │ │ │ ├── LtsJobTrackerAppContext.java │ │ │ ├── ShaDowJobConstant.java │ │ │ ├── api │ │ │ │ ├── JobAPIFactory.java │ │ │ │ ├── JobNodePath.java │ │ │ │ ├── JobOperateAPI.java │ │ │ │ ├── JobOperateAPIImpl.java │ │ │ │ ├── JobOperateCallback.java │ │ │ │ ├── JobOperateTemplate.java │ │ │ │ └── RegistryCenterFactory.java │ │ │ ├── lts │ │ │ │ ├── JobRunnerShadowRegistry.java │ │ │ │ └── JobRunnerWrapper.java │ │ │ └── quartz │ │ │ │ ├── QuartzJobHandler.java │ │ │ │ ├── QuartzJobHandlerProcessor.java │ │ │ │ └── impl │ │ │ │ ├── Quartz1JobHandler.java │ │ │ │ └── Quartz2JobHandler.java │ │ │ ├── destory │ │ │ └── JobDestroy.java │ │ │ ├── interceptor │ │ │ ├── AcquireAsyncJobsDueCmdInterceptor.java │ │ │ ├── JobCoreConfigurationNewBuilderInterceptor.java │ │ │ ├── JobExecutionContextInterceptor.java │ │ │ ├── JobExecutorFactoryGetJobExecutorInterceptor.java │ │ │ ├── JobRunShellInitializeInterceptor.java │ │ │ ├── JobRunShellInitializeInterceptor_1.java │ │ │ ├── JobRunnerHolderAddInterceptor.java │ │ │ ├── LtsInitAdapterInterceptor.java │ │ │ ├── LtsInterceptor.java │ │ │ ├── LtsJobReceiverInterceptor.java │ │ │ ├── MethodJobHandlerExecuteInterceptor.java │ │ │ ├── ProxyInterceptor.java │ │ │ ├── QuartzInitAdapterInterceptor.java │ │ │ ├── QuartzJobBeanExecuteInterceptor.java │ │ │ ├── ReflectiveMethodInvocationProceedInterceptor.java │ │ │ ├── RequestMappingHandlerAdapterInterceptor.java │ │ │ ├── ReschedulingRunnableInterceptor.java │ │ │ ├── ScheduledMethodRunnableRunInterceptor.java │ │ │ ├── ScheduledTaskRegistrarInterceptor.java │ │ │ ├── SpringContextInterceptor.java │ │ │ ├── XxlInitAdapterInterceptor.java │ │ │ └── XxlOptionInterceptor.java │ │ │ ├── obj │ │ │ ├── MethodInterceptorImpl.java │ │ │ └── PTAcquireAsyncJobsDueRunnable.java │ │ │ ├── shadowRunnable │ │ │ └── PradarShadowJobRunnable.java │ │ │ └── util │ │ │ ├── AcquireAsyncJobsDueRunnableUtils.java │ │ │ └── ElasticJobRegisterUtil.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-shadow-preparation │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── shadow │ │ │ └── preparation │ │ │ ├── ShadowPreparationModule.java │ │ │ ├── checker │ │ │ └── ShadowDataSourceConfigChecker.java │ │ │ ├── command │ │ │ ├── CommandExecuteResult.java │ │ │ ├── EsConfigPushCommand.java │ │ │ ├── EsPreCheckCommand.java │ │ │ ├── JdbcConfigPushCommand.java │ │ │ ├── JdbcPreCheckCommand.java │ │ │ └── processor │ │ │ │ ├── JdbcPreCheckCommandProcessor.java │ │ │ │ └── MongoPreCheckCommandProcessor.java │ │ │ ├── commons │ │ │ ├── Command.java │ │ │ ├── CommandAck.java │ │ │ ├── Config.java │ │ │ └── ConfigAck.java │ │ │ ├── es │ │ │ ├── EsClientFetcher.java │ │ │ └── EsConfigEntity.java │ │ │ ├── jdbc │ │ │ ├── JdbcConnectionUtils.java │ │ │ ├── JdbcDataSourceFetcher.java │ │ │ ├── JdbcTypeFetcher.java │ │ │ ├── constants │ │ │ │ ├── JdbcDataSourceClassPropertiesEnum.java │ │ │ │ └── JdbcTypeEnum.java │ │ │ └── entity │ │ │ │ ├── ConfigPreCheckResult.java │ │ │ │ ├── DataSourceConfig.java │ │ │ │ ├── DataSourceEntity.java │ │ │ │ └── JdbcTableColumnInfos.java │ │ │ └── mongo │ │ │ └── MongoClientsFetcher.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-spring-cache │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── spring │ │ │ └── cache │ │ │ ├── SpringCacheConstants.java │ │ │ ├── SpringCachePlugin.java │ │ │ └── interceptor │ │ │ └── ClusterTestCacheInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-spring-cloud-gateway │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── spring │ │ │ └── cloud │ │ │ └── gateway │ │ │ ├── SpringCloudGatewayConstants.java │ │ │ ├── SpringCloudGatewayPlugin.java │ │ │ ├── filter │ │ │ ├── RequestHttpHeadersFilter.java │ │ │ └── ResponseHttpHeadersFilter.java │ │ │ ├── interceptor │ │ │ ├── ExternalHeaderFilterInterceptor.java │ │ │ ├── FilteringWebHandlerHandleInterceptor.java │ │ │ ├── GatewayFilterChainFilterInterceptor.java │ │ │ ├── GatewayFilterChainFilterV2Interceptor.java │ │ │ └── GatewayFirstFilterChainInterceptor.java │ │ │ └── tracer │ │ │ └── ServerHttpRequestTracer.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-spring-kafka │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── shulie │ │ │ │ └── instrument │ │ │ │ └── module │ │ │ │ └── spring │ │ │ │ └── kafka │ │ │ │ ├── SpringKafkaPlugin.java │ │ │ │ └── consumer │ │ │ │ ├── SpringKafkaConsumerConfig.java │ │ │ │ ├── SpringKafkaConsumerExecute.java │ │ │ │ ├── SpringKafkaShadowServer.java │ │ │ │ └── util │ │ │ │ └── SpringKafkaUtil.java │ │ └── resources │ │ │ ├── README.md │ │ │ └── module.config │ │ └── test │ │ └── java │ │ └── io │ │ └── shulie │ │ └── instrument │ │ └── module │ │ └── spring │ │ └── kafka │ │ └── consumer │ │ └── SpringKafkaConsumerExecuteTest.java │ ├── module-spring-rabbitmq │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-rabbitmq │ │ └── com │ │ │ └── rabbitmq │ │ │ └── client │ │ │ └── impl │ │ │ └── CredentialsProvider.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── spring │ │ │ └── rabbitmq │ │ │ ├── SpringRabbitmqPlugin.java │ │ │ └── consumer │ │ │ ├── SpringRabbitmqShadowConsumerExecute.java │ │ │ ├── config │ │ │ └── SpringRabbitmqShadowConfig.java │ │ │ └── server │ │ │ └── SpringRabbitmqShadowServer.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-spring-web │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── spring │ │ │ └── web │ │ │ ├── SpringWebConstants.java │ │ │ ├── SpringWebPlugin.java │ │ │ ├── interceptor │ │ │ ├── HttpWebHandlerAdapterInterceptor.java │ │ │ ├── SpringWebFilterChainInterceptor.java │ │ │ └── WebHandlerDecoratorInterceptor.java │ │ │ └── trace │ │ │ └── ServerHttpRequestTracer.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-sync-fetch-obj │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── syncfetch │ │ │ ├── SyncPlugin.java │ │ │ └── interceptor │ │ │ ├── SyncObjectAfterFetchInterceptor.java │ │ │ ├── SyncObjectBeforeFetchInterceptor.java │ │ │ └── SyncObjectFetchUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-tomcat-dbcp │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── tomcat │ │ │ └── dbcp │ │ │ ├── ListenerRegisterStatus.java │ │ │ ├── TomcatDbcpPlugin.java │ │ │ ├── destroy │ │ │ └── Dbcp2Destroy.java │ │ │ ├── interceptor │ │ │ ├── TomcatDbcpDataSourceGetConnectionCutoffInterceptor.java │ │ │ └── TomcatPoolingDataSourceGetConnectionInterceptor.java │ │ │ └── util │ │ │ ├── DataSourceWrapUtil.java │ │ │ └── DbcpMediaDataSource.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-undertow │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── undertow │ │ │ ├── UndertowAsyncListener.java │ │ │ ├── UndertowConstants.java │ │ │ ├── UndertowPlugin.java │ │ │ ├── common │ │ │ ├── Servlet2ApiHelperImpl.java │ │ │ └── UndertowRequestTracer.java │ │ │ └── interceptor │ │ │ ├── ConnectorsExecuteRootHandlerInterceptor.java │ │ │ └── HttpServletRequestImplStartAsyncInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-webflux │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── webflux │ │ │ ├── WebFluxPlugin.java │ │ │ ├── common │ │ │ ├── Cache.java │ │ │ ├── PradarServerUtils.java │ │ │ ├── StaticFileFilter.java │ │ │ └── WebFluxConstants.java │ │ │ └── interceptor │ │ │ ├── AbstractServerHttpRequestInterceptor.java │ │ │ ├── BaseHandlerInjector.java │ │ │ ├── ExchangeFunInterceptor.java │ │ │ ├── HandlerResultInterceptor.java │ │ │ ├── HandlerStartInterceptor.java │ │ │ ├── HeaderMethodInterceptor.java │ │ │ └── RequestBuildInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-websphere │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java-ibm │ │ └── com │ │ │ └── ibm │ │ │ ├── websphere │ │ │ └── servlet │ │ │ │ ├── request │ │ │ │ └── IRequest.java │ │ │ │ └── response │ │ │ │ └── IResponse.java │ │ │ ├── ws │ │ │ └── webcontainer │ │ │ │ ├── channel │ │ │ │ └── WCCResponseImpl.java │ │ │ │ └── srt │ │ │ │ ├── SRTServletRequest.java │ │ │ │ └── SRTServletResponse.java │ │ │ └── wsspi │ │ │ ├── http │ │ │ └── channel │ │ │ │ └── HttpResponseMessage.java │ │ │ └── webcontainer │ │ │ └── servlet │ │ │ └── IExtendedResponse.java │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── websphere │ │ │ ├── WebsphereAsyncListener.java │ │ │ ├── WebsphereConstans.java │ │ │ ├── WebspherePlugin.java │ │ │ ├── common │ │ │ ├── HttpServletRequestImpl.java │ │ │ ├── HttpServletResponseImpl.java │ │ │ ├── Servlet2ApiHelperImpl.java │ │ │ ├── ServletInputStreamImpl.java │ │ │ └── ServletOutputStreamImpl.java │ │ │ └── interceptor │ │ │ ├── SRTServletRequestStartAsyncInterceptor.java │ │ │ └── WebContainerHandleRequestInterceptor.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-xmemcached │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── xmemcached │ │ │ ├── XmemcachedConstants.java │ │ │ ├── XmemcachedPlugin.java │ │ │ ├── interceptor │ │ │ ├── MXmemcachedInterceptor.java │ │ │ └── XmemcachedInterceptor.java │ │ │ └── utils │ │ │ └── XmemcachedUtils.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ ├── module-zuul │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pamirs │ │ │ └── attach │ │ │ └── plugin │ │ │ └── zuul │ │ │ ├── ZuulConstants.java │ │ │ ├── ZuulPlugin.java │ │ │ ├── interceptor │ │ │ ├── ZuulBackupInterceptor.java │ │ │ ├── ZuulBeforeInterceptor.java │ │ │ ├── ZuulChannelReadInterceptor.java │ │ │ ├── ZuulEventTriggerInterceptor.java │ │ │ ├── ZuulFilterRunnerInterceptor.java │ │ │ └── ZuulInterceptor.java │ │ │ └── tracer │ │ │ ├── ChannelHandlerContextTracer.java │ │ │ └── ZuulMessageTracer.java │ │ └── resources │ │ ├── README.md │ │ └── module.config │ └── pom.xml ├── instrument-simulator ├── README.md ├── bin │ ├── dump.sh │ ├── simulator-logback.xml │ ├── simulator-packages.sh │ ├── simulator-unit.properties │ ├── simulator.properties │ └── update-version.sh ├── bootstrap-inject │ ├── pom.xml │ ├── simulator-bootstrap-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── pamirs │ │ │ └── pradar │ │ │ ├── BizClassLoaderService.java │ │ │ ├── ContextWrapperObject.java │ │ │ ├── IBizClassLoaderService.java │ │ │ ├── IPradarService.java │ │ │ ├── PradarService.java │ │ │ ├── SyncObjectService.java │ │ │ └── bean │ │ │ ├── SyncObject.java │ │ │ └── SyncObjectData.java │ └── simulator-internal-bootstrap-api │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── pamirs │ │ ├── attach │ │ └── plugin │ │ │ └── dynamic │ │ │ ├── Attachment.java │ │ │ ├── Constant.java │ │ │ ├── Converter.java │ │ │ ├── Filter.java │ │ │ ├── Resolver.java │ │ │ ├── ResourceManager.java │ │ │ ├── Type.java │ │ │ ├── reflect │ │ │ ├── Reflect.java │ │ │ ├── ReflectException.java │ │ │ └── ReflectionUtils.java │ │ │ ├── resource │ │ │ ├── ConcurrentWeakHashMap.java │ │ │ └── DestroyHook.java │ │ │ ├── security │ │ │ ├── DesEncryptor.java │ │ │ └── Encryptor.java │ │ │ ├── template │ │ │ ├── AbstractTemplate.java │ │ │ ├── C3p0Template.java │ │ │ ├── ConnectionPoolTemplate.java │ │ │ ├── DbcpTemplate.java │ │ │ ├── DruidTemplate.java │ │ │ ├── HbaseTemplate.java │ │ │ ├── HikariTemplate.java │ │ │ ├── HttpTemplate.java │ │ │ ├── Info.java │ │ │ ├── ProxoolTemplate.java │ │ │ ├── ReadMe.md │ │ │ ├── RedisTemplate.java │ │ │ ├── Template.java │ │ │ └── TomcatJdbcTemplate.java │ │ │ └── utils │ │ │ ├── Assert.java │ │ │ ├── ConcurrentReferenceHashMap.java │ │ │ ├── ObjectUtils.java │ │ │ └── Test.java │ │ └── pradar │ │ └── internal │ │ ├── GlobalConfigService.java │ │ ├── IConfigFetcher.java │ │ ├── IGlobalConfigService.java │ │ ├── IPradarInternalService.java │ │ ├── PradarInternalService.java │ │ ├── adapter │ │ ├── ExecutionForwardCall.java │ │ ├── ExecutionStrategy.java │ │ └── JobAdapter.java │ │ └── config │ │ ├── ExecutionCall.java │ │ ├── MatchConfig.java │ │ ├── MockConfig.java │ │ ├── ShadowDatabaseConfig.java │ │ ├── ShadowEsServerConfig.java │ │ ├── ShadowHbaseConfig.java │ │ ├── ShadowJob.java │ │ └── ShadowRedisConfig.java ├── instrument-simulator-agent │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── agent │ │ ├── AgentLauncher.java │ │ ├── BootLogger.java │ │ ├── SimulatorClassLoader.java │ │ └── utils │ │ ├── BootResourceLoader.java │ │ └── ModuleUtils.java ├── instrument-simulator-api │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── api │ │ │ ├── LoadCompleted.java │ │ │ ├── ModuleLifecycle.java │ │ │ ├── ModuleLifecycleAdapter.java │ │ │ ├── ProcessControlEntity.java │ │ │ ├── ProcessControlException.java │ │ │ ├── ProcessController.java │ │ │ ├── annotation │ │ │ ├── Command.java │ │ │ ├── Destroyable.java │ │ │ ├── IncludeBootstrap.java │ │ │ ├── IncludeSubClasses.java │ │ │ ├── Interrupted.java │ │ │ ├── ListenerBehavior.java │ │ │ └── Stealth.java │ │ │ ├── event │ │ │ ├── BeforeEvent.java │ │ │ ├── CallBeforeEvent.java │ │ │ ├── CallEvent.java │ │ │ ├── CallReturnEvent.java │ │ │ ├── CallThrowsEvent.java │ │ │ ├── Event.java │ │ │ ├── EventType.java │ │ │ ├── ImmediatelyReturnEvent.java │ │ │ ├── ImmediatelyThrowsEvent.java │ │ │ ├── InvokeEvent.java │ │ │ ├── LineEvent.java │ │ │ ├── ReturnEvent.java │ │ │ └── ThrowsEvent.java │ │ │ ├── extension │ │ │ ├── AdviceListenerWrap.java │ │ │ ├── AdviceListenerWrapBuilder.java │ │ │ └── ExtensionTemplate.java │ │ │ ├── filter │ │ │ ├── AccessFlags.java │ │ │ ├── ClassDescriptor.java │ │ │ ├── ClassNameFilter.java │ │ │ ├── ExtFilter.java │ │ │ ├── ExtFilterFactory.java │ │ │ ├── Filter.java │ │ │ ├── MethodDescriptor.java │ │ │ ├── MultiClassNameFilter.java │ │ │ └── NameRegexFilter.java │ │ │ ├── ignore │ │ │ ├── IgnoreAllow.java │ │ │ ├── IgnoreFunction.java │ │ │ ├── IgnoredTypesBuilder.java │ │ │ ├── IgnoredTypesConfigurer.java │ │ │ ├── IgnoredTypesPredicate.java │ │ │ └── Trie.java │ │ │ ├── instrument │ │ │ ├── EnhanceCallback.java │ │ │ ├── EnhanceTemplate.java │ │ │ ├── InstrumentClass.java │ │ │ └── InstrumentMethod.java │ │ │ ├── listener │ │ │ ├── AdviceListenerCallback.java │ │ │ ├── BizClassLoaderWrapper.java │ │ │ ├── Destroyed.java │ │ │ ├── EventListener.java │ │ │ ├── EventListenerCallback.java │ │ │ ├── InitializingBean.java │ │ │ ├── Interruptable.java │ │ │ ├── Listeners.java │ │ │ ├── NoActionEventListener.java │ │ │ └── ext │ │ │ │ ├── Advice.java │ │ │ │ ├── AdviceAdapterListener.java │ │ │ │ ├── AdviceListener.java │ │ │ │ ├── ArgumentTypeNameMatch.java │ │ │ │ ├── ArgumentTypeNameMatchGroupList.java │ │ │ │ ├── Attachment.java │ │ │ │ ├── Behavior.java │ │ │ │ ├── BehaviorMatchBuilder.java │ │ │ │ ├── BuildingForListeners.java │ │ │ │ ├── ClassMatchBuilder.java │ │ │ │ ├── ClassType.java │ │ │ │ ├── Constructor.java │ │ │ │ ├── EventWatchBuilder.java │ │ │ │ ├── EventWatchCondition.java │ │ │ │ ├── EventWatcher.java │ │ │ │ ├── Group.java │ │ │ │ ├── IBehaviorMatchBuilder.java │ │ │ │ ├── IClassMatchBuilder.java │ │ │ │ ├── IUnWatchingMatchBuilder.java │ │ │ │ ├── IWatchingMatchBuilder.java │ │ │ │ ├── Method.java │ │ │ │ ├── PatternGroupList.java │ │ │ │ ├── PatternType.java │ │ │ │ ├── Progress.java │ │ │ │ ├── ProgressGroup.java │ │ │ │ ├── WatchCallback.java │ │ │ │ └── WatchingMatchBuilder.java │ │ │ ├── obj │ │ │ ├── ModuleLoadInfo.java │ │ │ └── ModuleLoadStatusEnum.java │ │ │ ├── resource │ │ │ ├── DumpResult.java │ │ │ ├── DynamicFieldManager.java │ │ │ ├── InstrumentClassResource.java │ │ │ ├── LoadedClassDataSource.java │ │ │ ├── ModuleCommandInvoker.java │ │ │ ├── ModuleController.java │ │ │ ├── ModuleEventWatcher.java │ │ │ ├── ModuleLoadInfoManager.java │ │ │ ├── ModuleLoader.java │ │ │ ├── ModuleManager.java │ │ │ ├── NoActionProgress.java │ │ │ ├── ObjectManager.java │ │ │ ├── ReleaseResource.java │ │ │ └── SwitcherManager.java │ │ │ ├── scope │ │ │ ├── AttachmentFactory.java │ │ │ ├── ExecutionPolicy.java │ │ │ ├── InterceptorScope.java │ │ │ └── InterceptorScopeInvocation.java │ │ │ ├── spi │ │ │ ├── DeploymentManager.java │ │ │ └── ModuleJarUnLoadSpi.java │ │ │ └── util │ │ │ ├── ArrayUtils.java │ │ │ ├── BehaviorDescriptor.java │ │ │ ├── Castor.java │ │ │ ├── CollectionUtils.java │ │ │ ├── LazyGet.java │ │ │ ├── ObjectIdUtils.java │ │ │ ├── ParameterUtils.java │ │ │ ├── Sequencer.java │ │ │ ├── SimulatorStack.java │ │ │ ├── StringUtil.java │ │ │ ├── ThreadUnsafeSimulatorStack.java │ │ │ └── tag │ │ │ ├── ListenersUtil.java │ │ │ └── TagUtil.java │ │ └── test │ │ └── resources │ │ └── logback.xml ├── instrument-simulator-base-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── api │ │ ├── CommandResponse.java │ │ ├── ExtensionModule.java │ │ ├── LoadMode.java │ │ ├── ModuleException.java │ │ ├── ModuleInfo.java │ │ ├── ModuleRepositoryMode.java │ │ ├── ModuleRuntimeException.java │ │ ├── ModuleSpec.java │ │ ├── ThrowableUtils.java │ │ ├── executors │ │ └── ExecutorServiceFactory.java │ │ ├── guard │ │ ├── Function.java │ │ └── SimulatorGuard.java │ │ ├── reflect │ │ ├── Reflect.java │ │ └── ReflectException.java │ │ ├── resource │ │ └── SimulatorConfig.java │ │ └── utils │ │ └── ParseUtils.java ├── instrument-simulator-core │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── shulie │ │ │ │ └── instrument │ │ │ │ └── simulator │ │ │ │ └── core │ │ │ │ ├── CoreConfigure.java │ │ │ │ ├── CoreLauncher.java │ │ │ │ ├── CoreModule.java │ │ │ │ ├── Simulator.java │ │ │ │ ├── classloader │ │ │ │ ├── BizClassLoaderHolder.java │ │ │ │ ├── ClassLoaderFactory.java │ │ │ │ ├── ClassLoaderNode.java │ │ │ │ ├── ClassLoaderService.java │ │ │ │ ├── ModuleClassLoader.java │ │ │ │ ├── ModuleLoaderException.java │ │ │ │ ├── ModuleRoutingURLClassLoader.java │ │ │ │ ├── ProviderClassLoader.java │ │ │ │ ├── RoutingURLClassLoader.java │ │ │ │ └── impl │ │ │ │ │ ├── ClassLoaderFactoryImpl.java │ │ │ │ │ └── DefaultClassLoaderService.java │ │ │ │ ├── enhance │ │ │ │ ├── Enhancer.java │ │ │ │ ├── EventEnhancer.java │ │ │ │ └── weaver │ │ │ │ │ ├── CodeLock.java │ │ │ │ │ ├── EventBuilderFactory.java │ │ │ │ │ ├── EventListenerHandler.java │ │ │ │ │ ├── InvokeProcessor.java │ │ │ │ │ ├── InvokeProcessorArray.java │ │ │ │ │ └── asm │ │ │ │ │ ├── AsmCallCodeLock.java │ │ │ │ │ ├── AsmCodeEnhancer.java │ │ │ │ │ ├── AsmCodeLock.java │ │ │ │ │ ├── AsmMethodHelper.java │ │ │ │ │ ├── AsmMethods.java │ │ │ │ │ ├── AsmTryCatchBlock.java │ │ │ │ │ ├── AsmTypes.java │ │ │ │ │ └── ReWriteMethod.java │ │ │ │ ├── exception │ │ │ │ ├── SimulatorException.java │ │ │ │ └── SimulatorServerException.java │ │ │ │ ├── extension │ │ │ │ ├── DefaultExtensionTemplate.java │ │ │ │ ├── ExtensionAdviceWrapContainer.java │ │ │ │ └── GlobalAdviceWrapBuilders.java │ │ │ │ ├── ignore │ │ │ │ ├── IgnoredTypesBuilderImpl.java │ │ │ │ ├── IgnoredTypesPredicateImpl.java │ │ │ │ └── configurer │ │ │ │ │ ├── AdditionalLibraryIgnoredTypesConfigurer.java │ │ │ │ │ ├── ExtensionModulePluginIgnoredTypesConfigurer.java │ │ │ │ │ ├── GlobalIgnoredTypesConfigurer.java │ │ │ │ │ ├── InstrumentSimulatorIgnoredTypesConfigurer.java │ │ │ │ │ └── ModulePluginIgnoredTypesConfigurer.java │ │ │ │ ├── inject │ │ │ │ ├── ClassInjector.java │ │ │ │ ├── ModuleClassInjector.java │ │ │ │ ├── impl │ │ │ │ │ ├── BootstrapClassLoaderHandler.java │ │ │ │ │ ├── ModuleJarClassInjector.java │ │ │ │ │ ├── PlainClassLoaderHandler.java │ │ │ │ │ └── URLClassLoaderHandler.java │ │ │ │ └── util │ │ │ │ │ ├── ExtensionFilter.java │ │ │ │ │ ├── FileBinary.java │ │ │ │ │ ├── JarEntryFilter.java │ │ │ │ │ ├── JarReader.java │ │ │ │ │ └── classreading │ │ │ │ │ ├── ClassLoadingChecker.java │ │ │ │ │ ├── DefaultSimpleClassMetadata.java │ │ │ │ │ ├── SimpleClassMetadata.java │ │ │ │ │ └── SimpleClassMetadataReader.java │ │ │ │ ├── instrument │ │ │ │ ├── DefaultEnhanceTemplate.java │ │ │ │ ├── DefaultInstrumentClass.java │ │ │ │ └── DefaultInstrumentMethod.java │ │ │ │ ├── logback │ │ │ │ ├── CustomerDefaultTimeBasedFileNamingAndTriggeringPolicy.java │ │ │ │ ├── CustomerRollingFileAppender.java │ │ │ │ ├── CustomerSizeAndTimeBasedArchiveRemover.java │ │ │ │ ├── CustomerSizeAndTimeBasedFNATP.java │ │ │ │ ├── CustomerSizeAndTimeBasedRollingPolicy.java │ │ │ │ ├── CustomerTimeBasedArchiveRemover.java │ │ │ │ ├── CustomerTimeBasedFileNamingAndTriggeringPolicy.java │ │ │ │ ├── CustomerTimeBasedFileNamingAndTriggeringPolicyBase.java │ │ │ │ ├── CustomerTimeBasedRollingPolicy.java │ │ │ │ └── spi │ │ │ │ │ ├── InstrumentSimulatorLogbackConfigurator.java │ │ │ │ │ └── InstrumentSimulatorSlf4JServiceProvider.java │ │ │ │ ├── manager │ │ │ │ ├── AffectStatistic.java │ │ │ │ ├── BytecodeDumpService.java │ │ │ │ ├── CoreLoadedClassDataSource.java │ │ │ │ ├── CoreModuleManager.java │ │ │ │ ├── ModuleLoader.java │ │ │ │ ├── ProviderManager.java │ │ │ │ ├── SimulatorClassFileTransformer.java │ │ │ │ └── impl │ │ │ │ │ ├── ASMBytecodeDisassembler.java │ │ │ │ │ ├── ASMBytecodeDumpService.java │ │ │ │ │ ├── BytecodeDumpTransformer.java │ │ │ │ │ ├── CostDumpTransformer.java │ │ │ │ │ ├── DefaultCoreLoadedClassDataSource.java │ │ │ │ │ ├── DefaultCoreModuleManager.java │ │ │ │ │ ├── DefaultDeploymentManager.java │ │ │ │ │ ├── DefaultDynamicFieldManager.java │ │ │ │ │ ├── DefaultModuleCommandInvoker.java │ │ │ │ │ ├── DefaultModuleController.java │ │ │ │ │ ├── DefaultModuleEventWatcher.java │ │ │ │ │ ├── DefaultModuleLoadInfoManager.java │ │ │ │ │ ├── DefaultModuleManager.java │ │ │ │ │ ├── DefaultObjectManager.java │ │ │ │ │ ├── DefaultProviderManager.java │ │ │ │ │ ├── DefaultSimulatorClassFileTransformer.java │ │ │ │ │ ├── DefaultSimulatorConfig.java │ │ │ │ │ ├── DefaultSwitcherManager.java │ │ │ │ │ ├── DumpTransformer.java │ │ │ │ │ ├── EventListenerWrapper.java │ │ │ │ │ ├── InternalClassFileTransformer.java │ │ │ │ │ ├── LazyEventListenerProxy.java │ │ │ │ │ ├── LocalModuleLoader.java │ │ │ │ │ ├── ModuleJarLoader.java │ │ │ │ │ ├── ModuleLibLoader.java │ │ │ │ │ ├── ModuleLifeCycleType.java │ │ │ │ │ └── SyncModuleCoreModuleManager.java │ │ │ │ ├── server │ │ │ │ ├── CoreServer.java │ │ │ │ ├── ProxyCoreServer.java │ │ │ │ └── jetty │ │ │ │ │ ├── JettyCoreServer.java │ │ │ │ │ └── servlet │ │ │ │ │ └── ModuleHttpServlet.java │ │ │ │ └── util │ │ │ │ ├── AsmUtils.java │ │ │ │ ├── AssertUtils.java │ │ │ │ ├── BitUtils.java │ │ │ │ ├── CastUtils.java │ │ │ │ ├── ChunkedInputStream.java │ │ │ │ ├── ClassUtils.java │ │ │ │ ├── CompoundEnumeration.java │ │ │ │ ├── ContentLengthInputStream.java │ │ │ │ ├── CustomerReflectUtils.java │ │ │ │ ├── DefaultModuleLoadInfoManagerUtils.java │ │ │ │ ├── EmptyEnumeration.java │ │ │ │ ├── ExceptionUtils.java │ │ │ │ ├── FeatureCodec.java │ │ │ │ ├── HttpResponseHeaderParser.java │ │ │ │ ├── HttpUtils.java │ │ │ │ ├── Initializer.java │ │ │ │ ├── LogbackUtils.java │ │ │ │ ├── MessageUtils.java │ │ │ │ ├── ModuleSpecUtils.java │ │ │ │ ├── NetworkUtils.java │ │ │ │ ├── ReflectUtils.java │ │ │ │ ├── ServiceClassLoader.java │ │ │ │ ├── SimulatorClassUtils.java │ │ │ │ ├── SimulatorStringUtils.java │ │ │ │ ├── ThreadLocalCleaner.java │ │ │ │ ├── UnCaughtException.java │ │ │ │ ├── UnsafeUtils.java │ │ │ │ ├── UseFastConnectionExceptionsEnumeration.java │ │ │ │ ├── VersionUtils.java │ │ │ │ ├── collection │ │ │ │ └── Pair.java │ │ │ │ └── matcher │ │ │ │ ├── ExtFilterMatcher.java │ │ │ │ ├── GroupMatcher.java │ │ │ │ ├── Matcher.java │ │ │ │ ├── MatchingResult.java │ │ │ │ ├── UnsupportedMatcher.java │ │ │ │ └── structure │ │ │ │ ├── Access.java │ │ │ │ ├── AsmClassStructure.java │ │ │ │ ├── BehaviorStructure.java │ │ │ │ ├── ClassStructure.java │ │ │ │ ├── ClassStructureFactory.java │ │ │ │ ├── FamilyClassStructure.java │ │ │ │ ├── JdkClassStructure.java │ │ │ │ └── MemberStructure.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ ├── com.shulie.instrument.simulator.dependencies.ch.qos.logback.classic.spi.Configurator │ │ │ │ └── org.slf4j.spi.SLF4JServiceProvider │ │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ ├── logo │ │ │ └── version │ │ └── test │ │ └── resources │ │ └── logback.xml ├── instrument-simulator-jdk │ ├── instrument-simulator-jdk-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── jdk │ │ │ └── api │ │ │ └── boot │ │ │ └── BootLoader.java │ ├── instrument-simulator-jdk-impl │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── jdk │ │ │ └── impl │ │ │ ├── boot │ │ │ └── BootLoaderFactory.java │ │ │ └── module │ │ │ ├── JavaModule.java │ │ │ └── JavaType.java │ ├── instrument-simulator-jdk8 │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── jdk │ │ │ └── jdk8 │ │ │ └── impl │ │ │ └── boot │ │ │ ├── J9BootLoader.java │ │ │ └── LauncherBootLoader.java │ ├── instrument-simulator-jdk9 │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── jdk │ │ │ └── jdk9 │ │ │ └── boot │ │ │ └── Java9BootLoader.java │ └── pom.xml ├── instrument-simulator-management-provider │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── provider │ │ └── management │ │ ├── EmptyModuleJarLoadingChain.java │ │ └── EmptyModuleLoadingChain.java ├── instrument-simulator-messager │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ ├── com │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── message │ │ │ ├── Action.java │ │ │ ├── ByteCodeExecutable.java │ │ │ ├── ConcurrentWeakHashMap.java │ │ │ ├── DestroyHook.java │ │ │ ├── ExecutionTagSupplier.java │ │ │ ├── MessageHandler.java │ │ │ ├── Messager.java │ │ │ ├── Result.java │ │ │ ├── boot │ │ │ ├── util │ │ │ │ ├── IntHashMap.java │ │ │ │ ├── JvmUtils.java │ │ │ │ └── SystemPropertyKey.java │ │ │ └── version │ │ │ │ ├── JvmType.java │ │ │ │ └── JvmVersion.java │ │ │ └── exception │ │ │ └── ExceptionHandler.java │ │ └── one │ │ └── profiler │ │ ├── AsyncProfiler.java │ │ ├── AsyncProfilerMXBean.java │ │ ├── Counter.java │ │ └── Events.java ├── instrument-simulator-spi │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── spi │ │ ├── ModuleJarLoadingChain.java │ │ ├── ModuleLoadingChain.java │ │ └── SimulatorLifecycle.java ├── module.config ├── pom.xml └── system-modules │ ├── instrument-simulator-debug-model │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── module │ │ └── model │ │ ├── gc │ │ └── GcInfo.java │ │ ├── info │ │ └── CommandInfo.java │ │ ├── jad │ │ └── JadInfo.java │ │ ├── memory │ │ ├── MemoryEntry.java │ │ └── MemoryInfo.java │ │ ├── monitor │ │ └── MonitorView.java │ │ ├── profiler │ │ └── ProfilerModel.java │ │ ├── runtime │ │ └── RuntimeInfo.java │ │ ├── stack │ │ └── StackElement.java │ │ ├── thread │ │ ├── LockInfo.java │ │ ├── MonitorInfo.java │ │ ├── StackElement.java │ │ ├── ThreadInfo.java │ │ ├── ThreadStack.java │ │ └── ThreadStat.java │ │ ├── tomcat │ │ └── TomcatInfo.java │ │ ├── trace │ │ ├── TraceNode.java │ │ └── TraceView.java │ │ ├── trace2 │ │ ├── StackEvent.java │ │ ├── TraceNode.java │ │ └── TraceView.java │ │ ├── utils │ │ └── ResultSerializer.java │ │ ├── vmoption │ │ └── VmOption.java │ │ └── watch │ │ └── WatchView.java │ ├── instrument-simulator-env-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ └── env │ │ │ └── EnvModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-gc-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ └── gc │ │ │ └── GcModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-heapdump-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── heapdump │ │ │ └── HeapDumpModule.java │ │ │ └── util │ │ │ └── RuntimeUtils.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-info-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ └── mgr │ │ │ └── InfoModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-jad-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── jad │ │ │ └── JadModule.java │ │ │ └── util │ │ │ ├── ClassUtils.java │ │ │ └── Decompiler.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-logger-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── logger │ │ │ ├── LoggerModule.java │ │ │ └── common │ │ │ │ ├── Log4j2Helper.java │ │ │ │ ├── Log4jHelper.java │ │ │ │ ├── LogbackHelper.java │ │ │ │ └── LoggerHelper.java │ │ │ └── util │ │ │ ├── AsmRenameUtil.java │ │ │ ├── ClassLoaderUtils.java │ │ │ ├── ReflectException.java │ │ │ ├── ReflectUtils.java │ │ │ └── StringUtils.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-management-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ └── mgr │ │ │ ├── ModuleManagementModule.java │ │ │ └── model │ │ │ └── ModuleInf.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-memory-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ └── memory │ │ │ └── MemoryModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-monitor-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── monitor │ │ │ ├── MonitorListener.java │ │ │ └── MonitorModule.java │ │ │ └── util │ │ │ └── ThreadLocalWatch.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-ognl-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── express │ │ │ ├── ClassLoaderClassResolver.java │ │ │ ├── CustomClassResolver.java │ │ │ ├── Express.java │ │ │ ├── ExpressException.java │ │ │ ├── ExpressFactory.java │ │ │ └── OgnlExpress.java │ │ │ ├── ognl │ │ │ └── OgnlModule.java │ │ │ └── util │ │ │ ├── ClassLoaderUtils.java │ │ │ └── StringUtils.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-profiler-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ └── profiler │ │ │ ├── ParamSupported.java │ │ │ ├── ProfilerModule.java │ │ │ └── utils │ │ │ ├── LibUtils.java │ │ │ ├── OSUtils.java │ │ │ └── PlatformEnum.java │ │ └── resources │ │ ├── async-profiler │ │ ├── libasyncProfiler-linux-aarch64.so │ │ ├── libasyncProfiler-linux-arm.so │ │ ├── libasyncProfiler-linux-x64.so │ │ └── libasyncProfiler-mac-x64.so │ │ └── module.config │ ├── instrument-simulator-runtime-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ └── runtime │ │ │ └── RuntimeModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-sc-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── sc │ │ │ ├── AngjuTest.java │ │ │ └── ScModule.java │ │ │ └── util │ │ │ ├── ClassUtils.java │ │ │ ├── Decompiler.java │ │ │ ├── InterfaceNameRegexFilter.java │ │ │ └── SuperNameRegexFilter.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-stack-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── stack │ │ │ ├── StackListener.java │ │ │ └── StackModule.java │ │ │ └── util │ │ │ └── ThreadUtil.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-stack-trace-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ └── stack │ │ │ └── trace │ │ │ ├── ParamSupported.java │ │ │ ├── TraceListener.java │ │ │ ├── TraceModule.java │ │ │ ├── express │ │ │ ├── ClassLoaderClassResolver.java │ │ │ ├── CustomClassResolver.java │ │ │ ├── Express.java │ │ │ ├── ExpressException.java │ │ │ ├── ExpressFactory.java │ │ │ └── OgnlExpress.java │ │ │ └── util │ │ │ ├── ConcurrentHashSet.java │ │ │ ├── PatternMatchUtils.java │ │ │ ├── ThreadUtil.java │ │ │ └── TraceInfo.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-sysprop-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ └── sysprop │ │ │ └── SystemPropertyModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-thread-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── thread │ │ │ └── ThreadModule.java │ │ │ └── util │ │ │ ├── ConcurrentHashSet.java │ │ │ ├── Express.java │ │ │ ├── RuntimeUtils.java │ │ │ ├── ThreadUtil.java │ │ │ └── TraceInfo.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-tomcat-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── metrics │ │ │ ├── RateCounter.java │ │ │ └── SumRateCounter.java │ │ │ ├── tomcat │ │ │ └── TomcatModule.java │ │ │ └── util │ │ │ └── NetUtils.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-trace-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── express │ │ │ ├── ClassLoaderClassResolver.java │ │ │ ├── CustomClassResolver.java │ │ │ ├── Express.java │ │ │ ├── ExpressException.java │ │ │ ├── ExpressFactory.java │ │ │ └── OgnlExpress.java │ │ │ ├── trace │ │ │ ├── TraceListener.java │ │ │ └── TraceModule.java │ │ │ └── util │ │ │ ├── ConcurrentHashSet.java │ │ │ ├── ThreadUtil.java │ │ │ └── TraceInfo.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-vmoption-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ └── vmoption │ │ │ └── VMOptionModule.java │ │ └── resources │ │ └── module.config │ ├── instrument-simulator-watch-module │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── shulie │ │ │ └── instrument │ │ │ └── simulator │ │ │ └── module │ │ │ ├── ParamSupported.java │ │ │ ├── express │ │ │ ├── ClassLoaderClassResolver.java │ │ │ ├── CustomClassResolver.java │ │ │ ├── Express.java │ │ │ ├── ExpressException.java │ │ │ ├── ExpressFactory.java │ │ │ └── OgnlExpress.java │ │ │ ├── util │ │ │ ├── ThreadUtil.java │ │ │ └── TraceInfo.java │ │ │ └── watch │ │ │ ├── WatchListener.java │ │ │ └── WatchModule.java │ │ └── resources │ │ └── module.config │ └── pom.xml ├── lib └── bsh-2.0b5-shulie.jar ├── module.txt └── simulator-agent ├── README.md ├── bin ├── MANIFEST.MF ├── META-INF │ └── helloword.sh ├── agent-packages.sh ├── agent-unit.properties ├── agent.properties └── simulator-agent-logback.xml ├── module.config ├── pom.xml ├── simulator-agent-api ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── shulie │ └── instrument │ └── simulator │ └── agent │ └── api │ ├── AgentFileResolver.java │ ├── ExternalAPI.java │ ├── model │ ├── AppConfig.java │ ├── CommandExecuteKey.java │ ├── CommandPacket.java │ ├── HeartCommandPacket.java │ ├── HeartRequest.java │ └── Result.java │ └── utils │ ├── HeartCommandConstants.java │ └── HeartCommandUtils.java ├── simulator-agent-core ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── agent │ │ └── core │ │ ├── AgentLauncher.java │ │ ├── CoreLauncher.java │ │ ├── classloader │ │ ├── FrameworkClassLoader.java │ │ └── ProviderClassLoader.java │ │ ├── config │ │ ├── AgentConfigImpl.java │ │ ├── CoreConfig.java │ │ ├── ExternalAPIImpl.java │ │ └── HeartRequestUtil.java │ │ ├── download │ │ ├── FtpOperationClient.java │ │ └── OssOperationClient.java │ │ ├── exception │ │ └── AgentDownloadException.java │ │ ├── gson │ │ ├── FastjsonDateToGsonTypeAdapter.java │ │ ├── ObjectTypeAdapterFactory.java │ │ └── SimulatorGsonFactory.java │ │ ├── log │ │ └── LogAppender.java │ │ ├── logback │ │ ├── CustomerDefaultTimeBasedFileNamingAndTriggeringPolicy.java │ │ ├── CustomerRollingFileAppender.java │ │ ├── CustomerSizeAndTimeBasedArchiveRemover.java │ │ ├── CustomerSizeAndTimeBasedFNATP.java │ │ ├── CustomerSizeAndTimeBasedRollingPolicy.java │ │ ├── CustomerTimeBasedArchiveRemover.java │ │ ├── CustomerTimeBasedFileNamingAndTriggeringPolicy.java │ │ ├── CustomerTimeBasedFileNamingAndTriggeringPolicyBase.java │ │ ├── CustomerTimeBasedRollingPolicy.java │ │ └── spi │ │ │ ├── SimulatorAgentLogbackConfigurator.java │ │ │ └── SimulatorAgentSlf4JServiceProvider.java │ │ ├── register │ │ ├── AgentStatus.java │ │ ├── AgentStatusListener.java │ │ ├── Register.java │ │ ├── RegisterFactory.java │ │ ├── RegisterOptions.java │ │ └── impl │ │ │ ├── KafkaRegister.java │ │ │ └── ZookeeperRegister.java │ │ ├── response │ │ └── Response.java │ │ ├── scheduler │ │ └── HttpAgentScheduler.java │ │ ├── uploader │ │ ├── ApplicationUploader.java │ │ └── HttpApplicationUploader.java │ │ ├── util │ │ ├── AddressUtils.java │ │ ├── ChunkedInputStream.java │ │ ├── ConfigUtils.java │ │ ├── ContentLengthInputStream.java │ │ ├── CustomerReflectUtils.java │ │ ├── DownloadUtils.java │ │ ├── FileUtils.java │ │ ├── FormatUtils.java │ │ ├── HttpUtils.java │ │ ├── IOUtils.java │ │ ├── JarUtils.java │ │ ├── JvmArgsCheckUtils.java │ │ ├── JvmArgsConstants.java │ │ ├── LogbackUtils.java │ │ ├── PidUtils.java │ │ ├── PropertyPlaceholderHelper.java │ │ ├── ReflectUtils.java │ │ ├── SimulatorStringUtils.java │ │ ├── StringBuilderWriter.java │ │ ├── TarGzUtils.java │ │ ├── ThrowableUtils.java │ │ ├── UnCaughtException.java │ │ ├── UpgradeFileUtils.java │ │ └── ZipUtils.java │ │ └── zk │ │ ├── Lifecycle.java │ │ ├── Stoppable.java │ │ ├── ZkClient.java │ │ ├── ZkHeartbeatNode.java │ │ ├── ZkNodeCache.java │ │ ├── ZkNodeStat.java │ │ ├── ZkPathChildrenCache.java │ │ └── impl │ │ ├── CuratorZkHeartbeatNode.java │ │ ├── CuratorZkNodeCache.java │ │ ├── CuratorZkPathChildrenCache.java │ │ ├── NetflixCuratorZkClient.java │ │ ├── NetflixCuratorZkClientFactory.java │ │ ├── ZipCompressionProvider.java │ │ ├── ZkClientSpec.java │ │ └── ZkPathStore.java │ └── resources │ ├── META-INF │ └── services │ │ ├── com.shulie.instrument.simulator.dependencies.ch.qos.logback.classic.spi.Configurator │ │ └── com.shulie.instrument.simulator.dependencies.org.slf4j.spi.SLF4JServiceProvider │ ├── com │ └── shulie │ │ └── instrument │ │ └── simulator │ │ └── agent │ │ ├── logo │ │ └── version │ ├── import-dependencies.config │ └── simulator-agent-logback.xml ├── simulator-agent-provider ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── shulie │ └── instrument │ └── simulator │ └── agent │ └── spi │ └── impl │ ├── model │ └── StorageTypeEnum.java │ └── utils │ ├── FileUtils.java │ └── SimulatorStatus.java ├── simulator-agent-spi ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── shulie │ └── instrument │ └── simulator │ └── agent │ └── spi │ ├── AgentScheduler.java │ ├── CommandExecutor.java │ ├── IdentityExecutor.java │ ├── command │ ├── Command.java │ └── impl │ │ ├── HeartCommand.java │ │ ├── LoadModuleCommand.java │ │ ├── ReloadModuleCommand.java │ │ ├── StartCommand.java │ │ ├── StopCommand.java │ │ └── UnloadModuleCommand.java │ ├── config │ ├── AgentConfig.java │ └── SchedulerArgs.java │ └── model │ └── CommandExecuteResponse.java ├── simulator-bootstrap-extras └── pom.xml ├── simulator-launcher-embedded └── pom.xml ├── simulator-launcher-instrument ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── shulie │ └── instrument │ └── simulator │ └── agent │ └── instrument │ ├── AgentClassLoader.java │ ├── InstrumentLauncher.java │ ├── RuntimeMXBeanUtils.java │ ├── TtlAgentBootstrapper.java │ └── utils │ └── ModuleUtils.java └── simulator-launcher-standalone ├── pom.xml └── src └── main └── java └── com └── shulie └── instrument └── simulator └── agent └── standalone ├── AgentClassLoader.java └── StandaloneLauncher.java /.gitignore: -------------------------------------------------------------------------------- 1 | ### Eclipse ### 2 | .externalToolBuilders 3 | .project 4 | .classpath 5 | .settings 6 | 7 | ### IntelliJ IDEA ### 8 | .idea 9 | *.iml 10 | 11 | ### Jrebel File ### 12 | *rebel.xml.bak 13 | *rebel.xml 14 | 15 | ### Common ### 16 | target 17 | logs 18 | deploy 19 | output 20 | 21 | ### Project ### 22 | hadoop 23 | 24 | .DS_Store 25 | `` 26 | local*.sh 27 | local*.groovy 28 | module.properties -------------------------------------------------------------------------------- /bin/package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | HOME=$(dirname $(pwd)) 4 | 5 | cd ${HOME}/instrument-simulator/bin/ 6 | sh simulator-packages.sh 7 | 8 | isUnNeed=${un_need_modules} 9 | if [ "${isUnNeed}" != "1" ];then 10 | cd ${HOME}/instrument-modules/bin/ 11 | sh packages.sh 12 | fi 13 | 14 | 15 | cd ${HOME}/simulator-agent/bin/ 16 | sh agent-packages.sh 17 | -------------------------------------------------------------------------------- /bin/package_async.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | HOME=$(dirname $(pwd)) 4 | 5 | t=$1 6 | 7 | if [ "$t" == "1" ];then 8 | cd ${HOME}/instrument-simulator/bin/ 9 | sh simulator-packages.sh 10 | fi 11 | 12 | if [ "$t" == "2" ];then 13 | isUnNeed=${un_need_modules} 14 | if [ "${isUnNeed}" != "1" ];then 15 | cd ${HOME}/instrument-modules/bin/ 16 | sh packages.sh 17 | fi 18 | fi 19 | 20 | if [ "$t" == "3" ];then 21 | cd ${HOME}/simulator-agent/bin/ 22 | sh agent-packages.sh 23 | fi 24 | -------------------------------------------------------------------------------- /bin/release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | HOME=$(dirname $(pwd)) 4 | 5 | echo "start package..." 6 | sh ${HOME}/bin/package.sh 7 | echo "end package..." 8 | 9 | echo "start deploy ..." 10 | sh ${HOME}/bin/deploy.sh 11 | echo "end deploy ..." 12 | 13 | cd ${HOME}/instrument-modules/user-modules/module-pradar-core 14 | mvn io.shulie.instrument.module:dependency-processor:1.2:DependencyJarCollect 15 | 16 | echo "release finish ..." 17 | echo "release home package: ${HOME}/deploy" 18 | -------------------------------------------------------------------------------- /bin/release_async.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | HOME=$(dirname $(pwd)) 4 | 5 | echo "start package..." 6 | seq 3|xargs -P 3 -I {} sh ${HOME}/bin/package_async.sh {} 7 | echo "end package..." 8 | 9 | echo "start deploy ..." 10 | sh ${HOME}/bin/deploy.sh 11 | echo "end deploy ..." 12 | 13 | 14 | echo "release finish ..." 15 | echo "release home package: ${HOME}/deploy" 16 | -------------------------------------------------------------------------------- /doc/FAQ.md: -------------------------------------------------------------------------------- 1 | # FQA 2 | 3 | ### 1、agent日志出"Agent提供的userAppKey在数据库中未找到记录"错误 4 | 5 | 错误示例: 6 | 7 | ```aidl 8 | 2021-06-29 11:58:06 [pamirs] WARN SIMULATOR: [FetchConfig] get datasource config error. url=http://10.206.35.24:80/tro-web/api/link/ds/configs/pull?appName=stl-test, status=401, result={"msg":"Agent提供的userAppKey在数据库中未找到记录","status":401}” 9 | ``` 10 | 11 | agent默认的userAppKey与控制台默认的不一致,目前需要手动替换agent的simulator.properties里的appkey配置为:``user.app.key=5b06060a-17cb-4588-bb71-edd7f65035af`` 12 | -------------------------------------------------------------------------------- /doc/FAQEnglish.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/FAQEnglish.md -------------------------------------------------------------------------------- /doc/imgs/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/img.png -------------------------------------------------------------------------------- /doc/imgs/log.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/log.jpg -------------------------------------------------------------------------------- /doc/imgs/loglist.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/loglist.jpg -------------------------------------------------------------------------------- /doc/imgs/plugin-add-config.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/plugin-add-config.jpg -------------------------------------------------------------------------------- /doc/imgs/plugin-add-pluginclass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/plugin-add-pluginclass.jpg -------------------------------------------------------------------------------- /doc/imgs/plugin-new-module.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/plugin-new-module.jpg -------------------------------------------------------------------------------- /doc/imgs/showlog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/doc/imgs/showlog.jpg -------------------------------------------------------------------------------- /doc/instrument-modules/README.md: -------------------------------------------------------------------------------- 1 | # instrument-modules 2 | `instrument-modules`包含了所有用户的自定义模块,所有我们支持的中间件列表全都放在这个工程目录下。 3 | 4 | ## 工程介绍 5 | ### biz-classloader-inject 6 | 7 | 在一些特殊场景下需要将插件中自定义的对象注入到业务中,但是由于类加载的问题,如果直接在插件中直接将自定义的对象直接注入到业务中,则会存在找不到类的问题,但是也不能直接将实现暴露到 bootstrap中因为会存在直接引用业务类的情况,所以此时就需要一种特殊的做法可以将某些类直接注入到业务类加载器中,这个模块就是为了解决这个场景而设计的。 8 | 需要注意的是此模块不能与 simulator 及扩展插件存在直接的交互,交互都必须要通过 bootstrap 中暴露的 API 来完成(不然会存在类加载不到的问题),这个模块下的子模块在打包时都会打到biz-classloader-jars目录下,另外还需要对应的加载配置,需要在 biz-classloader-inject.properties 里面配置触发的类,classname=jar 包称, 9 | 当指定的 classname 触发加载时则将对应 jar 包里面的内容全部注入到对应的类加载器中 10 | 11 | ### bootstrap-inject 12 | 13 | 这个模块下定义所有扩展模块需要向 bootstrap 中暴露的 API,注入到 boostrap 中则所有的类加载器都可访问。需要注意的是暴露到 bootstrap 中的 API 不能存在与 simulator 及扩展模块、业务类直接的引用(因为无法直接访问),通常扩展模块需要向全局暴露一些能力可以通过在 bootstrap 模块中定义对应的钩子,由扩展模块实现并注入进去的方式 14 | 15 | ### user-modules 16 | 17 | 用户扩展模块,这个模块下面包含所有目前已经支持的中间件列表 18 | 19 | ## 插件开发指引 20 | 21 | see [插件开发](./PluginDev.md) -------------------------------------------------------------------------------- /doc/simulator-agent/README.md: -------------------------------------------------------------------------------- 1 | 这个项目的职责主要是负责与控制台进行交互,负责 agent 的升级、加载、卸载、模块升级等操作,需要注意的是这个模块不能直接升级,如果需要升级则需要重新安装。 2 | 3 | ### 工程介绍 4 | 5 | - **bin** 该目录下包含所有的 agent 相关的配置文件和打包脚本 6 | - **simulator-agent-api** agent 工程的 api 模块 7 | - **simulator-agent-core** agent 工程的核心模块,包括 agent 启动的核心流程实现 8 | - **simulator-agent-provider** agent 工程的默认 spi 实现,如果外部需要实现自定义spi 的实现可以将此 jar 包直接替换成自定义实现的 jar 9 | - **simulator-agent-spi agent** 工程默认的 spi 定义,目前只定义了 agent 加载的 spi 10 | - **simulator-launcher-embedded** agent 启动模式之内嵌模式实现,目前还未实现 11 | - **simulator-launcher-insturment** agent 启动模块之指定命令行启动实现,目前已经测试通过的实现方式 12 | - **simulator-launcher-standalone** agent 启动模式之独立进程的启动实现,目前已经有实现但是还未测试通过 13 | 14 | -------------------------------------------------------------------------------- /instrument-modules/bin/packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CURRENT_PATH="$( 4 | cd $(dirname $0) 5 | pwd 6 | )" 7 | PROJECT_PATH=$CURRENT_PATH/.. 8 | 9 | TARGET_DIR=$PROJECT_PATH/target 10 | 11 | # exit shell with err_code 12 | # $1 : err_code 13 | # $2 : err_msg 14 | exit_on_err() { 15 | [[ ! -z "${2}" ]] && echo "${2}" 1>&2 16 | exit ${1} 17 | } 18 | 19 | param="" 20 | if [ "$1" == "" ] 21 | then 22 | param="" 23 | else 24 | ms=$1 25 | echo "package module: $ms" 26 | p=(${ms//,/,io.shulie.instrument.module:module-}) 27 | echo "$p" 28 | param="-pl io.shulie.instrument.module:module-$p" 29 | fi 30 | 31 | mvn clean install -Dmaven.test.skip=true -f ../pom.xml $param || 32 | exit_on_err 1 "package instrument modules failed." 33 | 34 | cp ../biz-classloader-inject/biz-classloader-inject.properties ../target/biz-classloader-jars/biz-classloader-inject.properties 35 | -------------------------------------------------------------------------------- /instrument-modules/biz-classloader-inject/README.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | 此模块下所有的 jar 包都支持指定 class 名称配置来加载指定的 jar 包,这个是为了解决我们需要 3 | 在业务类加载器中注入一些我们的类。这些配置一旦指定后即会jar 包注入,不需要额外的任何操作 -------------------------------------------------------------------------------- /instrument-modules/biz-classloader-inject/biz-classloader-inject.properties: -------------------------------------------------------------------------------- 1 | # biz-classloader-inject.properties assigned class inject jars 2 | # example com.test.Test=xxx.jar, when load this class inject jars 3 | com.dangdang.ddframe.job.api.ElasticJob=biz-classloader-inject-shadow-job-1.0.0.jar 4 | org.springframework.scheduling.quartz.QuartzJobBean=biz-classloader-inject-shadow-job-1.0.0.jar 5 | org.quartz.core.JobRunShell=biz-classloader-inject-shadow-job-1.0.0.jar -------------------------------------------------------------------------------- /instrument-modules/checkstyle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-activemq/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.0 init -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-activemq/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=activemq 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-activemqv2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.0 init -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-activemqv2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=activemqv2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.*,io.shulie.instrument.module.isolation.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common,isolation 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=org.apache.activemq.ActiveMQMessageConsumer -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-aerospike/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | aerospike中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-aerospike/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=aerospike 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-akka/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | akka中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, 5 | 6 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-akka/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=akka 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-druid/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2.0.1.3版本 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-druid/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=alibaba-druid 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.*,com.pamirs.attach.plugin.dynamic.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.3 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-rocketmq/src/main/java/com/pamirs/attach/plugin/alibaba/rocketmq/common/MQType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.alibaba.rocketmq.common; 16 | 17 | /** 18 | * 消息类型枚举 19 | * 20 | * @author: wangxian 21 | * @date:2016/09/29 22 | */ 23 | public enum MQType { 24 | ROCKETMQ 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-rocketmq/src/main/java/com/pamirs/attach/plugin/alibaba/rocketmq/common/OrderlyTraceContexts.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.alibaba.rocketmq.common; 2 | 3 | import com.alibaba.rocketmq.client.hook.ConsumeMessageContext; 4 | 5 | /** 6 | * @author jirenhe | jirenhe@shulie.io 7 | * @since 2021/12/21 2:29 PM 8 | */ 9 | public class OrderlyTraceContexts { 10 | 11 | private final static ThreadLocal contextThreadLocal = new ThreadLocal(); 12 | 13 | public static ConsumeMessageContext get(){ 14 | return contextThreadLocal.get(); 15 | } 16 | 17 | public static void remove(){ 18 | contextThreadLocal.remove(); 19 | } 20 | 21 | public static void set(ConsumeMessageContext context){ 22 | contextThreadLocal.set(context); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-rocketmq/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | rocketmq改造 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-rocketmq/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=alibaba-rocketmq 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.1 12 | dependencies-info=pradar-core@2.0.0.0 13 | sync-fetch-target=com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer#start -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-rocketmqv2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.1 rocketmq发送消息时支持指定MessageQueue -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-alibaba-rocketmqv2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=alibaba-rocketmqv2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.*,io.shulie.instrument.module.isolation.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common,isolation 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.1 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer#start -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-axis/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | alibaba-axis中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-axis/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-axis 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #使用其他模块的包信息 6 | import-package=com.pamirs.pradar.* 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | #使用其他模块的模块ID,import-package和dependencies共同配置才能生效 11 | dependencies=pradar-core 12 | simulator-version=1.0.0- 13 | module-version=2.0.0.0 14 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-cxf/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | alibaba-cxf中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-cxf/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-cxf 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #使用其他模块的包信息 6 | import-package=com.pamirs.pradar.* 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | #使用其他模块的模块ID,import-package和dependencies共同配置才能生效 11 | dependencies=pradar-core 12 | simulator-version=1.0.0- 13 | module-version=2.0.0.0 14 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-dubbo/src/main/java/com/pamirs/attach/plugin/apache/dubbo/adpater/AttachmentCleaner.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.apache.dubbo.adpater; 2 | 3 | import org.apache.dubbo.rpc.RpcInvocation; 4 | 5 | /** 6 | * @author jirenhe | jirenhe@shulie.io 7 | * @since 2022/08/15 8:51 PM 8 | */ 9 | public interface AttachmentCleaner { 10 | void removeAttachment(String key, RpcInvocation invocation); 11 | } 12 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-dubbo/src/main/java/com/pamirs/attach/plugin/apache/dubbo/adpater/impl/DubboHigherAttachmentCleaner.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.apache.dubbo.adpater.impl; 2 | 3 | import com.pamirs.attach.plugin.apache.dubbo.adpater.AttachmentCleaner; 4 | import org.apache.dubbo.rpc.RpcContext; 5 | import org.apache.dubbo.rpc.RpcInvocation; 6 | 7 | /** 8 | * @author jirenhe | jirenhe@shulie.io 9 | * @since 2022/08/15 8:52 PM 10 | */ 11 | public class DubboHigherAttachmentCleaner implements AttachmentCleaner { 12 | @Override 13 | public void removeAttachment(String key, RpcInvocation invocation) { 14 | RpcContext.getContext().removeAttachment(key); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-dubbo/src/main/java/com/pamirs/attach/plugin/apache/dubbo/adpater/impl/DubboLowerAttachmentCleaner.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.apache.dubbo.adpater.impl; 2 | 3 | import com.pamirs.attach.plugin.apache.dubbo.adpater.AttachmentCleaner; 4 | import org.apache.dubbo.rpc.RpcInvocation; 5 | 6 | /** 7 | * @author jirenhe | jirenhe@shulie.io 8 | * @since 2022/08/15 8:52 PM 9 | */ 10 | public class DubboLowerAttachmentCleaner implements AttachmentCleaner { 11 | @Override 12 | public void removeAttachment(String key, RpcInvocation invocation) { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-dubbo/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | apache-dubbo中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, 5 | 6 | 2.0.0.1版本: 7 | 1、支持mock返回值功能 8 | 2、修复mock可能的高并发问题 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-dubbo/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-dubbo 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #使用其他模块的包信息 6 | import-package=com.pamirs.pradar.*,com.google.gson.* 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | #使用其他模块的模块ID,import-package和dependencies共同配置才能生效 11 | dependencies=pradar-core 12 | simulator-version=1.0.0- 13 | module-version=2.0.0.1 14 | dependencies-info=pradar-core@2.0.0.1,pradar-config-fetcher@2.0.0.1 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-hbase/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.2 异步创建影子connection,防止影子配置错误时连接过长,十几分钟 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-hbase/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-hbase 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.*,com.pamirs.attach.plugin.dynamic.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.2 12 | dependencies-info=pradar-core@2.0.0.0,datasource-common@2.0.0.0 13 | 14 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka-stream/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | kafka-stream重构 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka-stream/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=kafka-stream 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka-streamv2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | kafka-stream新版支持 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka-streamv2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=kafka-streamv2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | #sync-fetch-target=org.apache.kafka.streams.kstream.internals.KStreamMap$KStreamMapProcessor#process,org.apache.kafka.streams.kstream.internals.KStreamPeek$KStreamPeekProcessor#process 14 | sync-fetch-target=org.apache.kafka.streams.KafkaStreams#start -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka/src/main/java-kafka/org/apache/kafka/common/utils/Timer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.apache.kafka.common.utils; 16 | 17 | /** 18 | * @author jirenhe | jirenhe@shulie.io 19 | * @since 2021/05/12 5:58 下午 20 | */ 21 | public class Timer { 22 | 23 | public long remainingMs() { 24 | return 0L; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka/src/main/java/com/pamirs/attach/plugin/apache/kafka/interceptor/CreateRawConsumerInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.apache.kafka.interceptor; 2 | 3 | import com.pamirs.attach.plugin.apache.kafka.destroy.KafkaDestroy; 4 | import com.pamirs.attach.plugin.apache.kafka.origin.ConsumerHolder; 5 | import com.pamirs.pradar.interceptor.AroundInterceptor; 6 | import com.shulie.instrument.simulator.api.annotation.Destroyable; 7 | import com.shulie.instrument.simulator.api.listener.ext.Advice; 8 | import org.apache.kafka.clients.consumer.Consumer; 9 | 10 | @Destroyable(KafkaDestroy.class) 11 | public class CreateRawConsumerInterceptor extends AroundInterceptor { 12 | 13 | @Override 14 | public void doAfter(Advice advice) throws Throwable { 15 | Object returnObj = advice.getReturnObj(); 16 | ConsumerHolder.addWorkWithSpring((Consumer)returnObj); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.1 反射调整 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafka/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=kafka 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.1 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=org.apache.kafka.clients.consumer.KafkaConsumer -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafkav2/src/main/java-kafka/org/apache/kafka/common/utils/Timer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.apache.kafka.common.utils; 16 | 17 | /** 18 | * @author jirenhe | jirenhe@shulie.io 19 | * @since 2021/05/12 5:58 下午 20 | */ 21 | public class Timer { 22 | 23 | public long remainingMs() { 24 | return 0L; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafkav2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.1 修复kafka发送消息时可能有多个PT前缀问题 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-kafkav2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=kafkav2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.*,io.shulie.instrument.module.isolation.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common,isolation 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.1 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=org.apache.kafka.clients.consumer.KafkaConsumer#subscribe -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-rocketmq/src/main/java/com/pamirs/attach/plugin/apache/rocketmq/common/MQType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.apache.rocketmq.common; 16 | 17 | /** 18 | * 消息类型枚举 19 | * 20 | * @author: wangxian 21 | * @date:2016/09/29 22 | */ 23 | public enum MQType { 24 | ROCKETMQ 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-rocketmq/src/main/java/com/pamirs/attach/plugin/apache/rocketmq/common/OrderlyTraceContexts.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.apache.rocketmq.common; 2 | 3 | import org.apache.rocketmq.client.hook.ConsumeMessageContext; 4 | 5 | /** 6 | * @author jirenhe | jirenhe@shulie.io 7 | * @since 2021/12/21 2:29 PM 8 | */ 9 | public class OrderlyTraceContexts { 10 | 11 | private final static ThreadLocal contextThreadLocal = new ThreadLocal(); 12 | 13 | public static ConsumeMessageContext get(){ 14 | return contextThreadLocal.get(); 15 | } 16 | 17 | public static void remove(){ 18 | contextThreadLocal.remove(); 19 | } 20 | 21 | public static void set(ConsumeMessageContext context){ 22 | contextThreadLocal.set(context); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-rocketmq/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.3 发送消息的hook调整,不影响框架的hook -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-rocketmq/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-rocketmq 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.3 12 | dependencies-info=pradar-core@2.0.0.0 13 | sync-fetch-target=org.apache.rocketmq.client.consumer.DefaultMQPushConsumer#start -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-rocketmqv2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 新版mq改造 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-rocketmqv2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-rocketmqv2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.*,io.shulie.instrument.module.isolation.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common,isolation 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=org.apache.rocketmq.client.consumer.DefaultMQPushConsumer#start -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-tomcat-jdbc/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.3 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-apache-tomcat-jdbc/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=apache-tomcat-jdbc 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.3 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-async-httpclient/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.1 支持返回值mock和groovy脚本mock -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-async-httpclient/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=async-httpclient 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.google.gson.* 6 | 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | dependencies=pradar-core 11 | simulator-version=1.0.0- 12 | module-version=2.0.0.1 13 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-atomikos/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 支持影子库账密前缀处理。 2 | 仿真系统新增配置项: 3 | shadow.datasource.account.prefix(前缀参数,默认是PT_) 4 | shadow.datasource.account.suffix(后缀参数,默认是空字符串) 5 | 说明:假设原业务库账号为 admin,密码为 password。现影子库页面上无需配置账号密码,会自动以 PT_admin 作为影子库账号, PT_password 作为影子库密码去连接影子库。 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-atomikos/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=atomikos 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.0 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-c3p0/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.2 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-c3p0/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=c3p0 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.1 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 13 | sync-fetch-target=com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-caffeine/src/main/java/com/pamirs/attach/plugin/caffeine/CaffeineConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.caffeine; 16 | 17 | /** 18 | * @author jirenhe | jirenhe@shulie.io 19 | * @since 2021/03/22 11:34 上午 20 | */ 21 | public class CaffeineConstants { 22 | 23 | public static final String MODULE_NAME = "caffeine"; 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-caffeine/src/main/java/com/pamirs/attach/plugin/caffeine/interceptor/CacheLoaderInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.caffeine.interceptor; 2 | 3 | import com.pamirs.pradar.cache.ClusterTestCacheWrapperKey; 4 | import com.pamirs.pradar.interceptor.ModificationInterceptorAdaptor; 5 | import com.shulie.instrument.simulator.api.listener.ext.Advice; 6 | 7 | public class CacheLoaderInterceptor extends ModificationInterceptorAdaptor { 8 | 9 | @Override 10 | public Object[] getParameter0(Advice advice) { 11 | Object[] args = advice.getParameterArray(); 12 | for (int i = 0; i < args.length; i++) { 13 | if (args[i] instanceof ClusterTestCacheWrapperKey) { 14 | args[i] = ((ClusterTestCacheWrapperKey)args[i]).getKey(); 15 | break; 16 | } 17 | } 18 | return args; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-caffeine/src/main/java/com/pamirs/attach/plugin/caffeine/utils/WrapLambda.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.caffeine.utils; 16 | 17 | /** 18 | * @author jirenhe | jirenhe@shulie.io 19 | * @since 2021/03/30 8:11 下午 20 | */ 21 | public interface WrapLambda { 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-caffeine/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | caffeine中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-caffeine/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=caffeine 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-catalina/src/main/java/com/pamirs/attach/plugin/catalina/utils/Constants.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.catalina.utils; 2 | 3 | /** 4 | * @author angju 5 | * @date 2023/4/3 10:29 6 | */ 7 | public class Constants { 8 | public static final String PRADAR_CLUSTER_FLAG_GW = "pradar_cluster_flag_gw"; 9 | public static final String extendParamEnd = "pradar_cluster_flag_gw_end"; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-catalina/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.2 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-catalina/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=catalina 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,com.alibaba.fastjson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.2 12 | dependencies-info=servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-cluster-test-check/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.2 修复class判断时以来pradar-core引起的ClassNoDefError -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-cluster-test-check/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=cluster-test-check 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.shulie.instrument.simulator.dependencies.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | #dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.2 12 | async=false -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-command-channel/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | command-channel 中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-command-channel/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=command-channel 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.shulie.instrument.simulator.module.model.*,org.apache.commons.io.*,org.apache.zookeeper.*,org.apache.curator.*,org.slf4j.*,com.shulie.instrument.simulator.dependencies.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | # dependency simulator version 11 | simulator-version=1.0.0- 12 | middleware-module=false 13 | # must use 14 | must-use=true 15 | module-version=2.0.0.0 16 | dependencies-info=pradar-core@2.0.0.0 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-cus-trace/src/main/java/com/pamirs/attach/plugin/cus/trace/module/CusTraceConstans.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.cus.trace.module; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2023/1/3 6 | */ 7 | public class CusTraceConstans { 8 | public static final String MIDDLEWARE_NAME = "cus-trace"; 9 | } 10 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-cus-trace/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | mock中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-cus-trace/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=cus-trace 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.google.gson.* 6 | 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | dependencies=pradar-core 11 | simulator-version=1.0.0- 12 | module-version=2.0.0.0 13 | dependencies-info=pradar-core@2.0.0.0 14 | middleware-module=false -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-datasource-common/src/main/java/com/pamirs/attach/plugin/common/datasource/biz/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | /** 16 | * @Description 所有的关于业务数据源的兜底校验 17 | * @Author xiaobin.zfb 18 | * @mail xiaobin@shulie.io 19 | * @Date 2020/9/11 11:28 上午 20 | */ 21 | package com.pamirs.attach.plugin.common.datasource.biz; 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-datasource-common/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | datasource-common中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-datasource-common/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=datasource-common 2 | #export-class= 3 | #import-class= 4 | export-package=com.pamirs.attach.plugin.common.datasource.* 5 | import-package=com.pamirs.pradar.*,com.shulie.druid.*,com.shulie.instrument.simulator.dependencies.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | # must use 12 | must-use=true 13 | middleware-module=false 14 | module-version=2.0.0.0 15 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dbcp/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.2 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dbcp/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=dbcp 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.2 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dbcp2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.2 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dbcp2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=dbcp2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.2 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dynamic-resource/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | io.shulie.instrument.module 7 | module-dynamic-resource 8 | jar 9 | 10 | 11 | module-dynamic-resource 12 | 13 | ${project.artifactId} ${project.version} 14 | 15 | io.shulie.instrument.module 16 | user-modules 17 | 1.0.0 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dynamic-resource/src/main/java/com/pamirs/attach/plugin/dynamic/Constant.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.dynamic; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2021/8/18 22:54 20 | * @Description: 21 | */ 22 | public interface Constant { 23 | String MODULE_NAME = "dynamic-resource-common"; 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dynamic-resource/src/main/java/com/pamirs/attach/plugin/dynamic/Resolver.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.dynamic; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2021/8/18 00:03 20 | * @Description: 21 | */ 22 | public interface Resolver { 23 | V resolver(K t); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dynamic-resource/src/main/java/com/pamirs/attach/plugin/dynamic/template/HttpTemplate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.dynamic.template; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2021/8/18 13:42 20 | * @Description: 21 | */ 22 | public class HttpTemplate { 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dynamic-resource/src/main/java/com/pamirs/attach/plugin/dynamic/template/Template.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.dynamic.template; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2021/8/18 13:41 20 | * @Description: 21 | */ 22 | public interface Template { 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-dynamic-resource/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=dynamic-resource-common 2 | #export-class= 3 | #import-class= 4 | export-package=com.pamirs.attach.plugin.dynamic.* 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | # must use 12 | must-use=true -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-ehcache/src/main/java/com/pamirs/attach/plugin/ehcache/EhcacheConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.ehcache; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/12/15 8:22 下午 20 | */ 21 | public class EhcacheConstants { 22 | public final static String MODULE_NAME = "ehcache"; 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-ehcache/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.2 修复spring-cache底层用ehcache报ClusterTestCacheWrapperKey加载不到问题 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-ehcache/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=ehcache 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.2 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/java-elasticsearch/org/elasticsearch/action/ActionType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.elasticsearch.action; 16 | 17 | import org.elasticsearch.action.ActionResponse; 18 | 19 | /** 20 | * @author jirenhe | jirenhe@shulie.io 21 | * @since 2021/04/20 10:18 上午 22 | */ 23 | public class ActionType { 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/java-elasticsearch/org/elasticsearch/common/xcontent/DeprecationHandler.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.elasticsearch.common.xcontent; 16 | 17 | /** 18 | * @Description 19 | * @Author xiaobin.zfb 20 | * @mail xiaobin@shulie.io 21 | * @Date 2020/8/10 5:39 下午 22 | */ 23 | public class DeprecationHandler { 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/java-elasticsearch/org/elasticsearch/common/xcontent/NamedXContentRegistry.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.elasticsearch.common.xcontent; 16 | 17 | /** 18 | * @Description 19 | * @Author xiaobin.zfb 20 | * @mail xiaobin@shulie.io 21 | * @Date 2020/8/10 5:39 下午 22 | */ 23 | public class NamedXContentRegistry { 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/java-elasticsearch/org/elasticsearch/common/xcontent/ToXContentObject.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.elasticsearch.common.xcontent; 16 | 17 | /** 18 | * @Description 19 | * @Author xiaobin.zfb 20 | * @mail xiaobin@shulie.io 21 | * @Date 2020/8/10 5:38 下午 22 | */ 23 | public interface ToXContentObject { 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/java/com/pamirs/attach/plugin/es/common/impl/MainRequestIndexRename.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.es.common.impl; 2 | 3 | import java.util.Collections; 4 | import java.util.List; 5 | 6 | public class MainRequestIndexRename extends AbstractReadRequestIndexRename{ 7 | @Override 8 | public String getName() { 9 | return "ping"; 10 | } 11 | 12 | @Override 13 | public List reindex0(Object target) { 14 | return Collections.emptyList(); 15 | } 16 | 17 | @Override 18 | public List getIndex0(Object target) { 19 | return Collections.emptyList(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/java/com/pamirs/attach/plugin/es/common/impl/SearchScrollIndexRename.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.es.common.impl; 2 | 3 | import java.util.Collections; 4 | import java.util.List; 5 | 6 | public class SearchScrollIndexRename extends AbstractReadRequestIndexRename{ 7 | 8 | @Override 9 | public String getName() { 10 | return "scroll"; 11 | } 12 | 13 | @Override 14 | public List reindex0(Object target) { 15 | return Collections.emptyList(); 16 | } 17 | 18 | @Override 19 | public List getIndex0(Object target) { 20 | return Collections.emptyList(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.6 支持ping请求 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-elasticsearch/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=elasticsearch 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.6 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-feign/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.6 feign支持sentinel限流降级 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-feign/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=feign 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.shulie.instrument.simulator.dependencies.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.6 12 | dependencies-info=pradar-core@2.0.0.1 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-google-guava/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | google-guava中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-google-guava/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=google-guava 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-google-httpclient/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | google-httpclient中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-google-httpclient/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=google-httpclient 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-grpc/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | grpc中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-grpc/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=grpc 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hbase/src/main/java/com/pamirs/attach/plugin/hbase/HbaseConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.hbase; 16 | 17 | import com.pamirs.pradar.MiddlewareType; 18 | 19 | public interface HbaseConstants { 20 | 21 | int PLUGIN_TYPE = MiddlewareType.TYPE_DB; 22 | 23 | String PLUGIN_NAME = "hbase"; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hbase/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | hbase中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, 5 | 2.0.0.1 6 | - hbase支持影子库影子表模式 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hbase/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=aliyun-hbase 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,org.apache.commons.lang.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hessian/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.3 修复hessian获取trace是type不正确 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hessian/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=hessian 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.3 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hikariCP/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.2 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hikariCP/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=hikaricp 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.2 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-httpclient/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.6 httpclient获取请求体修改 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-httpclient/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=httpclient 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.google.gson.* 6 | 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | dependencies=pradar-core 11 | simulator-version=1.0.0- 12 | module-version=2.0.0.6 13 | dependencies-info=pradar-core@2.0.0.1,pradar-config-fetcher@2.0.0.1 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-httpserver/src/main/java/com/pamirs/attach/plugin/httpserver/HttpServerConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.httpserver; 16 | 17 | public class HttpServerConstants { 18 | 19 | public static String PLUGIN_NAME = "httpserver"; 20 | } 21 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-httpserver/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | httpserver中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-httpserver/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=httpserver 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hystrix/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | hystrix中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-hystrix/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=hystrix 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/common/ResourceInit.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.common; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/8/2 6 | */ 7 | public interface ResourceInit { 8 | T init(); 9 | } 10 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/exception/IsolationRuntimeException.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.exception; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/7/26 6 | */ 7 | public class IsolationRuntimeException extends RuntimeException { 8 | public IsolationRuntimeException() { 9 | super(); 10 | } 11 | 12 | public IsolationRuntimeException(String message) { 13 | super(message); 14 | } 15 | 16 | public IsolationRuntimeException(String message, Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public IsolationRuntimeException(Throwable cause) { 21 | super(cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/proxy/ProxyCache.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.proxy; 2 | 3 | import java.util.WeakHashMap; 4 | 5 | /** 6 | * @author Licey 7 | * @date 2022/7/26 8 | */ 9 | public class ProxyCache { 10 | } 11 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/proxy/ShadowMethodProxy.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.proxy; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | /** 6 | * @author Licey 7 | * @date 2022/8/1 8 | */ 9 | public interface ShadowMethodProxy { 10 | Object executeMethod(Object shadowTarget, Method method, Object... args) throws Exception; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/proxy/impl/ModifyParamShadowMethodProxy.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.proxy.impl; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | /** 6 | * @author Licey 7 | * @date 2022/8/5 8 | */ 9 | public abstract class ModifyParamShadowMethodProxy extends RouteShadowMethodProxy { 10 | 11 | @Override 12 | public Object executeMethod(Object shadowTarget, Method method, Object... args) throws Exception { 13 | return super.executeMethod(shadowTarget, method, fetchParam(shadowTarget, method, args)); 14 | } 15 | 16 | public abstract Object[] fetchParam(Object shadowTarget, Method method, Object... args); 17 | } 18 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/proxy/impl/NoSupportShadowMethodProxy.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.proxy.impl; 2 | 3 | import io.shulie.instrument.module.isolation.proxy.ShadowMethodProxy; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | /** 8 | * @author Licey 9 | * @date 2022/8/8 10 | */ 11 | public class NoSupportShadowMethodProxy implements ShadowMethodProxy { 12 | @Override 13 | public Object executeMethod(Object shadowTarget, Method method, Object... args) throws Exception { 14 | throw new RuntimeException("not support route method " + method.getName() + " in class:" + shadowTarget.getClass()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/proxy/impl/RouteShadowMethodProxy.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.proxy.impl; 2 | 3 | import io.shulie.instrument.module.isolation.proxy.ShadowMethodProxy; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | /** 8 | * @author Licey 9 | * @date 2022/8/1 10 | */ 11 | public class RouteShadowMethodProxy implements ShadowMethodProxy { 12 | @Override 13 | public Object executeMethod(Object shadowTarget, Method method, Object... args) throws Exception { 14 | return method.invoke(shadowTarget, args); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/resource/ShadowCacheManager.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.resource; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/7/26 6 | */ 7 | public class ShadowCacheManager { 8 | } 9 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/resource/ShadowResourceLifecycle.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.resource; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/7/26 6 | */ 7 | public interface ShadowResourceLifecycle { 8 | 9 | Object getTarget(); 10 | 11 | boolean isRunning(); 12 | 13 | void start(); 14 | 15 | void destroy(long timeout); 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/resource/ShadowResourceProxyFactory.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.resource; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/8/1 6 | */ 7 | public interface ShadowResourceProxyFactory { 8 | 9 | /** 10 | * 获取影子对象 11 | * 12 | * @param bizTarget 业务对象 13 | * @return ShadowResourceLifecycle 14 | */ 15 | ShadowResourceLifecycle createShadowResource(Object bizTarget); 16 | 17 | /** 18 | * 判断是否需要路由 19 | * 20 | * @param target 对象 21 | * @return true需要路由,false不需要路由 22 | */ 23 | boolean needRoute(Object target); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/java/io/shulie/instrument/module/isolation/route/exception/IsolationRouteRuntimeException.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.isolation.route.exception; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/7/26 6 | */ 7 | public class IsolationRouteRuntimeException extends RuntimeException{ 8 | public IsolationRouteRuntimeException() { 9 | super(); 10 | } 11 | 12 | public IsolationRouteRuntimeException(String message) { 13 | super(message); 14 | } 15 | 16 | public IsolationRouteRuntimeException(String message, Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public IsolationRouteRuntimeException(Throwable cause) { 21 | super(cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 插件隔离模块 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-isolation/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=isolation 2 | #export-class= 3 | #import-class= 4 | export-package=io.shulie.instrument.module.isolation.* 5 | import-package=com.pamirs.pradar.*,com.google.common.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 13 | middleware-module=false -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jdbc-trace/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | jdbc层面记录trace -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jdbc-trace/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=jdbc-trace 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jdk-http/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.6 修复post/put请求mock时打印trace报错问题 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jdk-http/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=jdk-http 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.6 12 | dependencies-info=pradar-core@2.0.0.1 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jersey/src/main/java/com/pamirs/attach/plugin/jersey/JerseyConstants.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.jersey; 2 | 3 | import com.pamirs.pradar.MiddlewareType; 4 | 5 | /** 6 | * @author jirenhe | jirenhe@shulie.io 7 | * @since 2021/12/02 3:29 下午 8 | */ 9 | public class JerseyConstants { 10 | public static final String PLUGIN_NAME = "jersey"; 11 | public static final int CLIENT_PLUGIN_TYPE = MiddlewareType.TYPE_RPC;; 12 | } 13 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jersey/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=jersey 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetcache/src/main/java/com/pamirs/attach/plugin/jetcache/JetCacheConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.jetcache; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/12/15 8:22 下午 20 | */ 21 | public class JetCacheConstants { 22 | public final static String MODULE_NAME = "jetcache"; 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetcache/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | jetcache中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetcache/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=jetcache 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetty/src/main/java-jetty/org/eclipse/jetty/server/AbstractHttpConnection.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.eclipse.jetty.server; 16 | 17 | public abstract class AbstractHttpConnection { 18 | public Request getRequest() { 19 | return null; 20 | } 21 | 22 | public Response getResponse() { 23 | return null; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetty/src/main/java-jetty/org/eclipse/jetty/server/HttpConnection.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package org.eclipse.jetty.server; 16 | 17 | public class HttpConnection { 18 | public Request getRequest() { 19 | return null; 20 | } 21 | 22 | public Response getResponse() { 23 | return null; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetty/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 修复jetty增强点重复进入bug -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-jetty/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=jetty 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.1 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log-data-pusher/src/main/java/com/shulie/instrument/module/log/data/pusher/log/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | /** 16 | * 日志投递的实现 17 | * 18 | * @author xiaobin.zfb 19 | * @since 2020/8/6 7:42 下午 20 | */ 21 | package com.shulie.instrument.simulator.log.data.pusher.log; 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log-data-pusher/src/main/java/com/shulie/instrument/module/log/data/pusher/push/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | /** 16 | * 日志推送服务 17 | * 18 | * @author xiaobin.zfb 19 | * @since 2020/8/6 10:17 下午 20 | */ 21 | package com.shulie.instrument.simulator.log.data.pusher.push; 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log-data-pusher/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.0 上报trace日志时可以定制ip映射 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log-data-pusher/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=log-data-pusher 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.module.log.data.pusher.* 5 | import-package=com.pamirs.pradar.*,com.shulie.instrument.module.register.zk.*,com.shulie.instrument.simulator.module.model.*,io.netty.*,org.apache.commons.io.*,org.apache.commons.lang.*,oshi.*,org.apache.zookeeper.*,org.apache.curator.*,com.shulie.instrument.simulator.dependencies.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-register 10 | middleware-module=false 11 | simulator-version=1.0.0- 12 | module-version=2.0.1.0 13 | dependencies-info=pradar-register@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log4j/src/main/java/com/pamirs/attach/plugin/log4j/policy/copier/SizeBasedTriggeringPolicyCopier.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.log4j.policy.copier; 2 | 3 | import org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy; 4 | 5 | /** 6 | * @author jirenhe | jirenhe@shulie.io 7 | * @since 2021/12/07 5:57 下午 8 | */ 9 | public class SizeBasedTriggeringPolicyCopier implements TriggeringPolicyCopier { 10 | @Override 11 | public SizeBasedTriggeringPolicy copy(SizeBasedTriggeringPolicy source) { 12 | return new SizeBasedTriggeringPolicy(source.getMaxFileSize()){}; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log4j/src/main/java/com/pamirs/attach/plugin/log4j/policy/copier/TimeBasedTriggeringPolicyCopier.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.log4j.policy.copier; 2 | 3 | import com.shulie.instrument.simulator.api.reflect.Reflect; 4 | import org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy; 5 | 6 | /** 7 | * @author jirenhe | jirenhe@shulie.io 8 | * @since 2021/12/07 6:35 下午 9 | */ 10 | public class TimeBasedTriggeringPolicyCopier implements TriggeringPolicyCopier { 11 | @Override 12 | public TimeBasedTriggeringPolicy copy(TimeBasedTriggeringPolicy source) { 13 | return TimeBasedTriggeringPolicy.createPolicy(source.getInterval() + "", 14 | Reflect.on(source).get("modulate").toString()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log4j/src/main/java/com/pamirs/attach/plugin/log4j/policy/copier/TriggeringPolicyCopier.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.log4j.policy.copier; 2 | 3 | import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy; 4 | 5 | /** 6 | * @author jirenhe | jirenhe@shulie.io 7 | * @since 2021/12/07 5:47 下午 8 | */ 9 | public interface TriggeringPolicyCopier { 10 | 11 | T copy(T source); 12 | } 13 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-log4j/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=log4j 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-logback/src/main/java/com/pamirs/attach/plugin/logback/Constants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.logback; 16 | 17 | /** 18 | * @author jirenhe | jirenhe@shulie.io 19 | * @since 2021/06/21 7:51 下午 20 | */ 21 | public class Constants { 22 | 23 | public final static String ASYNC_CLUSTER_TEST_MARK_FIELD = "isClusterTest"; 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-logback/src/main/java/com/pamirs/attach/plugin/logback/LogbackConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.logback; 16 | 17 | /** 18 | * @author minzhuo 19 | * @since 2020/8/14 10:06 下午 20 | */ 21 | public class LogbackConstants { 22 | public final static String PLUGIN_NAME = "logback"; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-logback/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | logback中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, 5 | 6 | 2.0.0.1: logback支持异步传标 7 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-logback/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=logback 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.1 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/Main.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module; 2 | 3 | /** 4 | * @author Licey 5 | * @date ${DATE} 6 | */ 7 | public class Main { 8 | public static void main(String[] args) { 9 | System.out.println("Hello world!"); 10 | } 11 | } -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/annoation/NotNull.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.annoation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * @author Licey 7 | * @date 2022/7/27 8 | */ 9 | @Retention(RetentionPolicy.RUNTIME) 10 | @Target({ElementType.FIELD}) 11 | public @interface NotNull { 12 | } 13 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/common/ResourceInit.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.common; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/8/2 6 | */ 7 | public interface ResourceInit { 8 | T init(); 9 | } 10 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/consumer/execute/ShadowConsumerExecute.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.consumer.execute; 2 | 3 | import com.pamirs.pradar.bean.SyncObjectData; 4 | import io.shulie.instrument.module.messaging.consumer.module.ConsumerConfig; 5 | import io.shulie.instrument.module.messaging.consumer.module.ConsumerConfigWithData; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author Licey 11 | * @date 2022/7/27 12 | */ 13 | public interface ShadowConsumerExecute { 14 | 15 | List prepareConfig(SyncObjectData syncObjectData); 16 | 17 | ShadowServer fetchShadowServer(List configList); 18 | } 19 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/consumer/execute/ShadowServer.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.consumer.execute; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/7/27 6 | */ 7 | public interface ShadowServer { 8 | 9 | Object getShadowTarget(); 10 | 11 | void start(); 12 | 13 | boolean isRunning(); 14 | 15 | void stop(); 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/consumer/isolation/ConsumerIsolationProxyFactory.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.consumer.isolation; 2 | 3 | import io.shulie.instrument.module.isolation.resource.ShadowResourceLifecycle; 4 | import io.shulie.instrument.module.isolation.resource.ShadowResourceProxyFactory; 5 | import io.shulie.instrument.module.messaging.handler.ConsumerRouteHandler; 6 | 7 | /** 8 | * @author Licey 9 | * @date 2022/8/8 10 | */ 11 | public class ConsumerIsolationProxyFactory implements ShadowResourceProxyFactory { 12 | 13 | @Override 14 | public ShadowResourceLifecycle createShadowResource(Object bizTarget) { 15 | return ConsumerIsolationCache.get(bizTarget); 16 | } 17 | 18 | @Override 19 | public boolean needRoute(Object target) { 20 | return ConsumerRouteHandler.needRoute(target); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/consumer/module/ConsumerConfigWithData.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.consumer.module; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/8/4 6 | */ 7 | public class ConsumerConfigWithData { 8 | private ConsumerConfig consumerConfig; 9 | 10 | public ConsumerConfigWithData(ConsumerConfig consumerConfig) { 11 | this.consumerConfig = consumerConfig; 12 | } 13 | 14 | public ConsumerConfig getConsumerConfig() { 15 | return consumerConfig; 16 | } 17 | 18 | public void setConsumerConfig(ConsumerConfig consumerConfig) { 19 | this.consumerConfig = consumerConfig; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/java/io/shulie/instrument/module/messaging/exception/MessagingRuntimeException.java: -------------------------------------------------------------------------------- 1 | package io.shulie.instrument.module.messaging.exception; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/7/27 6 | */ 7 | public class MessagingRuntimeException extends RuntimeException{ 8 | 9 | public MessagingRuntimeException() { 10 | super(); 11 | } 12 | 13 | public MessagingRuntimeException(String message) { 14 | super(message); 15 | } 16 | 17 | public MessagingRuntimeException(String message, Throwable cause) { 18 | super(message, cause); 19 | } 20 | 21 | public MessagingRuntimeException(Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.1 修复kafka影子消费者trace获取不到servers的问题 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-messaging-common/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=messaging-common 2 | #export-class= 3 | #import-class= 4 | export-package=io.shulie.instrument.module.messaging.* 5 | import-package=com.pamirs.pradar.*,io.shulie.instrument.module.isolation.*,com.google.gson.* 6 | 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | dependencies=pradar-core,isolation 11 | simulator-version=1.0.0- 12 | module-version=2.0.0.1 13 | dependencies-info=pradar-core@2.0.0.0 14 | middleware-module=false -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mock/src/main/java/com/pamirs/attach/plugin/mock/MockConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.mock; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/12/15 8:26 下午 20 | */ 21 | public class MockConstants { 22 | public final static String MODULE_NAME = "mock"; 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mock/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 使用返回值的方式而不是抛出异常的方式来提高性能 2 | 2.0.0.1版本 3 | 增加配置兜底触发 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mock/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=mock 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mongodb/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2.0.0.2: 修复sync api 找不到影子配置问题 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mongodb/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=mongodb 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.2 12 | dependencies-info=pradar-core@2.0.0.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mongodb4/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=mongodb4 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.2 12 | dependencies-info=pradar-core@2.0.0.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-motan/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | motan中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-motan/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=motan 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mule/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | mule中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mule/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=mule 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-mybatis/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=mybatis 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-neo4j/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 支持影子库账密前缀处理。 2 | 仿真系统新增配置项: 3 | shadow.datasource.account.prefix(前缀参数,默认是PT_) 4 | shadow.datasource.account.suffix(后缀参数,默认是空字符串) 5 | 说明:假设原业务库账号为 admin,密码为 password。现影子库页面上无需配置账号密码,会自动以 PT_admin 作为影子库账号, PT_password 作为影子库密码去连接影子库。 6 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-neo4j/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=neo4j 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.0 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-netty-time-wheel/src/main/java/com/pamirs/attach/plugin/netty/NettyTimeWheelConstants.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.netty; 2 | 3 | import com.pamirs.pradar.MiddlewareType; 4 | 5 | public final class NettyTimeWheelConstants { 6 | 7 | public final static String PLUGIN_NAME = "netty-time-wheel"; 8 | public final static int PLUGIN_TYPE = MiddlewareType.TYPE_JOB; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-netty-time-wheel/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.1 2 | 支持task重复执行 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-netty-time-wheel/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=netty-time-wheel 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.1 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-netty/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | netty中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-netty/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=netty 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-okhttp/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.2 支持3.14.9版本的mock -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-okhttp/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=okhttp 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.google.gson.* 6 | 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | dependencies=pradar-core 11 | simulator-version=1.0.0- 12 | module-version=2.0.0.2 13 | dependencies-info=pradar-core@2.0.0.1,pradar-config-fetcher@2.0.0.1 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-oscache/src/main/java/com/pamirs/attach/plugin/oscache/OscacheConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.oscache; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/12/15 8:22 下午 20 | */ 21 | public class OscacheConstants { 22 | public final static String MODULE_NAME = "oscache"; 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-oscache/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | oscache中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-oscache/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=oscache 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-perf/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 允许在控制台增加配置pradar.biz.perf.push.enabled=true来对业务流量采集明细信息 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-perf/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=perf 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.shulie.instrument.module.register.zk.*,com.shulie.instrument.simulator.module.model.gc.*,com.shulie.instrument.simulator.module.model.memory.*,com.shulie.instrument.simulator.module.model.thread.*,com.shulie.instrument.simulator.module.model.monitor.*,io.shulie.takin.sdk.*,com.google.gson.* 6 | 7 | #export-resource= 8 | #import-resource= 9 | # dependency of module or swither,multi split with comma 10 | dependencies=pradar-core 11 | simulator-version=1.0.0- 12 | module-version=2.0.0.3 13 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-config-fetcher/src/main/java/com/shulie/instrument/module/config/fetcher/config/event/ConfigListener.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.shulie.instrument.module.config.fetcher.config.event; 16 | 17 | /** 18 | * @author shiyajian 19 | * @since 2020-08-12 20 | */ 21 | public interface ConfigListener { 22 | 23 | void onEvent(T config); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-config-fetcher/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 支持影子库账密前缀处理。 2 | 仿真系统新增配置项: 3 | shadow.datasource.account.prefix(前缀参数,默认是PT_) 4 | shadow.datasource.account.suffix(后缀参数,默认是空字符串) 5 | 说明:假设原业务库账号为 admin,密码为 password。现影子库页面上无需配置账号密码,会自动以 PT_admin 作为影子库账号, PT_password 作为影子库密码去连接影子库。 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-config-fetcher/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=pradar-config-fetcher 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.module.config.fetcher.config.* 5 | import-package=com.pamirs.pradar.*,com.shulie.instrument.module.register.zk.*,com.shulie.instrument.module.log.data.pusher.*,com.shulie.instrument.module.pradar.core.service.*,oshi.*,org.apache.curator.*,io.netty.*,org.slf4j.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-register 10 | # dependency simulator version 11 | middleware-module=false 12 | simulator-version=1.0.0- 13 | # must use 14 | must-use=true 15 | module-version=2.0.1.0 16 | dependencies-info=pradar-register@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/AppNameUtils.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar; 16 | 17 | public class AppNameUtils { 18 | 19 | private static final String DEFAULT = "default"; 20 | 21 | public static final String appName() { 22 | return System.getProperty("simulator.app.name", DEFAULT); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/degrade/DegradeDetector.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.degrade; 2 | 3 | 4 | import com.pamirs.pradar.degrade.action.DegradeAction; 5 | 6 | /** 7 | * @author jirenhe | jirenhe@shulie.io 8 | * @since 2022/08/31 2:41 PM 9 | */ 10 | public interface DegradeDetector { 11 | 12 | void startDetect(DegradeAction degradeAction); 13 | 14 | void stopDetect(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/degrade/action/DegradeAction.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.degrade.action; 2 | 3 | /** 4 | * @author jirenhe | jirenhe@shulie.io 5 | * @since 2022/08/31 3:08 PM 6 | */ 7 | public interface DegradeAction { 8 | 9 | void degrade(String format); 10 | 11 | void unDegrade(); 12 | 13 | boolean isDegraded(); 14 | 15 | boolean canDegrade(); 16 | } 17 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/degrade/resources/ResourceDetector.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.degrade.resources; 2 | 3 | /** 4 | * @author jirenhe | jirenhe@shulie.io 5 | * @since 2022/10/18 11:09 AM 6 | */ 7 | public interface ResourceDetector { 8 | 9 | boolean hasResource(); 10 | 11 | String name(); 12 | 13 | double threshold(); 14 | 15 | String configName(); 16 | 17 | void refreshThreshold(); 18 | } 19 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/event/Event.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.event; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/10/26 9:25 下午 20 | */ 21 | public interface Event { 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/gson/ObjectTypeAdapterFactory.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.gson; 2 | 3 | import com.google.gson.Gson; 4 | import com.google.gson.TypeAdapter; 5 | import com.google.gson.TypeAdapterFactory; 6 | import com.google.gson.reflect.TypeToken; 7 | 8 | public class ObjectTypeAdapterFactory implements TypeAdapterFactory { 9 | 10 | private final TypeAdapter typeAdapter; 11 | 12 | public ObjectTypeAdapterFactory(TypeAdapter typeAdapter) { 13 | this.typeAdapter = typeAdapter; 14 | } 15 | 16 | @Override 17 | public TypeAdapter create(Gson gson, TypeToken typeToken) { 18 | return typeToken.getRawType() == Object.class ? typeAdapter : null; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/interceptor/ContextTransfer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.interceptor; 16 | 17 | /** 18 | * Created by xiaobin on 2017/2/21. 19 | */ 20 | public interface ContextTransfer { 21 | void transfer(String key, String value); 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/event/impl/MqWhiteListConfigEvent.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.pressurement.agent.event.impl; 2 | 3 | import com.pamirs.pradar.pressurement.agent.event.IEvent; 4 | 5 | import java.util.Set; 6 | 7 | public class MqWhiteListConfigEvent implements IEvent { 8 | private Set mqWhiteList; 9 | 10 | public MqWhiteListConfigEvent(Set mqWhiteList) { 11 | this.mqWhiteList = mqWhiteList; 12 | } 13 | 14 | @Override 15 | public Object getTarget() { 16 | return mqWhiteList; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/event/impl/preparation/ShadowDataSourceActiveEvent.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.pressurement.agent.event.impl.preparation; 2 | 3 | import com.pamirs.pradar.internal.config.ShadowDatabaseConfig; 4 | import com.pamirs.pradar.pressurement.agent.event.IEvent; 5 | 6 | import javax.sql.DataSource; 7 | import java.util.Map; 8 | 9 | public class ShadowDataSourceActiveEvent implements IEvent { 10 | 11 | private Map.Entry dataSource; 12 | 13 | public ShadowDataSourceActiveEvent(Map.Entry dataSource) { 14 | this.dataSource = dataSource; 15 | } 16 | 17 | @Override 18 | public Map.Entry getTarget() { 19 | return dataSource; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/event/impl/preparation/ShadowDataSourceDisableEvent.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.pressurement.agent.event.impl.preparation; 2 | 3 | import com.pamirs.pradar.pressurement.agent.event.IEvent; 4 | 5 | import java.util.Map; 6 | import java.util.Set; 7 | 8 | public class ShadowDataSourceDisableEvent implements IEvent { 9 | 10 | // key: 数据源类名称, value: url:username 11 | private Map.Entry shadowDataSource; 12 | 13 | public ShadowDataSourceDisableEvent(Map.Entry shadowDataSource) { 14 | this.shadowDataSource = shadowDataSource; 15 | } 16 | 17 | @Override 18 | public Map.Entry getTarget() { 19 | return shadowDataSource; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/event/impl/preparation/ShadowMongoDisableEvent.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.pressurement.agent.event.impl.preparation; 2 | 3 | import com.pamirs.pradar.pressurement.agent.event.IEvent; 4 | 5 | import java.util.Set; 6 | 7 | public class ShadowMongoDisableEvent implements IEvent { 8 | 9 | private boolean isV4; 10 | private Set shadowUrls; 11 | 12 | public ShadowMongoDisableEvent(boolean isV4, Set shadowUrls) { 13 | this.isV4 = isV4; 14 | this.shadowUrls = shadowUrls; 15 | } 16 | 17 | public boolean isV4() { 18 | return isV4; 19 | } 20 | 21 | public Set getShadowUrls() { 22 | return shadowUrls; 23 | } 24 | 25 | @Override 26 | public Object getTarget() { 27 | return shadowUrls; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/listener/model/ShadowConsumerDisableInfo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | *

8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | *

10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.pressurement.agent.listener.model; 16 | 17 | /** 18 | * @author angju 19 | * @date 2021/10/11 10:53 20 | */ 21 | public class ShadowConsumerDisableInfo extends ShadowConsumerEnableInfo { 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/shared/dubbo/ReferenceProxy.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.pressurement.agent.shared.dubbo; 16 | 17 | public interface ReferenceProxy { 18 | void setTargetProxy(Object proxy); 19 | 20 | Object getTargetProxy(); 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/pressurement/agent/shared/service/event/IEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.pressurement.agent.shared.service.event; 16 | 17 | /** 18 | * 事件 19 | * 20 | * @author xiaobin.zfb | xiaobin@shulie.io 21 | * @since 2020/7/10 9:34 上午 22 | */ 23 | public class IEvent { 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/protocol/udp/DataType.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.protocol.udp; 2 | 3 | /** 4 | * @Description 5 | * @Author xiaobin.zfb 6 | * @mail xiaobin@shulie.io 7 | * @Date 2020/8/12 3:59 下午 8 | */ 9 | public class DataType { 10 | /** 11 | * trace日志 12 | */ 13 | public final static byte TRACE_LOG = 1; 14 | /** 15 | * metrics日志 16 | */ 17 | public final static byte METRICS_LOG = 2; 18 | /** 19 | * 监控日志 20 | */ 21 | public final static byte MONITOR_LOG = 3; 22 | /** 23 | * agent日志 24 | */ 25 | public final static byte AGENT_LOG = 4; 26 | 27 | /** 28 | * agent-manage命令 29 | */ 30 | public final static byte AGENT_MANAGE = 5; 31 | } 32 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/scope/Pool.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.scope; 16 | 17 | /** 18 | * Created by xiaobin on 2017/1/19. 19 | */ 20 | public interface Pool { 21 | 22 | V get(K key); 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/scope/PoolObjectFactory.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.pradar.scope; 16 | 17 | /** 18 | * Created by xiaobin on 2017/1/19. 19 | */ 20 | public interface PoolObjectFactory { 21 | V create(K key); 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/java/com/pamirs/pradar/script/commons/InterpreterWrapper.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar.script.commons; 2 | 3 | import bsh.Interpreter; 4 | 5 | public class InterpreterWrapper { 6 | 7 | private Interpreter interpreter; 8 | private volatile boolean hold; 9 | 10 | public InterpreterWrapper(Interpreter interpreter, boolean hold) { 11 | this.interpreter = interpreter; 12 | this.hold = hold; 13 | } 14 | 15 | public Interpreter getInterpreter() { 16 | return interpreter; 17 | } 18 | 19 | public void setInterpreter(Interpreter interpreter) { 20 | this.interpreter = interpreter; 21 | } 22 | 23 | public boolean isHold() { 24 | return hold; 25 | } 26 | 27 | public void setHold(boolean hold) { 28 | this.hold = hold; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-core/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | endInvoke中重复设置请求体,httpClient请求体在afterTrace中获取 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-register/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | bug-fix 2 | 1、删除无效日志 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pradar-register/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=pradar-register 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.module.register.zk.* 5 | import-package=com.pamirs.pradar.*,io.shulie.takin.sdk.*,org.apache.commons.lang.*,org.slf4j.*,io.netty.*,org.apache.curator.*,org.apache.zookeeper.*,io.shulie.takin.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | # dependency simulator version 11 | middleware-module=false 12 | simulator-version=1.0.0- 13 | # must use 14 | must-use=true 15 | module-version=2.0.0.1 16 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-proxool/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.2.2 修复proxool驱动类名称不能随业务设置 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-proxool/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=proxool 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.2.2 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-proxool/src/test/java/printCode.groovy: -------------------------------------------------------------------------------- 1 | /** 2 | * @author jirenhe | jirenhe@shulie.io 3 | * @since 2021/03/29 7:11 下午 4 | */ 5 | Thread.currentThread().contextClassLoader.getResource("configName").eachLine { 6 | it << 1 7 | def tmp = it.charAt(0).toUpperCase().toString() + it.substring(1) 8 | int idx = tmp.indexOf("-") 9 | while (idx > 0) { 10 | tmp = tmp.substring(0, idx) + tmp.charAt(idx + 1).toUpperCase().toString() + tmp.substring(idx + 2) 11 | idx = tmp.indexOf("-") 12 | } 13 | def properties = tmp.charAt(0).toLowerCase().toString() + tmp.substring(1) 14 | println """ 15 | String $properties = ptDataSourceConf.getProperty("$it"); 16 | if ($properties != null) { 17 | target.set$tmp($properties); 18 | } else { 19 | target.set$tmp(sourceDatasource.get$tmp()); 20 | } 21 | """ 22 | 23 | 24 | } -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-proxool/src/test/resources/configName: -------------------------------------------------------------------------------- 1 | fatal-sql-exception-wrapper-class 2 | house-keeping-sleep-time 3 | house-keeping-test-sql 4 | injectable-connection-interface 5 | injectable-statement-interface 6 | injectable-prepared-statement-interface 7 | injectable-callable-statement-interface 8 | jmx 9 | jmx-agent-id 10 | jndi-name 11 | maximum-active-time 12 | maximum-connection-count 13 | maximum-connection-lifetime 14 | maximum-new-connections 15 | minimum-connection-count 16 | overload-without-refusal-lifetime 17 | prototype-count 18 | recently-started-threshold 19 | simultaneous-build-throttle 20 | statistics 21 | statistics-log-level 22 | test-before-use 23 | test-after-use 24 | trace 25 | verbose -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pulsar/src/main/java/com/pamirs/attach/plugin/pulsar/common/MQType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.pulsar.common; 16 | 17 | /** 18 | * 消息类型枚举 19 | * 20 | * @author: wangxian 21 | * @date:2016/09/29 22 | */ 23 | public enum MQType { 24 | PULSAR 25 | } 26 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pulsar/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | pulsar支持 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-pulsar/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=pulsar 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-rabbitmq/src/main/java/com/pamirs/attach/plugin/rabbitmq/common/LastMqWhiteListHolder.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.rabbitmq.common; 2 | 3 | import java.util.Set; 4 | import java.util.concurrent.atomic.AtomicReference; 5 | 6 | import com.pamirs.pradar.pressurement.agent.shared.service.GlobalConfig; 7 | 8 | public class LastMqWhiteListHolder { 9 | public static final AtomicReference> LAST_MQ_WHITELIST = new AtomicReference>( 10 | GlobalConfig.getInstance().getMqWhiteList()); 11 | } 12 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-rabbitmq/src/main/java/com/pamirs/attach/plugin/rabbitmq/interceptor/AMQConnectionInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.rabbitmq.interceptor; 2 | 3 | import com.pamirs.pradar.interceptor.AroundInterceptor; 4 | import com.shulie.instrument.simulator.api.listener.ext.Advice; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | /** 9 | * @author jirenhe | jirenhe@shulie.io 10 | * @since 2021/08/31 10:21 下午 11 | */ 12 | public class AMQConnectionInterceptor extends AroundInterceptor { 13 | 14 | private static Logger logger = LoggerFactory.getLogger(ChannelNProcessDeliveryInterceptor.class.getName()); 15 | 16 | @Override 17 | public void doAfter(Advice advice) throws Throwable { 18 | logger.warn("[RabbitMQ] AMQConnection has closed!"); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-rabbitmq/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | rabbit改版 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-rabbitmq/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=rabbitmq 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,org.apache.zookeeper.*,org.apache.curator.*,com.shulie.instrument.simulator.dependencies.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-rabbitmqv2/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | rabbit新版支持 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-rabbitmqv2/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=rabbitmqv2 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.*,io.shulie.instrument.module.isolation.*,org.apache.zookeeper.*,org.apache.curator.*,com.shulie.instrument.simulator.dependencies.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common,isolation 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=com.rabbitmq.client.impl.ChannelN#basicConsume -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-jedis/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.5 jedis pipeline 支持multi命令 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-jedis/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=redis-jedis 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.5 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-lettuce/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2 | 2.0.1.4 lettuce采集response -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-lettuce/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=redis-lettuce 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.3 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-redisson/src/main/java/com/pamirs/attach/plugin/redisson/constant/Constant.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.redisson.constant; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2020/12/3 21:57 20 | * @Description: 21 | */ 22 | public class Constant { 23 | public static String REDIS_PRE = "redis://"; 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-redisson/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.2 链路梳理信息不上报密码 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-redis-redisson/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=redis-redisson 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.3 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-resin/src/main/java/com/pamirs/attach/plugin/resin/ResinConstans.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.resin; 16 | 17 | public class ResinConstans { 18 | 19 | public static String PLUGIN_NAME = "resin"; 20 | } 21 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-resin/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | resin中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-resin/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=resin 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-saturn/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | saturn中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-saturn/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=saturn 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-servlet-common/src/main/java/com/pamirs/attach/plugin/common/web/RepeatReadServletRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.common.web; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/11/13 7:59 下午 20 | */ 21 | public class RepeatReadServletRequest { 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-servlet-common/src/main/java/com/pamirs/attach/plugin/common/web/utils/Constants.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.common.web.utils; 2 | 3 | /** 4 | * @author angju 5 | * @date 2023/4/3 10:29 6 | */ 7 | public class Constants { 8 | public static final String PRADAR_CLUSTER_FLAG_GW = "pradar_cluster_flag_gw"; 9 | public static final String extendParamEnd = "pradar_cluster_flag_gw_end"; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-servlet-common/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | servlet-common中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-servlet-common/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=servlet-common 2 | #export-class= 3 | #import-class= 4 | export-package=com.pamirs.attach.plugin.common.web.* 5 | import-package=com.pamirs.pradar.*,com.shulie.instrument.module.config.fetcher.config.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | # dependency simulator version 11 | simulator-version=1.0.0- 12 | # must use 13 | must-use=true 14 | middleware-module=ture 15 | module-version=2.0.0.0 16 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-job/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.0 优化SpringContextInterceptor执行逻辑 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-job/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=shadow-job 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.0 12 | dependencies-info=pradar-core@2.0.0.0 13 | sync-fetch-target=com.dangdang.ddframe.job.lite.api.JobScheduler#init,org.quartz.impl.StdScheduler -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/command/CommandExecuteResult.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.command; 2 | 3 | public class CommandExecuteResult { 4 | 5 | private Boolean success; 6 | 7 | private String response; 8 | 9 | public Boolean getSuccess() { 10 | return success; 11 | } 12 | 13 | public void setSuccess(Boolean success) { 14 | this.success = success; 15 | } 16 | 17 | public String getResponse() { 18 | return response; 19 | } 20 | 21 | public void setResponse(String response) { 22 | this.response = response; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/command/EsConfigPushCommand.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.command; 2 | 3 | import com.pamirs.attach.plugin.shadow.preparation.es.EsConfigEntity; 4 | 5 | import java.util.List; 6 | 7 | public class EsConfigPushCommand { 8 | 9 | private List data; 10 | 11 | public List getData() { 12 | return data; 13 | } 14 | 15 | public void setData(List data) { 16 | this.data = data; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/command/EsPreCheckCommand.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.command; 2 | 3 | import com.pamirs.attach.plugin.shadow.preparation.es.EsConfigEntity; 4 | 5 | public class EsPreCheckCommand extends EsConfigEntity { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/command/JdbcConfigPushCommand.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.command; 2 | 3 | import com.pamirs.attach.plugin.shadow.preparation.jdbc.entity.DataSourceConfig; 4 | 5 | import java.util.List; 6 | 7 | public class JdbcConfigPushCommand { 8 | private List data; 9 | 10 | public List getData() { 11 | return data; 12 | } 13 | 14 | public void setData(List data) { 15 | this.data = data; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/commons/Command.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.commons; 2 | 3 | public class Command { 4 | private String id; 5 | private String args; 6 | 7 | public String getId() { 8 | return id; 9 | } 10 | 11 | public void setId(String id) { 12 | this.id = id; 13 | } 14 | 15 | public String getArgs() { 16 | return args; 17 | } 18 | 19 | public void setArgs(String args) { 20 | this.args = args; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/commons/CommandAck.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.commons; 2 | 3 | public class CommandAck { 4 | private String commandId; 5 | private String response; 6 | 7 | public String getCommandId() { 8 | return commandId; 9 | } 10 | 11 | public void setCommandId(String commandId) { 12 | this.commandId = commandId; 13 | } 14 | 15 | public String getResponse() { 16 | return response; 17 | } 18 | 19 | public void setResponse(String response) { 20 | this.response = response; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/commons/Config.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.commons; 2 | 3 | public class Config { 4 | private String type; 5 | private String version; 6 | private String param; 7 | 8 | public String getType() { 9 | return type; 10 | } 11 | 12 | public void setType(String type) { 13 | this.type = type; 14 | } 15 | 16 | public String getVersion() { 17 | return version; 18 | } 19 | 20 | public void setVersion(String version) { 21 | this.version = version; 22 | } 23 | 24 | public String getParam() { 25 | return param; 26 | } 27 | 28 | public void setParam(String param) { 29 | this.param = param; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/java/com/pamirs/attach/plugin/shadow/preparation/jdbc/JdbcTypeFetcher.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.attach.plugin.shadow.preparation.jdbc; 2 | 3 | import com.pamirs.attach.plugin.shadow.preparation.jdbc.constants.JdbcTypeEnum; 4 | 5 | public abstract class JdbcTypeFetcher { 6 | 7 | public static JdbcTypeEnum fetchJdbcType(String driver) { 8 | if (driver.contains("mysql")) { 9 | return JdbcTypeEnum.MYSQL; 10 | } 11 | if (driver.contains("oracle")) { 12 | return JdbcTypeEnum.ORACLE; 13 | } 14 | if (driver.contains("sqlserver")) { 15 | return JdbcTypeEnum.SQLSERVER; 16 | } 17 | if (driver.contains("gbasedbt") || driver.contains("informix")) { 18 | return JdbcTypeEnum.GBASE; 19 | } 20 | return null; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.5 移除agent-management-client依赖 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-shadow-preparation/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=shadow-preparation 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,io.shulie.takin.*,org.apache.commons.lang3.*,org.apache.thrift.*,cn.hutool.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.5 12 | dependencies-info=pradar-core@2.0.0.0 13 | 14 | sync-fetch-target=com.alibaba.druid.pool.DruidDataSource,com.mchange.v2.c3p0.ComboPooledDataSource,org.apache.commons.dbcp2.BasicDataSource,org.apache.commons.dbcp.BasicDataSource,com.zaxxer.hikari.HikariDataSource,com.mongodb.client.internal.MongoClientImpl,org.elasticsearch.client.RestClient 15 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-cache/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | spring-cache中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-cache/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=spring-cache 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-cloud-gateway/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.5 调整spring BeanFactory内部的增强点,防止出现应用没用spring-cloud-gateway而出现的ClassNotFound异常 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-cloud-gateway/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=spring-cloud-gateway 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.5 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-kafka/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.1.3 兼容spring-kafka 1.1.7版本 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-kafka/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=spring-kafka 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.3 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@2.0.0.0 13 | sync-fetch-target=org.springframework.kafka.listener.KafkaMessageListenerContainer#doStart -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-rabbitmq/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | spring-rabbitmq新版支持 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-rabbitmq/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=spring-rabbitmq 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.*,io.shulie.instrument.module.messaging.*,com.google.common.*,com.google.gson.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,messaging-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,messaging-common@1.0.0.0 13 | sync-fetch-target=org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer#start -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-web/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 替换只读HttpHeaders -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-spring-web/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=spring-web 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.2 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-sync-fetch-obj/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.5 save对象时过滤重复对象 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-sync-fetch-obj/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=sync-fetch-obj 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | #dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.5 12 | async=false -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-tomcat-dbcp/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 2.0.0.2 增加连接池获取connection的trace打印 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-tomcat-dbcp/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=tomcat-dbcp 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.datasource.*,com.shulie.druid.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,datasource-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.2 12 | dependencies-info=pradar-core@2.0.1.0,datasource-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-undertow/src/main/java/com/pamirs/attach/plugin/undertow/UndertowConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.undertow; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/12/15 8:34 下午 20 | */ 21 | public class UndertowConstants { 22 | public final static String MODULE_NAME = "undertow"; 23 | } 24 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-undertow/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | undertow中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-undertow/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=undertow 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-webflux/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 支持webflux。切org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction的exchange方法,并且记录trace -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-webflux/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=webflux 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.1.0 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-websphere/src/main/java-ibm/com/ibm/ws/webcontainer/channel/WCCResponseImpl.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.ibm.ws.webcontainer.channel; 16 | 17 | import com.ibm.wsspi.http.channel.HttpResponseMessage; 18 | 19 | public class WCCResponseImpl { 20 | // Dummy 21 | public HttpResponseMessage getHttpResponse() { 22 | return null; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-websphere/src/main/java-ibm/com/ibm/ws/webcontainer/srt/SRTServletRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.ibm.ws.webcontainer.srt; 16 | 17 | import com.ibm.wsspi.webcontainer.servlet.IExtendedResponse; 18 | 19 | public class SRTServletRequest { 20 | // Dummy 21 | public IExtendedResponse getResponse() { 22 | return null; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-websphere/src/main/java-ibm/com/ibm/ws/webcontainer/srt/SRTServletResponse.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.ibm.ws.webcontainer.srt; 16 | 17 | public class SRTServletResponse { 18 | // Dummy 19 | public int getStatusCode() { 20 | return 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-websphere/src/main/java/com/pamirs/attach/plugin/websphere/WebsphereConstans.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.websphere; 16 | 17 | public class WebsphereConstans { 18 | 19 | public static final String PLUGIN_NAME = "websphere"; 20 | public static final String MODULE_NAME = "websphere"; 21 | } 22 | -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-websphere/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | websphere中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-websphere/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=websphere 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-xmemcached/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | xmemcached中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-xmemcached/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=xmemcached 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0 -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-zuul/src/main/resources/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | zuul中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, -------------------------------------------------------------------------------- /instrument-modules/user-modules/module-zuul/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=zuul 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | import-package=com.pamirs.pradar.*,com.pamirs.attach.plugin.common.web.* 6 | #export-resource= 7 | #import-resource= 8 | # dependency of module or swither,multi split with comma 9 | dependencies=pradar-core,servlet-common 10 | simulator-version=1.0.0- 11 | module-version=2.0.0.0 12 | dependencies-info=pradar-core@2.0.0.0,servlet-common@2.0.0.0 -------------------------------------------------------------------------------- /instrument-simulator/README.md: -------------------------------------------------------------------------------- 1 | sf-kafka支持动态消费 2 | 修复探针启动时创建过多线程 -------------------------------------------------------------------------------- /instrument-simulator/bin/dump.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #jmap -dump:format=b,file=/Users/angju/IdeaProjects/pradar-javaagent-temp/pradar-javaagent/dist/target/pradar-javaagent/$1.hprof $2 3 | if [ "true" -eq "$3" ]; then 4 | jmap -dump:live,format=b,file=$1 $2 5 | else 6 | jmap -dump:format=b,file=$1 $2 7 | fi 8 | #sleep 5s 9 | touch $1.finished 10 | #nohup java -Xms32m -Xmx32m -jar $4/arthas-boot.jar $1 --http-port $2 --telnet-port $3 & 11 | -------------------------------------------------------------------------------- /instrument-simulator/bin/update-version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # exit shell with err_code 4 | # $1 : err_code 5 | # $2 : err_msg 6 | exit_on_err() { 7 | [[ ! -z "${2}" ]] && echo "${2}" 1>&2 8 | exit ${1} 9 | } 10 | 11 | # maven package the simulator 12 | if [ $# != 0 ]; then 13 | mvn versions:set -DnewVersion=$1 -f ../pom.xml || 14 | exit_on_err 1 "set version $1 failed." 15 | else 16 | exit_on_err 1 "please set the version number." 17 | fi 18 | 19 | mvn versions:update-parent -f ../pom.xml 20 | mvn versions:update-child-modules -f ../pom.xml 21 | echo "update version to $1 finish." 22 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-bootstrap-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | io.shulie.instrument.simulator 7 | bootstrap-inject 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | simulator-bootstrap-api 13 | jar 14 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-bootstrap-api/src/main/java/com/pamirs/pradar/BizClassLoaderService.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/8/3 6 | */ 7 | public class BizClassLoaderService { 8 | 9 | private static IBizClassLoaderService service; 10 | 11 | public static void register(IBizClassLoaderService service){ 12 | BizClassLoaderService.service = service; 13 | } 14 | 15 | public static void setBizClassLoader(ClassLoader classLoader) { 16 | service.setBizClassLoader(classLoader); 17 | } 18 | 19 | public static void clearBizClassLoader() { 20 | service.clearBizClassLoader(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-bootstrap-api/src/main/java/com/pamirs/pradar/IBizClassLoaderService.java: -------------------------------------------------------------------------------- 1 | package com.pamirs.pradar; 2 | 3 | /** 4 | * @author Licey 5 | * @date 2022/8/3 6 | */ 7 | public interface IBizClassLoaderService { 8 | 9 | void setBizClassLoader(ClassLoader classLoader); 10 | 11 | void clearBizClassLoader(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-internal-bootstrap-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | bootstrap-inject 7 | io.shulie.instrument.simulator 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | simulator-internal-bootstrap-api 13 | jar 14 | 15 | 16 | 22 | 23 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-internal-bootstrap-api/src/main/java/com/pamirs/attach/plugin/dynamic/Constant.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.dynamic; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2021/8/18 22:54 20 | * @Description: 21 | */ 22 | public interface Constant { 23 | String MODULE_NAME = "dynamic-resource-common"; 24 | } 25 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-internal-bootstrap-api/src/main/java/com/pamirs/attach/plugin/dynamic/Resolver.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.pamirs.attach.plugin.dynamic; 16 | 17 | /** 18 | * @Auther: vernon 19 | * @Date: 2021/8/18 00:03 20 | * @Description: 21 | */ 22 | public interface Resolver { 23 | V resolver(K t); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /instrument-simulator/bootstrap-inject/simulator-internal-bootstrap-api/src/main/java/com/pamirs/attach/plugin/dynamic/template/ReadMe.md: -------------------------------------------------------------------------------- 1 | ####配置模版 -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-api/src/main/java/com/shulie/instrument/simulator/api/ignore/IgnoreAllow.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright The OpenTelemetry Authors 3 | * SPDX-License-Identifier: Apache-2.0 4 | */ 5 | 6 | package com.shulie.instrument.simulator.api.ignore; 7 | 8 | public enum IgnoreAllow { 9 | IGNORE, 10 | ALLOW 11 | } 12 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-api/src/main/java/com/shulie/instrument/simulator/api/ignore/IgnoreFunction.java: -------------------------------------------------------------------------------- 1 | package com.shulie.instrument.simulator.api.ignore; 2 | 3 | public interface IgnoreFunction { 4 | 5 | /** 6 | * Applies this function to the given argument. 7 | * 8 | * @param t the function argument 9 | * @return the function result 10 | */ 11 | R apply(T t); 12 | } 13 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-api/src/main/java/com/shulie/instrument/simulator/api/ignore/IgnoredTypesConfigurer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright The OpenTelemetry Authors 3 | * SPDX-License-Identifier: Apache-2.0 4 | */ 5 | 6 | package com.shulie.instrument.simulator.api.ignore; 7 | 8 | public interface IgnoredTypesConfigurer{ 9 | 10 | /** 11 | * Configure the passed {@code builder} and define which classes should be ignored when 12 | * instrumenting. 13 | */ 14 | void configure(IgnoredTypesBuilder builder); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-api/src/main/java/com/shulie/instrument/simulator/api/ignore/IgnoredTypesPredicate.java: -------------------------------------------------------------------------------- 1 | package com.shulie.instrument.simulator.api.ignore; 2 | 3 | public interface IgnoredTypesPredicate { 4 | 5 | /** 6 | * 是否该被忽略 7 | * 8 | * @param loader 9 | * @param internalClassName 10 | * @return 11 | */ 12 | boolean test(ClassLoader loader, String internalClassName); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-api/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{yyyy-MM-dd HH:mm:ss} %5level %msg%n   7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/main/java/com/shulie/instrument/simulator/core/classloader/ClassLoaderNode.java: -------------------------------------------------------------------------------- 1 | package com.shulie.instrument.simulator.core.classloader; 2 | 3 | import java.lang.ref.SoftReference; 4 | 5 | /** 6 | * 业务类加载器节点,由这些节点组成链表结构 7 | * 对应每一个调用层级为一个节点 8 | * 9 | * @author Licey 10 | * @date 2022/9/28 11 | */ 12 | public class ClassLoaderNode { 13 | SoftReference classLoader; 14 | ClassLoaderNode parent; 15 | 16 | ClassLoaderNode(ClassLoader classLoader, ClassLoaderNode parent) { 17 | if (classLoader != null) { 18 | this.classLoader = new SoftReference(classLoader); 19 | } 20 | this.parent = parent; 21 | } 22 | 23 | ClassLoader getClassLoader() { 24 | return classLoader == null ? null : classLoader.get(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/main/java/com/shulie/instrument/simulator/core/inject/util/JarEntryFilter.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.shulie.instrument.simulator.core.inject.util; 16 | 17 | import java.util.jar.JarEntry; 18 | 19 | /** 20 | * Created by xiaobin on 2017/1/19. 21 | */ 22 | public interface JarEntryFilter { 23 | boolean filter(JarEntry jarEntry); 24 | } 25 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/main/resources/META-INF/services/com.shulie.instrument.simulator.dependencies.ch.qos.logback.classic.spi.Configurator: -------------------------------------------------------------------------------- 1 | com.shulie.instrument.simulator.core.logback.spi.InstrumentSimulatorLogbackConfigurator -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider: -------------------------------------------------------------------------------- 1 | com.shulie.instrument.simulator.core.logback.spi.InstrumentSimulatorSlf4JServiceProvider -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/main/resources/com/shulie/instrument/simulator/logo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ███████╗██╗███╗ ███╗██╗ ██╗██╗ █████╗ ████████╗ ██████╗ ██████╗ 4 | ██╔════╝██║████╗ ████║██║ ██║██║ ██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ 5 | ███████╗██║██╔████╔██║██║ ██║██║ ███████║ ██║ ██║ ██║██████╔╝ 6 | ╚════██║██║██║╚██╔╝██║██║ ██║██║ ██╔══██║ ██║ ██║ ██║██╔══██╗ 7 | ███████║██║██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║ ██║ ╚██████╔╝██║ ██║ 8 | ╚══════╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ 9 | 10 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/main/resources/com/shulie/instrument/simulator/version: -------------------------------------------------------------------------------- 1 | ${simulator.major.version}.${simulator.minor.version} -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-core/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{yyyy-MM-dd HH:mm:ss} %5level %msg%n   7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-jdk/instrument-simulator-jdk-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | instrument-simulator-jdk 7 | io.shulie.instrument.simulator 8 | 5.3.4 9 | 10 | 4.0.0 11 | 12 | instrument-simulator-jdk-api 13 | 14 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-jdk/instrument-simulator-jdk8/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | instrument-simulator-jdk 7 | io.shulie.instrument.simulator 8 | 5.3.4 9 | 10 | 4.0.0 11 | 12 | instrument-simulator-jdk8 13 | 14 | 15 | 16 | io.shulie.instrument.simulator 17 | instrument-simulator-jdk-api 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-jdk/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | simulator 7 | io.shulie.instrument.simulator 8 | 5.3.4 9 | 10 | 4.0.0 11 | 12 | instrument-simulator-jdk 13 | pom 14 | 15 | instrument-simulator-jdk-api 16 | instrument-simulator-jdk8 17 | instrument-simulator-jdk-impl 18 | instrument-simulator-jdk9 19 | 20 | 21 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-messager/src/main/java/one/profiler/Counter.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package one.profiler; 16 | 17 | /** 18 | * Which metrics to use when generating profile in collapsed stack traces format. 19 | */ 20 | public enum Counter { 21 | SAMPLES, 22 | TOTAL 23 | } 24 | -------------------------------------------------------------------------------- /instrument-simulator/instrument-simulator-spi/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | io.shulie.instrument.simulator 8 | simulator 9 | 5.3.4 10 | 11 | instrument-simulator-spi 12 | instrument-simulator-spi ${simulator.major.version} 13 | 14 | 15 | 16 | io.shulie.instrument.simulator 17 | instrument-simulator-base-api 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /instrument-simulator/module.config: -------------------------------------------------------------------------------- 1 | module-id=instrument-simulator 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #export-resource= 6 | #import-resource= 7 | # dependency of module or swither,multi split with comma 8 | module-version=5.3.4.0 -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-env-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=env 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-gc-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=gc 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.gc.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-heapdump-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=heapdump 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-info-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=info 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-jad-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=jad 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.jad.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-logger-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=logger 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-management-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=management 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-memory-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=memory 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.memory.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-monitor-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=monitor 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.monitor.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-ognl-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=ognl 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.ognl.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-linux-aarch64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-linux-aarch64.so -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-linux-arm.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-linux-arm.so -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-linux-x64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-linux-x64.so -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-mac-x64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/async-profiler/libasyncProfiler-mac-x64.so -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-profiler-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=profiler 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.profiler.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-runtime-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=runtime 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.runtime.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-sc-module/src/main/java/com/shulie/instrument/simulator/module/sc/AngjuTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * * 3 | * * Copyright 2021 Shulie Technology, Co.Ltd 4 | * * Email: shulie@shulie.io 5 | * * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * * you may not use this file except in compliance with the License. 7 | * * You may obtain a copy of the License at 8 | * * 9 | * * http://www.apache.org/licenses/LICENSE-2.0 10 | * * 11 | * * Unless required by applicable law or agreed to in writing, software 12 | * * distributed under the License is distributed on an "AS IS" BASIS, 13 | * * See the License for the specific language governing permissions and 14 | * * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.shulie.instrument.simulator.module.sc; 19 | 20 | /** 21 | * @author angju 22 | * @date 2021/11/19 10:58 23 | */ 24 | public class AngjuTest { 25 | } 26 | -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-sc-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=sc 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-stack-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=stack 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.stack.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-stack-trace-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=stack-trace 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.stack.trace.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-sysprop-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=sysprop 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-thread-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=thread 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.thread.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-tomcat-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=tomcat 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-trace-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=trace 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.trace.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-vmoption-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=vmoption 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.vmoption.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /instrument-simulator/system-modules/instrument-simulator-watch-module/src/main/resources/module.config: -------------------------------------------------------------------------------- 1 | module-id=watch 2 | #export-class= 3 | #import-class= 4 | export-package=com.shulie.instrument.simulator.module.model.watch.* 5 | #import-package= 6 | #export-resource= 7 | #import-resource= 8 | middleware-module=false 9 | simulator-version=1.0.0- -------------------------------------------------------------------------------- /lib/bsh-2.0b5-shulie.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shulieTech/LinkAgent/63549f592e4667e5b57ffadd20b0afc83f0ceada/lib/bsh-2.0b5-shulie.jar -------------------------------------------------------------------------------- /simulator-agent/README.md: -------------------------------------------------------------------------------- 1 | 注意!!!!! 2 | 每次更新插件请都更新内容到以下内容, 3 | simulator-agent中间件支持模块, 4 | 新增模块版本信息,初始版本为1.0.0,README.md为模块更新内容描述文件, 5 | 6 | 5.1.0.0 7 | 心跳接口上报启动参数校验信息 -------------------------------------------------------------------------------- /simulator-agent/bin/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Created-By: Maven JAR Plugin 3.2.2 3 | Build-Jdk-Spec: 11 4 | Boot-Class-Path: transmittable-thread-local-2.12.1.jar 5 | Can-Redefine-Classes: false 6 | Can-Retransform-Classes: true 7 | Can-Set-Native-Method-Prefix: false 8 | Premain-Class: com.alibaba.ttl.threadpool.agent.TtlAgent 9 | 10 | -------------------------------------------------------------------------------- /simulator-agent/bin/META-INF/helloword.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "hello word" 4 | -------------------------------------------------------------------------------- /simulator-agent/module.config: -------------------------------------------------------------------------------- 1 | module-id=simulator-agent 2 | #export-class= 3 | #import-class= 4 | #export-package= 5 | #export-resource= 6 | #import-resource= 7 | # dependency of module or swither,multi split with comma 8 | module-version=2.0.1.0 9 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/java/com/shulie/instrument/simulator/agent/core/gson/FastjsonDateToGsonTypeAdapter.java: -------------------------------------------------------------------------------- 1 | package com.shulie.instrument.simulator.agent.core.gson; 2 | 3 | import com.google.gson.TypeAdapter; 4 | import com.google.gson.stream.JsonReader; 5 | import com.google.gson.stream.JsonWriter; 6 | 7 | import java.io.IOException; 8 | import java.util.Date; 9 | 10 | public class FastjsonDateToGsonTypeAdapter extends TypeAdapter { 11 | 12 | @Override 13 | public void write(JsonWriter out, Date value) throws IOException { 14 | if (value == null) { 15 | out.nullValue(); 16 | } else { 17 | out.value(value.getTime()); 18 | } 19 | } 20 | 21 | @Override 22 | public Date read(JsonReader in) throws IOException { 23 | if (in != null) { 24 | return new Date(in.nextLong()); 25 | } else { 26 | return null; 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/java/com/shulie/instrument/simulator/agent/core/gson/ObjectTypeAdapterFactory.java: -------------------------------------------------------------------------------- 1 | package com.shulie.instrument.simulator.agent.core.gson; 2 | 3 | import com.google.gson.Gson; 4 | import com.google.gson.TypeAdapter; 5 | import com.google.gson.TypeAdapterFactory; 6 | import com.google.gson.reflect.TypeToken; 7 | 8 | public class ObjectTypeAdapterFactory implements TypeAdapterFactory { 9 | 10 | private final TypeAdapter typeAdapter; 11 | 12 | public ObjectTypeAdapterFactory(TypeAdapter typeAdapter) { 13 | this.typeAdapter = typeAdapter; 14 | } 15 | 16 | @Override 17 | public TypeAdapter create(Gson gson, TypeToken typeToken) { 18 | if (typeToken.getRawType() == Object.class) { 19 | return typeAdapter; 20 | } 21 | return null; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/java/com/shulie/instrument/simulator/agent/core/gson/SimulatorGsonFactory.java: -------------------------------------------------------------------------------- 1 | package com.shulie.instrument.simulator.agent.core.gson; 2 | 3 | import com.google.gson.*; 4 | 5 | import java.lang.reflect.Field; 6 | import java.lang.reflect.Type; 7 | import java.util.Date; 8 | import java.util.List; 9 | 10 | public class SimulatorGsonFactory { 11 | 12 | private static final GsonBuilder GSON_BUILDER = new GsonBuilder(); 13 | 14 | private static volatile Gson gson; 15 | 16 | static { 17 | GSON_BUILDER.setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE); 18 | GSON_BUILDER.registerTypeAdapter(Date.class, new FastjsonDateToGsonTypeAdapter()); 19 | gson = GSON_BUILDER.create(); 20 | } 21 | 22 | /** 23 | * 获取Gson实例. 24 | * 25 | * @return Gson实例 26 | */ 27 | public static Gson getGson() { 28 | return gson; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/java/com/shulie/instrument/simulator/agent/core/register/AgentStatusListener.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.shulie.instrument.simulator.agent.core.register; 16 | 17 | /** 18 | * @author xiaobin.zfb|xiaobin@shulie.io 19 | * @since 2020/11/22 8:08 下午 20 | */ 21 | public interface AgentStatusListener { 22 | void onListen(); 23 | } 24 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/java/com/shulie/instrument/simulator/agent/core/uploader/ApplicationUploader.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Shulie Technology, Co.Ltd 3 | * Email: shulie@shulie.io 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.shulie.instrument.simulator.agent.core.uploader; 16 | 17 | /** 18 | * @author jirenhe | jirenhe@shulie.io 19 | * @since 2021/06/10 9:27 下午 20 | */ 21 | public interface ApplicationUploader { 22 | 23 | void checkAndGenerateApp(); 24 | } 25 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/resources/META-INF/services/com.shulie.instrument.simulator.dependencies.ch.qos.logback.classic.spi.Configurator: -------------------------------------------------------------------------------- 1 | com.shulie.instrument.simulator.agent.core.logback.spi.SimulatorAgentLogbackConfigurator -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/resources/META-INF/services/com.shulie.instrument.simulator.dependencies.org.slf4j.spi.SLF4JServiceProvider: -------------------------------------------------------------------------------- 1 | com.shulie.instrument.simulator.agent.core.logback.spi.SimulatorAgentSlf4JServiceProvider -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/resources/com/shulie/instrument/simulator/agent/logo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ███████╗██╗███╗ ███╗██╗ ██╗██╗ █████╗ ████████╗ ██████╗ ██████╗ 4 | ██╔════╝██║████╗ ████║██║ ██║██║ ██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ 5 | ███████╗██║██╔████╔██║██║ ██║██║ ███████║ ██║ ██║ ██║██████╔╝ 6 | ╚════██║██║██║╚██╔╝██║██║ ██║██║ ██╔══██║ ██║ ██║ ██║██╔══██╗ 7 | ███████║██║██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║ ██║ ╚██████╔╝██║ ██║ 8 | ╚══════╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ 9 | 10 | -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/resources/com/shulie/instrument/simulator/agent/version: -------------------------------------------------------------------------------- 1 | ${agent.major.version}.${agent.minor.version} -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-core/src/main/resources/import-dependencies.config: -------------------------------------------------------------------------------- 1 | # 引入lib的目录,多个目录用逗号分开 2 | import-dependency-dir=lib,../lib 3 | #引入的lib文件 4 | import-artifacts=commons-lang,commons-lang3,gson,hutool-all -------------------------------------------------------------------------------- /simulator-agent/simulator-agent-spi/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | simulator-agent 7 | io.shulie.instrument.simulator 8 | 5.3.4 9 | 10 | 4.0.0 11 | 12 | simulator-agent-spi 13 | 14 | 15 | --------------------------------------------------------------------------------