Unexport SelfCollector.
This is most likely used nowhere and can be unexported to clean up the namespace.
This commit is contained in:
parent
9c3fe750dd
commit
249069ec01
|
@ -50,26 +50,26 @@ type Collector interface {
|
||||||
Collect(chan<- Metric)
|
Collect(chan<- Metric)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelfCollector implements Collector for a single Metric so that that the
|
// selfCollector implements Collector for a single Metric so that that the
|
||||||
// Metric collects itself. Add it as an anonymous field to a struct that
|
// Metric collects itself. Add it as an anonymous field to a struct that
|
||||||
// implements Metric, and call Init with the Metric itself as an argument.
|
// implements Metric, and call Init with the Metric itself as an argument.
|
||||||
type SelfCollector struct {
|
type selfCollector struct {
|
||||||
self Metric
|
self Metric
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init provides the SelfCollector with a reference to the metric it is supposed
|
// init provides the selfCollector with a reference to the metric it is supposed
|
||||||
// to collect. It is usually called within the factory function to create a
|
// to collect. It is usually called within the factory function to create a
|
||||||
// metric. See example.
|
// metric. See example.
|
||||||
func (c *SelfCollector) Init(self Metric) {
|
func (c *selfCollector) init(self Metric) {
|
||||||
c.self = self
|
c.self = self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Describe implements Collector.
|
// Describe implements Collector.
|
||||||
func (c *SelfCollector) Describe(ch chan<- *Desc) {
|
func (c *selfCollector) Describe(ch chan<- *Desc) {
|
||||||
ch <- c.self.Desc()
|
ch <- c.self.Desc()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collect implements Collector.
|
// Collect implements Collector.
|
||||||
func (c *SelfCollector) Collect(ch chan<- Metric) {
|
func (c *selfCollector) Collect(ch chan<- Metric) {
|
||||||
ch <- c.self
|
ch <- c.self
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ func NewCounter(opts CounterOpts) Counter {
|
||||||
opts.ConstLabels,
|
opts.ConstLabels,
|
||||||
)
|
)
|
||||||
result := &counter{value: value{desc: desc, valType: CounterValue, labelPairs: desc.constLabelPairs}}
|
result := &counter{value: value{desc: desc, valType: CounterValue, labelPairs: desc.constLabelPairs}}
|
||||||
result.Init(result) // Init self-collection.
|
result.init(result) // Init self-collection.
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec {
|
||||||
valType: CounterValue,
|
valType: CounterValue,
|
||||||
labelPairs: makeLabelPairs(desc, lvs),
|
labelPairs: makeLabelPairs(desc, lvs),
|
||||||
}}
|
}}
|
||||||
result.Init(result) // Init self-collection.
|
result.init(result) // Init self-collection.
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
// Copyright 2014 The Prometheus Authors
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package prometheus_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
|
||||||
|
|
||||||
dto "github.com/prometheus/client_model/go"
|
|
||||||
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewCallbackMetric(desc *prometheus.Desc, callback func() float64) *CallbackMetric {
|
|
||||||
result := &CallbackMetric{desc: desc, callback: callback}
|
|
||||||
result.Init(result) // Initialize the SelfCollector.
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Come up with a better example.
|
|
||||||
|
|
||||||
// CallbackMetric is an example for a user-defined Metric that exports the
|
|
||||||
// result of a function call as a metric of type "untyped" without any
|
|
||||||
// labels. It uses SelfCollector to turn the Metric into a Collector so that it
|
|
||||||
// can be registered with Prometheus.
|
|
||||||
//
|
|
||||||
// Note that this example is pretty much academic as the prometheus package
|
|
||||||
// already provides an UntypedFunc type.
|
|
||||||
type CallbackMetric struct {
|
|
||||||
prometheus.SelfCollector
|
|
||||||
|
|
||||||
desc *prometheus.Desc
|
|
||||||
callback func() float64
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cm *CallbackMetric) Desc() *prometheus.Desc {
|
|
||||||
return cm.desc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cm *CallbackMetric) Write(m *dto.Metric) error {
|
|
||||||
m.Untyped = &dto.Untyped{Value: proto.Float64(cm.callback())}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleSelfCollector() {
|
|
||||||
m := NewCallbackMetric(
|
|
||||||
prometheus.NewDesc(
|
|
||||||
"runtime_goroutines_count",
|
|
||||||
"Total number of goroutines that currently exist.",
|
|
||||||
nil, nil, // No labels, these must be nil.
|
|
||||||
),
|
|
||||||
func() float64 {
|
|
||||||
return float64(runtime.NumGoroutine())
|
|
||||||
},
|
|
||||||
)
|
|
||||||
prometheus.MustRegister(m)
|
|
||||||
}
|
|
|
@ -210,7 +210,7 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr
|
||||||
// Finally we know the final length of h.upperBounds and can make counts.
|
// Finally we know the final length of h.upperBounds and can make counts.
|
||||||
h.counts = make([]uint64, len(h.upperBounds))
|
h.counts = make([]uint64, len(h.upperBounds))
|
||||||
|
|
||||||
h.Init(h) // Init self-collection.
|
h.init(h) // Init self-collection.
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,7 +222,7 @@ type histogram struct {
|
||||||
sumBits uint64
|
sumBits uint64
|
||||||
count uint64
|
count uint64
|
||||||
|
|
||||||
SelfCollector
|
selfCollector
|
||||||
// Note that there is no mutex required.
|
// Note that there is no mutex required.
|
||||||
|
|
||||||
desc *Desc
|
desc *Desc
|
||||||
|
|
|
@ -227,12 +227,12 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
|
||||||
}
|
}
|
||||||
sort.Float64s(s.sortedObjectives)
|
sort.Float64s(s.sortedObjectives)
|
||||||
|
|
||||||
s.Init(s) // Init self-collection.
|
s.init(s) // Init self-collection.
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
type summary struct {
|
type summary struct {
|
||||||
SelfCollector
|
selfCollector
|
||||||
|
|
||||||
bufMtx sync.Mutex // Protects hotBuf and hotBufExpTime.
|
bufMtx sync.Mutex // Protects hotBuf and hotBufExpTime.
|
||||||
mtx sync.Mutex // Protects every other moving part.
|
mtx sync.Mutex // Protects every other moving part.
|
||||||
|
|
|
@ -48,7 +48,7 @@ type value struct {
|
||||||
// operations. http://golang.org/pkg/sync/atomic/#pkg-note-BUG
|
// operations. http://golang.org/pkg/sync/atomic/#pkg-note-BUG
|
||||||
valBits uint64
|
valBits uint64
|
||||||
|
|
||||||
SelfCollector
|
selfCollector
|
||||||
|
|
||||||
desc *Desc
|
desc *Desc
|
||||||
valType ValueType
|
valType ValueType
|
||||||
|
@ -68,7 +68,7 @@ func newValue(desc *Desc, valueType ValueType, val float64, labelValues ...strin
|
||||||
valBits: math.Float64bits(val),
|
valBits: math.Float64bits(val),
|
||||||
labelPairs: makeLabelPairs(desc, labelValues),
|
labelPairs: makeLabelPairs(desc, labelValues),
|
||||||
}
|
}
|
||||||
result.Init(result)
|
result.init(result)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ func (v *value) Write(out *dto.Metric) error {
|
||||||
// library to back the implementations of CounterFunc, GaugeFunc, and
|
// library to back the implementations of CounterFunc, GaugeFunc, and
|
||||||
// UntypedFunc.
|
// UntypedFunc.
|
||||||
type valueFunc struct {
|
type valueFunc struct {
|
||||||
SelfCollector
|
selfCollector
|
||||||
|
|
||||||
desc *Desc
|
desc *Desc
|
||||||
valType ValueType
|
valType ValueType
|
||||||
|
@ -134,7 +134,7 @@ func newValueFunc(desc *Desc, valueType ValueType, function func() float64) *val
|
||||||
function: function,
|
function: function,
|
||||||
labelPairs: makeLabelPairs(desc, nil),
|
labelPairs: makeLabelPairs(desc, nil),
|
||||||
}
|
}
|
||||||
result.Init(result)
|
result.init(result)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue