@Override public void sessionDestroyed(HttpSessionEvent se) { Stagemonitor.getMetric2Registry().counter(METRIC_NAME).dec(); } }
public static void main(String[] args) throws InterruptedException { OsConfigurationSourceInitializer.addConfigurationSource(args); Stagemonitor.init(); System.out.println("Interrupt (Ctrl + C) to exit"); Thread.currentThread().join(); }
public HttpRequestMonitorFilter() { this(Stagemonitor.getConfiguration()); }
public AlerterTypeServlet() { this(Stagemonitor.getPlugin(AlertingPlugin.class), Stagemonitor.getMeasurementSession()); }
public RequestMonitor getRequestMonitor() { if (requestMonitor == null) { requestMonitor = new RequestMonitor(Stagemonitor.getConfiguration(), Stagemonitor.getMetric2Registry()); } return requestMonitor; }
private static void startMonitoring(MeasurementSession measurementSession) { if (!getPlugin(CorePlugin.class).isStagemonitorActive()) { logger.info("stagemonitor is deactivated"); disabled = true; } if (started || disabled) { return; } Stagemonitor.measurementSession = measurementSession; doStartMonitoring(); }
@Before public void setUp() throws Exception { metric2Registry = Stagemonitor.getMetric2Registry(); metric2Registry.removeMatching(MetricFilter.ALL); try (final Connection connection = dataSource.getConnection()) { connection.prepareStatement("CREATE TABLE IF NOT EXISTS STAGEMONITOR (FOO INT)").execute(); connection.prepareStatement("INSERT INTO STAGEMONITOR (FOO) VALUES (1)").execute(); } requestMonitor = Stagemonitor.getPlugin(TracingPlugin.class).getRequestMonitor(); configuration = Stagemonitor.getConfiguration(); testDao = new TestDao(dataSource); }
@AfterClass public static void cleanUp() { GlobalTracerTestHelper.resetGlobalTracer(); Stagemonitor.reset(); Stagemonitor.getMetric2Registry().removeMatching(MetricFilter.ALL); }
@Before public void before() throws Exception { GlobalTracerTestHelper.resetGlobalTracer(); testClass = new TestSubClass(); metricRegistry = Stagemonitor.getMetric2Registry(); testClassLevelAnnotationClass = new TestClassLevelAnnotationClass(); metricRegistry.removeMatching(Metric2Filter.ALL); Stagemonitor.reset(new MeasurementSession("TracedTransformerTest", "test", "test")); spanCapturingReporter = new SpanCapturingReporter(); tags = new HashMap<>(); Stagemonitor.getPlugin(TracingPlugin.class).addSpanEventListenerFactory(new TagRecordingSpanEventListener(tags)); Stagemonitor.getPlugin(TracingPlugin.class).addReporter(spanCapturingReporter); assertThat(GlobalTracer.get().scopeManager().active()).isNull(); }
public StagemonitorMetricsServlet() { this(Stagemonitor.getMetric2Registry(), Stagemonitor.getPlugin(ServletPlugin.class), JsonUtils.getMapper()); }
public static void main(String[] args) throws Exception { final Timer.Context timer = Stagemonitor.getMetric2Registry().timer(name("startElasticsearch").build()).time(); startElasticsearch(); Stagemonitor.init(); timer.stop(); printResults(); node.close(); }
/** * Should only be used outside of this class by the internal unit tests */ @Deprecated public static void reset() { reset(null); }
@Test public void testStartMonitoringNotActive() throws Exception { when(corePlugin.isStagemonitorActive()).thenReturn(false); final MeasurementSession measurementSession = new MeasurementSession("StagemonitorTest", "testHost", "testInstance"); Stagemonitor.reset(measurementSession); assertTrue(Stagemonitor.isDisabled()); assertFalse(Stagemonitor.isStarted()); assertTrue(Stagemonitor.getMeasurementSession().isInitialized()); assertThat(healthCheckRegistry.getNames()).doesNotContain("TestPlugin", "TestExceptionPlugin"); }
@Override public void onStartup(ServletContext ctx) { Stagemonitor.init(); if (ServletContainerInitializerUtil.avoidDoubleInit(this, ctx)) return; ctx.addServlet(ConfigurationServlet.class.getSimpleName(), new ConfigurationServlet()) .addMapping("/stagemonitor/public/eum"); final ClientSpanJavaScriptServlet servlet = new ClientSpanJavaScriptServlet(); Stagemonitor.getPlugin(ServletPlugin.class).setClientSpanJavaScriptServlet(servlet); ctx.addServlet(ClientSpanJavaScriptServlet.class.getSimpleName(), servlet) .addMapping("/stagemonitor/public/eum.js"); final ServletRegistration.Dynamic healthServlet = ctx.addServlet(HealthCheckServlet.class.getSimpleName(), new HealthCheckServlet(Stagemonitor.getHealthCheckRegistry())); healthServlet.addMapping("/stagemonitor/status"); healthServlet.setAsyncSupported(true);
@Test public void testStartMonitoring() throws Exception { when(corePlugin.isStagemonitorActive()).thenReturn(true); Stagemonitor.setConfiguration(configuration); Stagemonitor.reset(); final MeasurementSession measurementSession = new MeasurementSession("StagemonitorTest", "testHost", "testInstance"); Stagemonitor.reset(measurementSession); assertTrue(Stagemonitor.isStarted()); assertTrue(Stagemonitor.getMeasurementSession().isInitialized()); assertSame(measurementSession, Stagemonitor.getMeasurementSession()); assertThat(healthCheckRegistry.runHealthCheck("TestPlugin").isHealthy()).isTrue(); assertThat(healthCheckRegistry.runHealthCheck("TestExceptionPlugin").isHealthy()).isFalse(); }
@Advice.OnMethodEnter(inline = false) public static void monitorStart(@ParameterNames String parameterNames, @Advice.AllArguments Object[] args, @RequestName String requestName, @Advice.Origin("#t") String className, @Advice.Origin("#m") String methodName, @Advice.This(optional = true) Object thiz) { final String[] paramNames = parameterNames.split(","); Map<String, Object> params = new LinkedHashMap<String, Object>(); for (int i = 0; i < args.length; i++) { params.put(paramNames[i], args[i]); } final MonitoredMethodRequest monitoredRequest = new MonitoredMethodRequest(Stagemonitor.getConfiguration(), requestName, null, params); final TracingPlugin tracingPlugin = Stagemonitor.getPlugin(TracingPlugin.class); tracingPlugin.getRequestMonitor().monitorStart(monitoredRequest); final Span span = TracingPlugin.getCurrentSpan(); if (requestName == null) { span.setOperationName(getBusinessTransationName(thiz != null ? thiz.getClass().getName() : className, methodName)); } span.setTag(MetricsSpanEventListener.ENABLE_TRACKING_METRICS_TAG, true); }
@Override public void injectHtml(HtmlInjector.InjectArguments injectArguments) { final List<String> pathsOfWidgetTabPlugins = new ArrayList<String>(); for (String path : Stagemonitor.getPathsOfWidgetTabPlugins()) { pathsOfWidgetTabPlugins.add(contextPath + path); } final List<String> pathsOfWidgetMetricTabPlugins = new ArrayList<String>(); for (String path : Stagemonitor.getPathsOfWidgetMetricTabPlugins()) { pathsOfWidgetMetricTabPlugins.add(contextPath + path); } final SpanWrapper span = injectArguments.getSpanWrapper(); injectArguments.setContentToInjectBeforeClosingBody(widgetTemplate .replace("@@JSON_REQUEST_TRACE_PLACEHOLDER@@", span != null ? JsonUtils.toJson(span, SpanUtils.CALL_TREE_ASCII) : "null") .replace("@@CONFIGURATION_OPTIONS@@", JsonUtils.toJson(configuration.getConfigurationOptionsByCategory())) .replace("@@CONFIGURATION_PWD_SET@@", Boolean.toString(servletPlugin.getConfigurationPasswordChecker().isPasswordSet())) .replace("@@CONFIGURATION_SOURCES@@", JsonUtils.toJson(configuration.getNamesOfConfigurationSources())) .replace("@@MEASUREMENT_SESSION@@", JsonUtils.toJson(Stagemonitor.getMeasurementSession())) .replace("@@PATHS_OF_TAB_PLUGINS@@", JsonUtils.toJson(pathsOfWidgetTabPlugins)) .replace("@@PATHS_OF_WIDGET_METRIC_TAB_PLUGINS@@", JsonUtils.toJson(pathsOfWidgetMetricTabPlugins)) .replace("@@CONNECTION_ID@@", UUID.randomUUID().toString())); } }
private static void initializePlugins() { final CorePlugin corePlugin = getPlugin(CorePlugin.class); final Collection<String> disabledPlugins = corePlugin.getDisabledPlugins(); pathsOfWidgetMetricTabPlugins = new CopyOnWriteArrayList<String>(); pathsOfWidgetTabPlugins = new CopyOnWriteArrayList<String>(); initializePluginsInOrder(disabledPlugins, plugins); }
public <T extends RequestTrace> void monitorStart(MonitoredRequest<T> monitoredRequest) { final long start = System.nanoTime(); RequestInformation<T> info = new RequestInformation<T>(); info.monitoredRequest = monitoredRequest; detectForwardedRequest(info); request.set(info); try { if (!corePlugin.isStagemonitorActive()) { return; } if (Stagemonitor.getMeasurementSession().isNull()) { createMeasurementSession(); } info.firstRequest = noOfRequests.get() == 0; if (Stagemonitor.getMeasurementSession().getInstanceName() == null) { getInstanceNameFromExecution(monitoredRequest); } if (info.monitorThisRequest()) { if (!Stagemonitor.isStarted()) { info.startup = Stagemonitor.startMonitoring(); } beforeExecution(monitoredRequest, info); } } finally { info.overhead1 = System.nanoTime() - start; } }