Skip to content

Commit fe31619

Browse files
author
Mike Heffner
authored
Add service tag to metrics and traces (#261)
* Set service name tag on metrics * Add service tag to tracing config
1 parent 8b66021 commit fe31619

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

metriks/metriks.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"net/url"
66
"os"
7+
"strings"
78
"time"
89

910
"github.com/armon/go-metrics"
@@ -92,15 +93,30 @@ func createDatadogSink(url, hostname, serviceName string, tags map[string]string
9293
return nil, err
9394
}
9495

96+
// Don't override a setting from the user
97+
var serviceTagSet bool
9598
var ddTags []string
9699
for k, v := range tags {
100+
if strings.ToLower(k) == "service" {
101+
serviceTagSet = true
102+
}
103+
97104
ddTags = append(ddTags, fmt.Sprintf("%s:%s", k, v))
98105
}
99106

100107
for _, t := range extraTags {
108+
sp := strings.Split(t, ":")
109+
if len(sp) > 0 && strings.ToLower(sp[0]) == "service" {
110+
serviceTagSet = true
111+
}
112+
101113
ddTags = append(ddTags, t)
102114
}
103115

116+
if !serviceTagSet {
117+
ddTags = append(ddTags, fmt.Sprintf("service:%s", serviceName))
118+
}
119+
104120
sink.SetTags(ddTags)
105121
if err := initDistribution(url, serviceName, ddTags); err != nil {
106122
return nil, errors.Wrap(err, "failed to initialize the datadog statsd client")

metriks/metriks_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,15 @@ func TestDatadogSink(t *testing.T) {
3838

3939
Inc("test_counter", 1)
4040

41-
expectedMsg := "test.test_counter:1|c|#app:edge-state,env:test"
42-
buf := make([]byte, len(expectedMsg))
43-
_, _, err = l.ReadFrom(buf)
41+
expectedMsg := "test.test_counter:1|c|#app:edge-state,env:test,service:test"
42+
43+
var readBytes int
44+
buf := make([]byte, 512)
45+
readBytes, _, err = l.ReadFrom(buf)
4446
require.NoError(t, err)
45-
bytes.Contains(buf, []byte(expectedMsg))
47+
require.True(t, readBytes > 0)
48+
49+
require.True(t, bytes.Equal(buf[0:readBytes], []byte(expectedMsg)))
4650
}
4751

4852
func TestDiscardSink(t *testing.T) {

tracing/config.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package tracing
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/opentracing/opentracing-go"
78
"github.com/sirupsen/logrus"
@@ -40,10 +41,19 @@ func Configure(tc *Config, log logrus.FieldLogger, svcName string) {
4041
tracerOps = append(tracerOps, tracer.WithLogger(debugLogger{log.WithField("component", "opentracing")}))
4142
}
4243

44+
var serviceTagSet bool
4345
for k, v := range tc.Tags {
46+
if strings.ToLower(k) == "service" {
47+
serviceTagSet = true
48+
}
49+
4450
tracerOps = append(tracerOps, tracer.WithGlobalTag(k, v))
4551
}
4652

53+
if !serviceTagSet {
54+
tracerOps = append(tracerOps, tracer.WithGlobalTag("service", svcName))
55+
}
56+
4757
if tc.UseDatadog {
4858
tracer.Start(tracerOps...)
4959
} else {

0 commit comments

Comments
 (0)