Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import io.opentelemetry.javaagent.extension.AgentListener;
import java.util.List;
import java.util.stream.Collectors;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.filter.FilterRegistry;
import org.hypertrace.agent.otel.extensions.config.HypertraceConfig;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.otel.extensions.config.HypertraceConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@
import com.google.protobuf.BoolValue;
import com.google.protobuf.Int32Value;
import com.google.protobuf.StringValue;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.Config.DataCapture;
import org.hypertrace.agent.config.Config.JavaAgent;
import org.hypertrace.agent.config.Config.Message;
import org.hypertrace.agent.config.Config.Opa;
import org.hypertrace.agent.config.Config.Opa.Builder;
import org.hypertrace.agent.config.Config.PropagationFormat;
import org.hypertrace.agent.config.Config.Reporting;
import org.hypertrace.agent.config.Config.TraceReporterType;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.DataCapture;
import org.hypertrace.agent.config.v1.Config.JavaAgent;
import org.hypertrace.agent.config.v1.Config.Message;
import org.hypertrace.agent.config.v1.Config.Opa;
import org.hypertrace.agent.config.v1.Config.Opa.Builder;
import org.hypertrace.agent.config.v1.Config.PropagationFormat;
import org.hypertrace.agent.config.v1.Config.Reporting;
import org.hypertrace.agent.config.v1.Config.TraceReporterType;

public class EnvironmentConfig {

Expand All @@ -46,6 +46,7 @@ private EnvironmentConfig() {}
static final String REPORTING_ENDPOINT = REPORTING_PREFIX + "endpoint";
static final String REPORTING_TRACE_TYPE = REPORTING_PREFIX + "trace.reporter.type";
static final String REPORTING_SECURE = REPORTING_PREFIX + "secure";
static final String REPORTING_CERT_FILE = REPORTING_PREFIX + "cert.file";

private static final String OPA_PREFIX = REPORTING_PREFIX + "opa.";
static final String OPA_ENDPOINT = OPA_PREFIX + "endpoint";
Expand Down Expand Up @@ -133,6 +134,10 @@ private static Reporting.Builder applyReporting(Reporting.Builder builder) {
if (secure != null) {
builder.setSecure(BoolValue.newBuilder().setValue(Boolean.valueOf(secure)).build());
}
String certFilePath = getProperty(REPORTING_CERT_FILE);
if (certFilePath != null) {
builder.setCertFile(StringValue.of(certFilePath));
}
Builder opaBuilder = applyOpa(builder.getOpa().toBuilder());
builder.setOpa(opaBuilder);
return builder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,17 @@
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.Config.PropagationFormat;
import org.hypertrace.agent.config.Config.TraceReporterType;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.PropagationFormat;
import org.hypertrace.agent.config.v1.Config.TraceReporterType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@AutoService(ConfigPropertySource.class)
public class HypertraceAgentConfiguration implements ConfigPropertySource {

private static final Logger log = LoggerFactory.getLogger(HypertraceAgentConfiguration.class);

// https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/sdk-environment-variables.md
private static final String OTEL_TRACE_EXPORTER = "otel.traces.exporter";
private static final String OTEL_METRICS_EXPORTER = "otel.metrics.exporter";
Expand All @@ -43,6 +47,7 @@ public class HypertraceAgentConfiguration implements ConfigPropertySource {
private static final String OTEL_EXPORTER_OTLP_ENDPOINT = "otel.exporter.otlp.endpoint";

private static final String OTEL_ENABLED = "otel.javaagent.enabled";
private static final String OTEL_OTLP_CERT = "otel.exporter.otlp.certificate";

@Override
public Map<String, String> getProperties() {
Expand All @@ -66,6 +71,14 @@ public Map<String, String> getProperties() {
OTEL_PROPAGATORS, toOtelPropagators(agentConfig.getPropagationFormatsList()));
// metrics are not reported
configProperties.put(OTEL_METRICS_EXPORTER, "none");
if (agentConfig.getReporting().hasCertFile()) {
if (agentConfig.getReporting().getTraceReporterType() == TraceReporterType.OTLP) {
configProperties.put(OTEL_OTLP_CERT, agentConfig.getReporting().getCertFile().getValue());
} else {
log.warn(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not easy to support for zipkin as well?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sadly not, their implementation is of this is solely implemented on their OTLP-based exporters. If we need a workaround, there are java command-line options we could put together for a user to configure their JVM to trust a specific certificate.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok.

"A certificate file was configured, but a trace exporter other than OTLP was configured. If you would like to use a custom certificate file, you must use the OTLP exporter");
}
}

return configProperties;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.hypertrace.agent.config.Config;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.Config.DataCapture;
import org.hypertrace.agent.config.Config.Message;
import org.hypertrace.agent.config.Config.Opa;
import org.hypertrace.agent.config.Config.Opa.Builder;
import org.hypertrace.agent.config.Config.PropagationFormat;
import org.hypertrace.agent.config.Config.Reporting;
import org.hypertrace.agent.config.Config.TraceReporterType;
import org.hypertrace.agent.config.v1.Config;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.DataCapture;
import org.hypertrace.agent.config.v1.Config.Message;
import org.hypertrace.agent.config.v1.Config.Opa;
import org.hypertrace.agent.config.v1.Config.Opa.Builder;
import org.hypertrace.agent.config.v1.Config.PropagationFormat;
import org.hypertrace.agent.config.v1.Config.Reporting;
import org.hypertrace.agent.config.v1.Config.TraceReporterType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
package org.hypertrace.agent.otel.extensions.config;

import com.google.auto.service.AutoService;
import org.hypertrace.agent.config.Config;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.Config.DataCapture;
import org.hypertrace.agent.config.Config.Message;
import org.hypertrace.agent.config.v1.Config;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.DataCapture;
import org.hypertrace.agent.config.v1.Config.Message;
import org.hypertrace.agent.core.config.InstrumentationConfig;

@AutoService(InstrumentationConfig.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package org.hypertrace.agent.otel.extensions.config;

import com.google.auto.service.AutoService;
import org.hypertrace.agent.config.Config;
import org.hypertrace.agent.config.v1.Config;
import org.hypertrace.agent.core.config.ReportingConfig;

@AutoService(ReportingConfig.class)
Expand Down
2 changes: 1 addition & 1 deletion otel-extensions/src/main/proto
Submodule proto updated 37 files
+6 −3 .github/workflows/pr.yml
+0 −3 .gitignore
+3 −0 .gitmodules
+0 −20 .protolint.yaml
+2 −1 ENV_VARS.md
+30 −4 Makefile
+7 −0 buf.gen.yaml
+16 −0 buf.yaml
+11 −0 gen/go/go.mod
+26 −0 gen/go/go.sum
+894 −0 gen/go/v1/config.pb.go
+249 −0 gen/go/v1/config.pbloader.go
+15 −0 gen/go/v1/envloader.go
+157 −0 gen/go/v1/loader.go
+69 −0 gen/go/v1/loader_test.go
+40 −0 gen/go/v1/options.go
+1 −0 gen/go/v1/testdata/config.yaml
+20 −0 gen/go/v1/values.go
+3 −0 go.mod
+0 −0 go.sum
+11 −3 proto/hypertrace/agent/config/v1/config.proto
+3 −3 tools/env-vars-generator/README.md
+30 −18 tools/env-vars-generator/main.go
+9 −0 tools/go-generator/Makefile
+1 −0 tools/go-generator/cmd/generator/_protobuf
+15 −0 tools/go-generator/cmd/generator/_templates/envloader.go.tmpl
+157 −0 tools/go-generator/cmd/generator/_templates/loader.go.tmpl
+69 −0 tools/go-generator/cmd/generator/_templates/loader_test.go.tmpl
+40 −0 tools/go-generator/cmd/generator/_templates/options.go.tmpl
+1 −0 tools/go-generator/cmd/generator/_templates/testdata/config.yaml
+20 −0 tools/go-generator/cmd/generator/_templates/values.go.tmpl
+9 −0 tools/go-generator/cmd/generator/go.mod
+15 −0 tools/go-generator/cmd/generator/go.sum
+329 −0 tools/go-generator/cmd/generator/main.go
+73 −0 tools/go-generator/cmd/generator/main_test.go
+27 −0 tools/go-generator/cmd/generator/protobuf.go
+50 −0 tools/go-generator/cmd/generator/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import java.util.Arrays;
import java.util.List;
import org.hypertrace.agent.config.Config.PropagationFormat;
import org.hypertrace.agent.config.v1.Config.PropagationFormat;
import org.hypertrace.agent.otel.extensions.config.HypertraceAgentConfiguration;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

import com.google.protobuf.StringValue;
import java.util.Arrays;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.Config.PropagationFormat;
import org.hypertrace.agent.config.Config.TraceReporterType;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.PropagationFormat;
import org.hypertrace.agent.config.v1.Config.TraceReporterType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junitpioneer.jupiter.ClearSystemProperty;
Expand All @@ -31,6 +31,7 @@ class EnvironmentConfigTest {
@ClearSystemProperty(key = EnvironmentConfig.REPORTING_ENDPOINT)
@ClearSystemProperty(key = EnvironmentConfig.REPORTING_SECURE)
@ClearSystemProperty(key = EnvironmentConfig.REPORTING_TRACE_TYPE)
@ClearSystemProperty(key = EnvironmentConfig.REPORTING_CERT_FILE)
@ClearSystemProperty(key = EnvironmentConfig.OPA_ENDPOINT)
@ClearSystemProperty(key = EnvironmentConfig.OPA_POLL_PERIOD)
@ClearSystemProperty(key = EnvironmentConfig.OPA_ENABLED)
Expand All @@ -46,6 +47,7 @@ public void systemProperties() {
System.setProperty(EnvironmentConfig.REPORTING_ENDPOINT, "http://:-)");
System.setProperty(EnvironmentConfig.REPORTING_TRACE_TYPE, "OTLP");
System.setProperty(EnvironmentConfig.REPORTING_SECURE, "true");
System.setProperty(EnvironmentConfig.REPORTING_CERT_FILE, "/bar/test.pem");
System.setProperty(EnvironmentConfig.CAPTURE_HTTP_BODY_PREFIX + "request", "true");
System.setProperty(EnvironmentConfig.OPA_ENDPOINT, "http://azkaban:9090");
System.setProperty(EnvironmentConfig.OPA_POLL_PERIOD, "10");
Expand Down Expand Up @@ -78,6 +80,7 @@ public void systemProperties() {
10, agentConfig.getReporting().getOpa().getPollPeriodSeconds().getValue());
Assertions.assertEquals(512, agentConfig.getDataCapture().getBodyMaxSizeBytes().getValue());
Assertions.assertEquals(true, agentConfig.getReporting().getSecure().getValue());
Assertions.assertEquals("/bar/test.pem", agentConfig.getReporting().getCertFile().getValue());
Assertions.assertEquals(
true, agentConfig.getDataCapture().getHttpBody().getRequest().getValue());
Assertions.assertEquals(2, agentConfig.getJavaagent().getFilterJarPathsCount());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import org.hypertrace.agent.config.Config.AgentConfig;
import org.hypertrace.agent.config.Config.PropagationFormat;
import org.hypertrace.agent.config.Config.TraceReporterType;
import org.hypertrace.agent.config.v1.Config.AgentConfig;
import org.hypertrace.agent.config.v1.Config.PropagationFormat;
import org.hypertrace.agent.config.v1.Config.TraceReporterType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
Expand All @@ -41,6 +41,7 @@ public void defaultValues() throws IOException {
Assertions.assertEquals("unknown", agentConfig.getServiceName().getValue());
Assertions.assertEquals(
TraceReporterType.OTLP, agentConfig.getReporting().getTraceReporterType());
Assertions.assertFalse(agentConfig.getReporting().hasCertFile());
Assertions.assertEquals(
HypertraceConfig.DEFAULT_REPORTING_ENDPOINT,
agentConfig.getReporting().getEndpoint().getValue());
Expand Down Expand Up @@ -105,6 +106,8 @@ private void assertConfig(AgentConfig agentConfig) {
Arrays.asList(PropagationFormat.B3), agentConfig.getPropagationFormatsList());
Assertions.assertEquals(
TraceReporterType.OTLP, agentConfig.getReporting().getTraceReporterType());
Assertions.assertEquals(
"/foo/bar/example.pem", agentConfig.getReporting().getCertFile().getValue());
Assertions.assertEquals(
"http://localhost:4317", agentConfig.getReporting().getEndpoint().getValue());
Assertions.assertEquals(true, agentConfig.getReporting().getSecure().getValue());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import com.google.protobuf.BoolValue;
import java.util.Iterator;
import java.util.ServiceLoader;
import org.hypertrace.agent.config.Config.Opa;
import org.hypertrace.agent.config.Config.Reporting;
import org.hypertrace.agent.config.Config.Reporting.Builder;
import org.hypertrace.agent.config.v1.Config.Opa;
import org.hypertrace.agent.config.v1.Config.Reporting;
import org.hypertrace.agent.config.v1.Config.Reporting.Builder;
import org.hypertrace.agent.core.config.ReportingConfig;
import org.junit.jupiter.api.Test;

Expand Down
1 change: 1 addition & 0 deletions otel-extensions/src/test/resources/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ reporting:
endpoint: http://localhost:4317
secure: true
trace_reporter_type: OTLP
cert_file: /foo/bar/example.pem
opa:
endpoint: http://opa.localhost:8181/
pollPeriodSeconds: 12
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ abstract class SmokeTest extends Specification {
.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger("smoke.tests.backend")))
backend.start()

collector = new GenericContainer<>("otel/opentelemetry-collector-contrib-dev:latest")
collector = new GenericContainer<>("otel/opentelemetry-collector:0.21.0")
.dependsOn(backend)
.withNetwork(network)
.withNetworkAliases("collector")
Expand Down