Java Code Examples for io.opencensus.trace.config.TraceConfig#getActiveTraceParams()
The following examples show how to use
io.opencensus.trace.config.TraceConfig#getActiveTraceParams() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: MetaStoreServer.java From metastore with Apache License 2.0 | 5 votes |
/** Main method. This comment makes the linter happy. */ public static void main(String[] args) throws Exception { LOG.info("MetaStore server"); printVersion(); ArgumentParser parser = ArgumentParsers.newFor("metastore").build(); parser.addArgument("-c", "--config").required(false); Namespace res = parser.parseArgs(args); String configPath = res.getString("config"); if (configPath == null) { LOG.info("No configuration file set via argument, setting from environment."); configPath = System.getenv("METASTORE_CONFIG_PATH"); LOG.info("Taking configuration file: " + configPath); } else { LOG.info("Taking configuration file: " + configPath); } // 2. Configure 100% sample rate, otherwise, few traces will be sampled. TraceConfig traceConfig = Tracing.getTraceConfig(); TraceParams activeTraceParams = traceConfig.getActiveTraceParams(); traceConfig.updateActiveTraceParams( activeTraceParams.toBuilder().setSampler(Samplers.alwaysSample()).build()); String port = System.getenv("PORT"); if (port == null) { port = "8980"; } MetaStoreServer server = new MetaStoreServer(configPath, Integer.valueOf(port)); server.start(); server.blockUntilShutdown(); }
Example 2
Source File: BasicSetup.java From opencensus-java with Apache License 2.0 | 5 votes |
/** * Enables OpenCensus metric and traces. * * <p>This will register all basic {@link io.opencensus.stats.View}s. When coupled with an agent, * it allows users to monitor application behavior. * * <p>Example usage for maven: * * <pre>{@code * <dependency> * <groupId>io.opencensus</groupId> * <artifactId>opencensus-contrib-observability-ready-util</artifactId> * <version>${opencensus.version}</version> * </dependency> * }</pre> * * <p>It is recommended to call this method before doing any RPC call to avoid missing stats. * * <pre>{@code * BasicSetup.enableOpenCensus(); * }</pre> * * @param endPoint the end point of OC-Agent. * @param probability the desired probability of sampling. Must be within [0.0, 1.0]. * @since 0.25 */ public static void enableOpenCensus(String endPoint, double probability) { // register basic rpc views RpcViews.registerAllGrpcBasicViews(); // set sampling rate TraceConfig traceConfig = Tracing.getTraceConfig(); TraceParams activeTraceParams = traceConfig.getActiveTraceParams(); traceConfig.updateActiveTraceParams( activeTraceParams.toBuilder().setSampler(Samplers.probabilitySampler(probability)).build()); String serviceName = firstNonNull(System.getenv("SERVICE_NAME"), DEAFULT_SERVICE_NAME); // create and register Trace Agent Exporter OcAgentTraceExporter.createAndRegister( OcAgentTraceExporterConfiguration.builder() .setEndPoint(endPoint) .setServiceName(serviceName) .setUseInsecure(true) .setEnableConfig(false) .build()); // create and register Metrics Agent Exporter OcAgentMetricsExporter.createAndRegister( OcAgentMetricsExporterConfiguration.builder() .setEndPoint(endPoint) .setServiceName(serviceName) .setUseInsecure(true) .build()); }
Example 3
Source File: OcAgentExportersQuickStart.java From opencensus-java with Apache License 2.0 | 4 votes |
private static void configureAlwaysSample() { TraceConfig traceConfig = Tracing.getTraceConfig(); TraceParams activeTraceParams = traceConfig.getActiveTraceParams(); traceConfig.updateActiveTraceParams( activeTraceParams.toBuilder().setSampler(Samplers.alwaysSample()).build()); }
Example 4
Source File: OcAgentTraceExporterIntegrationTest.java From opencensus-java with Apache License 2.0 | 4 votes |
@Test public void testExportSpans() throws InterruptedException, IOException { // Mock a real-life scenario in production, where Agent is not enabled at first, then enabled // after an outage. Users should be able to see traces shortly after Agent is up. // Configure to be always-sampled. TraceConfig traceConfig = Tracing.getTraceConfig(); TraceParams activeTraceParams = traceConfig.getActiveTraceParams(); traceConfig.updateActiveTraceParams( activeTraceParams.toBuilder().setSampler(Samplers.alwaysSample()).build()); // Register the OcAgent Exporter first. // Agent is not yet up and running so Exporter will just retry connection. OcAgentTraceExporter.createAndRegister( OcAgentTraceExporterConfiguration.builder() .setServiceName(SERVICE_NAME) .setUseInsecure(true) .setEnableConfig(false) .build()); // Create one root span and 5 children. try (Scope scope = tracer.spanBuilder("root").startScopedSpan()) { for (int i = 0; i < 5; i++) { // Fake work doWork("first-iteration-child-" + i, i); } } // Wait 5s so that SpanExporter exports exports all spans. Thread.sleep(5000); // No interaction with Agent so far. assertThat(fakeOcAgentTraceServiceGrpc.getExportTraceServiceRequests()).isEmpty(); // Image an outage happened, now start Agent. Exporter should be able to connect to Agent // when the next batch of SpanData arrives. agent.start(); // Create one root span and 8 children. try (Scope scope = tracer.spanBuilder("root2").startScopedSpan()) { for (int i = 0; i < 8; i++) { // Fake work doWork("second-iteration-child-" + i, i); } } // Wait 5s so that SpanExporter exports exports all spans. Thread.sleep(5000); List<ExportTraceServiceRequest> exportRequests = fakeOcAgentTraceServiceGrpc.getExportTraceServiceRequests(); assertThat(exportRequests.size()).isAtLeast(2); ExportTraceServiceRequest firstRequest = exportRequests.get(0); Node expectedNode = OcAgentNodeUtils.getNodeInfo(SERVICE_NAME); Node actualNode = firstRequest.getNode(); assertThat(actualNode.getIdentifier().getHostName()) .isEqualTo(expectedNode.getIdentifier().getHostName()); assertThat(actualNode.getIdentifier().getPid()) .isEqualTo(expectedNode.getIdentifier().getPid()); assertThat(actualNode.getLibraryInfo()).isEqualTo(expectedNode.getLibraryInfo()); assertThat(actualNode.getServiceInfo()).isEqualTo(expectedNode.getServiceInfo()); List<io.opencensus.proto.trace.v1.Span> spanProtos = new ArrayList<>(); for (int i = 1; i < exportRequests.size(); i++) { spanProtos.addAll(exportRequests.get(i).getSpansList()); } // On some platforms (e.g Windows) SpanData will never be dropped, so spans from the first batch // may also be exported after Agent is up. assertThat(spanProtos.size()).isAtLeast(9); Set<String> exportedSpanNames = new HashSet<>(); for (io.opencensus.proto.trace.v1.Span spanProto : spanProtos) { if ("root2".equals(spanProto.getName().getValue())) { assertThat(spanProto.getChildSpanCount().getValue()).isEqualTo(8); assertThat(spanProto.getParentSpanId()).isEqualTo(ByteString.EMPTY); } else if ("root".equals(spanProto.getName().getValue())) { // This won't happen on Linux but does happen on Windows. assertThat(spanProto.getChildSpanCount().getValue()).isEqualTo(5); assertThat(spanProto.getParentSpanId()).isEqualTo(ByteString.EMPTY); } exportedSpanNames.add(spanProto.getName().getValue()); } // The second batch of spans should be exported no matter what. assertThat(exportedSpanNames).contains("root2"); for (int i = 0; i < 8; i++) { assertThat(exportedSpanNames).contains("second-iteration-child-" + i); } }