Skip to content

Commit ca6e6fc

Browse files
authored
Update how histogram&summary metrics are reported (#54)
As New Relic is improving its support for Prometheus native format, we could change the way how we report Summary and Histogram metric types and do it in less disruptive way, meaning that we send them as they come from Prometheus, without adding custom suffixes or calculating percentiles from the integration side. These are the details of the current implementation: - xxx_bucket is ingested as a Counter (converted to a delta rather than accumulative). Metrics containing dimension "le" == '+Inf' are also sent, we don't omit them. - xxx_count is passed through as a Counter (converted to a delta rather than accumulative). - xxx_total passed through as a Counter (converted to a delta rather than accumulative). - xxx_sum is passed through as a NR Summary converted to a delta rather than accumulative, Min and Max here should be NaN. Its value can be negative. The count field of the summary should be 1. - For Prometheus summary metrics, we report the quantile as a dimension and we don't add a "percentile" dimension.
1 parent 276f7cf commit ca6e6fc

File tree

8 files changed

+103
-422
lines changed

8 files changed

+103
-422
lines changed

go.mod

+1-5
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,11 @@ module github.com/newrelic/nri-prometheus
33
go 1.13
44

55
require (
6-
github.com/Bowery/prompt v0.0.0-20190916142128-fa8279994f75 // indirect
7-
github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185 // indirect
86
github.com/fsnotify/fsnotify v1.4.8-0.20190312181446-1485a34d5d57 // indirect
9-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
107
github.com/googleapis/gnostic v0.2.3-0.20181019180348-e2aafd60c944 // indirect
118
github.com/hashicorp/hcl v1.0.1-0.20190611123218-cf7d376da96d // indirect
129
github.com/imdario/mergo v0.3.8 // indirect
13-
github.com/kardianos/govendor v1.0.9 // indirect
14-
github.com/newrelic/newrelic-telemetry-sdk-go v0.2.1-0.20200116224429-790ff853d12b
10+
github.com/newrelic/newrelic-telemetry-sdk-go v0.3.0
1511
github.com/onsi/ginkgo v1.10.1 // indirect
1612
github.com/onsi/gomega v1.7.0 // indirect
1713
github.com/pelletier/go-toml v1.2.1-0.20181124002727-27c6b39a135b // indirect

go.sum

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
22
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
33
github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
4-
github.com/Bowery/prompt v0.0.0-20190916142128-fa8279994f75 h1:xGHheKK44eC6K0u5X+DZW/fRaR1LnDdqPHMZMWx5fv8=
5-
github.com/Bowery/prompt v0.0.0-20190916142128-fa8279994f75/go.mod h1:4/6eNcqZ09BZ9wLK3tZOjBA1nDj+B0728nlX5YRlSmQ=
64
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
75
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
86
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
@@ -26,8 +24,6 @@ github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2
2624
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2725
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
2826
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
29-
github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185 h1:3T8ZyTDp5QxTx3NU48JVb2u+75xc040fofcBaN+6jPA=
30-
github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185/go.mod h1:cFRxtTwTOJkz2x3rQUNCYKWC93yP1VKjR8NUhqFxZNU=
3127
github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
3228
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
3329
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
@@ -73,8 +69,6 @@ github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSN
7369
github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
7470
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
7571
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
76-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
77-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
7872
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
7973
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
8074
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
@@ -102,8 +96,6 @@ github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBv
10296
github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo=
10397
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
10498
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
105-
github.com/kardianos/govendor v1.0.9 h1:WOH3FcVI9eOgnIZYg96iwUwrL4eOVx+aQ66oyX2R8Yc=
106-
github.com/kardianos/govendor v1.0.9/go.mod h1:yvmR6q9ZZ7nSF5Wvh40v0wfP+3TwwL8zYQp+itoZSVM=
10799
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
108100
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
109101
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
@@ -132,8 +124,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
132124
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
133125
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
134126
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
135-
github.com/newrelic/newrelic-telemetry-sdk-go v0.2.1-0.20200116224429-790ff853d12b h1:SIJT+jppa/rNo2Dl6gTjvYYeVxxiCZ7q5cpu2yNkINw=
136-
github.com/newrelic/newrelic-telemetry-sdk-go v0.2.1-0.20200116224429-790ff853d12b/go.mod h1:G9MqE/cHGv3Hx3qpYhfuyFUsGx2DpVcGi1iJIqTg+JQ=
127+
github.com/newrelic/newrelic-telemetry-sdk-go v0.3.0 h1:KKeKemCT+woxK9GOI1XxiPui/g59ldJSoU9QtfEjXRs=
128+
github.com/newrelic/newrelic-telemetry-sdk-go v0.3.0/go.mod h1:G9MqE/cHGv3Hx3qpYhfuyFUsGx2DpVcGi1iJIqTg+JQ=
137129
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
138130
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
139131
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

internal/cmd/scraper/scraper.go

-10
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ type Config struct {
4040
BearerTokenFile string `mapstructure:"bearer_token_file"`
4141
InsecureSkipVerify bool `mapstructure:"insecure_skip_verify" default:"false"`
4242
ProcessingRules []integration.ProcessingRule `mapstructure:"transformations"`
43-
Percentiles []float64 `mapstructure:"percentiles"`
4443
DecorateFile bool
4544
EmitterProxy string `mapstructure:"emitter_proxy"`
4645
// Parsed version of `EmitterProxy`
@@ -80,14 +79,6 @@ func validateConfig(cfg *Config) error {
8079
if cfg.LicenseKey == "" {
8180
return fmt.Errorf(requiredMsg, "license_key")
8281
}
83-
for _, p := range cfg.Percentiles {
84-
if p < 0.0 {
85-
return fmt.Errorf("percentiles must be greater than or equal to 0.0, got %f", p)
86-
}
87-
if p > 100.0 {
88-
return fmt.Errorf("percentiles must be less than or equal to 100.0, got %f", p)
89-
}
90-
}
9182

9283
if cfg.EmitterProxy != "" {
9384
proxyURL, err := url.Parse(cfg.EmitterProxy)
@@ -244,7 +235,6 @@ func Run(cfg *Config) error {
244235
}
245236

246237
c := integration.TelemetryEmitterConfig{
247-
Percentiles: cfg.Percentiles,
248238
HarvesterOpts: harvesterOpts,
249239
DeltaExpirationAge: cfg.TelemetryEmitterDeltaExpirationAge,
250240
DeltaExpirationCheckInternval: cfg.TelemetryEmitterDeltaExpirationCheckInterval,

internal/histogram/bucket.go

-27
This file was deleted.

internal/histogram/percentile.go

-129
This file was deleted.

internal/histogram/percentile_test.go

-143
This file was deleted.

0 commit comments

Comments
 (0)