Skip to content

Commit d193b03

Browse files
authored
Add version to the internal telemetry metrics (#4140)
Added a version tag to the collector's own telemetry metrics because today when looking at those metrics there is no way to know the collector's version, this can also help to know what collector versions are running out there. I based the "flag" to control this on [PR 3816](#3816)
1 parent e2d7f32 commit d193b03

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

service/telemetry.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"go.opentelemetry.io/collector/config/configtelemetry"
3737
"go.opentelemetry.io/collector/internal/collector/telemetry"
3838
"go.opentelemetry.io/collector/internal/obsreportconfig"
39+
"go.opentelemetry.io/collector/internal/version"
3940
semconv "go.opentelemetry.io/collector/model/semconv/v1.5.0"
4041
"go.opentelemetry.io/collector/processor/batchprocessor"
4142
telemetry2 "go.opentelemetry.io/collector/service/internal/telemetry"
@@ -44,6 +45,9 @@ import (
4445
// collectorTelemetry is collector's own telemetry.
4546
var collectorTelemetry collectorTelemetryExporter = &colTelemetry{}
4647

48+
// AddCollectorVersionTag indicates if the collector version tag should be added to all telemetry metrics
49+
const AddCollectorVersionTag = true
50+
4751
type collectorTelemetryExporter interface {
4852
init(asyncErrorChannel chan<- error, ballastSizeBytes uint64, logger *zap.Logger) error
4953
shutdown() error
@@ -79,6 +83,7 @@ func (tel *colTelemetry) initOnce(asyncErrorChannel chan<- error, ballastSizeByt
7983
}
8084

8185
var instanceID string
86+
8287
if telemetry.GetAddInstanceID() {
8388
instanceUUID, _ := uuid.NewRandom()
8489
instanceID = instanceUUID.String()
@@ -104,6 +109,7 @@ func (tel *colTelemetry) initOnce(asyncErrorChannel chan<- error, ballastSizeByt
104109
zap.String("address", metricsAddr),
105110
zap.Int8("level", int8(level)), // TODO: make it human friendly
106111
zap.String(semconv.AttributeServiceInstanceID, instanceID),
112+
zap.String(semconv.AttributeServiceVersion, version.Version),
107113
)
108114

109115
mux := http.NewServeMux()
@@ -148,10 +154,14 @@ func (tel *colTelemetry) initOpenCensus(level configtelemetry.Level, instanceID
148154
Namespace: telemetry.GetMetricsPrefix(),
149155
}
150156

157+
opts.ConstLabels = make(map[string]string)
158+
151159
if telemetry.GetAddInstanceID() {
152-
opts.ConstLabels = map[string]string{
153-
sanitizePrometheusKey(semconv.AttributeServiceInstanceID): instanceID,
154-
}
160+
opts.ConstLabels[sanitizePrometheusKey(semconv.AttributeServiceInstanceID)] = instanceID
161+
}
162+
163+
if AddCollectorVersionTag {
164+
opts.ConstLabels[sanitizePrometheusKey(semconv.AttributeServiceVersion)] = version.Version
155165
}
156166

157167
pe, err := prometheus.NewExporter(opts)

0 commit comments

Comments
 (0)