mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
make bridge prefix backwards compatible
This commit is contained in:
parent
6d22a67a30
commit
c177a9a77a
@ -220,10 +220,7 @@ func (b *Bridge) writeMetrics(w io.Writer, mfs []*dto.MetricFamily, prefix strin
|
|||||||
|
|
||||||
buf := bufio.NewWriter(w)
|
buf := bufio.NewWriter(w)
|
||||||
for _, s := range vec {
|
for _, s := range vec {
|
||||||
if err := writeSanitized(buf, prefix); err != nil {
|
if err := writePrefix(buf, prefix); err != nil {
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := buf.WriteByte('.'); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,6 +321,16 @@ func addExtentionConventionForRollups(buf *bufio.Writer, mf *dto.MetricFamily, m
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func writePrefix(buf *bufio.Writer, s string) error {
|
||||||
|
for _, c := range s {
|
||||||
|
if _, err := buf.WriteRune(replaceInvalid(c)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func writeSanitized(buf *bufio.Writer, s string) error {
|
func writeSanitized(buf *bufio.Writer, s string) error {
|
||||||
prevUnderscore := false
|
prevUnderscore := false
|
||||||
|
|
||||||
@ -345,6 +352,13 @@ func writeSanitized(buf *bufio.Writer, s string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func replaceInvalid(c rune) rune {
|
||||||
|
if c == ' ' || c == '.' {
|
||||||
|
return '.'
|
||||||
|
}
|
||||||
|
return replaceInvalidRune(c)
|
||||||
|
}
|
||||||
|
|
||||||
func replaceInvalidRune(c rune) rune {
|
func replaceInvalidRune(c rune) rune {
|
||||||
if c == ' ' {
|
if c == ' ' {
|
||||||
return '.'
|
return '.'
|
||||||
|
@ -96,6 +96,33 @@ func TestSanitize(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSanitizePrefix(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
in, out string
|
||||||
|
}{
|
||||||
|
{in: "service.prod.", out: "service.prod."},
|
||||||
|
{in: "service.prod", out: "service.prod"},
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
w := bufio.NewWriter(&buf)
|
||||||
|
|
||||||
|
for i, tc := range testCases {
|
||||||
|
if err := writePrefix(w, tc.in); err != nil {
|
||||||
|
t.Fatalf("write failed: %v", err)
|
||||||
|
}
|
||||||
|
if err := w.Flush(); err != nil {
|
||||||
|
t.Fatalf("flush failed: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if want, got := tc.out, buf.String(); want != got {
|
||||||
|
t.Fatalf("test case index %d: got sanitized string %s, want %s", i, got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.Reset()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestWriteSummary(t *testing.T) {
|
func TestWriteSummary(t *testing.T) {
|
||||||
sumVec := prometheus.NewSummaryVec(
|
sumVec := prometheus.NewSummaryVec(
|
||||||
prometheus.SummaryOpts{
|
prometheus.SummaryOpts{
|
||||||
@ -133,7 +160,7 @@ func TestWriteSummary(t *testing.T) {
|
|||||||
|
|
||||||
now := model.Time(1477043083)
|
now := model.Time(1477043083)
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", now)
|
err = b.writeMetrics(&buf, mfs, "prefix.", now)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -192,7 +219,7 @@ func TestWriteHistogram(t *testing.T) {
|
|||||||
|
|
||||||
now := model.Time(1477043083)
|
now := model.Time(1477043083)
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", now)
|
err = b.writeMetrics(&buf, mfs, "prefix.", now)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -249,7 +276,7 @@ func TestCounterVec(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", model.Time(1477043083))
|
err = b.writeMetrics(&buf, mfs, "prefix.", model.Time(1477043083))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -271,7 +298,7 @@ prefix.page.response.constname.constvalue.labelname.val2.count 1 1477043
|
|||||||
}
|
}
|
||||||
|
|
||||||
buf = bytes.Buffer{}
|
buf = bytes.Buffer{}
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", model.Time(1477053083))
|
err = b.writeMetrics(&buf, mfs, "prefix.", model.Time(1477053083))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -313,7 +340,7 @@ func TestCounter(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", model.Time(1477043083))
|
err = b.writeMetrics(&buf, mfs, "prefix.", model.Time(1477043083))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -332,7 +359,7 @@ func TestCounter(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
buf = bytes.Buffer{}
|
buf = bytes.Buffer{}
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", model.Time(1477053083))
|
err = b.writeMetrics(&buf, mfs, "prefix.", model.Time(1477053083))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -372,7 +399,7 @@ func TestCanIgnoreSomeMetrics(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
err = b.writeMetrics(&buf, mfs, "prefix", model.Time(1477043083))
|
err = b.writeMetrics(&buf, mfs, "prefix.", model.Time(1477043083))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error: %v", err)
|
t.Fatalf("error: %v", err)
|
||||||
}
|
}
|
||||||
@ -402,7 +429,7 @@ func TestPush(t *testing.T) {
|
|||||||
b, err := NewBridge(&Config{
|
b, err := NewBridge(&Config{
|
||||||
URL: host + port,
|
URL: host + port,
|
||||||
Gatherer: reg,
|
Gatherer: reg,
|
||||||
Prefix: "prefix",
|
Prefix: "prefix.",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error creating bridge: %v", err)
|
t.Fatalf("error creating bridge: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user