Skip to content

Commit

Permalink
Set OTEL_LOGS_EXPORTER for python (#3330)
Browse files Browse the repository at this point in the history
* Set OTEL_LOGS_EXPORTER for python

* Add changelog

* Update e2e tests

* Fix some e2e

* Fix instrumentation python test

* Another e2e fix

* Apply suggestions from code review

* Update .chloggen/3330-python-otel-logs-exporter.yaml

Co-authored-by: Jacob Aronoff <jaronoff97@users.noreply.github.com>

---------

Co-authored-by: Jacob Aronoff <jaronoff97@users.noreply.github.com>
  • Loading branch information
xrmx and jaronoff97 authored Oct 17, 2024
1 parent a748078 commit c4c5cc8
Show file tree
Hide file tree
Showing 10 changed files with 172 additions and 2 deletions.
16 changes: 16 additions & 0 deletions .chloggen/3330-python-otel-logs-exporter.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: enhancement

# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action)
component: auto-instrumentation

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: set OTEL_LOGS_EXPORTER env var to otlp in python instrumentation

# One or more tracking issues related to the change
issues: [3330]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext:
32 changes: 32 additions & 0 deletions pkg/instrumentation/podmutator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1258,6 +1258,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_EXPORTER_OTLP_ENDPOINT",
Value: "http://localhost:4318",
Expand Down Expand Up @@ -1361,6 +1365,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_EXPORTER_OTLP_ENDPOINT",
Value: "http://localhost:4318",
Expand Down Expand Up @@ -1454,6 +1462,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_EXPORTER_OTLP_ENDPOINT",
Value: "http://localhost:4318",
Expand Down Expand Up @@ -1562,6 +1574,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_EXPORTER_OTLP_ENDPOINT",
Value: "http://localhost:4318",
Expand Down Expand Up @@ -1653,6 +1669,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_EXPORTER_OTLP_ENDPOINT",
Value: "http://localhost:4318",
Expand Down Expand Up @@ -1746,6 +1766,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_EXPORTER_OTLP_ENDPOINT",
Value: "http://localhost:4318",
Expand Down Expand Up @@ -4125,6 +4149,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_SERVICE_NAME",
Value: "python1",
Expand Down Expand Up @@ -4200,6 +4228,10 @@ func TestMutatePod(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_SERVICE_NAME",
Value: "python2",
Expand Down
14 changes: 12 additions & 2 deletions pkg/instrumentation/python.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const (
envPythonPath = "PYTHONPATH"
envOtelTracesExporter = "OTEL_TRACES_EXPORTER"
envOtelMetricsExporter = "OTEL_METRICS_EXPORTER"
envOtelLogsExporter = "OTEL_LOGS_EXPORTER"
envOtelExporterOTLPProtocol = "OTEL_EXPORTER_OTLP_PROTOCOL"
pythonPathPrefix = "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation"
pythonPathSuffix = "/otel-auto-instrumentation-python"
Expand Down Expand Up @@ -70,7 +71,7 @@ func injectPythonSDK(pythonSpec v1alpha1.Python, pod corev1.Pod, index int) (cor
})
}

// Set OTEL_TRACES_EXPORTER to HTTP exporter if not set by user because it is what our autoinstrumentation supports.
// Set OTEL_TRACES_EXPORTER to otlp exporter if not set by user because it is what our autoinstrumentation supports.
idx = getIndexOfEnv(container.Env, envOtelTracesExporter)
if idx == -1 {
container.Env = append(container.Env, corev1.EnvVar{
Expand All @@ -79,7 +80,7 @@ func injectPythonSDK(pythonSpec v1alpha1.Python, pod corev1.Pod, index int) (cor
})
}

// Set OTEL_METRICS_EXPORTER to HTTP exporter if not set by user because it is what our autoinstrumentation supports.
// Set OTEL_METRICS_EXPORTER to otlp exporter if not set by user because it is what our autoinstrumentation supports.
idx = getIndexOfEnv(container.Env, envOtelMetricsExporter)
if idx == -1 {
container.Env = append(container.Env, corev1.EnvVar{
Expand All @@ -88,6 +89,15 @@ func injectPythonSDK(pythonSpec v1alpha1.Python, pod corev1.Pod, index int) (cor
})
}

// Set OTEL_LOGS_EXPORTER to otlp exporter if not set by user because it is what our autoinstrumentation supports.
idx = getIndexOfEnv(container.Env, envOtelLogsExporter)
if idx == -1 {
container.Env = append(container.Env, corev1.EnvVar{
Name: envOtelLogsExporter,
Value: "otlp",
})
}

container.VolumeMounts = append(container.VolumeMounts, corev1.VolumeMount{
Name: pythonVolumeName,
MountPath: pythonInstrMountPath,
Expand Down
96 changes: 96 additions & 0 deletions pkg/instrumentation/python_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ func TestInjectPythonSDK(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
},
},
},
Expand Down Expand Up @@ -163,6 +167,10 @@ func TestInjectPythonSDK(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
},
},
},
Expand Down Expand Up @@ -235,6 +243,10 @@ func TestInjectPythonSDK(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
},
},
},
Expand Down Expand Up @@ -307,6 +319,86 @@ func TestInjectPythonSDK(t *testing.T) {
Name: "OTEL_TRACES_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
},
},
},
},
},
err: nil,
},
{
name: "OTEL_LOGS_EXPORTER defined",
Python: v1alpha1.Python{Image: "foo/bar:1"},
pod: corev1.Pod{
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Env: []corev1.EnvVar{
{
Name: "OTEL_LOGS_EXPORTER",
Value: "somebackend",
},
},
},
},
},
},
expected: corev1.Pod{
Spec: corev1.PodSpec{
Volumes: []corev1.Volume{
{
Name: "opentelemetry-auto-instrumentation-python",
VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{
SizeLimit: &defaultVolumeLimitSize,
},
},
},
},
InitContainers: []corev1.Container{
{
Name: "opentelemetry-auto-instrumentation-python",
Image: "foo/bar:1",
Command: []string{"cp", "-r", "/autoinstrumentation/.", "/otel-auto-instrumentation-python"},
VolumeMounts: []corev1.VolumeMount{{
Name: "opentelemetry-auto-instrumentation-python",
MountPath: "/otel-auto-instrumentation-python",
}},
},
},
Containers: []corev1.Container{
{
VolumeMounts: []corev1.VolumeMount{
{
Name: "opentelemetry-auto-instrumentation-python",
MountPath: "/otel-auto-instrumentation-python",
},
},
Env: []corev1.EnvVar{
{
Name: "OTEL_LOGS_EXPORTER",
Value: "somebackend",
},
{
Name: "PYTHONPATH",
Value: fmt.Sprintf("%s:%s", "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation", "/otel-auto-instrumentation-python"),
},
{
Name: "OTEL_EXPORTER_OTLP_PROTOCOL",
Value: "http/protobuf",
},
{
Name: "OTEL_TRACES_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
},
},
},
Expand Down Expand Up @@ -379,6 +471,10 @@ func TestInjectPythonSDK(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
},
},
},
Expand Down
4 changes: 4 additions & 0 deletions pkg/instrumentation/sdk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1261,6 +1261,10 @@ func TestInjectPython(t *testing.T) {
Name: "OTEL_METRICS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_LOGS_EXPORTER",
Value: "otlp",
},
{
Name: "OTEL_SERVICE_NAME",
Value: "app",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ spec:
value: otlp
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://localhost:4317
- name: OTEL_EXPORTER_OTLP_TIMEOUT
Expand Down Expand Up @@ -74,6 +76,8 @@ spec:
value: otlp
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://localhost:4317
- name: OTEL_EXPORTER_OTLP_TIMEOUT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ spec:
value: otlp
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://localhost:4317
- name: OTEL_EXPORTER_OTLP_TIMEOUT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ spec:
value: http/protobuf
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_TIMEOUT
value: "20"
- name: OTEL_TRACES_SAMPLER
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ spec:
value: otlp
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_TIMEOUT
value: "20"
- name: OTEL_TRACES_SAMPLER
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@ spec:
value: otlp
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_TRACES_SAMPLER
value: parentbased_traceidratio
- name: OTEL_TRACES_SAMPLER_ARG
Expand Down

0 comments on commit c4c5cc8

Please sign in to comment.