diff --git a/.chloggen/make-job-label-customizable.yaml b/.chloggen/make-job-label-customizable.yaml
new file mode 100755
index 0000000000..8df5e77ce8
--- /dev/null
+++ b/.chloggen/make-job-label-customizable.yaml
@@ -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: collector
+
+# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
+note: Adds the joblabel field to the observability spec to customize the ServiceMonitor's job label
+
+# One or more tracking issues related to the change
+issues: [2775]
+
+# (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:
diff --git a/apis/v1alpha1/convert.go b/apis/v1alpha1/convert.go
index a831659666..26f35db305 100644
--- a/apis/v1alpha1/convert.go
+++ b/apis/v1alpha1/convert.go
@@ -131,6 +131,7 @@ func tov1beta1(in OpenTelemetryCollector) (v1beta1.OpenTelemetryCollector, error
Observability: v1beta1.ObservabilitySpec{
Metrics: v1beta1.MetricsConfigSpec{
EnableMetrics: copy.Spec.Observability.Metrics.EnableMetrics,
+ JobLabel: copy.Spec.Observability.Metrics.JobLabel,
DisablePrometheusAnnotations: copy.Spec.Observability.Metrics.DisablePrometheusAnnotations,
},
},
@@ -174,6 +175,7 @@ func tov1beta1TA(in OpenTelemetryTargetAllocator) v1beta1.TargetAllocatorEmbedde
Observability: v1beta1.ObservabilitySpec{
Metrics: v1beta1.MetricsConfigSpec{
EnableMetrics: in.Observability.Metrics.EnableMetrics,
+ JobLabel: in.Observability.Metrics.JobLabel,
DisablePrometheusAnnotations: in.Observability.Metrics.DisablePrometheusAnnotations,
},
},
@@ -316,6 +318,7 @@ func tov1alpha1(in v1beta1.OpenTelemetryCollector) (*OpenTelemetryCollector, err
Observability: ObservabilitySpec{
Metrics: MetricsConfigSpec{
EnableMetrics: copy.Spec.Observability.Metrics.EnableMetrics,
+ JobLabel: copy.Spec.Observability.Metrics.JobLabel,
DisablePrometheusAnnotations: copy.Spec.Observability.Metrics.DisablePrometheusAnnotations,
},
},
@@ -419,6 +422,7 @@ func tov1alpha1TA(in v1beta1.TargetAllocatorEmbedded) OpenTelemetryTargetAllocat
Observability: ObservabilitySpec{
Metrics: MetricsConfigSpec{
EnableMetrics: in.Observability.Metrics.EnableMetrics,
+ JobLabel: in.Observability.Metrics.JobLabel,
DisablePrometheusAnnotations: in.Observability.Metrics.DisablePrometheusAnnotations,
},
},
diff --git a/apis/v1alpha1/opentelemetrycollector_types.go b/apis/v1alpha1/opentelemetrycollector_types.go
index 2bd341e7a7..c751dbc5e6 100644
--- a/apis/v1alpha1/opentelemetrycollector_types.go
+++ b/apis/v1alpha1/opentelemetrycollector_types.go
@@ -522,6 +522,14 @@ type MetricsConfigSpec struct {
// +kubebuilder:validation:Optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Create ServiceMonitors for OpenTelemetry Collector"
EnableMetrics bool `json:"enableMetrics,omitempty"`
+ // JobLabel specifies the label to use for the job in the ServiceMonitor or PodMonitor(for sidecar mode).
+ // The operator.observability.prometheus feature gate must be enabled to use this feature.
+ // EnableMetrics must be true to set this.
+ //
+ // +optional
+ // +kubebuilder:validation:Optional
+ // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Job Label for generated ServiceMonitors"
+ JobLabel string `json:"jobLabel,omitempty"`
// DisablePrometheusAnnotations controls the automatic addition of default Prometheus annotations
// ('prometheus.io/scrape', 'prometheus.io/port', and 'prometheus.io/path')
//
diff --git a/apis/v1beta1/opentelemetrycollector_types.go b/apis/v1beta1/opentelemetrycollector_types.go
index 9b77567f7b..3cf64f5be0 100644
--- a/apis/v1beta1/opentelemetrycollector_types.go
+++ b/apis/v1beta1/opentelemetrycollector_types.go
@@ -261,6 +261,14 @@ type MetricsConfigSpec struct {
// +kubebuilder:validation:Optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Create ServiceMonitors for OpenTelemetry Collector"
EnableMetrics bool `json:"enableMetrics,omitempty"`
+ // JobLabel specifies the label to use for the job in the ServiceMonitor or PodMonitor(for sidecar mode).
+ // The operator.observability.prometheus feature gate must be enabled to use this feature.
+ // EnableMetrics must be true to set this.
+ //
+ // +optional
+ // +kubebuilder:validation:Optional
+ // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Job Label for generated ServiceMonitors"
+ JobLabel string `json:"jobLabel,omitempty"`
// DisablePrometheusAnnotations controls the automatic addition of default Prometheus annotations
// ('prometheus.io/scrape', 'prometheus.io/port', and 'prometheus.io/path')
//
diff --git a/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml b/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml
index eaa0bc7aa2..9b76f77dd0 100644
--- a/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml
+++ b/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml
@@ -99,7 +99,7 @@ metadata:
categories: Logging & Tracing,Monitoring
certified: "false"
containerImage: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator
- createdAt: "2024-03-11T13:32:19Z"
+ createdAt: "2024-03-21T17:09:59Z"
description: Provides the OpenTelemetry components, including the Collector
operators.operatorframework.io/builder: operator-sdk-v1.29.0
operators.operatorframework.io/project_layout: go.kubebuilder.io/v3
@@ -175,6 +175,12 @@ spec:
this feature.
displayName: Create ServiceMonitors for OpenTelemetry Collector
path: observability.metrics.enableMetrics
+ - description: JobLabel specifies the label to use for the job in the ServiceMonitor
+ or PodMonitor(for sidecar mode). The operator.observability.prometheus feature
+ gate must be enabled to use this feature. EnableMetrics must be true to
+ set this.
+ displayName: Job Label for generated ServiceMonitors
+ path: observability.metrics.jobLabel
- description: ObservabilitySpec defines how telemetry data gets handled.
displayName: Observability
path: targetAllocator.observability
@@ -187,6 +193,12 @@ spec:
this feature.
displayName: Create ServiceMonitors for OpenTelemetry Collector
path: targetAllocator.observability.metrics.enableMetrics
+ - description: JobLabel specifies the label to use for the job in the ServiceMonitor
+ or PodMonitor(for sidecar mode). The operator.observability.prometheus feature
+ gate must be enabled to use this feature. EnableMetrics must be true to
+ set this.
+ displayName: Job Label for generated ServiceMonitors
+ path: targetAllocator.observability.metrics.jobLabel
version: v1alpha1
- description: OpenTelemetryCollector is the Schema for the opentelemetrycollectors
API.
diff --git a/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml b/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml
index e15c1d80bf..8a0cc89bf5 100644
--- a/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml
+++ b/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml
@@ -2226,6 +2226,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podAnnotations:
@@ -2933,6 +2935,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podDisruptionBudget:
@@ -6518,6 +6522,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podAnnotations:
@@ -7227,6 +7233,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podDisruptionBudget:
diff --git a/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml b/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml
index a61454cd86..f2c9395f7f 100644
--- a/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml
+++ b/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml
@@ -2212,6 +2212,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podAnnotations:
@@ -2919,6 +2921,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podDisruptionBudget:
@@ -6504,6 +6508,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podAnnotations:
@@ -7213,6 +7219,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podDisruptionBudget:
diff --git a/config/crd/bases/opentelemetry.io_targetallocators.yaml b/config/crd/bases/opentelemetry.io_targetallocators.yaml
index 0091a808fb..3c522fe7f3 100644
--- a/config/crd/bases/opentelemetry.io_targetallocators.yaml
+++ b/config/crd/bases/opentelemetry.io_targetallocators.yaml
@@ -2111,6 +2111,8 @@ spec:
type: boolean
enableMetrics:
type: boolean
+ jobLabel:
+ type: string
type: object
type: object
podAnnotations:
diff --git a/config/manifests/bases/opentelemetry-operator.clusterserviceversion.yaml b/config/manifests/bases/opentelemetry-operator.clusterserviceversion.yaml
index ed0690c3e8..4eef05692d 100644
--- a/config/manifests/bases/opentelemetry-operator.clusterserviceversion.yaml
+++ b/config/manifests/bases/opentelemetry-operator.clusterserviceversion.yaml
@@ -137,6 +137,12 @@ spec:
this feature.
displayName: Create ServiceMonitors for OpenTelemetry Collector
path: observability.metrics.enableMetrics
+ - description: JobLabel specifies the label to use for the job in the ServiceMonitor
+ or PodMonitor(for sidecar mode). The operator.observability.prometheus feature
+ gate must be enabled to use this feature. EnableMetrics must be true to
+ set this.
+ displayName: Job Label for generated ServiceMonitors
+ path: observability.metrics.jobLabel
- description: ObservabilitySpec defines how telemetry data gets handled.
displayName: Observability
path: targetAllocator.observability
@@ -149,6 +155,12 @@ spec:
this feature.
displayName: Create ServiceMonitors for OpenTelemetry Collector
path: targetAllocator.observability.metrics.enableMetrics
+ - description: JobLabel specifies the label to use for the job in the ServiceMonitor
+ or PodMonitor(for sidecar mode). The operator.observability.prometheus feature
+ gate must be enabled to use this feature. EnableMetrics must be true to
+ set this.
+ displayName: Job Label for generated ServiceMonitors
+ path: targetAllocator.observability.metrics.jobLabel
version: v1alpha1
description: |-
OpenTelemetry is a collection of tools, APIs, and SDKs. You use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior.
diff --git a/docs/api.md b/docs/api.md
index 0fdbb73b92..948eff48ef 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -17809,6 +17809,13 @@ Resource Types: