@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { initArguments.getMetricRegistry().registerAll(Metric2Set.Converter.convert(new GarbageCollectorMetricSet(), new MetricNameConverter() { @Override public MetricName convert(String name) { initArguments.getMetricRegistry().registerAll(Metric2Set.Converter.convert(new MemoryUsageGaugeSet(), new MetricNameConverter() { @Override public MetricName convert(String name) { cpuWatch = new CpuUtilisationWatch(); cpuWatch.start(); initArguments.getMetricRegistry().register(name("jvm_process_cpu_usage").build(), new Gauge<Float>() { @Override public Float getValue() { final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchJvm.json");
@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()); }
doReturn("testApplication").when(corePlugin).getApplicationName(); doReturn("testInstance").when(corePlugin).getInstanceName(); servletPlugin.initializePlugin(new StagemonitorPlugin.InitArguments(mock(Metric2Registry.class), configuration, mock(MeasurementSession.class), mock(HealthCheckRegistry.class)));
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { initArguments.getMetricRegistry().registerAll(Metric2Set.Converter.convert(new GarbageCollectorMetricSet(), new MetricNameConverter() { @Override public MetricName convert(String name) { initArguments.getMetricRegistry().registerAll(Metric2Set.Converter.convert(new MemoryUsageGaugeSet(), new MetricNameConverter() { @Override public MetricName convert(String name) { cpuWatch = new CpuUtilisationWatch(); cpuWatch.start(); initArguments.getMetricRegistry().register(name("jvm_process_cpu_usage").build(), new Gauge<Float>() { @Override public Float getValue() { final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchJvm.json");
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) throws Exception { final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); initArguments.getMetricRegistry().registerAll(init(new CpuMetricSet(sigar, sigar.getCpuInfoList()[0]))); initArguments.getMetricRegistry().registerAll(init(new MemoryMetricSet(sigar))); initArguments.getMetricRegistry().registerAll(init(new SwapMetricSet(sigar))); initArguments.getMetricRegistry().registerAll(init(new NetworkMetricSet(ifname, sigar))); final FileSystem fs = e.getValue(); if (fs.getType() == FileSystem.TYPE_LOCAL_DISK || fs.getType() == FileSystem.TYPE_NETWORK) { initArguments.getMetricRegistry().registerAll(init(new FileSystemMetricSet(e.getKey(), sigar)));
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); final ElasticsearchClient elasticsearchClient = corePlugin.getElasticsearchClient(); final GrafanaClient grafanaClient = corePlugin.getGrafanaClient(); final String requestsMappingJson = ElasticsearchClient.modifyIndexTemplate( requestIndexTemplate.getValue(), corePlugin.getMoveToColdNodesAfterDays(), corePlugin.getNumberOfReplicas(), corePlugin.getNumberOfShards()); elasticsearchClient.sendMappingTemplateAsync(requestsMappingJson, "stagemonitor-requests"); final String mappingJson = ElasticsearchClient.modifyIndexTemplate( externalRequestsIndexTemplate.getValue(), corePlugin.getMoveToColdNodesAfterDays(), corePlugin.getNumberOfReplicas(), corePlugin.getNumberOfShards()); elasticsearchClient.sendMappingTemplateAsync(mappingJson, "stagemonitor-external-requests"); if (corePlugin.isReportToGraphite()) { elasticsearchClient.sendGrafana1DashboardAsync("grafana/Grafana1GraphiteRequestDashboard.json"); } if (corePlugin.isReportToElasticsearch()) { elasticsearchClient.sendClassPathRessourceBulkAsync("kibana/RequestDashboard.bulk"); grafanaClient.sendGrafanaDashboardAsync("grafana/ElasticsearchRequestDashboard.json"); grafanaClient.sendGrafanaDashboardAsync("grafana/ElasticsearchExternalRequestsDashboard.json"); } if (!corePlugin.getElasticsearchUrls().isEmpty()) { elasticsearchClient.sendClassPathRessourceBulkAsync("kibana/StagemonitorRequestsIndexPattern.bulk"); elasticsearchClient.sendClassPathRessourceBulkAsync("kibana/RequestAnalysis.bulk"); elasticsearchClient.sendClassPathRessourceBulkAsync("kibana/WebAnalytics.bulk"); elasticsearchClient.sendClassPathRessourceBulkAsync("kibana/ExternalRequests.bulk"); elasticsearchClient.scheduleIndexManagement("stagemonitor-requests-", corePlugin.getMoveToColdNodesAfterDays(), deleteRequestTracesAfterDays.getValue()); elasticsearchClient.scheduleIndexManagement("stagemonitor-external-requests-", corePlugin.getMoveToColdNodesAfterDays(), deleteRequestTracesAfterDays.getValue()); } }
@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"); } }
@Override public Tracer getTracer(StagemonitorPlugin.InitArguments initArguments) { final B3TextMapCodec b3TextMapCodec = new B3TextMapCodec.Builder().build(); final JaegerTracer.Builder builder = new JaegerTracer.Builder( initArguments.getMeasurementSession().getApplicationName()) .withReporter(new NoopReporter()) .withSampler(new ConstSampler(true)) .registerInjector(B3HeaderFormat.INSTANCE, b3TextMapCodec) .registerInjector(Format.Builtin.HTTP_HEADERS, b3TextMapCodec) .registerExtractor(Format.Builtin.HTTP_HEADERS, b3TextMapCodec); return builder.build(); }
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) throws Exception { final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); initArguments.getMetricRegistry().registerAll(init(new CpuMetricSet(sigar, sigar.getCpuInfoList()[0]))); initArguments.getMetricRegistry().registerAll(init(new MemoryMetricSet(sigar))); initArguments.getMetricRegistry().registerAll(init(new SwapMetricSet(sigar))); initArguments.getMetricRegistry().registerAll(init(new NetworkMetricSet(ifname, sigar))); final FileSystem fs = e.getValue(); if (fs.getType() == FileSystem.TYPE_LOCAL_DISK || fs.getType() == FileSystem.TYPE_NETWORK) { initArguments.getMetricRegistry().registerAll(init(new FileSystemMetricSet(e.getKey(), sigar)));
@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()); }
@Override public void initializePlugin(final StagemonitorPlugin.InitArguments initArguments) { corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchRequestDashboard.json"); final Metric2Registry metricRegistry = initArguments.getMetricRegistry(); tracerFactory = getTracerImpl(); final Tracer tracer = tracerFactory.getTracer(initArguments); reportingSpanEventListener = new ReportingSpanEventListener(initArguments.getConfiguration()); for (SpanReporter spanReporter : ServiceLoader.load(SpanReporter.class, RequestMonitor.class.getClassLoader())) { addReporter(spanReporter); } samplePriorityDeterminingSpanInterceptor = new SamplePriorityDeterminingSpanEventListener(initArguments.getConfiguration()); final ServiceLoader<SpanEventListenerFactory> factories = ServiceLoader.load(SpanEventListenerFactory.class, TracingPlugin.class.getClassLoader()); this.spanWrappingTracer = createSpanWrappingTracer(tracer, initArguments.getConfiguration(), metricRegistry, factories, samplePriorityDeterminingSpanInterceptor, reportingSpanEventListener); GlobalTracer.register(spanWrappingTracer); }
private static void initializePlugin(final StagemonitorPlugin stagemonitorPlugin) { final String pluginName = stagemonitorPlugin.getClass().getSimpleName(); try { stagemonitorPlugin.initializePlugin(new StagemonitorPlugin.InitArguments(metric2Registry, getConfiguration(), measurementSession, healthCheckRegistry)); stagemonitorPlugin.initialized = true; for (Runnable onInitCallback : stagemonitorPlugin.onInitCallbacks) { onInitCallback.run(); } stagemonitorPlugin.registerWidgetTabPlugins(new StagemonitorPlugin.WidgetTabPluginsRegistry(pathsOfWidgetTabPlugins)); stagemonitorPlugin.registerWidgetMetricTabPlugins(new StagemonitorPlugin.WidgetMetricTabPluginsRegistry(pathsOfWidgetMetricTabPlugins)); healthCheckRegistry.register(pluginName, ImmediateResult.of(HealthCheck.Result.healthy("version " + stagemonitorPlugin.getVersion()))); } catch (final Exception e) { healthCheckRegistry.register(pluginName, ImmediateResult.of(HealthCheck.Result.unhealthy(e))); logger.warn("Error while initializing plugin " + pluginName + " (this exception is ignored)", e); } }
@Test public void testIsRoot() throws Exception { final StagemonitorPlugin.InitArguments initArguments = mock(StagemonitorPlugin.InitArguments.class); when(initArguments.getMeasurementSession()).thenReturn( new MeasurementSession("JaegerTracerFactoryTest", "test", "test")); final JaegerTracerFactory jaegerTracerFactory = new JaegerTracerFactory(); final Tracer tracer = jaegerTracerFactory.getTracer(initArguments); try (final Scope rootSpan = tracer.buildSpan("foo").startActive(true)) { try (final Scope childSpan = tracer.buildSpan("bar").startActive(true)) { assertThat(jaegerTracerFactory.isRoot(rootSpan.span())).isTrue(); assertThat(jaegerTracerFactory.isRoot(childSpan.span())).isFalse(); } } } }
protected AsyncReporter.Builder getZipkinReporterBuilder(StagemonitorPlugin.InitArguments initArguments) { final ZipkinPlugin zipkinPlugin = initArguments.getPlugin(ZipkinPlugin.class); final AsyncReporter.Builder reporterBuilder = AsyncReporter .builder(getSender(zipkinPlugin)) .messageTimeout(zipkinPlugin.getZipkinFlushInterval(), TimeUnit.MILLISECONDS); final Integer zipkinMaxQueuedBytes = zipkinPlugin.getZipkinMaxQueuedBytes(); if (zipkinMaxQueuedBytes != null) { reporterBuilder.queuedMaxBytes(zipkinMaxQueuedBytes); } if (initArguments.getPlugin(CorePlugin.class).isInternalMonitoringActive()) { reporterBuilder.metrics(new StagemonitorReporterMetrics(initArguments.getMetricRegistry())); } return reporterBuilder; }
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { this.metricRegistry = initArguments.getMetricRegistry(); healthCheckRegistry = initArguments.getHealthCheckRegistry(); TracingPlugin tracingPlugin = initArguments.getPlugin(TracingPlugin.class); final CacheManager cacheManager = CacheManager.getCacheManager(ehCacheNameOption.getValue()); if (cacheManager == null) { tryAgainWhenFirstRequestComesIn(tracingPlugin); } else { monitorCaches(cacheManager); healthCheckRegistry.register("EhCache CacheManager", ImmediateResult.of(HealthCheck.Result.healthy())); } final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchEhCache.json"); }
@Override public Tracer getTracer(StagemonitorPlugin.InitArguments initArguments) { final B3TextMapCodec b3TextMapCodec = new B3TextMapCodec.Builder().build(); final JaegerTracer.Builder builder = new JaegerTracer.Builder( initArguments.getMeasurementSession().getApplicationName()) .withReporter(new NoopReporter()) .withSampler(new ConstSampler(true)) .registerInjector(B3HeaderFormat.INSTANCE, b3TextMapCodec) .registerInjector(Format.Builtin.HTTP_HEADERS, b3TextMapCodec) .registerExtractor(Format.Builtin.HTTP_HEADERS, b3TextMapCodec); return builder.build(); }
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchLogging.json"); }
@Override public Tracer getTracer(StagemonitorPlugin.InitArguments initArguments) { final Tracing braveTracer = Tracing.newBuilder() .localServiceName(initArguments.getMeasurementSession().getApplicationName()) .reporter(getZipkinReporterBuilder(initArguments).build()) .sampler(getSampler()) .build(); return BraveTracer.newBuilder(braveTracer) .textMapPropagation(B3HeaderFormat.INSTANCE, Propagation.B3_STRING) .build(); }
@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(); }
@Override public void initializePlugin(StagemonitorPlugin.InitArguments initArguments) { initPasswordChecker(initArguments.getConfiguration()); registerPooledResources(initArguments.getMetricRegistry(), tomcatThreadPools()); final CorePlugin corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchApplicationServer.json"); initClientSpanExtensions(initArguments.getConfiguration()); }