Search in sources :

Example 6 with DatabaseService

use of com.newrelic.agent.database.DatabaseService in project newrelic-java-agent by newrelic.

the class TransactionTraceBucketTest method createServiceManager.

private void createServiceManager(Map<String, Object> configMap) throws Exception {
    MockServiceManager serviceManager = new MockServiceManager();
    ServiceFactory.setServiceManager(serviceManager);
    AgentConfig agentConfig = createConfig(configMap);
    ConfigService configService = ConfigServiceFactory.createConfigService(agentConfig, configMap);
    serviceManager.setConfigService(configService);
    DatabaseService dbService = new DatabaseService();
    serviceManager.setDatabaseService(dbService);
    TransactionTraceService ttService = new TransactionTraceService();
    serviceManager.setTransactionTraceService(ttService);
    AttributesService attService = new AttributesService();
    serviceManager.setAttributesService(attService);
}
Also used : AgentConfig(com.newrelic.agent.config.AgentConfig) ConfigService(com.newrelic.agent.config.ConfigService) MockServiceManager(com.newrelic.agent.MockServiceManager) AttributesService(com.newrelic.agent.attributes.AttributesService) DatabaseService(com.newrelic.agent.database.DatabaseService)

Example 7 with DatabaseService

use of com.newrelic.agent.database.DatabaseService in project newrelic-java-agent by newrelic.

the class IntrospectorServiceManager method setup.

private void setup(Map<String, Object> config) {
    configService = ConfigServiceFactory.createConfigService(AgentConfigImpl.createAgentConfig(config), Collections.<String, Object>emptyMap());
    ServiceFactory.setServiceManager(this);
    coreService = new IntrospectorCoreService();
    threadService = new ThreadService();
    environmentService = new EnvironmentServiceImpl();
    transactionService = new TransactionService();
    rpmConnectionService = new IntrospectorRPMConnectService();
    rpmServiceManager = new IntrospectorRPMServiceManager();
    transactionTraceService = new IntrospectorTransactionTraceService();
    asyncTxService = new AsyncTransactionService();
    profilerService = new ProfilerService();
    statsService = new IntrospectorStatsService();
    harvestService = new IntrospectorHarvestService();
    sqlTraceService = new SqlTraceServiceImpl();
    insightsService = new IntrospectorInsightsService();
    logSenderService = new IntrospectorLogSenderService();
    expirationService = new ExpirationService();
    dbService = new DatabaseService();
    jarCollectorService = new IgnoringJarCollectorService();
    distributedTraceService = new DistributedTraceServiceImpl();
    TransactionDataToDistributedTraceIntrinsics transactionDataToDistributedTraceIntrinsics = new TransactionDataToDistributedTraceIntrinsics(distributedTraceService);
    transactionEventsService = new TransactionEventsService(transactionDataToDistributedTraceIntrinsics);
    normalizationService = new NormalizationServiceImpl();
    extensionService = new ExtensionService(configService, ExtensionsLoadedListener.NOOP);
    tracerService = new TracerService();
    commandParser = new CommandParser();
    remoteInstrumentationService = new RemoteInstrumentationServiceImpl();
    sourceLanguageService = new SourceLanguageService();
    classTransformerService = new NoOpClassTransformerService();
    jmxService = new JmxService(configService.getDefaultAgentConfig().getJmxConfig());
    attributesService = new AttributesService();
    circuitBreakerService = new CircuitBreakerService();
    AgentConfig agentConfig = createAgentConfig(config, (Map) config.get("distributed_tracing"));
    distributedTraceService.connected(null, agentConfig);
    ReservoirManager<SpanEvent> reservoirManager = new CollectorSpanEventReservoirManager(configService);
    ReservoirManager.EventSender<SpanEvent> collectorSender = new CollectorSpanEventSender(rpmServiceManager);
    Consumer<SpanEvent> infiniteTracing = new Consumer<SpanEvent>() {

        @Override
        public void accept(SpanEvent spanEvent) {
        }
    };
    SpanEventCreationDecider spanEventCreationDecider = new SpanEventCreationDecider(configService);
    spanEventsService = new IntrospectorSpanEventService(agentConfig, reservoirManager, collectorSender, infiniteTracing, spanEventCreationDecider, environmentService, transactionDataToDistributedTraceIntrinsics);
    configService.addIAgentConfigListener((IntrospectorSpanEventService) spanEventsService);
    transactionService.addTransactionListener((IntrospectorSpanEventService) spanEventsService);
    try {
        transactionTraceService.start();
        transactionEventsService.start();
        transactionService.start();
    } catch (Exception e) {
    // fall through
    }
}
Also used : ReservoirManager(com.newrelic.agent.interfaces.ReservoirManager) CommandParser(com.newrelic.agent.commands.CommandParser) Consumer(com.newrelic.agent.interfaces.backport.Consumer) ProfilerService(com.newrelic.agent.profile.ProfilerService) CircuitBreakerService(com.newrelic.agent.circuitbreaker.CircuitBreakerService) NormalizationServiceImpl(com.newrelic.agent.normalization.NormalizationServiceImpl) ExtensionService(com.newrelic.agent.extension.ExtensionService) RemoteInstrumentationServiceImpl(com.newrelic.agent.reinstrument.RemoteInstrumentationServiceImpl) SqlTraceServiceImpl(com.newrelic.agent.sql.SqlTraceServiceImpl) AsyncTransactionService(com.newrelic.agent.service.async.AsyncTransactionService) DistributedTraceServiceImpl(com.newrelic.agent.tracing.DistributedTraceServiceImpl) JmxService(com.newrelic.agent.jmx.JmxService) AttributesService(com.newrelic.agent.attributes.AttributesService) AsyncTransactionService(com.newrelic.agent.service.async.AsyncTransactionService) DatabaseService(com.newrelic.agent.database.DatabaseService) EnvironmentServiceImpl(com.newrelic.agent.environment.EnvironmentServiceImpl) SpanEvent(com.newrelic.agent.model.SpanEvent) SourceLanguageService(com.newrelic.agent.language.SourceLanguageService)

Example 8 with DatabaseService

use of com.newrelic.agent.database.DatabaseService in project newrelic-java-agent by newrelic.

the class ServiceManagerImpl method doStart.

@Override
protected synchronized void doStart() throws Exception {
    // The ConfigService has been created, but not started. This means it
    // is safe to consult the config, but it will be the local config only.
    coreService.start();
    threadService = new ThreadService();
    circuitBreakerService = new CircuitBreakerService();
    classTransformerService = new ClassTransformerServiceImpl(coreService.getInstrumentation());
    AgentConfig config = configService.getDefaultAgentConfig();
    JmxConfig jmxConfig = config.getJmxConfig();
    jmxService = new JmxService(jmxConfig);
    Logger jarCollectorLogger = Agent.LOG.getChildLogger("com.newrelic.jar_collector");
    boolean jarCollectorEnabled = configService.getDefaultAgentConfig().getJarCollectorConfig().isEnabled();
    AtomicBoolean shouldSendAllJars = new AtomicBoolean(true);
    TrackedAddSet<JarData> analyzedJars = new TrackedAddSet<>();
    Function<URL, JarData> processor = new JarCollectorServiceProcessor(jarCollectorLogger, configService.getDefaultAgentConfig());
    JarAnalystFactory jarAnalystFactory = new JarAnalystFactory(processor, analyzedJars, jarCollectorLogger);
    ExecutorService executorService = Executors.newSingleThreadExecutor(new DefaultThreadFactory("New Relic Jar Analysis Thread", true));
    JarCollectorInputs jarCollectorInputs = JarCollectorInputs.build(jarCollectorEnabled, jarAnalystFactory, executorService, jarCollectorLogger);
    jarCollectorService = new JarCollectorServiceImpl(jarCollectorLogger, jarCollectorEnabled, shouldSendAllJars, analyzedJars, jarCollectorInputs.getClassNoticingFactory());
    extensionService = new ExtensionService(configService, jarCollectorInputs.getExtensionAnalysisProducer());
    String defaultAppName = configService.getDefaultAgentConfig().getApplicationName();
    JarCollectorConnectionListener jarCollectorConnectionListener = new JarCollectorConnectionListener(defaultAppName, shouldSendAllJars);
    JarCollectorHarvestListener jarCollectorHarvestListener = new JarCollectorHarvestListener(defaultAppName, jarCollectorService);
    sourceLanguageService = new SourceLanguageService();
    expirationService = new ExpirationService();
    tracerService = new TracerService();
    // this allows async parts of transaction to be registered
    // it must be created before the first class transformation occurs
    asyncTxService = new AsyncTransactionService();
    // this is called in a transaction finish - it needs to be created before the first class transformation
    environmentService = new EnvironmentServiceImpl();
    /*
         * Before this point the ClassTransformer is not initialized, so be careful not to load classes that should be
         * instrumented.
         */
    cacheService = new CacheService();
    extensionService.start();
    classTransformerService.start();
    boolean realAgent = coreService.getInstrumentation() != null;
    statsService = new StatsServiceImpl();
    replayStartupStatsWork();
    utilizationService = new UtilizationService();
    // Start as early as possible.
    if (realAgent) {
        utilizationService.start();
    }
    rpmConnectionService = new RPMConnectionServiceImpl();
    transactionService = new TransactionService();
    InfiniteTracing infiniteTracing = buildInfiniteTracing(configService);
    InfiniteTracingEnabledCheck infiniteTracingEnabledCheck = new InfiniteTracingEnabledCheck(configService);
    SpanEventCreationDecider spanEventCreationDecider = new SpanEventCreationDecider(configService);
    AgentConnectionEstablishedListener agentConnectionEstablishedListener = new UpdateInfiniteTracingAfterConnect(infiniteTracingEnabledCheck, infiniteTracing);
    JfrConfig jfrConfig = config.getJfrConfig();
    jfrService = new JfrService(jfrConfig, configService.getDefaultAgentConfig());
    AgentConnectionEstablishedListener jfrServiceConnectionListener = new JfrServiceConnectionListener(jfrService);
    distributedTraceService = new DistributedTraceServiceImpl();
    TransactionDataToDistributedTraceIntrinsics transactionDataToDistributedTraceIntrinsics = new TransactionDataToDistributedTraceIntrinsics(distributedTraceService);
    rpmServiceManager = new RPMServiceManagerImpl(agentConnectionEstablishedListener, jarCollectorConnectionListener, jfrServiceConnectionListener);
    normalizationService = new NormalizationServiceImpl();
    harvestService = new HarvestServiceImpl();
    gcService = realAgent ? new GCService() : new NoopService("GC Service");
    transactionTraceService = new TransactionTraceService();
    transactionEventsService = new TransactionEventsService(transactionDataToDistributedTraceIntrinsics);
    profilerService = new ProfilerService();
    commandParser = new CommandParser();
    cpuSamplerService = realAgent ? new CPUSamplerService() : new NoopService("CPU Sampler");
    deadlockDetectorService = new DeadlockDetectorService();
    samplerService = realAgent ? new SamplerServiceImpl() : new NoopSamplerService();
    sqlTraceService = new SqlTraceServiceImpl();
    databaseService = new DatabaseService();
    browserService = new BrowserServiceImpl();
    remoteInstrumentationService = new RemoteInstrumentationServiceImpl();
    attsService = new AttributesService();
    insightsService = new InsightsServiceImpl();
    logSenderService = new LogSenderServiceImpl();
    spanEventsService = SpanEventsServiceFactory.builder().configService(configService).rpmServiceManager(rpmServiceManager).transactionService(transactionService).infiniteTracingConsumer(infiniteTracing).spanEventCreationDecider(spanEventCreationDecider).environmentService(environmentService).transactionDataToDistributedTraceIntrinsics(transactionDataToDistributedTraceIntrinsics).build();
    // Register harvest listeners that started before harvest service was created.
    harvestService.addHarvestListener(extensionService);
    harvestService.addHarvestListener(jarCollectorHarvestListener);
    asyncTxService.start();
    threadService.start();
    statsService.start();
    environmentService.start();
    rpmConnectionService.start();
    tracerService.start();
    jarCollectorService.start();
    sourceLanguageService.start();
    harvestService.start();
    gcService.start();
    transactionService.start();
    transactionTraceService.start();
    transactionEventsService.start();
    profilerService.start();
    commandParser.start();
    jmxService.start();
    cpuSamplerService.start();
    deadlockDetectorService.start();
    samplerService.start();
    sqlTraceService.start();
    browserService.start();
    cacheService.start();
    normalizationService.start();
    databaseService.start();
    configService.start();
    remoteInstrumentationService.start();
    attsService.start();
    insightsService.start();
    logSenderService.start();
    circuitBreakerService.start();
    distributedTraceService.start();
    spanEventsService.start();
    startServices();
    // start last so other services can add connection listeners
    rpmServiceManager.start();
    // used for debugging purposes to quickly determine slow service startups
    ServiceTiming.setEndTime();
    ServiceTiming.logServiceTimings(getLogger());
}
Also used : ClassTransformerServiceImpl(com.newrelic.agent.instrumentation.ClassTransformerServiceImpl) TrackedAddSet(com.newrelic.agent.service.module.TrackedAddSet) RPMServiceManagerImpl(com.newrelic.agent.RPMServiceManagerImpl) TransactionDataToDistributedTraceIntrinsics(com.newrelic.agent.service.analytics.TransactionDataToDistributedTraceIntrinsics) AgentConnectionEstablishedListener(com.newrelic.agent.AgentConnectionEstablishedListener) CommandParser(com.newrelic.agent.commands.CommandParser) DefaultThreadFactory(com.newrelic.agent.util.DefaultThreadFactory) InsightsServiceImpl(com.newrelic.agent.service.analytics.InsightsServiceImpl) RPMConnectionServiceImpl(com.newrelic.agent.rpm.RPMConnectionServiceImpl) JarCollectorServiceImpl(com.newrelic.agent.service.module.JarCollectorServiceImpl) StatsServiceImpl(com.newrelic.agent.stats.StatsServiceImpl) ExpirationService(com.newrelic.agent.ExpirationService) ProfilerService(com.newrelic.agent.profile.ProfilerService) CircuitBreakerService(com.newrelic.agent.circuitbreaker.CircuitBreakerService) JarAnalystFactory(com.newrelic.agent.service.module.JarAnalystFactory) RemoteInstrumentationServiceImpl(com.newrelic.agent.reinstrument.RemoteInstrumentationServiceImpl) SqlTraceServiceImpl(com.newrelic.agent.sql.SqlTraceServiceImpl) TransactionService(com.newrelic.agent.TransactionService) AsyncTransactionService(com.newrelic.agent.service.async.AsyncTransactionService) HarvestServiceImpl(com.newrelic.agent.HarvestServiceImpl) AttributesService(com.newrelic.agent.attributes.AttributesService) InfiniteTracing(com.newrelic.InfiniteTracing) DeadlockDetectorService(com.newrelic.agent.deadlock.DeadlockDetectorService) TransactionTraceService(com.newrelic.agent.trace.TransactionTraceService) BrowserServiceImpl(com.newrelic.agent.browser.BrowserServiceImpl) JmxConfig(com.newrelic.agent.config.JmxConfig) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) EnvironmentServiceImpl(com.newrelic.agent.environment.EnvironmentServiceImpl) JarCollectorInputs(com.newrelic.agent.service.module.JarCollectorInputs) InfiniteTracingEnabledCheck(com.newrelic.agent.service.analytics.InfiniteTracingEnabledCheck) TransactionEventsService(com.newrelic.agent.service.analytics.TransactionEventsService) JarData(com.newrelic.agent.service.module.JarData) Logger(com.newrelic.api.agent.Logger) URL(java.net.URL) AgentConfig(com.newrelic.agent.config.AgentConfig) SpanEventCreationDecider(com.newrelic.agent.service.analytics.SpanEventCreationDecider) JfrConfig(com.newrelic.agent.config.JfrConfig) LogSenderServiceImpl(com.newrelic.agent.service.logging.LogSenderServiceImpl) JarCollectorServiceProcessor(com.newrelic.agent.service.module.JarCollectorServiceProcessor) CPUSamplerService(com.newrelic.agent.samplers.CPUSamplerService) JarCollectorConnectionListener(com.newrelic.agent.service.module.JarCollectorConnectionListener) GCService(com.newrelic.agent.GCService) CacheService(com.newrelic.agent.cache.CacheService) NormalizationServiceImpl(com.newrelic.agent.normalization.NormalizationServiceImpl) ExtensionService(com.newrelic.agent.extension.ExtensionService) TracerService(com.newrelic.agent.TracerService) UtilizationService(com.newrelic.agent.utilization.UtilizationService) DistributedTraceServiceImpl(com.newrelic.agent.tracing.DistributedTraceServiceImpl) JmxService(com.newrelic.agent.jmx.JmxService) AsyncTransactionService(com.newrelic.agent.service.async.AsyncTransactionService) DatabaseService(com.newrelic.agent.database.DatabaseService) JarCollectorHarvestListener(com.newrelic.agent.service.module.JarCollectorHarvestListener) ThreadService(com.newrelic.agent.ThreadService) ExecutorService(java.util.concurrent.ExecutorService) SamplerServiceImpl(com.newrelic.agent.samplers.SamplerServiceImpl) NoopSamplerService(com.newrelic.agent.samplers.NoopSamplerService) SourceLanguageService(com.newrelic.agent.language.SourceLanguageService) JfrService(com.newrelic.agent.jfr.JfrService)

Example 9 with DatabaseService

use of com.newrelic.agent.database.DatabaseService in project newrelic-java-agent by newrelic.

the class AgentTestUtils method createServiceManager.

public static MockServiceManager createServiceManager(Map<String, Object> configMap) throws Exception {
    AgentConfig config = AgentConfigImpl.createAgentConfig(configMap);
    MockServiceManager serviceManager = new MockServiceManager();
    ServiceFactory.setServiceManager(serviceManager);
    ConfigService configService = ConfigServiceFactory.createConfigService(config, configMap);
    serviceManager.setConfigService(configService);
    ThreadService threadService = new ThreadService();
    serviceManager.setThreadService(threadService);
    HarvestService harvestService = new MockHarvestService();
    serviceManager.setHarvestService(harvestService);
    TransactionService transactionService = new TransactionService();
    serviceManager.setTransactionService(transactionService);
    StatsService statsService = new StatsServiceImpl();
    serviceManager.setStatsService(statsService);
    DatabaseService dbService = new DatabaseService();
    serviceManager.setDatabaseService(dbService);
    SqlTraceService sqlTraceService = new SqlTraceServiceImpl();
    serviceManager.setSqlTraceService(sqlTraceService);
    MockCoreService agent = new MockCoreService();
    serviceManager.setCoreService(agent);
    TransactionTraceService transactionTraceService = new TransactionTraceService();
    serviceManager.setTransactionTraceService(transactionTraceService);
    MockRPMServiceManager rpmServiceManager = new MockRPMServiceManager();
    serviceManager.setRPMServiceManager(rpmServiceManager);
    MockRPMService rpmService = new MockRPMService();
    rpmService.setApplicationName("name");
    rpmService.setEverConnected(true);
    rpmService.setErrorService(new ErrorServiceImpl("name"));
    rpmServiceManager.setRPMService(rpmService);
    configService.start();
    serviceManager.start();
    sqlTraceService.start();
    return serviceManager;
}
Also used : SqlTraceServiceImpl(com.newrelic.agent.sql.SqlTraceServiceImpl) MockHarvestService(com.newrelic.agent.MockHarvestService) HarvestService(com.newrelic.agent.HarvestService) TransactionService(com.newrelic.agent.TransactionService) ErrorServiceImpl(com.newrelic.agent.errors.ErrorServiceImpl) StatsService(com.newrelic.agent.stats.StatsService) MockRPMServiceManager(com.newrelic.agent.MockRPMServiceManager) DatabaseService(com.newrelic.agent.database.DatabaseService) TransactionTraceService(com.newrelic.agent.trace.TransactionTraceService) AgentConfig(com.newrelic.agent.config.AgentConfig) ThreadService(com.newrelic.agent.ThreadService) SqlTraceService(com.newrelic.agent.sql.SqlTraceService) ConfigService(com.newrelic.agent.config.ConfigService) StatsServiceImpl(com.newrelic.agent.stats.StatsServiceImpl) MockServiceManager(com.newrelic.agent.MockServiceManager) MockHarvestService(com.newrelic.agent.MockHarvestService) MockCoreService(com.newrelic.agent.MockCoreService) MockRPMService(com.newrelic.agent.MockRPMService)

Example 10 with DatabaseService

use of com.newrelic.agent.database.DatabaseService in project newrelic-java-agent by newrelic.

the class SlowQueryInfo method asSqlTrace.

public SqlTrace asSqlTrace() {
    Tracer tracer = getTracer();
    if (tracer instanceof SqlTracer) {
        DatabaseService dbService = ServiceFactory.getDatabaseService();
        dbService.runExplainPlan((SqlTracer) tracer);
    }
    return new SqlTraceImpl(this);
}
Also used : DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) SqlTracer(com.newrelic.agent.tracers.SqlTracer) Tracer(com.newrelic.agent.tracers.Tracer) SqlTracer(com.newrelic.agent.tracers.SqlTracer) DatabaseService(com.newrelic.agent.database.DatabaseService)

Aggregations

DatabaseService (com.newrelic.agent.database.DatabaseService)15 AttributesService (com.newrelic.agent.attributes.AttributesService)10 ConfigService (com.newrelic.agent.config.ConfigService)10 MockServiceManager (com.newrelic.agent.MockServiceManager)9 TransactionService (com.newrelic.agent.TransactionService)8 HarvestService (com.newrelic.agent.HarvestService)7 MockHarvestService (com.newrelic.agent.MockHarvestService)7 MockRPMService (com.newrelic.agent.MockRPMService)7 MockRPMServiceManager (com.newrelic.agent.MockRPMServiceManager)7 StatsServiceImpl (com.newrelic.agent.stats.StatsServiceImpl)7 TransactionTraceService (com.newrelic.agent.trace.TransactionTraceService)7 AgentConfig (com.newrelic.agent.config.AgentConfig)6 ThreadService (com.newrelic.agent.ThreadService)5 CommandParser (com.newrelic.agent.commands.CommandParser)5 StatsService (com.newrelic.agent.stats.StatsService)5 DistributedTraceServiceImpl (com.newrelic.agent.tracing.DistributedTraceServiceImpl)5 MockCoreService (com.newrelic.agent.MockCoreService)4 EnvironmentServiceImpl (com.newrelic.agent.environment.EnvironmentServiceImpl)4 SqlTraceServiceImpl (com.newrelic.agent.sql.SqlTraceServiceImpl)4 CircuitBreakerService (com.newrelic.agent.circuitbreaker.CircuitBreakerService)3