├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ ├── build.yml
│ └── license-checker.yml
├── .gitignore
├── .licenserc.yaml
├── AOSP-Checkstyles.xml
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── build
├── pom.xml
└── src
│ ├── assembly
│ └── src.xml
│ └── main
│ ├── java
│ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── StartBootstrap.java
│ └── resources
│ ├── agent-to-cloud_1.0.properties
│ ├── agent.properties
│ ├── easeagent-log4j2.xml
│ └── user-minimal-cfg.properties
├── config
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── config
│ │ ├── AutoRefreshConfigItem.java
│ │ ├── CompatibilityConversion.java
│ │ ├── ConfigAware.java
│ │ ├── ConfigFactory.java
│ │ ├── ConfigLoader.java
│ │ ├── ConfigManagerMXBean.java
│ │ ├── ConfigNotifier.java
│ │ ├── ConfigPropertiesUtils.java
│ │ ├── ConfigUtils.java
│ │ ├── Configs.java
│ │ ├── GlobalConfigs.java
│ │ ├── JarFileConfigLoader.java
│ │ ├── OtelSdkConfigs.java
│ │ ├── PluginConfig.java
│ │ ├── PluginConfigManager.java
│ │ ├── PluginProperty.java
│ │ ├── PluginSourceConfig.java
│ │ ├── ValidateUtils.java
│ │ ├── WrappedConfigManager.java
│ │ ├── report
│ │ ├── ReportConfigAdapter.java
│ │ └── ReportConfigConst.java
│ │ └── yaml
│ │ └── YamlReader.java
│ └── test
│ ├── java
│ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── config
│ │ ├── CompatibilityConversionTest.java
│ │ ├── ConfigFactoryTest.java
│ │ ├── ConfigPropertiesUtilsTest.java
│ │ ├── ConfigUtilsTest.java
│ │ ├── ConfigsTest.java
│ │ ├── IPluginConfigConstTest.java
│ │ ├── JarFileConfigLoaderTest.java
│ │ ├── OtelSdkConfigsTest.java
│ │ ├── PluginConfigManagerTest.java
│ │ ├── PluginConfigTest.java
│ │ ├── PluginPropertyTest.java
│ │ ├── PluginSourceConfigTest.java
│ │ ├── ValidateUtilsTest.java
│ │ ├── report
│ │ └── ReportConfigAdapterTest.java
│ │ └── yaml
│ │ └── YamlReaderTest.java
│ └── resources
│ ├── agent.properties
│ ├── agent.yaml
│ ├── easeagent_config.jar
│ ├── user-spec.properties
│ ├── user-spec2.properties
│ └── user.properties
├── context
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── context
│ │ ├── AsyncContextImpl.java
│ │ ├── ContextManager.java
│ │ ├── GlobalContext.java
│ │ ├── ProgressFieldsManager.java
│ │ ├── RetBound.java
│ │ ├── SessionContext.java
│ │ └── log
│ │ ├── LoggerFactoryImpl.java
│ │ ├── LoggerImpl.java
│ │ └── LoggerMdc.java
│ └── test
│ ├── java
│ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── context
│ │ ├── AsyncContextImplTest.java
│ │ ├── ContextManagerTest.java
│ │ ├── GlobalContextTest.java
│ │ ├── ProgressFieldsManagerTest.java
│ │ ├── RetBoundTest.java
│ │ ├── SessionContextTest.java
│ │ └── log
│ │ ├── LoggerFactoryImplTest.java
│ │ ├── LoggerImplTest.java
│ │ └── LoggerMdcTest.java
│ └── resources
│ └── log4j2.xml
├── core
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── core
│ │ │ ├── AppendBootstrapClassLoaderSearch.java
│ │ │ ├── Bootstrap.java
│ │ │ ├── GlobalAgentHolder.java
│ │ │ ├── config
│ │ │ ├── CanaryListUpdateAgentHttpHandler.java
│ │ │ ├── CanaryUpdateAgentHttpHandler.java
│ │ │ ├── ConfigsUpdateAgentHttpHandler.java
│ │ │ ├── PluginPropertiesHttpHandler.java
│ │ │ ├── PluginPropertyHttpHandler.java
│ │ │ └── ServiceUpdateAgentHttpHandler.java
│ │ │ ├── health
│ │ │ └── HealthProvider.java
│ │ │ ├── info
│ │ │ ├── AgentInfoFactory.java
│ │ │ └── AgentInfoProvider.java
│ │ │ ├── plugin
│ │ │ ├── BaseLoader.java
│ │ │ ├── BridgeDispatcher.java
│ │ │ ├── CommonInlineAdvice.java
│ │ │ ├── Dispatcher.java
│ │ │ ├── PluginLoader.java
│ │ │ ├── annotation
│ │ │ │ ├── EaseAgentInstrumented.java
│ │ │ │ └── Index.java
│ │ │ ├── interceptor
│ │ │ │ ├── InterceptorPluginDecorator.java
│ │ │ │ ├── ProviderChain.java
│ │ │ │ └── ProviderPluginDecorator.java
│ │ │ ├── matcher
│ │ │ │ ├── ClassLoaderMatcherConvert.java
│ │ │ │ ├── ClassMatcherConvert.java
│ │ │ │ ├── ClassTransformation.java
│ │ │ │ ├── Converter.java
│ │ │ │ ├── MethodMatcherConvert.java
│ │ │ │ └── MethodTransformation.java
│ │ │ ├── registry
│ │ │ │ ├── AdviceRegistry.java
│ │ │ │ └── PluginRegistry.java
│ │ │ └── transformer
│ │ │ │ ├── AnnotationTransformer.java
│ │ │ │ ├── CompoundPluginTransformer.java
│ │ │ │ ├── DynamicFieldAdvice.java
│ │ │ │ ├── DynamicFieldTransformer.java
│ │ │ │ ├── ForAdviceTransformer.java
│ │ │ │ ├── advice
│ │ │ │ ├── AgentAdvice.java
│ │ │ │ ├── AgentForAdvice.java
│ │ │ │ ├── AgentJavaConstantValue.java
│ │ │ │ ├── BypassMethodVisitor.java
│ │ │ │ └── MethodIdentityJavaConstant.java
│ │ │ │ └── classloader
│ │ │ │ └── CompoundClassloader.java
│ │ │ └── utils
│ │ │ ├── AgentArray.java
│ │ │ ├── ContextUtils.java
│ │ │ ├── JsonUtil.java
│ │ │ ├── MutableObject.java
│ │ │ ├── ServletUtils.java
│ │ │ └── TextUtils.java
│ └── resources
│ │ ├── META-INF
│ │ └── services
│ │ │ └── com.megaease.easeagent.plugin.bean.BeanProvider
│ │ └── version.txt
│ └── test
│ └── java
│ └── com
│ └── megaease
│ └── easeagent
│ └── core
│ ├── AppendBootstrapClassLoaderSearchTest.java
│ ├── BootstrapTest.java
│ ├── HttpServerTest.java
│ ├── info
│ └── AgentInfoFactoryTest.java
│ ├── instrument
│ ├── ClinitMethodTransformTest.java
│ ├── NewInstanceMethodTransformTest.java
│ ├── NonStaticMethodTransformTest.java
│ ├── OrchestrationTransformTest.java
│ ├── StaticMethodTransformTest.java
│ ├── TestContext.java
│ ├── TestPlugin.java
│ └── TransformTestBase.java
│ ├── matcher
│ ├── ClassLoaderMatcherTest.java
│ ├── ClassMatcherTest.java
│ └── MethodMatcherTest.java
│ └── utils
│ └── AgentAttachmentRule.java
├── doc
├── add-plugin-demo.md
├── benchmark.md
├── context.md
├── criteria-for-configuring-priorities.md
├── development-guide.md
├── how-to-use
│ ├── megacloud-config.md
│ ├── use-in-docker.md
│ └── use-on-host.md
├── images
│ ├── Context-span-api.png
│ ├── Cross-server-tracing-UML.png
│ ├── Cross-thread-tracing-UML.png
│ ├── EaseAgent-Architecture-Base-v2.0.png
│ ├── EaseAgent-Architecture-v2.0.jpg
│ ├── EaseAgent-Architecture-v2.0.png
│ ├── EaseAgent-Architecture.jpg
│ ├── MessageTracing-UML.png
│ ├── Metric-Class-UML.png
│ ├── Metric-SequenceDiagram-UML.png
│ ├── SessionContext.png
│ ├── Span-tracing-UML.png
│ ├── benchmark
│ │ ├── 10t-mem-heap.png
│ │ ├── 10t-process-cpu-load-mean.png
│ │ ├── 10t-resp-per-15seconds.png
│ │ ├── 10t-resp-time-p75.png
│ │ ├── 20t-mem-heap.png
│ │ ├── 20t-process-cpu-load-mean.png
│ │ ├── 20t-resp-per-15seconds.png
│ │ ├── 20t-resp-time-p75.png
│ │ ├── 50t-mem-heap.png
│ │ ├── 50t-process-cpu-load-mean.png
│ │ ├── 50t-resp-per-15seconds.png
│ │ ├── 50t-resp-time-p75.png
│ │ ├── agent-320vus-mem.png
│ │ ├── agent-320vus-process-cpu-load.png
│ │ ├── agent-mem.png
│ │ ├── agent-process-cpu-load.png
│ │ ├── baseline-320vus-mem.png
│ │ ├── baseline-320vus-process-cpu-load.png
│ │ ├── baseline-cpu-load.png
│ │ ├── baseline-mem.png
│ │ └── baseline-process-cpu-load.png
│ ├── enhancement-debug.png
│ ├── grafana-metric.png
│ ├── grafana-tracing.png
│ ├── httpServletPlugin-module.jpg
│ ├── plugin-structure.png
│ ├── prometheus-demo-1.png
│ ├── prometheus-demo-2.png
│ ├── prometheus-demo.jpg
│ ├── prometheus-petclinic-demo.png
│ ├── session-RunnableImplUML.png
│ ├── simple-plugin.jpg
│ ├── slack-community.jpg
│ ├── trace-and-span.png
│ └── zipkin-span.jpg
├── matcher-DSL.md
├── metric-api.md
├── plugin-unit-test.md
├── prometheus-metric-schedule.md
├── report-development-guide.md
├── spring-petclinic-demo.md
├── tracing-api.md
└── user-manual.md
├── httpserver
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── megaease
│ └── easeagent
│ └── httpserver
│ ├── HttpRequest.java
│ ├── HttpResponse.java
│ ├── IHttpHandler.java
│ ├── IHttpServer.java
│ ├── jdk
│ ├── AgentHttpServerV2.java
│ ├── RootContextHandler.java
│ └── UriResource.java
│ ├── nano
│ ├── AgentHttpHandler.java
│ ├── AgentHttpHandlerProvider.java
│ └── AgentHttpServer.java
│ └── nanohttpd
│ ├── protocols
│ └── http
│ │ ├── ClientHandler.java
│ │ ├── HTTPSession.java
│ │ ├── IHTTPSession.java
│ │ ├── NanoHTTPD.java
│ │ ├── ServerRunnable.java
│ │ ├── content
│ │ ├── ContentType.java
│ │ ├── Cookie.java
│ │ └── CookieHandler.java
│ │ ├── request
│ │ └── Method.java
│ │ ├── response
│ │ ├── ChunkedOutputStream.java
│ │ ├── IStatus.java
│ │ ├── Response.java
│ │ └── Status.java
│ │ ├── sockets
│ │ ├── DefaultServerSocketFactory.java
│ │ └── SecureServerSocketFactory.java
│ │ ├── tempfiles
│ │ ├── DefaultTempFile.java
│ │ ├── DefaultTempFileManager.java
│ │ ├── DefaultTempFileManagerFactory.java
│ │ ├── ITempFile.java
│ │ └── ITempFileManager.java
│ │ └── threading
│ │ ├── DefaultAsyncRunner.java
│ │ └── IAsyncRunner.java
│ ├── router
│ └── RouterNanoHTTPD.java
│ └── util
│ ├── IFactory.java
│ ├── IFactoryThrowing.java
│ ├── IHandler.java
│ └── ServerRunner.java
├── loader
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── megaease
│ └── easeagent
│ ├── JarUtils.java
│ ├── Main.java
│ └── StringSequence.java
├── log4j2
├── README.md
├── log4j2-api
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── log4j2
│ │ ├── ClassLoaderUtils.java
│ │ ├── ClassloaderSupplier.java
│ │ ├── FinalClassloaderSupplier.java
│ │ ├── Logger.java
│ │ ├── LoggerFactory.java
│ │ ├── MDC.java
│ │ ├── api
│ │ ├── AgentLogger.java
│ │ ├── AgentLoggerFactory.java
│ │ ├── ILevel.java
│ │ └── Mdc.java
│ │ └── exception
│ │ └── Log4j2Exception.java
├── log4j2-impl
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── log4j2
│ │ └── impl
│ │ ├── AgentLoggerProxy.java
│ │ ├── LoggerProxyFactory.java
│ │ ├── MdcProxy.java
│ │ └── Slf4jLogger.java
└── pom.xml
├── metrics
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── metrics
│ │ │ ├── AgentScheduledReporter.java
│ │ │ ├── AutoRefreshReporter.java
│ │ │ ├── MetricBeanProviderImpl.java
│ │ │ ├── MetricProviderImpl.java
│ │ │ ├── MetricRegistryService.java
│ │ │ ├── PrometheusAgentHttpHandler.java
│ │ │ ├── config
│ │ │ ├── MetricsCollectorConfig.java
│ │ │ ├── MetricsConfig.java
│ │ │ └── PluginMetricsConfig.java
│ │ │ ├── converter
│ │ │ ├── AbstractConverter.java
│ │ │ ├── Converter.java
│ │ │ ├── ConverterAdapter.java
│ │ │ ├── EaseAgentPrometheusExports.java
│ │ │ ├── IgnoreOutputException.java
│ │ │ ├── KeyType.java
│ │ │ └── MetricsAdditionalAttributes.java
│ │ │ ├── impl
│ │ │ ├── CounterImpl.java
│ │ │ ├── GaugeImpl.java
│ │ │ ├── HistogramImpl.java
│ │ │ ├── MeterImpl.java
│ │ │ ├── MetricInstance.java
│ │ │ ├── MetricRegistryImpl.java
│ │ │ ├── SnapshotImpl.java
│ │ │ └── TimerImpl.java
│ │ │ ├── jvm
│ │ │ ├── JvmBeanProvider.java
│ │ │ ├── gc
│ │ │ │ └── JVMGCMetricV2.java
│ │ │ └── memory
│ │ │ │ └── JVMMemoryMetricV2.java
│ │ │ └── model
│ │ │ └── JVMMemoryGaugeMetricModel.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── com.megaease.easeagent.plugin.bean.BeanProvider
│ └── test
│ ├── java
│ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── metrics
│ │ ├── MetricProviderImplTest.java
│ │ ├── MetricRegistryServiceTest.java
│ │ ├── PrometheusAgentHttpHandlerTest.java
│ │ ├── TestConst.java
│ │ ├── config
│ │ └── PluginMetricsConfigTest.java
│ │ ├── converter
│ │ ├── AbstractConverterTest.java
│ │ ├── ConverterAdapterTest.java
│ │ ├── IgnoreOutputExceptionTest.java
│ │ └── MetricsAdditionalAttributesTest.java
│ │ ├── impl
│ │ ├── CounterImplTest.java
│ │ ├── GaugeImplTest.java
│ │ ├── HistogramImplTest.java
│ │ ├── MeterImplTest.java
│ │ ├── MetricInstanceTest.java
│ │ ├── MetricRegistryImplTest.java
│ │ ├── MetricRegistryMock.java
│ │ ├── MetricTestUtils.java
│ │ ├── MockClock.java
│ │ ├── SnapshotImplTest.java
│ │ └── TimerImplTest.java
│ │ └── jvm
│ │ └── memory
│ │ └── JVMMemoryMetricV2Test.java
│ └── resources
│ ├── log4j2.xml
│ └── mock_agent.properties
├── mock
├── config-mock
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ ├── config
│ │ │ └── MockConfigLoader.java
│ │ │ └── mock
│ │ │ └── config
│ │ │ └── MockConfig.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── config
│ │ │ └── MockConfigTest.java
│ │ └── resources
│ │ ├── mock_agent.properties
│ │ └── mock_agent.yaml
├── context-mock
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── mock
│ │ └── context
│ │ ├── MockContext.java
│ │ └── MockContextManager.java
├── log4j2-mock
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── megaease
│ │ │ │ └── easeagent
│ │ │ │ └── mock
│ │ │ │ └── log4j2
│ │ │ │ ├── AllUrlsSupplier.java
│ │ │ │ ├── DirUrlsSupplier.java
│ │ │ │ ├── JarPathUrlsSupplier.java
│ │ │ │ ├── JarUrlsSupplier.java
│ │ │ │ ├── URLClassLoaderSupplier.java
│ │ │ │ └── UrlSupplier.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── services
│ │ │ └── com.megaease.easeagent.log4j2.ClassloaderSupplier
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── log4j2
│ │ │ └── impl
│ │ │ ├── AgentLoggerFactoryTest.java
│ │ │ └── MDCTest.java
│ │ └── resources
│ │ └── log4j2.xml
├── metrics-mock
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── metrics
│ │ │ ├── MetricTestUtils.java
│ │ │ └── MockMetricProvider.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── com.megaease.easeagent.mock.utils.MockProvider
├── plugin-api-mock
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── plugin
│ │ │ └── api
│ │ │ ├── MockEaseAgent.java
│ │ │ ├── junit
│ │ │ ├── AfterStatement.java
│ │ │ ├── BeforeStatement.java
│ │ │ ├── EaseAgentJunit4ClassRunner.java
│ │ │ └── ScopeMustBeCloseException.java
│ │ │ └── utils
│ │ │ ├── ConfigTestUtils.java
│ │ │ ├── ContextUtils.java
│ │ │ ├── InterceptorTestUtils.java
│ │ │ ├── SpanTestUtils.java
│ │ │ └── TagVerifier.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── plugin
│ │ │ └── api
│ │ │ ├── TestContext.java
│ │ │ ├── TestEaseAgent.java
│ │ │ ├── demo
│ │ │ ├── InterceptorTest.java
│ │ │ ├── M1MetricCollect.java
│ │ │ └── MockEaseAgentTest.java
│ │ │ └── utils
│ │ │ └── ConfigTestUtilsTest.java
│ │ └── resources
│ │ └── log4j2.xml
├── pom.xml
├── report-mock
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── report
│ │ │ ├── JsonReporter.java
│ │ │ ├── MetricFlushable.java
│ │ │ ├── MockAtomicReferenceReportSpanReport.java
│ │ │ ├── MockReport.java
│ │ │ ├── MockSpan.java
│ │ │ ├── MockSpanReport.java
│ │ │ └── impl
│ │ │ ├── LastJsonReporter.java
│ │ │ └── ZipkinMockSpanImpl.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── report
│ │ │ └── MockReportTest.java
│ │ └── resources
│ │ └── log4j2.xml
├── utils-mock
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── mock
│ │ └── utils
│ │ ├── JdkHttpServer.java
│ │ ├── MockProvider.java
│ │ └── MockSystemEnv.java
└── zipkin-mock
│ ├── pom.xml
│ └── src
│ ├── main
│ ├── java
│ │ ├── brave
│ │ │ ├── TracerTestUtils.java
│ │ │ └── internal
│ │ │ │ └── collect
│ │ │ │ └── WeakConcurrentMapTestUtils.java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── mock
│ │ │ └── zipkin
│ │ │ └── MockTracingProvider.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── com.megaease.easeagent.mock.utils.MockProvider
│ └── test
│ └── java
│ └── com
│ └── megaease
│ └── easeagent
│ └── mock
│ └── zipkin
│ └── MockTracingProviderTest.java
├── plugin-api
├── README.md
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ ├── com
│ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ ├── AgentPlugin.java
│ │ │ ├── AppendBootstrapLoader.java
│ │ │ ├── Ordered.java
│ │ │ ├── Points.java
│ │ │ ├── annotation
│ │ │ ├── AdviceTo.java
│ │ │ ├── AdvicesTo.java
│ │ │ ├── DynamicField.java
│ │ │ └── Injection.java
│ │ │ ├── api
│ │ │ ├── Cleaner.java
│ │ │ ├── Context.java
│ │ │ ├── InitializeContext.java
│ │ │ ├── ProgressFields.java
│ │ │ ├── Reporter.java
│ │ │ ├── config
│ │ │ │ ├── AutoRefreshConfigSupplier.java
│ │ │ │ ├── AutoRefreshPluginConfig.java
│ │ │ │ ├── AutoRefreshPluginConfigImpl.java
│ │ │ │ ├── AutoRefreshPluginConfigRegistry.java
│ │ │ │ ├── ChangeItem.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── ConfigChangeListener.java
│ │ │ │ ├── ConfigConst.java
│ │ │ │ ├── Const.java
│ │ │ │ ├── IConfigFactory.java
│ │ │ │ ├── IPluginConfig.java
│ │ │ │ └── PluginConfigChangeListener.java
│ │ │ ├── context
│ │ │ │ ├── AsyncContext.java
│ │ │ │ ├── ContextCons.java
│ │ │ │ ├── ContextUtils.java
│ │ │ │ ├── IContextManager.java
│ │ │ │ └── RequestContext.java
│ │ │ ├── dispatcher
│ │ │ │ └── IDispatcher.java
│ │ │ ├── health
│ │ │ │ └── AgentHealth.java
│ │ │ ├── logging
│ │ │ │ ├── AccessLogInfo.java
│ │ │ │ ├── ILoggerFactory.java
│ │ │ │ ├── Logger.java
│ │ │ │ └── Mdc.java
│ │ │ ├── metric
│ │ │ │ ├── Counter.java
│ │ │ │ ├── Gauge.java
│ │ │ │ ├── Histogram.java
│ │ │ │ ├── Meter.java
│ │ │ │ ├── Metric.java
│ │ │ │ ├── MetricProvider.java
│ │ │ │ ├── MetricRegistry.java
│ │ │ │ ├── MetricRegistrySupplier.java
│ │ │ │ ├── MetricSupplier.java
│ │ │ │ ├── ServiceMetric.java
│ │ │ │ ├── ServiceMetricRegistry.java
│ │ │ │ ├── ServiceMetricSupplier.java
│ │ │ │ ├── Snapshot.java
│ │ │ │ ├── Timer.java
│ │ │ │ └── name
│ │ │ │ │ ├── ConverterType.java
│ │ │ │ │ ├── MetricField.java
│ │ │ │ │ ├── MetricName.java
│ │ │ │ │ ├── MetricSubType.java
│ │ │ │ │ ├── MetricType.java
│ │ │ │ │ ├── MetricValueFetcher.java
│ │ │ │ │ ├── NameFactory.java
│ │ │ │ │ └── Tags.java
│ │ │ ├── middleware
│ │ │ │ ├── MiddlewareConstants.java
│ │ │ │ ├── Redirect.java
│ │ │ │ ├── RedirectProcessor.java
│ │ │ │ ├── ResourceConfig.java
│ │ │ │ └── Type.java
│ │ │ ├── otlp
│ │ │ │ └── common
│ │ │ │ │ ├── AgentAttributes.java
│ │ │ │ │ ├── AgentInstrumentLibInfo.java
│ │ │ │ │ ├── AgentLogData.java
│ │ │ │ │ ├── AgentLogDataImpl.java
│ │ │ │ │ ├── LogMapper.java
│ │ │ │ │ ├── OtlpSpanContext.java
│ │ │ │ │ └── SemanticKey.java
│ │ │ └── trace
│ │ │ │ ├── Extractor.java
│ │ │ │ ├── Getter.java
│ │ │ │ ├── ITracing.java
│ │ │ │ ├── Injector.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── MessagingRequest.java
│ │ │ │ ├── MessagingTracing.java
│ │ │ │ ├── Request.java
│ │ │ │ ├── Response.java
│ │ │ │ ├── Scope.java
│ │ │ │ ├── Setter.java
│ │ │ │ ├── Span.java
│ │ │ │ ├── SpanContext.java
│ │ │ │ ├── Tracing.java
│ │ │ │ ├── TracingContext.java
│ │ │ │ ├── TracingProvider.java
│ │ │ │ └── TracingSupplier.java
│ │ │ ├── asm
│ │ │ └── Modifier.java
│ │ │ ├── async
│ │ │ ├── AgentThreadFactory.java
│ │ │ ├── ScheduleHelper.java
│ │ │ ├── ScheduleRunner.java
│ │ │ ├── ThreadLocalCurrentContext.java
│ │ │ └── ThreadUtils.java
│ │ │ ├── bean
│ │ │ ├── AgentInitializingBean.java
│ │ │ └── BeanProvider.java
│ │ │ ├── bridge
│ │ │ ├── AgentInfo.java
│ │ │ ├── EaseAgent.java
│ │ │ ├── NoOpAgentReporter.java
│ │ │ ├── NoOpCleaner.java
│ │ │ ├── NoOpConfigFactory.java
│ │ │ ├── NoOpContext.java
│ │ │ ├── NoOpDispatcher.java
│ │ │ ├── NoOpIPluginConfig.java
│ │ │ ├── NoOpLoggerFactory.java
│ │ │ ├── NoOpMetrics.java
│ │ │ ├── NoOpReporter.java
│ │ │ └── NoOpTracer.java
│ │ │ ├── enums
│ │ │ ├── ClassMatch.java
│ │ │ ├── Operator.java
│ │ │ ├── Order.java
│ │ │ └── StringMatch.java
│ │ │ ├── field
│ │ │ ├── AgentDynamicFieldAccessor.java
│ │ │ ├── AgentFieldReflectAccessor.java
│ │ │ ├── DynamicFieldAccessor.java
│ │ │ └── NullObject.java
│ │ │ ├── interceptor
│ │ │ ├── AgentInterceptorChain.java
│ │ │ ├── Interceptor.java
│ │ │ ├── InterceptorProvider.java
│ │ │ ├── MethodInfo.java
│ │ │ └── NonReentrantInterceptor.java
│ │ │ ├── matcher
│ │ │ ├── ClassMatcher.java
│ │ │ ├── IClassMatcher.java
│ │ │ ├── IMethodMatcher.java
│ │ │ ├── Matcher.java
│ │ │ ├── MethodMatcher.java
│ │ │ ├── loader
│ │ │ │ ├── ClassLoaderMatcher.java
│ │ │ │ ├── IClassLoaderMatcher.java
│ │ │ │ └── NegateClassLoaderMatcher.java
│ │ │ └── operator
│ │ │ │ ├── AndClassMatcher.java
│ │ │ │ ├── AndMethodMatcher.java
│ │ │ │ ├── NegateClassMatcher.java
│ │ │ │ ├── NegateMethodMatcher.java
│ │ │ │ ├── Operator.java
│ │ │ │ ├── OrClassMatcher.java
│ │ │ │ └── OrMethodMatcher.java
│ │ │ ├── processor
│ │ │ ├── BeanUtils.java
│ │ │ ├── ElementVisitor8.java
│ │ │ ├── GenerateProviderBean.java
│ │ │ ├── PluginProcessor.java
│ │ │ └── RepeatedAnnotationVisitor.java
│ │ │ ├── report
│ │ │ ├── AgentReport.java
│ │ │ ├── ByteWrapper.java
│ │ │ ├── Call.java
│ │ │ ├── Callback.java
│ │ │ ├── EncodedData.java
│ │ │ ├── Encoder.java
│ │ │ ├── Packer.java
│ │ │ ├── Sender.java
│ │ │ ├── encoder
│ │ │ │ └── JsonEncoder.java
│ │ │ ├── metric
│ │ │ │ └── MetricReporterFactory.java
│ │ │ └── tracing
│ │ │ │ ├── Annotation.java
│ │ │ │ ├── Endpoint.java
│ │ │ │ ├── ReportSpan.java
│ │ │ │ └── ReportSpanImpl.java
│ │ │ ├── tools
│ │ │ ├── config
│ │ │ │ └── NameAndSystem.java
│ │ │ ├── loader
│ │ │ │ └── AgentHelperClassLoader.java
│ │ │ ├── matcher
│ │ │ │ ├── ClassMatcherUtils.java
│ │ │ │ └── MethodMatcherUtils.java
│ │ │ ├── metrics
│ │ │ │ ├── AccessLogServerInfo.java
│ │ │ │ ├── ErrorPercentModelGauge.java
│ │ │ │ ├── GaugeMetricModel.java
│ │ │ │ ├── HttpLog.java
│ │ │ │ ├── LastMinutesCounterGauge.java
│ │ │ │ ├── NameFactorySupplier.java
│ │ │ │ ├── RedisMetric.java
│ │ │ │ └── ServerMetric.java
│ │ │ └── trace
│ │ │ │ ├── BaseHttpClientTracingInterceptor.java
│ │ │ │ ├── HttpRequest.java
│ │ │ │ ├── HttpResponse.java
│ │ │ │ ├── HttpUtils.java
│ │ │ │ └── TraceConst.java
│ │ │ └── utils
│ │ │ ├── AdditionalAttributes.java
│ │ │ ├── ClassInstance.java
│ │ │ ├── ClassUtils.java
│ │ │ ├── ImmutableMap.java
│ │ │ ├── NoNull.java
│ │ │ ├── Pair.java
│ │ │ ├── SystemClock.java
│ │ │ ├── SystemEnv.java
│ │ │ ├── common
│ │ │ ├── DataSize.java
│ │ │ ├── DataUnit.java
│ │ │ ├── ExceptionUtil.java
│ │ │ ├── HostAddress.java
│ │ │ ├── JsonUtil.java
│ │ │ ├── StringUtils.java
│ │ │ └── WeakConcurrentMap.java
│ │ │ └── jackson
│ │ │ └── annotation
│ │ │ └── JsonProperty.java
│ │ └── io
│ │ └── opentelemetry
│ │ └── sdk
│ │ └── resources
│ │ └── EaseAgentResource.java
│ └── test
│ └── java
│ └── com
│ └── megaease
│ └── easeagent
│ └── plugin
│ ├── api
│ ├── MockSystemEnv.java
│ ├── ProgressFieldsTest.java
│ ├── metric
│ │ └── name
│ │ │ └── NameFactoryTest.java
│ └── middleware
│ │ ├── RedirectProcessorTest.java
│ │ ├── RedirectTest.java
│ │ └── ResourceConfigTest.java
│ ├── async
│ └── ThreadLocalCurrentContextTest.java
│ └── tools
│ └── config
│ └── AutoRefreshConfigSupplierTest.java
├── plugins
├── async
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ ├── AsyncPlugin.java
│ │ │ ├── advice
│ │ │ ├── CrossThreadAdvice.java
│ │ │ └── ReactSchedulersAdvice.java
│ │ │ └── interceptor
│ │ │ └── RunnableInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── interceptor
│ │ │ └── RunnableInterceptorTest.java
│ │ └── resources
│ │ └── log4j2.xml
├── dubbo
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── dubbo
│ │ │ ├── AlibabaDubboCtxUtils.java
│ │ │ ├── ApacheDubboCtxUtils.java
│ │ │ ├── DubboMetricTags.java
│ │ │ ├── DubboPlugin.java
│ │ │ ├── DubboTraceTags.java
│ │ │ ├── advice
│ │ │ ├── AlibabaDubboAdvice.java
│ │ │ ├── AlibabaDubboResponseFutureAdvice.java
│ │ │ └── ApacheDubboAdvice.java
│ │ │ ├── config
│ │ │ └── DubboTraceConfig.java
│ │ │ └── interceptor
│ │ │ ├── DubboBaseInterceptor.java
│ │ │ ├── metrics
│ │ │ ├── DubboBaseMetricsInterceptor.java
│ │ │ ├── DubboMetrics.java
│ │ │ ├── alibaba
│ │ │ │ ├── AlibabaDubboAsyncMetricsInterceptor.java
│ │ │ │ ├── AlibabaDubboMetricsCallback.java
│ │ │ │ └── AlibabaDubboMetricsInterceptor.java
│ │ │ └── apache
│ │ │ │ ├── ApacheDubboMetricsAsyncCallback.java
│ │ │ │ └── ApacheDubboMetricsInterceptor.java
│ │ │ └── trace
│ │ │ ├── alibaba
│ │ │ ├── AlibabaDubboAsyncTraceInterceptor.java
│ │ │ ├── AlibabaDubboClientRequest.java
│ │ │ ├── AlibabaDubboServerRequest.java
│ │ │ ├── AlibabaDubboTraceCallback.java
│ │ │ └── AlibabaDubboTraceInterceptor.java
│ │ │ └── apache
│ │ │ ├── ApacheDubboClientRequest.java
│ │ │ ├── ApacheDubboServerRequest.java
│ │ │ ├── ApacheDubboTraceCallback.java
│ │ │ └── ApacheDubboTraceInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── dubbo
│ │ │ └── interceptor
│ │ │ ├── AlibabaDubboBaseTest.java
│ │ │ ├── ApacheDubboBaseTest.java
│ │ │ ├── metrics
│ │ │ ├── alibaba
│ │ │ │ ├── AlibabaDubboAsyncMetricsInterceptorTest.java
│ │ │ │ └── AlibabaDubboMetricsInterceptorTest.java
│ │ │ └── apache
│ │ │ │ └── ApacheDubboMetricsInterceptorTest.java
│ │ │ └── trace
│ │ │ ├── alibaba
│ │ │ ├── AlibabaDubboAsyncTraceInterceptorTest.java
│ │ │ └── AlibabaDubboTraceInterceptorTest.java
│ │ │ └── apache
│ │ │ └── ApacheDubboTraceInterceptorTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── elasticsearch
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── elasticsearch
│ │ │ ├── ElasticsearchPlugin.java
│ │ │ ├── ElasticsearchRedirectPlugin.java
│ │ │ ├── advice
│ │ │ └── SpringElasticsearchAdvice.java
│ │ │ ├── interceptor
│ │ │ ├── AsyncResponse4MetricsListener.java
│ │ │ ├── AsyncResponse4TraceListener.java
│ │ │ ├── ElasticsearchBaseInterceptor.java
│ │ │ ├── ElasticsearchBaseMetricsInterceptor.java
│ │ │ ├── ElasticsearchBaseTraceInterceptor.java
│ │ │ ├── ElasticsearchCtxUtils.java
│ │ │ ├── ElasticsearchMetric.java
│ │ │ ├── ElasticsearchPerformRequestAsync4MetricsInterceptor.java
│ │ │ ├── ElasticsearchPerformRequestAsync4TraceInterceptor.java
│ │ │ ├── ElasticsearchPerformRequestMetricsInterceptor.java
│ │ │ ├── ElasticsearchPerformRequestTraceInterceptor.java
│ │ │ └── redirect
│ │ │ │ └── SpringElasticsearchInterceptor.java
│ │ │ └── points
│ │ │ ├── ElasticsearchPerformRequestAsyncPoints.java
│ │ │ └── ElasticsearchPerformRequestPoints.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── plugin
│ │ └── elasticsearch
│ │ └── interceptor
│ │ ├── ElasticsearchBaseTest.java
│ │ ├── ElasticsearchCtxUtilsTest.java
│ │ ├── ElasticsearchPerformRequestAsyncMetricsInterceptorTest.java
│ │ ├── ElasticsearchPerformRequestAsyncTraceInterceptorTest.java
│ │ ├── ElasticsearchPerformRequestMetricsInterceptorTest.java
│ │ └── ElasticsearchPerformRequestTraceInterceptorTest.java
├── healthy
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── healthy
│ │ │ ├── HealthPlugin.java
│ │ │ ├── OnApplicationEventInterceptor.java
│ │ │ └── SpringApplicationAdminMXBeanRegistrarAdvice.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── plugin
│ │ └── healthy
│ │ └── OnApplicationEventInterceptorTest.java
├── httpclient
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── httpclient
│ │ │ ├── ForwardedPlugin.java
│ │ │ ├── HttpClientPlugin.java
│ │ │ ├── advice
│ │ │ ├── HttpClient5AsyncAdvice.java
│ │ │ ├── HttpClient5DoExecuteAdvice.java
│ │ │ └── HttpClientDoExecuteAdvice.java
│ │ │ └── interceptor
│ │ │ ├── HttpClient5AsyncForwardedInterceptor.java
│ │ │ ├── HttpClient5AsyncTracingInterceptor.java
│ │ │ ├── HttpClient5DoExecuteForwardedInterceptor.java
│ │ │ ├── HttpClient5DoExecuteInterceptor.java
│ │ │ ├── HttpClientDoExecuteForwardedInterceptor.java
│ │ │ └── HttpClientDoExecuteInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── httpclient
│ │ │ └── interceptor
│ │ │ ├── HttpClient5AsyncForwardedInterceptorTest.java
│ │ │ ├── HttpClient5AsyncTracingInterceptorTest.java
│ │ │ ├── HttpClient5DoExecuteForwardedInterceptorTest.java
│ │ │ ├── HttpClient5DoExecuteInterceptorTest.java
│ │ │ ├── HttpClientDoExecuteForwardedInterceptorTest.java
│ │ │ ├── HttpClientDoExecuteInterceptorTest.java
│ │ │ └── TestConst.java
│ │ └── resources
│ │ └── mock_agent.properties
├── httpservlet
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── httpservlet
│ │ │ ├── AccessPlugin.java
│ │ │ ├── ForwardedPlugin.java
│ │ │ ├── HttpServletPlugin.java
│ │ │ ├── advice
│ │ │ └── DoFilterPoints.java
│ │ │ ├── interceptor
│ │ │ ├── BaseServletInterceptor.java
│ │ │ ├── DoFilterForwardedInterceptor.java
│ │ │ ├── DoFilterMetricInterceptor.java
│ │ │ ├── DoFilterTraceInterceptor.java
│ │ │ ├── HttpServerRequest.java
│ │ │ ├── ServletAccessLogServerInfo.java
│ │ │ └── ServletHttpLogInterceptor.java
│ │ │ └── utils
│ │ │ ├── InternalAsyncListener.java
│ │ │ ├── ServletUtils.java
│ │ │ └── SpringWebUtils.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── httpservlet
│ │ │ └── interceptor
│ │ │ ├── BaseServletInterceptorTest.java
│ │ │ ├── DoFilterForwardedInterceptorTest.java
│ │ │ ├── DoFilterMetricInterceptorTest.java
│ │ │ ├── DoFilterTraceInterceptorTest.java
│ │ │ ├── HttpServerRequestTest.java
│ │ │ ├── ServletAccessLogInfoServerInfoTest.java
│ │ │ ├── ServletHttpLogInterceptorTest.java
│ │ │ ├── TestConst.java
│ │ │ └── TestServletUtils.java
│ │ └── resources
│ │ └── mock_agent.properties
├── httpurlconnection
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── httpurlconnection
│ │ │ ├── ForwardedPlugin.java
│ │ │ ├── HttpURLConnectionPlugin.java
│ │ │ ├── advice
│ │ │ └── HttpURLConnectionGetResponseCodeAdvice.java
│ │ │ └── interceptor
│ │ │ ├── HttpURLConnectionGetResponseCodeForwardedInterceptor.java
│ │ │ └── HttpURLConnectionGetResponseCodeInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── httpurlconnection
│ │ │ └── interceptor
│ │ │ ├── HttpURLConnectionGetResponseCodeForwardedInterceptorTest.java
│ │ │ ├── HttpURLConnectionGetResponseCodeInterceptorTest.java
│ │ │ └── TestUtils.java
│ │ └── resources
│ │ └── mock_agent.properties
├── jdbc
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── jdbc
│ │ │ ├── JdbcConnectionMetricPlugin.java
│ │ │ ├── JdbcDataSourceMetricPlugin.java
│ │ │ ├── JdbcRedirectPlugin.java
│ │ │ ├── JdbcTracingPlugin.java
│ │ │ ├── advice
│ │ │ ├── HikariDataSourceAdvice.java
│ │ │ ├── JdbcConnectionAdvice.java
│ │ │ ├── JdbcDataSourceAdvice.java
│ │ │ └── JdbcStatementAdvice.java
│ │ │ ├── common
│ │ │ ├── DatabaseInfo.java
│ │ │ ├── JdbcUtils.java
│ │ │ ├── MD5DictionaryItem.java
│ │ │ ├── MD5ReportConsumer.java
│ │ │ ├── MD5SQLCompression.java
│ │ │ ├── SQLCompression.java
│ │ │ ├── SQLCompressionFactory.java
│ │ │ ├── SQLCompressionWrapper.java
│ │ │ └── SqlInfo.java
│ │ │ └── interceptor
│ │ │ ├── JdbConPrepareOrCreateStmInterceptor.java
│ │ │ ├── JdbcStmPrepareSqlInterceptor.java
│ │ │ ├── metric
│ │ │ ├── JdbcDataSourceMetricInterceptor.java
│ │ │ ├── JdbcMetric.java
│ │ │ └── JdbcStmMetricInterceptor.java
│ │ │ ├── redirect
│ │ │ └── HikariSetPropertyInterceptor.java
│ │ │ └── tracing
│ │ │ └── JdbcStmTracingInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── jdbc
│ │ │ ├── MockJDBCStatement.java
│ │ │ ├── TestUtils.java
│ │ │ ├── common
│ │ │ ├── DatabaseInfoTest.java
│ │ │ ├── JdbcUtilsTest.java
│ │ │ ├── MD5DictionaryItemTest.java
│ │ │ ├── MD5ReportConsumerTest.java
│ │ │ ├── MD5SQLCompressionTest.java
│ │ │ └── SqlInfoTest.java
│ │ │ └── interceptor
│ │ │ ├── JdbConPrepareOrCreateStmInterceptorTest.java
│ │ │ ├── JdbcStmPrepareSqlInterceptorTest.java
│ │ │ ├── metric
│ │ │ ├── JdbcDataSourceMetricInterceptorTest.java
│ │ │ ├── JdbcMetricTest.java
│ │ │ └── JdbcStmMetricInterceptorTest.java
│ │ │ ├── redirect
│ │ │ └── HikariSetPropertyInterceptorTest.java
│ │ │ └── tracing
│ │ │ └── JdbcStmTracingInterceptorTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── kafka
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── kafka
│ │ │ ├── KafkaPlugin.java
│ │ │ ├── KafkaRedirectPlugin.java
│ │ │ ├── advice
│ │ │ ├── KafkaConsumerAdvice.java
│ │ │ ├── KafkaConsumerConfigAdvice.java
│ │ │ ├── KafkaConsumerRecordAdvice.java
│ │ │ ├── KafkaMessageListenerAdvice.java
│ │ │ ├── KafkaProducerAdvice.java
│ │ │ └── KafkaProducerConfigAdvice.java
│ │ │ └── interceptor
│ │ │ ├── AsyncCallback.java
│ │ │ ├── KafkaUtils.java
│ │ │ ├── initialize
│ │ │ ├── ConsumerRecordInterceptor.java
│ │ │ ├── KafkaConsumerConstructInterceptor.java
│ │ │ ├── KafkaConsumerPollInterceptor.java
│ │ │ └── KafkaProducerConstructInterceptor.java
│ │ │ ├── metric
│ │ │ ├── KafkaConsumerMetricInterceptor.java
│ │ │ ├── KafkaMessageListenerMetricInterceptor.java
│ │ │ ├── KafkaMetric.java
│ │ │ ├── KafkaProducerMetricInterceptor.java
│ │ │ └── MetricCallback.java
│ │ │ ├── redirect
│ │ │ ├── KafkaAbstractConfigConstructInterceptor.java
│ │ │ ├── KafkaConsumerConfigConstructInterceptor.java
│ │ │ └── KafkaProducerConfigConstructInterceptor.java
│ │ │ └── tracing
│ │ │ ├── KafkaConsumerRequest.java
│ │ │ ├── KafkaConsumerTracingInterceptor.java
│ │ │ ├── KafkaHeaders.java
│ │ │ ├── KafkaMessageListenerTracingInterceptor.java
│ │ │ ├── KafkaProducerDoSendInterceptor.java
│ │ │ ├── KafkaProducerRequest.java
│ │ │ ├── KafkaTags.java
│ │ │ └── TraceCallback.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── kafka
│ │ │ └── interceptor
│ │ │ ├── AsyncCallbackTest.java
│ │ │ ├── KafkaTestUtils.java
│ │ │ ├── KafkaUtilsTest.java
│ │ │ ├── MockConsumerRecord.java
│ │ │ ├── MockKafkaConsumer.java
│ │ │ ├── MockKafkaProducer.java
│ │ │ ├── TestConst.java
│ │ │ ├── initialize
│ │ │ ├── ConsumerRecordInterceptorTest.java
│ │ │ ├── KafkaConsumerConstructInterceptorTest.java
│ │ │ ├── KafkaConsumerPollInterceptorTest.java
│ │ │ ├── KafkaProducerConstructInterceptorTest.java
│ │ │ └── MockDynamicFieldAccessor.java
│ │ │ ├── metric
│ │ │ ├── KafkaConsumerMetricInterceptorTest.java
│ │ │ ├── KafkaMessageListenerMetricInterceptorTest.java
│ │ │ ├── KafkaMetricTest.java
│ │ │ ├── KafkaProducerMetricInterceptorTest.java
│ │ │ └── MetricCallbackTest.java
│ │ │ ├── redirect
│ │ │ └── KafkaAbstractConfigConstructInterceptorTest.java
│ │ │ └── tracing
│ │ │ ├── KafkaConsumerRequestTest.java
│ │ │ ├── KafkaConsumerTracingInterceptorTest.java
│ │ │ ├── KafkaHeadersTest.java
│ │ │ ├── KafkaMessageListenerTracingInterceptorTest.java
│ │ │ ├── KafkaProducerDoSendInterceptorTest.java
│ │ │ ├── KafkaProducerRequestTest.java
│ │ │ └── TraceCallbackTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── log4j2-log-plugin
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── log4j2
│ │ ├── Log4j2Plugin.java
│ │ ├── interceptor
│ │ └── Log4j2AppenderInterceptor.java
│ │ ├── log
│ │ └── Log4jLogMapper.java
│ │ └── points
│ │ └── AbstractLoggerPoints.java
├── logback
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── logback
│ │ ├── LogbackPlugin.java
│ │ ├── interceptor
│ │ └── LogbackAppenderInterceptor.java
│ │ ├── log
│ │ └── LogbackLogMapper.java
│ │ └── points
│ │ └── LoggerPoints.java
├── mongodb
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── mongodb
│ │ │ ├── MongoPlugin.java
│ │ │ ├── MongoRedirectPlugin.java
│ │ │ ├── MongoUtils.java
│ │ │ ├── interceptor
│ │ │ ├── InterceptorHelper.java
│ │ │ ├── MetricHelper.java
│ │ │ ├── MongoBaseInterceptor.java
│ │ │ ├── MongoBaseMetricInterceptor.java
│ │ │ ├── MongoBaseTraceInterceptor.java
│ │ │ ├── MongoClientConstruct4MetricInterceptor.java
│ │ │ ├── MongoClientConstruct4TraceInterceptor.java
│ │ │ ├── MongoCtx.java
│ │ │ ├── MongoDbRedirectInterceptor.java
│ │ │ ├── MongoInternalConnectionSendAndReceiveAsync4MetricInterceptor.java
│ │ │ ├── MongoInternalConnectionSendAndReceiveAsync4TraceInterceptor.java
│ │ │ ├── MongoMetric.java
│ │ │ ├── MongoReactiveInitMetricInterceptor.java
│ │ │ ├── MongoReactiveInitTraceInterceptor.java
│ │ │ ├── TraceHelper.java
│ │ │ └── listener
│ │ │ │ ├── MongoBaseCommandListener.java
│ │ │ │ ├── MongoBaseMetricCommandListener.java
│ │ │ │ ├── MongoBaseTraceCommandListener.java
│ │ │ │ ├── MongoMetricCommandListener.java
│ │ │ │ ├── MongoReactiveMetricCommandListener.java
│ │ │ │ ├── MongoReactiveTraceCommandListener.java
│ │ │ │ └── MongoTraceCommandListener.java
│ │ │ └── points
│ │ │ ├── MongoAsyncMongoClientsPoints.java
│ │ │ ├── MongoClientImplPoints.java
│ │ │ ├── MongoDBInternalConnectionPoints.java
│ │ │ └── MongoRedirectPoints.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── plugin
│ │ └── mongodb
│ │ ├── MongoBaseTest.java
│ │ ├── MongoMetricTest.java
│ │ ├── MongoReactiveMetricTest.java
│ │ ├── MongoReactiveTraceTest.java
│ │ ├── MongoTraceTest.java
│ │ └── TraceHelperTest.java
├── motan
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── motan
│ │ │ ├── MotanPlugin.java
│ │ │ ├── advice
│ │ │ ├── MotanConsumerAdvice.java
│ │ │ └── MotanProviderAdvice.java
│ │ │ ├── config
│ │ │ └── MotanPluginConfig.java
│ │ │ └── interceptor
│ │ │ ├── MotanClassUtils.java
│ │ │ ├── MotanCtxUtils.java
│ │ │ ├── metrics
│ │ │ ├── MetricsFutureListener.java
│ │ │ ├── MotanBaseMetricsInterceptor.java
│ │ │ ├── MotanMetric.java
│ │ │ ├── MotanMetricTags.java
│ │ │ └── MotanMetricsInterceptor.java
│ │ │ └── trace
│ │ │ ├── MotanBaseInterceptor.java
│ │ │ ├── MotanTags.java
│ │ │ ├── consumer
│ │ │ ├── MotanConsumerRequest.java
│ │ │ ├── MotanConsumerTraceInterceptor.java
│ │ │ └── TraceFutureListener.java
│ │ │ └── provider
│ │ │ ├── MotanProviderRequest.java
│ │ │ └── MotanProviderTraceInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── motan
│ │ │ └── interceptor
│ │ │ ├── metrics
│ │ │ └── MotanMetricsInterceptorTest.java
│ │ │ └── trace
│ │ │ ├── MotanInterceptorTest.java
│ │ │ ├── consumer
│ │ │ └── MotanConsumerInterceptorTest.java
│ │ │ └── provider
│ │ │ └── MotanProviderInterceptorTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── okhttp
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── okhttp
│ │ │ ├── ForwardedPlugin.java
│ │ │ ├── OkHttpPlugin.java
│ │ │ ├── advice
│ │ │ └── OkHttpAdvice.java
│ │ │ └── interceptor
│ │ │ ├── ForwardedRequest.java
│ │ │ ├── InternalRequest.java
│ │ │ ├── InternalResponse.java
│ │ │ ├── OkHttpAsyncTracingInterceptor.java
│ │ │ ├── OkHttpForwardedInterceptor.java
│ │ │ └── OkHttpTracingInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── okhttp
│ │ │ └── interceptor
│ │ │ ├── OkHttpAsyncTracingInterceptorTest.java
│ │ │ ├── OkHttpForwardedInterceptorTest.java
│ │ │ ├── OkHttpTestUtils.java
│ │ │ ├── OkHttpTracingInterceptorTest.java
│ │ │ └── TestConst.java
│ │ └── resources
│ │ └── mock_agent.properties
├── pom.xml
├── rabbitmq
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── rabbitmq
│ │ │ ├── RabbitMqConsumerMetric.java
│ │ │ ├── RabbitMqPlugin.java
│ │ │ ├── RabbitMqProducerMetric.java
│ │ │ ├── RabbitMqRedirectPlugin.java
│ │ │ ├── spring
│ │ │ ├── RabbitMqMessageListenerAdvice.java
│ │ │ └── interceptor
│ │ │ │ ├── RabbitMqMessageListenerOnMessageInterceptor.java
│ │ │ │ ├── RabbitMqOnMessageMetricInterceptor.java
│ │ │ │ └── RabbitMqOnMessageTracingInterceptor.java
│ │ │ └── v5
│ │ │ ├── advice
│ │ │ ├── RabbitMqChannelAdvice.java
│ │ │ ├── RabbitMqConfigFactoryAdvice.java
│ │ │ ├── RabbitMqConsumerAdvice.java
│ │ │ └── RabbitMqPropertyAdvice.java
│ │ │ └── interceptor
│ │ │ ├── RabbitMqChannelConsumeInterceptor.java
│ │ │ ├── RabbitMqChannelConsumerDeliveryInterceptor.java
│ │ │ ├── RabbitMqChannelPublishInterceptor.java
│ │ │ ├── RabbitMqConsumerHandleDeliveryInterceptor.java
│ │ │ ├── metirc
│ │ │ ├── RabbitMqConsumerMetricInterceptor.java
│ │ │ └── RabbitMqProducerMetricInterceptor.java
│ │ │ ├── redirect
│ │ │ ├── RabbitMqConfigFactoryInterceptor.java
│ │ │ └── RabbitMqPropertyInterceptor.java
│ │ │ └── tracing
│ │ │ ├── RabbitMqChannelPublishTracingInterceptor.java
│ │ │ └── RabbitMqConsumerTracingInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── rabbitmq
│ │ │ ├── RabbitMqConsumerMetricTest.java
│ │ │ ├── RabbitMqProducerMetricTest.java
│ │ │ ├── TestUtils.java
│ │ │ ├── spring
│ │ │ └── interceptor
│ │ │ │ ├── RabbitMqMessageListenerOnMessageInterceptorTest.java
│ │ │ │ ├── RabbitMqOnMessageMetricInterceptorTest.java
│ │ │ │ └── RabbitMqOnMessageTracingInterceptorTest.java
│ │ │ └── v5
│ │ │ └── interceptor
│ │ │ ├── MockConsumer.java
│ │ │ ├── RabbitMqChannelConsumeInterceptorTest.java
│ │ │ ├── RabbitMqChannelConsumerDeliveryInterceptorTest.java
│ │ │ ├── RabbitMqChannelPublishInterceptorTest.java
│ │ │ ├── RabbitMqConsumerHandleDeliveryInterceptorTest.java
│ │ │ ├── metirc
│ │ │ ├── RabbitMqConsumerMetricInterceptorTest.java
│ │ │ └── RabbitMqProducerMetricInterceptorTest.java
│ │ │ ├── redirect
│ │ │ └── RabbitMqPropertyInterceptorTest.java
│ │ │ └── tracing
│ │ │ ├── RabbitMqChannelPublishTracingInterceptorTest.java
│ │ │ └── RabbitMqConsumerTracingInterceptorTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── redis
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── redis
│ │ │ ├── RedisPlugin.java
│ │ │ ├── RedisRedirectPlugin.java
│ │ │ ├── advice
│ │ │ ├── JedisAdvice.java
│ │ │ ├── JedisConstructorAdvice.java
│ │ │ ├── LettuceRedisClientAdvice.java
│ │ │ ├── RedisChannelWriterAdvice.java
│ │ │ ├── RedisClusterClientAdvice.java
│ │ │ ├── RedisPropertiesAdvice.java
│ │ │ ├── RedisPropertiesClusterAdvice.java
│ │ │ └── StatefulRedisConnectionAdvice.java
│ │ │ └── interceptor
│ │ │ ├── RedisClassUtils.java
│ │ │ ├── RedisClientUtils.java
│ │ │ ├── initialize
│ │ │ ├── CommonRedisClientInterceptor.java
│ │ │ ├── CompletableFutureWrapper.java
│ │ │ ├── ConnectionFutureWrapper.java
│ │ │ ├── RedisClientInterceptor.java
│ │ │ └── RedisClusterClientInterceptor.java
│ │ │ ├── metric
│ │ │ ├── CommonRedisMetricInterceptor.java
│ │ │ ├── JedisMetricInterceptor.java
│ │ │ └── LettuceMetricInterceptor.java
│ │ │ ├── redirect
│ │ │ ├── JedisConstructorInterceptor.java
│ │ │ ├── LettuceRedisClientConstructInterceptor.java
│ │ │ ├── RedisPropertiesClusterSetNodesInterceptor.java
│ │ │ └── RedisPropertiesSetPropertyInterceptor.java
│ │ │ └── tracing
│ │ │ ├── CommonRedisTracingInterceptor.java
│ │ │ ├── JedisTracingInterceptor.java
│ │ │ ├── LettuceTracingInterceptor.java
│ │ │ └── StatefulRedisConnectionInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── redis
│ │ │ └── interceptor
│ │ │ ├── RedisUtils.java
│ │ │ ├── TestConst.java
│ │ │ ├── initialize
│ │ │ ├── CommonRedisClientInterceptorTest.java
│ │ │ ├── CompletableFutureWrapperTest.java
│ │ │ ├── ConnectionFutureWrapperTest.java
│ │ │ └── DynamicFieldAccessorObj.java
│ │ │ ├── metric
│ │ │ ├── CommonRedisMetricInterceptorTest.java
│ │ │ ├── JedisMetricInterceptorTest.java
│ │ │ └── LettuceMetricInterceptorTest.java
│ │ │ ├── redirect
│ │ │ ├── JedisConstructorInterceptorTest.java
│ │ │ ├── LettuceRedisClientConstructInterceptorTest.java
│ │ │ ├── RedisPropertiesClusterSetNodesInterceptorTest.java
│ │ │ └── RedisPropertiesSetPropertyInterceptorTest.java
│ │ │ └── tracing
│ │ │ ├── CommonRedisTracingInterceptorTest.java
│ │ │ ├── JedisTracingInterceptorTest.java
│ │ │ └── LettuceTracingInterceptorTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── servicename
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── servicename
│ │ │ ├── Const.java
│ │ │ ├── ReflectionTool.java
│ │ │ ├── ServiceNamePlugin.java
│ │ │ ├── ServiceNamePluginConfig.java
│ │ │ ├── advice
│ │ │ ├── FeignBlockingLoadBalancerClientAdvice.java
│ │ │ ├── FeignLoadBalancerAdvice.java
│ │ │ ├── FilteringWebHandlerAdvice.java
│ │ │ ├── LoadBalancerFeignClientAdvice.java
│ │ │ ├── RestTemplateInterceptAdvice.java
│ │ │ └── WebClientFilterAdvice.java
│ │ │ └── interceptor
│ │ │ ├── BaseServiceNameInterceptor.java
│ │ │ ├── FeignBlockingLoadBalancerClientInterceptor.java
│ │ │ ├── FeignLoadBalancerInterceptor.java
│ │ │ ├── FilteringWebHandlerInterceptor.java
│ │ │ ├── LoadBalancerFeignClientInterceptor.java
│ │ │ ├── RestTemplateInterceptInterceptor.java
│ │ │ └── WebClientFilterInterceptor.java
│ │ └── test
│ │ ├── java
│ │ ├── com
│ │ │ └── megaease
│ │ │ │ └── easeagent
│ │ │ │ └── plugin
│ │ │ │ └── servicename
│ │ │ │ ├── ReflectionToolTest.java
│ │ │ │ └── interceptor
│ │ │ │ ├── BaseServiceNameInterceptorTest.java
│ │ │ │ ├── CheckUtils.java
│ │ │ │ ├── FeignBlockingLoadBalancerClientInterceptorTest.java
│ │ │ │ ├── FeignLoadBalancerInterceptorTest.java
│ │ │ │ ├── FilteringWebHandlerInterceptorTest.java
│ │ │ │ ├── LoadBalancerFeignClientInterceptorTest.java
│ │ │ │ ├── RestTemplateInterceptInterceptorTest.java
│ │ │ │ ├── TestConst.java
│ │ │ │ └── WebClientFilterInterceptorTest.java
│ │ └── org
│ │ │ └── springframework
│ │ │ ├── cloud
│ │ │ └── openfeign
│ │ │ │ └── ribbon
│ │ │ │ └── MockRibbonRequest.java
│ │ │ └── web
│ │ │ └── reactive
│ │ │ └── function
│ │ │ └── client
│ │ │ └── MockClientRequest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── sofarpc
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── sofarpc
│ │ │ ├── SofaRpcCtxUtils.java
│ │ │ ├── SofaRpcMetricsTags.java
│ │ │ ├── SofaRpcPlugin.java
│ │ │ ├── SofaRpcTraceTags.java
│ │ │ ├── adivce
│ │ │ ├── BoltFutureInvokeCallbackConstructAdvice.java
│ │ │ ├── ConsumerAdvice.java
│ │ │ ├── FutureInvokeCallbackConstructAdvice.java
│ │ │ ├── ProviderAdvice.java
│ │ │ ├── ResponseCallbackAdvice.java
│ │ │ └── ResponseFutureAdvice.java
│ │ │ ├── config
│ │ │ └── SofaRpcTraceConfig.java
│ │ │ └── interceptor
│ │ │ ├── initalize
│ │ │ └── SofaRpcFutureInvokeCallbackConstructInterceptor.java
│ │ │ ├── metrics
│ │ │ ├── SofaRpcMetrics.java
│ │ │ ├── SofaRpcMetricsBaseInterceptor.java
│ │ │ ├── callback
│ │ │ │ ├── SofaRpcResponseCallbackMetrics.java
│ │ │ │ └── SofaRpcResponseCallbackMetricsInterceptor.java
│ │ │ ├── common
│ │ │ │ └── SofaRpcMetricsInterceptor.java
│ │ │ └── future
│ │ │ │ └── SofaRpcResponseFutureMetricsInterceptor.java
│ │ │ └── trace
│ │ │ ├── SofaRpcTraceBaseInterceptor.java
│ │ │ ├── callback
│ │ │ ├── SofaRpcResponseCallbackTrace.java
│ │ │ └── SofaRpcResponseCallbackTraceInterceptor.java
│ │ │ ├── common
│ │ │ ├── SofaClientTraceRequest.java
│ │ │ ├── SofaRpcConsumerTraceInterceptor.java
│ │ │ ├── SofaRpcProviderTraceInterceptor.java
│ │ │ └── SofaServerTraceRequest.java
│ │ │ └── future
│ │ │ └── SofaRpcResponseFutureTraceInterceptor.java
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── sofarpc
│ │ │ └── interceptor
│ │ │ ├── BaseInterceptorTest.java
│ │ │ ├── MockBoltResponseFuture.java
│ │ │ ├── metrics
│ │ │ ├── BaseMetricsInterceptorTest.java
│ │ │ ├── callback
│ │ │ │ ├── MockSofaResponseCallback.java
│ │ │ │ └── SofaRpcResponseCallbackMetricsInterceptorTest.java
│ │ │ ├── common
│ │ │ │ └── SofaRpcMetricsInterceptorTest.java
│ │ │ └── future
│ │ │ │ └── SofaRpcResponseFutureMetricsInterceptorTest.java
│ │ │ └── trace
│ │ │ ├── callback
│ │ │ ├── MockSofaResponseCallback.java
│ │ │ └── SofaRpcResponseCallbackTraceInterceptorTest.java
│ │ │ ├── common
│ │ │ ├── SofaRpcConsumerTraceInterceptorTest.java
│ │ │ └── SofaRpcProviderTraceInterceptorTest.java
│ │ │ └── future
│ │ │ └── SofaRpcResponseFutureTraceInterceptorTest.java
│ │ └── resources
│ │ └── mock_agent.properties
├── spring-gateway
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── spring
│ │ │ └── gateway
│ │ │ ├── AccessPlugin.java
│ │ │ ├── ForwardedPlugin.java
│ │ │ ├── SpringGatewayPlugin.java
│ │ │ ├── advice
│ │ │ ├── AgentGlobalFilterAdvice.java
│ │ │ ├── HttpHeadersFilterAdvice.java
│ │ │ └── InitGlobalFilterAdvice.java
│ │ │ ├── interceptor
│ │ │ ├── GatewayCons.java
│ │ │ ├── initialize
│ │ │ │ ├── AgentGlobalFilter.java
│ │ │ │ ├── GatewayServerForwardedInterceptor.java
│ │ │ │ └── GlobalFilterInterceptor.java
│ │ │ ├── metric
│ │ │ │ ├── GatewayMetricsInterceptor.java
│ │ │ │ ├── TimeUtils.java
│ │ │ │ └── log
│ │ │ │ │ ├── GatewayAccessLogInterceptor.java
│ │ │ │ │ └── SpringGatewayAccessLogServerInfo.java
│ │ │ └── tracing
│ │ │ │ ├── FluxHttpServerRequest.java
│ │ │ │ ├── FluxHttpServerResponse.java
│ │ │ │ ├── GatewayServerTracingInterceptor.java
│ │ │ │ └── HttpHeadersFilterTracingInterceptor.java
│ │ │ └── reactor
│ │ │ ├── AgentCoreSubscriber.java
│ │ │ └── AgentMono.java
│ │ └── test
│ │ ├── java
│ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── spring
│ │ │ └── gateway
│ │ │ ├── TestConst.java
│ │ │ ├── TestServerWebExchangeUtils.java
│ │ │ ├── interceptor
│ │ │ ├── initialize
│ │ │ │ ├── AgentGlobalFilterTest.java
│ │ │ │ ├── GatewayServerForwardedInterceptorTest.java
│ │ │ │ └── GlobalFilterInterceptorTest.java
│ │ │ ├── metric
│ │ │ │ ├── GatewayMetricsInterceptorTest.java
│ │ │ │ ├── MockRouteBuilder.java
│ │ │ │ ├── TimeUtilsTest.java
│ │ │ │ └── log
│ │ │ │ │ ├── GatewayAccessLogInfoInterceptorTest.java
│ │ │ │ │ └── SpringGatewayAccessLogInfoServerInfoTest.java
│ │ │ └── tracing
│ │ │ │ ├── FluxHttpServerRequestTest.java
│ │ │ │ ├── FluxHttpServerResponseTest.java
│ │ │ │ ├── GatewayServerTracingInterceptorTest.java
│ │ │ │ └── HttpHeadersFilterTracingInterceptorTest.java
│ │ │ └── reactor
│ │ │ ├── AgentCoreSubscriberTest.java
│ │ │ ├── AgentMonoTest.java
│ │ │ └── MockCoreSubscriber.java
│ │ └── resources
│ │ └── mock_agent.properties
└── springweb
│ ├── pom.xml
│ └── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── megaease
│ │ │ ├── easeagent
│ │ │ └── plugin
│ │ │ │ └── springweb
│ │ │ │ ├── FeignClientPlugin.java
│ │ │ │ ├── ForwardedPlugin.java
│ │ │ │ ├── RestTemplatePlugin.java
│ │ │ │ ├── SpringWebPlugin.java
│ │ │ │ ├── WebClientPlugin.java
│ │ │ │ ├── advice
│ │ │ │ ├── ClientHttpRequestAdvice.java
│ │ │ │ ├── FeignClientAdvice.java
│ │ │ │ ├── WebClientBuilderAdvice.java
│ │ │ │ └── WebClientFilterAdvice.java
│ │ │ │ ├── interceptor
│ │ │ │ ├── HeadersFieldFinder.java
│ │ │ │ ├── forwarded
│ │ │ │ │ ├── FeignClientForwardedInterceptor.java
│ │ │ │ │ ├── RestTemplateForwardedInterceptor.java
│ │ │ │ │ └── WebClientFilterForwardedInterceptor.java
│ │ │ │ ├── initialize
│ │ │ │ │ └── WebClientBuildInterceptor.java
│ │ │ │ └── tracing
│ │ │ │ │ ├── ClientHttpRequestInterceptor.java
│ │ │ │ │ ├── FeignClientTracingInterceptor.java
│ │ │ │ │ └── WebClientFilterTracingInterceptor.java
│ │ │ │ └── reactor
│ │ │ │ ├── AgentCoreSubscriber.java
│ │ │ │ └── AgentMono.java
│ │ │ └── plugin
│ │ │ └── easeagent
│ │ │ └── springweb
│ │ │ └── interceptor
│ │ │ └── tracing
│ │ │ └── WebClientTracingFilter.java
│ └── resources
│ │ └── application.yaml
│ └── test
│ ├── java
│ ├── com
│ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── plugin
│ │ │ └── springweb
│ │ │ ├── interceptor
│ │ │ ├── HeadersFieldFinderTest.java
│ │ │ ├── RequestUtils.java
│ │ │ ├── TestConst.java
│ │ │ ├── forwarded
│ │ │ │ ├── FeignClientForwardedInterceptorTest.java
│ │ │ │ ├── RestTemplateForwardedInterceptorTest.java
│ │ │ │ └── WebClientFilterForwardedInterceptorTest.java
│ │ │ ├── initialize
│ │ │ │ └── WebClientBuildInterceptorTest.java
│ │ │ └── tracing
│ │ │ │ ├── ClientHttpRequestInterceptorTest.java
│ │ │ │ ├── FeignClientTracingInterceptorTest.java
│ │ │ │ └── WebClientFilterTracingInterceptorTest.java
│ │ │ └── reactor
│ │ │ ├── AgentCoreSubscriberTest.java
│ │ │ ├── AgentMonoTest.java
│ │ │ ├── MockCoreSubscriber.java
│ │ │ └── MockMono.java
│ └── org
│ │ └── springframework
│ │ ├── http
│ │ └── client
│ │ │ └── SimpleClientHttpResponseFactory.java
│ │ └── web
│ │ └── reactive
│ │ └── function
│ │ └── client
│ │ ├── MockClientRequest.java
│ │ └── MockDefaultClientResponse.java
│ └── resources
│ └── mock_agent.properties
├── pom.xml
├── release
├── report
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ ├── com
│ │ └── megaease
│ │ │ └── easeagent
│ │ │ └── report
│ │ │ ├── AgentReportAware.java
│ │ │ ├── DefaultAgentReport.java
│ │ │ ├── GlobalExtractor.java
│ │ │ ├── OutputProperties.java
│ │ │ ├── ReportConfigChange.java
│ │ │ ├── async
│ │ │ ├── AsyncProps.java
│ │ │ ├── AsyncReporter.java
│ │ │ ├── AsyncReporterMetrics.java
│ │ │ ├── DefaultAsyncReporter.java
│ │ │ ├── log
│ │ │ │ ├── AccessLogReporter.java
│ │ │ │ ├── ApplicationLogReporter.java
│ │ │ │ └── LogAsyncProps.java
│ │ │ ├── trace
│ │ │ │ ├── SDKAsyncReporter.java
│ │ │ │ └── TraceAsyncProps.java
│ │ │ └── zipkin
│ │ │ │ ├── AgentBufferNextMessage.java
│ │ │ │ ├── AgentByteBoundedQueue.java
│ │ │ │ └── WithSizeConsumer.java
│ │ │ ├── encoder
│ │ │ ├── PackedMessage.java
│ │ │ ├── log
│ │ │ │ ├── AccessLogJsonEncoder.java
│ │ │ │ ├── AccessLogWriter.java
│ │ │ │ ├── LogDataJsonEncoder.java
│ │ │ │ ├── LogDataWriter.java
│ │ │ │ └── pattern
│ │ │ │ │ ├── LogDataDatePatternConverterDelegate.java
│ │ │ │ │ ├── LogDataLevelPatternConverter.java
│ │ │ │ │ ├── LogDataLineSeparatorPatternConverter.java
│ │ │ │ │ ├── LogDataLoggerPatternConverter.java
│ │ │ │ │ ├── LogDataMdcPatternConverter.java
│ │ │ │ │ ├── LogDataPatternConverter.java
│ │ │ │ │ ├── LogDataPatternFormatter.java
│ │ │ │ │ ├── LogDataSimpleLiteralPatternConverter.java
│ │ │ │ │ ├── LogDataThreadNamePatternConverter.java
│ │ │ │ │ ├── LogDataThrowablePatternConverter.java
│ │ │ │ │ ├── NamePatternConverter.java
│ │ │ │ │ ├── NoOpPatternConverter.java
│ │ │ │ │ └── SimpleMessageConverter.java
│ │ │ ├── metric
│ │ │ │ └── MetricJsonEncoder.java
│ │ │ └── span
│ │ │ │ ├── AbstractAgentV2SpanEndpointWriter.java
│ │ │ │ ├── AgentV2SpanAnnotationsWriter.java
│ │ │ │ ├── AgentV2SpanBaseWriter.java
│ │ │ │ ├── AgentV2SpanGlobalWriter.java
│ │ │ │ ├── AgentV2SpanLocalEndpointWriter.java
│ │ │ │ ├── AgentV2SpanRemoteEndpointWriter.java
│ │ │ │ ├── AgentV2SpanTagsWriter.java
│ │ │ │ ├── AgentV2SpanWriter.java
│ │ │ │ ├── GlobalExtrasSupplier.java
│ │ │ │ ├── SpanJsonEncoder.java
│ │ │ │ └── okhttp
│ │ │ │ ├── HttpSpanJsonEncoder.java
│ │ │ │ └── OkHttpJsonRequestBody.java
│ │ │ ├── metric
│ │ │ ├── MetricItem.java
│ │ │ ├── MetricProps.java
│ │ │ └── MetricReporterFactoryImpl.java
│ │ │ ├── plugin
│ │ │ ├── NoOpCall.java
│ │ │ ├── NoOpEncoder.java
│ │ │ ├── ReporterLoader.java
│ │ │ └── ReporterRegistry.java
│ │ │ ├── sender
│ │ │ ├── AgentKafkaSender.java
│ │ │ ├── AgentLoggerSender.java
│ │ │ ├── NoOpSender.java
│ │ │ ├── SenderConfigDecorator.java
│ │ │ ├── SenderWithEncoder.java
│ │ │ ├── ZipkinCallWrapper.java
│ │ │ ├── metric
│ │ │ │ ├── KeySender.java
│ │ │ │ ├── MetricKafkaSender.java
│ │ │ │ └── log4j
│ │ │ │ │ ├── AppenderManager.java
│ │ │ │ │ ├── LoggerFactory.java
│ │ │ │ │ ├── MetricRefreshableAppender.java
│ │ │ │ │ ├── RefreshableAppender.java
│ │ │ │ │ └── TestableAppender.java
│ │ │ └── okhttp
│ │ │ │ ├── ByteRequestBody.java
│ │ │ │ ├── HttpCall.java
│ │ │ │ └── HttpSender.java
│ │ │ ├── trace
│ │ │ ├── RefreshableReporter.java
│ │ │ ├── ReportSpanBuilder.java
│ │ │ └── TraceReport.java
│ │ │ └── util
│ │ │ ├── SpanUtils.java
│ │ │ ├── TextUtils.java
│ │ │ └── Utils.java
│ │ └── zipkin2
│ │ └── reporter
│ │ ├── TracerConverter.java
│ │ ├── brave
│ │ ├── ConvertSpanReporter.java
│ │ └── ConvertZipkinSpanHandler.java
│ │ └── kafka11
│ │ ├── SDKKafkaSender.java
│ │ ├── SDKSender.java
│ │ └── SimpleSender.java
│ └── test
│ └── java
│ └── com
│ └── megaease
│ └── easeagent
│ └── report
│ ├── HttpSenderTest.java
│ ├── async
│ └── zipkin
│ │ └── AgentByteBoundedQueueTest.java
│ ├── encoder
│ └── log
│ │ ├── LogDataJsonEncoderTest.java
│ │ └── LogDataWriterTest.java
│ ├── metric
│ ├── MetricPropsTest.java
│ └── MetricReporterFactoryTest.java
│ └── trace
│ └── TraceReportTest.java
├── resources
├── rootfs
│ └── Dockerfile
└── scripts
│ ├── Jenkinsfile
│ └── build-image.sh
└── zipkin
├── pom.xml
└── src
├── main
├── java
│ └── com
│ │ └── megaease
│ │ └── easeagent
│ │ └── zipkin
│ │ ├── CustomTagsSpanHandler.java
│ │ ├── TracingProviderImpl.java
│ │ ├── impl
│ │ ├── AsyncRequest.java
│ │ ├── MessageImpl.java
│ │ ├── RemoteGetterImpl.java
│ │ ├── RemoteSetterImpl.java
│ │ ├── RequestContextImpl.java
│ │ ├── ScopeImpl.java
│ │ ├── SpanContextImpl.java
│ │ ├── SpanImpl.java
│ │ ├── TracingImpl.java
│ │ └── message
│ │ │ ├── MessagingTracingImpl.java
│ │ │ ├── ZipkinConsumerRequest.java
│ │ │ └── ZipkinProducerRequest.java
│ │ └── logging
│ │ ├── AgentLogMDC.java
│ │ ├── AgentMDCScopeDecorator.java
│ │ └── LogUtils.java
└── resources
│ └── META-INF
│ └── services
│ └── com.megaease.easeagent.plugin.bean.BeanProvider
└── test
└── java
├── brave
├── TracerTestUtils.java
└── internal
│ └── collect
│ └── WeakConcurrentMapTestUtils.java
└── com
└── megaease
└── easeagent
└── zipkin
├── CustomTagsSpanHandlerTest.java
├── TracingProviderImplMock.java
├── TracingProviderImplTest.java
├── impl
├── AsyncRequestTest.java
├── MessageImplTest.java
├── MessagingRequestMock.java
├── RemoteGetterImplTest.java
├── RemoteSetterImplTest.java
├── RequestContextImplTest.java
├── RequestMock.java
├── ScopeImplTest.java
├── SpanContextImplTest.java
├── SpanImplTest.java
├── TracingImplTest.java
└── message
│ ├── MessagingTracingImplTest.java
│ ├── ZipkinConsumerRequestTest.java
│ └── ZipkinProducerRequestTest.java
└── logging
├── AgentLogMDCTest.java
├── AgentMDCScopeDecoratorTest.java
└── LogUtilsTest.java
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 4
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 | end_of_line = lf
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ---
11 | name: 🐞 Bug report
12 | about: Create a report to help us improve
13 | title: ''
14 | labels: ''
15 | assignees: ''
16 |
17 | ---
18 |
19 | **Describe the bug**
20 | A clear and concise description of what the bug is.
21 |
22 | **To Reproduce**
23 | Steps to reproduce the behavior:
24 | 1. Execute '...'
25 | 2. Send a request to '....'
26 | 3. See error
27 |
28 | **Expected behavior**
29 | A clear and concise description of what you expected to happen.
30 |
31 | **Version**
32 | The version number of Easegress.
33 |
34 | **Configuration**
35 | * EaseAgent Configuration
36 | ```
37 | ```
38 |
39 | **Logs**
40 | ```
41 | EaseAgent logs, if applicable.
42 | ```
43 |
44 | **OS and Hardware**
45 | - OS: [e.g. Ubuntu 20.04]
46 | - CPU:[e.g. Intel(R) Core(TM) i5-8265U]
47 | - Memory: [e.g. 16GB]
48 |
49 | **Additional context**
50 | Add any other context about the problem here.
51 |
52 |
53 | ---
54 | Thanks for contributing 🎉!
55 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ---
11 | name: 🚀 Feature request
12 | about: Suggest an idea for this project
13 | title: ''
14 | labels: ''
15 | assignees: ''
16 |
17 | ---
18 |
19 | **Is your feature request related to a problem? Please describe.**
20 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
21 |
22 | **Describe the solution you'd like**
23 | A clear and concise description of what you want to happen.
24 |
25 | **Describe alternatives you've considered**
26 | A clear and concise description of any alternative solutions or features you've considered.
27 |
28 | **Additional context**
29 | Add any other context or screenshots about the feature request here.
30 |
31 |
32 | ---
33 | Thanks for contributing 🎉!
34 |
--------------------------------------------------------------------------------
/.github/workflows/license-checker.yml:
--------------------------------------------------------------------------------
1 | name: License checker
2 |
3 | on:
4 | push:
5 | branches:
6 | - maste
7 | paths-ignore:
8 | - 'doc/**'
9 | - 'resources/**'
10 | - '**.md'
11 | pull_request:
12 | branches:
13 | - master
14 | paths-ignore:
15 | - 'doc/**'
16 | - 'resources/**'
17 | - '**.md'
18 |
19 | jobs:
20 | check-license:
21 | runs-on: ubuntu-latest
22 |
23 | steps:
24 | - uses: actions/checkout@v2
25 | - name: Check License Header
26 | uses: apache/skywalking-eyes@main
27 | env:
28 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29 | with:
30 | log: info
31 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | *.iml
3 | target/
4 | dependency-reduced-pom.xml
5 | *.class
6 | *.swp
7 | **/*.versionsBackup
8 |
9 | .patch
10 | .classpath
11 | .factorypath
12 | .project
13 | .settings
14 | .DS_Store
15 | .vscode
16 | logs/
17 | tmp/
18 |
--------------------------------------------------------------------------------
/build/src/main/java/com/megaease/easeagent/StartBootstrap.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent;
19 |
20 | import com.megaease.easeagent.core.Bootstrap;
21 |
22 | import java.lang.instrument.Instrumentation;
23 |
24 | public class StartBootstrap {
25 | private StartBootstrap() {}
26 |
27 | public static void premain(String args, Instrumentation inst, String javaAgentJarPath) {
28 | Bootstrap.start(args, inst, javaAgentJarPath);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/build/src/main/resources/agent-to-cloud_1.0.properties:
--------------------------------------------------------------------------------
1 | # for v2.0 agent send to megacloud-v1.0 kafka topic setting
2 |
3 | plugin.observability.global.metric.topic=application-meter
4 | plugin.observability.access.metric.topic=application-log
5 | plugin.observability.redis.metric.topic=platform-meter
6 | plugin.observability.rabbit.metric.topic=platform-meter
7 | plugin.observability.kafka.metric.topic=platform-meter
8 | plugin.observability.elasticsearch.metric.topic=platform-meter
9 |
10 | plugin.observability.jvmGc.metric.topic=platform-meter
11 | plugin.observability.jvmMemory.metric.topic=platform-meter
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/build/src/main/resources/easeagent-log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 | %d [%10.10t] %5p %10.10c{1} - %msg%n
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/config/src/main/java/com/megaease/easeagent/config/AutoRefreshConfigItem.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.config;
19 |
20 | import com.megaease.easeagent.plugin.api.config.Config;
21 |
22 | import java.util.function.BiFunction;
23 |
24 | public class AutoRefreshConfigItem {
25 | private volatile T value;
26 |
27 | public AutoRefreshConfigItem(Config config, String name, BiFunction func) {
28 | ConfigUtils.bindProp(name, config, func, v -> this.value = v);
29 | }
30 |
31 | public T getValue() {
32 | return value;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/config/src/main/java/com/megaease/easeagent/config/ConfigAware.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.config;
19 |
20 | import com.megaease.easeagent.plugin.api.config.Config;
21 |
22 | public interface ConfigAware {
23 | void setConfig(Config config);
24 | }
25 |
--------------------------------------------------------------------------------
/config/src/test/resources/easeagent_config.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/config/src/test/resources/easeagent_config.jar
--------------------------------------------------------------------------------
/config/src/test/resources/user-spec.properties:
--------------------------------------------------------------------------------
1 | name=user-spec
2 | system=system-spec
3 |
--------------------------------------------------------------------------------
/config/src/test/resources/user-spec2.properties:
--------------------------------------------------------------------------------
1 | name=user-spec2
2 | system=system-spec2
3 |
--------------------------------------------------------------------------------
/config/src/test/resources/user.properties:
--------------------------------------------------------------------------------
1 | name=demo-user
2 | system=demo-system
3 |
4 | ## topic for kafka use
5 | reporter.metric.sender.topic=application-meter
6 |
7 | #reporter.metric.encoder=MetricJsonEncoder
8 | reporter.metric.output.interval=30
9 |
--------------------------------------------------------------------------------
/context/src/main/java/com/megaease/easeagent/context/log/LoggerImpl.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.context.log;
19 |
20 | import com.megaease.easeagent.log4j2.api.AgentLogger;
21 |
22 | import java.util.function.Function;
23 | import java.util.logging.Logger;
24 |
25 | public class LoggerImpl extends AgentLogger implements com.megaease.easeagent.plugin.api.logging.Logger {
26 | public static final Function LOGGER_SUPPLIER = LoggerImpl::new;
27 |
28 | public LoggerImpl(Logger logger) {
29 | super(logger);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/context/src/test/java/com/megaease/easeagent/context/log/LoggerImplTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.context.log;
19 |
20 | import com.megaease.easeagent.plugin.api.logging.Logger;
21 | import org.junit.Test;
22 |
23 | import static org.junit.Assert.*;
24 |
25 | public class LoggerImplTest {
26 | @Test
27 | public void test() {
28 | LoggerFactoryImpl loggerFactory = LoggerFactoryImpl.build();
29 | Logger logger = loggerFactory.getLogger(LoggerFactoryImplTest.class.getName());
30 | assertTrue(logger instanceof LoggerImpl);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/context/src/test/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/core/src/main/java/com/megaease/easeagent/core/plugin/annotation/EaseAgentInstrumented.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.core.plugin.annotation;
19 |
20 | import java.lang.annotation.Retention;
21 | import java.lang.annotation.RetentionPolicy;
22 |
23 | @Retention(RetentionPolicy.RUNTIME)
24 | public @interface EaseAgentInstrumented {
25 | int value() default 0;
26 | }
27 |
--------------------------------------------------------------------------------
/core/src/main/java/com/megaease/easeagent/core/plugin/annotation/Index.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.core.plugin.annotation;
19 |
20 | import java.lang.annotation.Retention;
21 | import java.lang.annotation.RetentionPolicy;
22 |
23 | @Retention(RetentionPolicy.RUNTIME)
24 | public @interface Index {
25 | }
26 |
--------------------------------------------------------------------------------
/core/src/main/java/com/megaease/easeagent/core/plugin/matcher/Converter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.core.plugin.matcher;
19 |
20 | public interface Converter {
21 | T convert(S source);
22 | }
23 |
--------------------------------------------------------------------------------
/core/src/main/resources/META-INF/services/com.megaease.easeagent.plugin.bean.BeanProvider:
--------------------------------------------------------------------------------
1 | com.megaease.easeagent.core.health.HealthProvider
2 | com.megaease.easeagent.core.info.AgentInfoProvider
3 |
--------------------------------------------------------------------------------
/core/src/main/resources/version.txt:
--------------------------------------------------------------------------------
1 | ${project.version}
2 |
--------------------------------------------------------------------------------
/core/src/test/java/com/megaease/easeagent/core/instrument/TestContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.core.instrument;
19 |
20 | import com.megaease.easeagent.plugin.bridge.NoOpContext;
21 |
22 | public class TestContext extends NoOpContext.NoopContext {
23 | @Override
24 | public boolean isNoop() {
25 | return false;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/core/src/test/java/com/megaease/easeagent/core/instrument/TestPlugin.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.core.instrument;
19 |
20 | import com.megaease.easeagent.plugin.AgentPlugin;
21 |
22 | public class TestPlugin implements AgentPlugin {
23 | @Override
24 | public String getNamespace() {
25 | return "test";
26 | }
27 |
28 | @Override
29 | public String getDomain() {
30 | return "observability";
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/doc/how-to-use/use-in-docker.md:
--------------------------------------------------------------------------------
1 | # Get the agent
2 |
3 | Download the agent, [see our doc](https://github.com/megaease/easeagent#get-and-set-environment-variable)
4 |
5 | # Modify startup scripts
6 |
7 | The startup parameters of the Java application server must include the built-in argument -javaagent.
8 |
9 | It is recommended that you set this argument with the JAVA_OPTS environment variable.
10 |
11 | The value of that argument must contain the location where you ADD the easeagent.jar file to the image.
12 |
13 | For example, with Tomcat, use commands like these in the Dockerfile:
14 |
15 | ```dockerfile
16 | RUN mkdir -p /usr/local/tomcat/easeagent
17 | ADD ./easeagent/easeagent.jar /usr/local/tomcat/easeagent/easeagent.jar
18 | ENV JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/tomcat/easeagent/easeagent.jar"
19 | ```
20 |
21 | # Restart your application
22 |
23 | Deploy your application to start using the EaseAgent to send data to MegaCloud.
24 |
--------------------------------------------------------------------------------
/doc/images/Context-span-api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/Context-span-api.png
--------------------------------------------------------------------------------
/doc/images/Cross-server-tracing-UML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/Cross-server-tracing-UML.png
--------------------------------------------------------------------------------
/doc/images/Cross-thread-tracing-UML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/Cross-thread-tracing-UML.png
--------------------------------------------------------------------------------
/doc/images/EaseAgent-Architecture-Base-v2.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/EaseAgent-Architecture-Base-v2.0.png
--------------------------------------------------------------------------------
/doc/images/EaseAgent-Architecture-v2.0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/EaseAgent-Architecture-v2.0.jpg
--------------------------------------------------------------------------------
/doc/images/EaseAgent-Architecture-v2.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/EaseAgent-Architecture-v2.0.png
--------------------------------------------------------------------------------
/doc/images/EaseAgent-Architecture.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/EaseAgent-Architecture.jpg
--------------------------------------------------------------------------------
/doc/images/MessageTracing-UML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/MessageTracing-UML.png
--------------------------------------------------------------------------------
/doc/images/Metric-Class-UML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/Metric-Class-UML.png
--------------------------------------------------------------------------------
/doc/images/Metric-SequenceDiagram-UML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/Metric-SequenceDiagram-UML.png
--------------------------------------------------------------------------------
/doc/images/SessionContext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/SessionContext.png
--------------------------------------------------------------------------------
/doc/images/Span-tracing-UML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/Span-tracing-UML.png
--------------------------------------------------------------------------------
/doc/images/benchmark/10t-mem-heap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/10t-mem-heap.png
--------------------------------------------------------------------------------
/doc/images/benchmark/10t-process-cpu-load-mean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/10t-process-cpu-load-mean.png
--------------------------------------------------------------------------------
/doc/images/benchmark/10t-resp-per-15seconds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/10t-resp-per-15seconds.png
--------------------------------------------------------------------------------
/doc/images/benchmark/10t-resp-time-p75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/10t-resp-time-p75.png
--------------------------------------------------------------------------------
/doc/images/benchmark/20t-mem-heap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/20t-mem-heap.png
--------------------------------------------------------------------------------
/doc/images/benchmark/20t-process-cpu-load-mean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/20t-process-cpu-load-mean.png
--------------------------------------------------------------------------------
/doc/images/benchmark/20t-resp-per-15seconds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/20t-resp-per-15seconds.png
--------------------------------------------------------------------------------
/doc/images/benchmark/20t-resp-time-p75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/20t-resp-time-p75.png
--------------------------------------------------------------------------------
/doc/images/benchmark/50t-mem-heap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/50t-mem-heap.png
--------------------------------------------------------------------------------
/doc/images/benchmark/50t-process-cpu-load-mean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/50t-process-cpu-load-mean.png
--------------------------------------------------------------------------------
/doc/images/benchmark/50t-resp-per-15seconds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/50t-resp-per-15seconds.png
--------------------------------------------------------------------------------
/doc/images/benchmark/50t-resp-time-p75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/50t-resp-time-p75.png
--------------------------------------------------------------------------------
/doc/images/benchmark/agent-320vus-mem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/agent-320vus-mem.png
--------------------------------------------------------------------------------
/doc/images/benchmark/agent-320vus-process-cpu-load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/agent-320vus-process-cpu-load.png
--------------------------------------------------------------------------------
/doc/images/benchmark/agent-mem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/agent-mem.png
--------------------------------------------------------------------------------
/doc/images/benchmark/agent-process-cpu-load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/agent-process-cpu-load.png
--------------------------------------------------------------------------------
/doc/images/benchmark/baseline-320vus-mem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/baseline-320vus-mem.png
--------------------------------------------------------------------------------
/doc/images/benchmark/baseline-320vus-process-cpu-load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/baseline-320vus-process-cpu-load.png
--------------------------------------------------------------------------------
/doc/images/benchmark/baseline-cpu-load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/baseline-cpu-load.png
--------------------------------------------------------------------------------
/doc/images/benchmark/baseline-mem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/baseline-mem.png
--------------------------------------------------------------------------------
/doc/images/benchmark/baseline-process-cpu-load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/benchmark/baseline-process-cpu-load.png
--------------------------------------------------------------------------------
/doc/images/enhancement-debug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/enhancement-debug.png
--------------------------------------------------------------------------------
/doc/images/grafana-metric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/grafana-metric.png
--------------------------------------------------------------------------------
/doc/images/grafana-tracing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/grafana-tracing.png
--------------------------------------------------------------------------------
/doc/images/httpServletPlugin-module.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/httpServletPlugin-module.jpg
--------------------------------------------------------------------------------
/doc/images/plugin-structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/plugin-structure.png
--------------------------------------------------------------------------------
/doc/images/prometheus-demo-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/prometheus-demo-1.png
--------------------------------------------------------------------------------
/doc/images/prometheus-demo-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/prometheus-demo-2.png
--------------------------------------------------------------------------------
/doc/images/prometheus-demo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/prometheus-demo.jpg
--------------------------------------------------------------------------------
/doc/images/prometheus-petclinic-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/prometheus-petclinic-demo.png
--------------------------------------------------------------------------------
/doc/images/session-RunnableImplUML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/session-RunnableImplUML.png
--------------------------------------------------------------------------------
/doc/images/simple-plugin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/simple-plugin.jpg
--------------------------------------------------------------------------------
/doc/images/slack-community.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/slack-community.jpg
--------------------------------------------------------------------------------
/doc/images/trace-and-span.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/trace-and-span.png
--------------------------------------------------------------------------------
/doc/images/zipkin-span.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/megaease/easeagent/8a5854b55cd703066c0d35e63029f2dd33ae2c74/doc/images/zipkin-span.jpg
--------------------------------------------------------------------------------
/doc/report-development-guide.md:
--------------------------------------------------------------------------------
1 | #
2 | ToDo...
3 |
--------------------------------------------------------------------------------
/httpserver/src/main/java/com/megaease/easeagent/httpserver/HttpRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | *
17 | */
18 | package com.megaease.easeagent.httpserver;
19 |
20 | import lombok.Builder;
21 | import lombok.Data;
22 | import org.apache.kafka.common.header.Headers;
23 |
24 | import java.io.InputStream;
25 |
26 | @Data
27 | @Builder
28 | public class HttpRequest {
29 | Headers headers;
30 | String method;
31 | String uri;
32 | String remoteIp;
33 | String remoteHostName;
34 | InputStream input;
35 | }
36 |
--------------------------------------------------------------------------------
/httpserver/src/main/java/com/megaease/easeagent/httpserver/HttpResponse.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.httpserver;
19 |
20 | import lombok.Builder;
21 | import lombok.Data;
22 |
23 | @Data
24 | @Builder
25 | public class HttpResponse {
26 | private int statusCode;
27 | private String data;
28 | }
29 |
--------------------------------------------------------------------------------
/httpserver/src/main/java/com/megaease/easeagent/httpserver/IHttpHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | *
17 | */
18 | package com.megaease.easeagent.httpserver;
19 |
20 | import java.util.Map;
21 |
22 | public interface IHttpHandler {
23 | String getPath();
24 |
25 | HttpResponse process(HttpRequest request, Map uriParams);
26 |
27 | default int priority() {
28 | return 100;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/httpserver/src/main/java/com/megaease/easeagent/httpserver/IHttpServer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | *
17 | */
18 | package com.megaease.easeagent.httpserver;
19 |
20 | import java.util.List;
21 |
22 | public interface IHttpServer {
23 | void start(int port);
24 |
25 | void addHttpRoutes(List agentHttpHandlers);
26 |
27 | void stop();
28 | }
29 |
--------------------------------------------------------------------------------
/httpserver/src/main/java/com/megaease/easeagent/httpserver/nano/AgentHttpHandlerProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.httpserver.nano;
19 |
20 | import java.util.List;
21 |
22 | public interface AgentHttpHandlerProvider {
23 |
24 | List getAgentHttpHandlers();
25 | }
26 |
--------------------------------------------------------------------------------
/log4j2/README.md:
--------------------------------------------------------------------------------
1 | # HTTPS Supporting
2 |
3 | ## Import cert file to trust key store
4 |
5 | ```
6 | keytool -importcert -v -trustcacerts -alias some.host.name -file /path/to/cert/file -keystore /path/to/store/file
7 | ```
8 |
9 | ## Setup System properties
10 |
11 | ```
12 | java -Djavax.net.ssl.trustStore=/path/to/store/file -Djavax.net.ssl.trustStorePassword=****** ...
13 | ```
14 |
15 | > If `/path/to/store/file` is the JRE default store file, you can ignore properties above.
16 |
17 | ## Reference
18 |
19 | * [Converting PEM-format keys to JKS format](https://docs.oracle.com/cd/E35976_01/server.740/es_admin/src/tadm_ssl_convert_pem_to_jks.html)
--------------------------------------------------------------------------------
/log4j2/log4j2-api/src/main/java/com/megaease/easeagent/log4j2/FinalClassloaderSupplier.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.log4j2;
19 |
20 | import java.util.function.Supplier;
21 |
22 | @SuppressWarnings("all")
23 | public class FinalClassloaderSupplier implements Supplier {
24 | public static volatile ClassLoader CLASSLOADER = null;
25 |
26 |
27 | @Override
28 | public ClassLoader get() {
29 | return CLASSLOADER;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/log4j2/log4j2-api/src/main/java/com/megaease/easeagent/log4j2/MDC.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.log4j2;
19 |
20 | import com.megaease.easeagent.log4j2.api.Mdc;
21 |
22 | public class MDC {
23 | private static final Mdc MDC_I = LoggerFactory.FACTORY.mdc();
24 |
25 | public static void put(String key, String value) {
26 | MDC_I.put(key, value);
27 | }
28 |
29 | public static void remove(String key) {
30 | MDC_I.remove(key);
31 | }
32 |
33 | public static String get(String key) {
34 | return MDC_I.get(key);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/log4j2/log4j2-api/src/main/java/com/megaease/easeagent/log4j2/exception/Log4j2Exception.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.log4j2.exception;
19 |
20 | public class Log4j2Exception extends RuntimeException {
21 | public Log4j2Exception(Throwable cause) {
22 | super(cause);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/metrics/src/main/java/com/megaease/easeagent/metrics/config/MetricsConfig.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.metrics.config;
19 |
20 | import java.util.concurrent.TimeUnit;
21 |
22 | public interface MetricsConfig {
23 | boolean isEnabled();
24 |
25 | int getInterval();
26 |
27 | TimeUnit getIntervalUnit();
28 |
29 | void setIntervalChangeCallback(Runnable runnable);
30 | }
31 |
--------------------------------------------------------------------------------
/metrics/src/main/java/com/megaease/easeagent/metrics/converter/IgnoreOutputException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.metrics.converter;
19 |
20 | class IgnoreOutputException extends RuntimeException {
21 | public IgnoreOutputException(String message) {
22 | super(message);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/metrics/src/main/resources/META-INF/services/com.megaease.easeagent.plugin.bean.BeanProvider:
--------------------------------------------------------------------------------
1 | com.megaease.easeagent.metrics.MetricBeanProviderImpl
2 | com.megaease.easeagent.metrics.jvm.JvmBeanProvider
3 |
--------------------------------------------------------------------------------
/metrics/src/test/java/com/megaease/easeagent/metrics/PrometheusAgentHttpHandlerTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.metrics;
19 |
20 | import org.junit.Test;
21 |
22 | import static org.junit.Assert.assertEquals;
23 |
24 | public class PrometheusAgentHttpHandlerTest {
25 |
26 | @Test
27 | public void getPath() {
28 | assertEquals("/prometheus/metrics", new PrometheusAgentHttpHandler().getPath());
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/metrics/src/test/java/com/megaease/easeagent/metrics/converter/IgnoreOutputExceptionTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.metrics.converter;
19 |
20 | import org.junit.Test;
21 |
22 | import static org.junit.Assert.*;
23 |
24 | public class IgnoreOutputExceptionTest {
25 | @Test(expected = IgnoreOutputException.class)
26 | public void constructor() {
27 | throw new IgnoreOutputException("test");
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/metrics/src/test/java/com/megaease/easeagent/metrics/impl/MetricRegistryMock.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.metrics.impl;
19 |
20 | import com.codahale.metrics.MetricRegistry;
21 | import com.megaease.easeagent.metrics.MetricRegistryService;
22 |
23 | public class MetricRegistryMock {
24 | private static final MetricRegistry CODAHALE_METRIC_REGISTRY = MetricRegistryService.DEFAULT.createMetricRegistry(null, null, null);
25 |
26 | public static MetricRegistry getCodahaleMetricRegistry() {
27 | return CODAHALE_METRIC_REGISTRY;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/metrics/src/test/java/com/megaease/easeagent/metrics/impl/MockClock.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.metrics.impl;
19 |
20 | import com.codahale.metrics.Clock;
21 |
22 | import java.util.Iterator;
23 | import java.util.List;
24 |
25 | public class MockClock extends Clock {
26 | private final Iterator ticks;
27 |
28 | public MockClock(List ticks) {
29 | this.ticks = ticks.iterator();
30 | }
31 |
32 | @Override
33 | public long getTick() {
34 | return ticks.next();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/metrics/src/test/resources/mock_agent.properties:
--------------------------------------------------------------------------------
1 | name=test-metric-service
2 | system=test-metric-system
3 |
4 | plugin.observability.global.metric.enabled=true
5 | plugin.observability.jvmMemory.metric.enabled=true
6 | plugin.observability.testMetric.metric.enabled=true
7 | plugin.observability.testMetric.metric.interval=30
8 | plugin.observability.testMetric.metric.topic=application-meter
9 | plugin.observability.testMetric.metric.appendType=kafka
10 |
11 | plugin.observability.testMetric2.metric.intervalUnit=MILLISECONDS
12 |
--------------------------------------------------------------------------------
/mock/config-mock/src/main/java/com/megaease/easeagent/config/MockConfigLoader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.config;
19 |
20 | import java.io.File;
21 |
22 | public class MockConfigLoader {
23 | public static GlobalConfigs loadFromFile(File file) {
24 | return ConfigLoader.loadFromFile(file);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/mock/config-mock/src/test/java/com/megaease/easeagent/mock/config/MockConfigTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.mock.config;
19 |
20 | import org.junit.Test;
21 |
22 | import static org.junit.Assert.*;
23 |
24 | public class MockConfigTest {
25 |
26 | @Test
27 | public void getCONFIGS() {
28 | assertTrue(MockConfig.getCONFIGS().getBoolean("test.mock.key"));
29 | assertEquals("testValue", MockConfig.getCONFIGS().getString("test.mock.keyStr"));
30 | assertNull(MockConfig.getCONFIGS().getString("test.mock.keyStrAAAAAAAAAA"));
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/mock/config-mock/src/test/resources/mock_agent.properties:
--------------------------------------------------------------------------------
1 | test.mock.key=true
2 | test.mock.keyStr=testValue
3 |
--------------------------------------------------------------------------------
/mock/config-mock/src/test/resources/mock_agent.yaml:
--------------------------------------------------------------------------------
1 | test:
2 | mock:
3 | key: true
4 | keyStr: testValue
5 |
--------------------------------------------------------------------------------
/mock/context-mock/src/main/java/com/megaease/easeagent/mock/context/MockContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.mock.context;
19 |
20 | import com.megaease.easeagent.plugin.api.Context;
21 |
22 | import java.lang.annotation.ElementType;
23 | import java.lang.annotation.Retention;
24 | import java.lang.annotation.RetentionPolicy;
25 | import java.lang.annotation.Target;
26 |
27 | @Retention(RetentionPolicy.RUNTIME)
28 | @Target(ElementType.TYPE)
29 | public @interface MockContext {
30 | @SuppressWarnings("unused")
31 | Context ignored = MockContextManager.getContext();
32 | }
33 |
--------------------------------------------------------------------------------
/mock/log4j2-mock/src/main/java/com/megaease/easeagent/mock/log4j2/UrlSupplier.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.mock.log4j2;
19 |
20 | import java.net.URL;
21 |
22 | public interface UrlSupplier {
23 | URL[] get();
24 | }
25 |
--------------------------------------------------------------------------------
/mock/log4j2-mock/src/main/resources/META-INF/services/com.megaease.easeagent.log4j2.ClassloaderSupplier:
--------------------------------------------------------------------------------
1 | com.megaease.easeagent.mock.log4j2.URLClassLoaderSupplier
2 |
--------------------------------------------------------------------------------
/mock/log4j2-mock/src/test/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/mock/metrics-mock/src/main/resources/META-INF/services/com.megaease.easeagent.mock.utils.MockProvider:
--------------------------------------------------------------------------------
1 | com.megaease.easeagent.mock.metrics.MockMetricProvider
2 |
--------------------------------------------------------------------------------
/mock/plugin-api-mock/src/main/java/com/megaease/easeagent/mock/plugin/api/junit/ScopeMustBeCloseException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.mock.plugin.api.junit;
19 |
20 | public class ScopeMustBeCloseException extends RuntimeException{
21 | public ScopeMustBeCloseException(String message) {
22 | super(message);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/mock/plugin-api-mock/src/test/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/mock/report-mock/src/main/java/com/megaease/easeagent/mock/report/JsonReporter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2021, MegaEase
3 | * All rights reserved.
4 | *
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 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package com.megaease.easeagent.mock.report;
19 |
20 | import java.util.List;
21 | import java.util.Map;
22 |
23 | public interface JsonReporter {
24 | void report(List