private static void addCheck(Check check, MeasurementSession measurementSession) { check.setApplication(measurementSession.getApplicationName()); try { configuration.getConfig(AlertingPlugin.class).addCheck(check); } catch (IOException e) { logger.warn(e.getMessage(), e); } }
private String getGraphitePrefix(MeasurementSession measurementSession) { return name("stagemonitor", sanitizeGraphiteMetricSegment(measurementSession.getApplicationName()), sanitizeGraphiteMetricSegment(measurementSession.getInstanceName()), sanitizeGraphiteMetricSegment(measurementSession.getHostName())); }
@Override public void reportMetrics(Map<MetricName, Gauge> gauges, Map<MetricName, Counter> counters, Map<MetricName, Histogram> histograms, Map<MetricName, Meter> meters, Map<MetricName, Timer> timers) { Map<String, Map<MetricName, Metric>> metricsGroupedByName = new HashMap<String, Map<MetricName, Metric>>(); addMetrics(metricsGroupedByName, gauges); addMetrics(metricsGroupedByName, counters); addMetrics(metricsGroupedByName, histograms); addMetrics(metricsGroupedByName, meters); addMetrics(metricsGroupedByName, timers); for (Check check : alertingPlugin.getChecks().values()) { if (measurementSession.getApplicationName().equals(check.getApplication()) && check.isActive()) { checkMetrics(metricsGroupedByName, check); } } }
@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(); }
@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 onStart(SpanWrapper spanWrapper) { if (corePlugin.isStagemonitorActive()) { final MeasurementSession measurementSession = corePlugin.getMeasurementSession(); if (measurementSession != null) { addToMdcIfNotNull("application", measurementSession.getApplicationName()); addToMdcIfNotNull("host", measurementSession.getHostName()); addToMdcIfNotNull("instance", measurementSession.getInstanceName()); } // don't store the context in MDC if stagemonitor is not active // so that thread pools that get created on startup don't inherit the ids if (Stagemonitor.isStarted()) { tracingPlugin.getTracer().inject(spanWrapper.context(), B3HeaderFormat.INSTANCE, new B3HeaderFormat.B3InjectAdapter() { @Override public void setParentId(String value) { } @Override public void setSpanId(String value) { addToMdcIfNotNull("spanId", value); } @Override public void setTraceId(String value) { addToMdcIfNotNull("traceId", value); } }); } } }
@Test public void testToJson() throws Exception { MeasurementSession measurementSession = new MeasurementSession("app", "host", "instance"); final MeasurementSession jsonSession = JsonUtils.getMapper().readValue(JsonUtils.toJson(measurementSession), MeasurementSession.class); assertEquals(measurementSession.getApplicationName(), jsonSession.getApplicationName()); assertEquals(measurementSession.getHostName(), jsonSession.getHostName()); assertEquals(measurementSession.getInstanceName(), jsonSession.getInstanceName()); assertEquals(measurementSession.getInstanceName(), jsonSession.getInstanceName()); assertEquals(measurementSession.getId(), jsonSession.getId()); assertEquals(measurementSession.getStart(), jsonSession.getStart()); } }
public RequestTrace(String requestId, MeasurementSession measurementSession, RequestMonitorPlugin requestMonitorPlugin) { this.requestMonitorPlugin = requestMonitorPlugin; this.id = requestId != null ? requestId : UUID.randomUUID().toString(); this.measurementStart = measurementSession.getStartTimestamp(); this.application = measurementSession.getApplicationName(); this.host = measurementSession.getHostName(); this.instance = measurementSession.getInstanceName(); this.timestamp = StringUtils.dateAsIsoString(new Date()); }
@Override public void requestInitialized(ServletRequestEvent sre) { if (corePlugin.isStagemonitorActive()) { final MeasurementSession measurementSession = corePlugin.getMeasurementSession(); if (measurementSession.getApplicationName() != null) { MDC.put("application", measurementSession.getApplicationName()); } if (measurementSession.getHostName() != null) { MDC.put("host", measurementSession.getHostName()); } String instanceName = measurementSession.getInstanceName(); if (instanceName == null) { instanceName = sre.getServletRequest().getServerName(); } MDC.put("instance", instanceName); final String requestId = UUID.randomUUID().toString(); sre.getServletRequest().setAttribute(STAGEMONITOR_REQUEST_ID_ATTR, requestId); if (Stagemonitor.isStarted()) { // don't store the requestId in MDC if stagemonitor is not active // so that thread pools that get created on startup don't inherit the requestId MDC.put("requestId", requestId); } } }
private synchronized void getInstanceNameFromExecution(MonitoredRequest<?> monitoredRequest) { final MeasurementSession measurementSession = Stagemonitor.getMeasurementSession(); if (measurementSession.getInstanceName() == null) { MeasurementSession session = new MeasurementSession(measurementSession.getApplicationName(), measurementSession.getHostName(), monitoredRequest.getInstanceName()); Stagemonitor.setMeasurementSession(session); } }
@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(); }