private void prepareESTest() { when(corePlugin.getElasticsearchConfigurationSourceProfiles()).thenReturn(Collections.singletonList("test")); when(corePlugin.getThreadPoolQueueCapacityLimit()).thenReturn(1000); ElasticsearchClient elasticsearchClient = new ElasticsearchClient(corePlugin, new HttpClient(), -1, Collections.emptyList()); when(corePlugin.getElasticsearchClient()).thenReturn(elasticsearchClient); }
public ElasticsearchUpdateSpanReporter(CorePlugin corePlugin, TracingPlugin tracingPlugin, ElasticsearchTracingPlugin elasticsearchTracingPlugin, ElasticsearchSpanReporter elasticsearchSpanReporter) { this.tracingPlugin = tracingPlugin; this.corePlugin = corePlugin; this.elasticsearchClient = corePlugin.getElasticsearchClient(); this.elasticsearchSpanReporter = elasticsearchSpanReporter; this.httpClient = elasticsearchClient.getHttpClient(); this.elasticsearchTracingPlugin = elasticsearchTracingPlugin; updateBatch = new ArrayList<UpdateDescription>(elasticsearchTracingPlugin.getMaxBatchSize()); updateDescriptionQueue = new ArrayBlockingQueue<UpdateDescription>(1000); updateRunnable = new SpanFlushingRunnable(new UpdateCallable()); final ScheduledThreadPoolExecutor scheduler = ExecutorUtils.createSingleThreadSchedulingDeamonPool("elasticsearch-update-reporter", 10, corePlugin); scheduler.scheduleWithFixedDelay(updateRunnable, elasticsearchTracingPlugin.getFlushDelayMs(), elasticsearchTracingPlugin.getFlushDelayMs(), TimeUnit.MILLISECONDS); }
@Before public void setUp() throws Exception { metricRegistry = new Metric2Registry(); final ConfigurationRegistry configuration = mock(ConfigurationRegistry.class); final CorePlugin corePlugin = mock(CorePlugin.class); when(corePlugin.getElasticsearchClient()).thenReturn(mock(ElasticsearchClient.class)); when(corePlugin.getGrafanaClient()).thenReturn(mock(GrafanaClient.class)); when(configuration.getConfig(CorePlugin.class)).thenReturn(corePlugin); osPlugin.initializePlugin(new StagemonitorPlugin.InitArguments(metricRegistry, configuration, mock(MeasurementSession.class), mock(HealthCheckRegistry.class))); this.sigar = osPlugin.getSigar(); }
private void addElasticsearchConfigurationSources(ConfigurationRegistry configuration, CorePlugin corePlugin, Collection<String> elasticsearchConfigurationSourceIds) { ElasticsearchClient elasticsearchClient = configuration.getConfig(CorePlugin.class).getElasticsearchClient(); if (corePlugin.isDeactivateStagemonitorIfEsConfigSourceIsDown()) { assertElasticsearchIsAvailable(elasticsearchClient, corePlugin); } for (String configurationId : elasticsearchConfigurationSourceIds) { final ElasticsearchConfigurationSource esSource = new ElasticsearchConfigurationSource(elasticsearchClient, configurationId); configuration.addConfigurationSourceAfter(esSource, SimpleSource.class); } configuration.reloadAllConfigurationOptions(); }
@Before public void setUp() throws Exception { this.configuration = mock(ConfigurationRegistry.class); this.tracingPlugin = mock(TracingPlugin.class); when(configuration.getConfig(CorePlugin.class)).thenReturn(corePlugin); when(configuration.getConfig(TracingPlugin.class)).thenReturn(tracingPlugin); when(configuration.getConfig(ElasticsearchTracingPlugin.class)).thenReturn(spy(new ElasticsearchTracingPlugin())); when(corePlugin.getElasticsearchClient()).thenReturn(elasticsearchClient); when(corePlugin.getMetricRegistry()).thenReturn(new Metric2Registry()); when(tracingPlugin.getDefaultRateLimitSpansPerMinute()).thenReturn(1000000d); reporter = new ElasticsearchSpanReporter(); reporter.init(configuration); final String mappingTemplate = IOUtils.getResourceAsString("stagemonitor-elasticsearch-span-index-template.json"); elasticsearchClient.sendMappingTemplate(mappingTemplate, "stagemonitor-spans"); elasticsearchClient.waitForCompletion(); when(tracingPlugin.getTracer()).thenReturn(mockTracer); }
@Override public void init(ConfigurationRegistry configuration) { final CorePlugin corePlugin = configuration.getConfig(CorePlugin.class); tracingPlugin = configuration.getConfig(TracingPlugin.class); elasticsearchTracingPlugin = configuration.getConfig(ElasticsearchTracingPlugin.class); elasticsearchClient = corePlugin.getElasticsearchClient(); metricRegistry = corePlugin.getMetricRegistry(); scheduler = ExecutorUtils.createSingleThreadSchedulingDeamonPool("elasticsearch-reporter", 10, corePlugin); spanFlushingRunnable = new SpanFlushingRunnable(new FlushCallable()); scheduler.scheduleWithFixedDelay(spanFlushingRunnable, elasticsearchTracingPlugin.getFlushDelayMs(), elasticsearchTracingPlugin.getFlushDelayMs(), TimeUnit.MILLISECONDS); bulkQueue = new ArrayBlockingQueue<OutputStreamHandler>(elasticsearchTracingPlugin.getMaxQueueSize()); this.updateReporter = new ElasticsearchUpdateSpanReporter(corePlugin, tracingPlugin, elasticsearchTracingPlugin, this); }
@Before public void clearState() { CorePlugin corePlugin = mock(CorePlugin.class); TracingPlugin tracingPlugin = mock(TracingPlugin.class); when(tracingPlugin.getDefaultRateLimitSpansPerMinuteOption()).thenReturn(mock(ConfigurationOption.class)); when(tracingPlugin.getDefaultRateLimitSpansPercentOption()).thenReturn(mock(ConfigurationOption.class)); when(tracingPlugin.getRateLimitSpansPerMinutePercentPerTypeOption()).thenReturn(mock(ConfigurationOption.class)); when(tracingPlugin.getDefaultRateLimitSpansPercent()).thenReturn(1.0); when(tracingPlugin.getRateLimitSpansPerMinutePercentPerType()).thenReturn(Collections.emptyMap()); when(tracingPlugin.getProfilerRateLimitPerMinuteOption()).thenReturn(mock(ConfigurationOption.class)); configuration = mock(ConfigurationRegistry.class); when(configuration.getConfig(CorePlugin.class)).thenReturn(corePlugin); when(configuration.getConfig(TracingPlugin.class)).thenReturn(tracingPlugin); when(corePlugin.isStagemonitorActive()).thenReturn(true); when(corePlugin.getThreadPoolQueueCapacityLimit()).thenReturn(1000); when(corePlugin.getMetricRegistry()).thenReturn(registry); when(corePlugin.getElasticsearchClient()).thenReturn(mock(ElasticsearchClient.class)); final RequestMonitor requestMonitor = new RequestMonitor(configuration, registry); when(tracingPlugin.getRequestMonitor()).thenReturn(requestMonitor); tags = new HashMap<>(); mockTracer = new MockTracer(); tracer = TracingPlugin.createSpanWrappingTracer(mockTracer, configuration, registry, TagRecordingSpanEventListener.asList(tags), new SamplePriorityDeterminingSpanEventListener(configuration), new ReportingSpanEventListener(configuration)); when(tracingPlugin.getTracer()).thenReturn(tracer); testObject = new TestObject(requestMonitor); assertThat(tracer.scopeManager().active()).isNull(); }
@Before public void setUp() throws Exception { this.configuration = mock(ConfigurationRegistry.class); this.tracingPlugin = mock(TracingPlugin.class); when(configuration.getConfig(CorePlugin.class)).thenReturn(corePlugin); when(configuration.getConfig(TracingPlugin.class)).thenReturn(tracingPlugin); when(configuration.getConfig(ElasticsearchTracingPlugin.class)).thenReturn(spy(new ElasticsearchTracingPlugin())); when(corePlugin.getElasticsearchClient()).thenReturn(elasticsearchClient); when(corePlugin.getMetricRegistry()).thenReturn(new Metric2Registry()); when(tracingPlugin.getDefaultRateLimitSpansPerMinute()).thenReturn(1000000d); when(tracingPlugin.getProfilerRateLimitPerMinuteOption()).thenReturn(mock(ConfigurationOption.class)); when(tracingPlugin.isPseudonymizeUserNames()).thenReturn(true); when(tracingPlugin.isSampled(any())).thenReturn(true); reporter = new ElasticsearchSpanReporter(); reporter.init(configuration); final ReportingSpanEventListener reportingSpanEventListener = new ReportingSpanEventListener(configuration); reportingSpanEventListener.addReporter(reporter); final SamplePriorityDeterminingSpanEventListener samplePriorityDeterminingSpanInterceptor = mock(SamplePriorityDeterminingSpanEventListener.class); when(samplePriorityDeterminingSpanInterceptor.onSetTag(ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).then(invocation -> invocation.getArgument(1)); when(samplePriorityDeterminingSpanInterceptor.onSetTag(ArgumentMatchers.anyString(), ArgumentMatchers.anyBoolean())).then(invocation -> invocation.getArgument(1)); when(samplePriorityDeterminingSpanInterceptor.onSetTag(ArgumentMatchers.anyString(), ArgumentMatchers.any(Number.class))).then(invocation -> invocation.getArgument(1)); tracer = TracingPlugin.createSpanWrappingTracer(new MockTracer(new ThreadLocalScopeManager(), new B3Propagator()), configuration, new Metric2Registry(), Collections.emptyList(), samplePriorityDeterminingSpanInterceptor, reportingSpanEventListener); when(tracingPlugin.getTracer()).thenReturn(tracer); }
@Before public void setUp() throws Exception { configuration = mock(ConfigurationRegistry.class); CorePlugin corePlugin = mock(CorePlugin.class); TracingPlugin tracingPlugin = mock(TracingPlugin.class); this.servletPlugin = mock(ServletPlugin.class); when(configuration.getConfig(CorePlugin.class)).thenReturn(corePlugin); when(configuration.getConfig(TracingPlugin.class)).thenReturn(tracingPlugin); when(configuration.getConfig(ServletPlugin.class)).thenReturn(servletPlugin); when(tracingPlugin.getDefaultRateLimitSpansPerMinute()).thenReturn(1000000d); when(tracingPlugin.getOnlyReportSpansWithName()).thenReturn(Collections.emptyList()); final URL url = new URL("http://localhost:9200"); when(corePlugin.getElasticsearchUrl()).thenReturn(url); when(corePlugin.getElasticsearchUrls()).thenReturn(Collections.singletonList(url)); ElasticsearchClient elasticsearchClient = mock(ElasticsearchClient.class); when(elasticsearchClient.isElasticsearchAvailable()).thenReturn(true); when(corePlugin.getElasticsearchClient()).thenReturn(elasticsearchClient); when(corePlugin.getMetricRegistry()).thenReturn(new Metric2Registry()); when(servletPlugin.isHonorDoNotTrackHeader()).thenReturn(true); tracer = new SpanWrappingTracer(new MockTracer(), Arrays.asList( new SpanContextInformation.SpanContextSpanEventListener(), new SpanContextInformation.SpanFinalizer() ) ); GlobalTracerTestHelper.override(tracer); when(tracingPlugin.getTracer()).thenReturn(tracer); assertThat(tracer.scopeManager().active()).isNull(); }
final ElasticsearchClient elasticsearchClient = mock(ElasticsearchClient.class); when(elasticsearchClient.isElasticsearchAvailable()).thenReturn(true); when(corePlugin.getElasticsearchClient()).thenReturn(elasticsearchClient); when(corePlugin.isStagemonitorActive()).thenReturn(true); elasticsearchReporter = ElasticsearchReporter.forRegistry(registry, corePlugin)
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) throws Exception { alertSender = new AlertSender(initArguments.getConfiguration()); CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); if (!corePlugin.getElasticsearchUrls().isEmpty()) { incidentRepository = new ElasticsearchIncidentRepository(corePlugin.getElasticsearchClient()); } else { incidentRepository = new ConcurrentMapIncidentRepository(); } logger.info("Using {} for storing incidents.", incidentRepository.getClass().getSimpleName()); thresholdMonitoringReporter = ThresholdMonitoringReporter.forRegistry(initArguments.getMetricRegistry()) .alertingPlugin(this) .alertSender(alertSender) .incidentRepository(incidentRepository) .measurementSession(initArguments.getMeasurementSession()) .build(); thresholdMonitoringReporter.start(checkFrequency.getValue(), TimeUnit.SECONDS); SlaCheckCreatingClassPathScanner.onStart(initArguments.getMeasurementSession()); }
private ElasticsearchReporter(Builder builder) { super(builder); this.elasticsearchMetricsLogger = builder.getElasticsearchMetricsLogger(); this.globalTags = builder.getGlobalTags(); this.httpClient = builder.getHttpClient(); this.jfactory.setCodec(JsonUtils.getMapper()); this.metric2RegistryModule = new Metric2RegistryModule(builder.getRateUnit(), builder.getDurationUnit()); this.corePlugin = builder.getCorePlugin(); this.elasticsearchClient = corePlugin.getElasticsearchClient(); }
ElasticsearchClient elasticsearchClient = mock(ElasticsearchClient.class); doReturn(true).when(elasticsearchClient).isElasticsearchAvailable(); doReturn(elasticsearchClient).when(corePlugin).getElasticsearchClient(); doReturn(false).when(corePlugin).isOnlyLogElasticsearchMetricReports();
when(corePlugin.getThreadPoolQueueCapacityLimit()).thenReturn(1000); elasticsearchClient = new ElasticsearchClient(corePlugin, new HttpClient(), -1, Collections.emptyList()); when(corePlugin.getElasticsearchClient()).thenReturn(elasticsearchClient); when(corePlugin.isInitialized()).thenReturn(TRUE);
@Override public void initializePlugin(InitArguments initArguments) { this.metricRegistry = initArguments.getMetricRegistry(); this.healthCheckRegistry = initArguments.getHealthCheckRegistry(); final Integer reloadInterval = getReloadConfigurationInterval(); if (reloadInterval > 0) { initArguments.getConfiguration().scheduleReloadAtRate(reloadInterval, TimeUnit.SECONDS); } initArguments.getMetricRegistry().register(MetricName.name("online").build(), new Gauge<Integer>() { @Override public Integer getValue() { return 1; } }); // it's important to initialize the ElasticsearchClient via getElasticsearchClient() // otherwise the periodic availability check might not get started getElasticsearchClient(); if (isReportToElasticsearch()) { final GrafanaClient grafanaClient = getGrafanaClient(); grafanaClient.createElasticsearchDatasource(getElasticsearchUrl()); grafanaClient.sendGrafanaDashboardAsync("grafana/ElasticsearchCustomMetricsDashboard.json"); } registerReporters(initArguments.getMetricRegistry(), initArguments.getConfiguration(), initArguments.getMeasurementSession()); }
public ElasticsearchRequestTraceServlet(Configuration configuration) { elasticsearchClient = configuration.getConfig(CorePlugin.class).getElasticsearchClient(); }
@Override public void init(InitArguments initArguments) { final Configuration configuration = initArguments.getConfiguration(); corePlugin = configuration.getConfig(CorePlugin.class); requestMonitorPlugin = configuration.getConfig(RequestMonitorPlugin.class); elasticsearchClient = corePlugin.getElasticsearchClient(); }
@Override public void init(InitArguments initArguments) { this.configuration = initArguments.getConfiguration(); this.corePlugin = configuration.getConfig(CorePlugin.class); this.elasticsearchClient = corePlugin.getElasticsearchClient(); this.requestMonitorPlugin = configuration.getConfig(RequestMonitorPlugin.class); registerPreInterceptors(); registerPostInterceptors(); }
@Override public void init(ConfigurationRegistry configuration) { final CorePlugin corePlugin = configuration.getConfig(CorePlugin.class); tracingPlugin = configuration.getConfig(TracingPlugin.class); elasticsearchTracingPlugin = configuration.getConfig(ElasticsearchTracingPlugin.class); elasticsearchClient = corePlugin.getElasticsearchClient(); metricRegistry = corePlugin.getMetricRegistry(); scheduler = ExecutorUtils.createSingleThreadSchedulingDeamonPool("elasticsearch-reporter", 10, corePlugin); spanFlushingRunnable = new SpanFlushingRunnable(new FlushCallable()); scheduler.scheduleWithFixedDelay(spanFlushingRunnable, elasticsearchTracingPlugin.getFlushDelayMs(), elasticsearchTracingPlugin.getFlushDelayMs(), TimeUnit.MILLISECONDS); bulkQueue = new ArrayBlockingQueue<OutputStreamHandler>(elasticsearchTracingPlugin.getMaxQueueSize()); this.updateReporter = new ElasticsearchUpdateSpanReporter(corePlugin, tracingPlugin, elasticsearchTracingPlugin, this); }
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { registerPooledResources(initArguments.getMetricRegistry(), tomcatThreadPools()); final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); ElasticsearchClient elasticsearchClient = corePlugin.getElasticsearchClient(); if (corePlugin.isReportToGraphite()) { elasticsearchClient.sendGrafana1DashboardAsync("grafana/Grafana1GraphiteServer.json"); elasticsearchClient.sendGrafana1DashboardAsync("grafana/Grafana1GraphiteKPIsOverTime.json"); } if (corePlugin.isReportToElasticsearch()) { final GrafanaClient grafanaClient = corePlugin.getGrafanaClient(); elasticsearchClient.sendClassPathRessourceBulkAsync("kibana/ApplicationServer.bulk"); grafanaClient.sendGrafanaDashboardAsync("grafana/ElasticsearchApplicationServer.json"); } }