Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
9afed0bfb0 | |||
eac6b15775 | |||
85319f9bd0 | |||
e4f2c77510 | |||
b77f70aeb0 |
105
prometheus.go
105
prometheus.go
@@ -52,21 +52,6 @@ func newFloat64(v float64) *float64 {
|
|||||||
return &nv
|
return &nv
|
||||||
}
|
}
|
||||||
|
|
||||||
func newMt(v dto.MetricType) *dto.MetricType {
|
|
||||||
nv := v
|
|
||||||
return &nv
|
|
||||||
}
|
|
||||||
|
|
||||||
func newInt(v int) *int {
|
|
||||||
nv := v
|
|
||||||
return &nv
|
|
||||||
}
|
|
||||||
|
|
||||||
func newInt64(v int64) *int64 {
|
|
||||||
nv := v
|
|
||||||
return &nv
|
|
||||||
}
|
|
||||||
|
|
||||||
func newString(v string) *string {
|
func newString(v string) *string {
|
||||||
nv := v
|
nv := v
|
||||||
return &nv
|
return &nv
|
||||||
@@ -102,9 +87,8 @@ func (m *prometheusMeter) buildMetric(name string, labels ...string) string {
|
|||||||
return meter.BuildName(name, nlabels...)
|
return meter.BuildName(name, nlabels...)
|
||||||
}
|
}
|
||||||
|
|
||||||
for idx := 0; idx < nl; idx++ {
|
for idx := 0; idx < nl; idx += 2 {
|
||||||
nlabels[idx] = m.opts.LabelPrefix + nlabels[idx]
|
nlabels[idx] = m.opts.LabelPrefix + nlabels[idx]
|
||||||
idx++
|
|
||||||
}
|
}
|
||||||
return meter.BuildName(name, nlabels...)
|
return meter.BuildName(name, nlabels...)
|
||||||
}
|
}
|
||||||
@@ -124,10 +108,9 @@ func (m *prometheusMeter) buildLabels(labels ...string) []string {
|
|||||||
|
|
||||||
nlabels := make([]string, 0, nl)
|
nlabels := make([]string, 0, nl)
|
||||||
|
|
||||||
for idx := 0; idx < nl; idx++ {
|
for idx := 0; idx < nl; idx += 2 {
|
||||||
nlabels = append(nlabels, m.opts.LabelPrefix+labels[idx])
|
nlabels = append(nlabels, m.opts.LabelPrefix+labels[idx])
|
||||||
nlabels = append(nlabels, labels[idx+1])
|
nlabels = append(nlabels, labels[idx+1])
|
||||||
idx++
|
|
||||||
}
|
}
|
||||||
return nlabels
|
return nlabels
|
||||||
}
|
}
|
||||||
@@ -319,19 +302,9 @@ func (m *prometheusMeter) Write(w io.Writer, opts ...meter.Option) error {
|
|||||||
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
||||||
}
|
}
|
||||||
for _, c := range metrics.cs {
|
for _, c := range metrics.cs {
|
||||||
m := &dto.Metric{
|
m := &dto.Metric{}
|
||||||
Label: make([]*dto.LabelPair, 0, len(c.labels)/2),
|
_ = c.c.Write(m)
|
||||||
Gauge: &dto.Gauge{
|
fillMetric(m, c.labels)
|
||||||
Value: newFloat64(float64(c.Get())),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for idx := 0; idx < len(c.labels); idx++ {
|
|
||||||
m.Label = append(m.Label, &dto.LabelPair{
|
|
||||||
Name: &c.labels[idx],
|
|
||||||
Value: &c.labels[idx+1],
|
|
||||||
})
|
|
||||||
idx++
|
|
||||||
}
|
|
||||||
mf.Metric = append(mf.Metric, m)
|
mf.Metric = append(mf.Metric, m)
|
||||||
}
|
}
|
||||||
mfs = append(mfs, mf)
|
mfs = append(mfs, mf)
|
||||||
@@ -344,19 +317,54 @@ func (m *prometheusMeter) Write(w io.Writer, opts ...meter.Option) error {
|
|||||||
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
||||||
}
|
}
|
||||||
for _, c := range metrics.cs {
|
for _, c := range metrics.cs {
|
||||||
m := &dto.Metric{
|
m := &dto.Metric{}
|
||||||
Label: make([]*dto.LabelPair, 0, len(c.labels)/2),
|
_ = c.c.Write(m)
|
||||||
Gauge: &dto.Gauge{
|
fillMetric(m, c.labels)
|
||||||
Value: newFloat64(float64(c.Get())),
|
mf.Metric = append(mf.Metric, m)
|
||||||
},
|
|
||||||
}
|
}
|
||||||
for idx := 0; idx < len(c.labels); idx++ {
|
mfs = append(mfs, mf)
|
||||||
m.Label = append(m.Label, &dto.LabelPair{
|
|
||||||
Name: &c.labels[idx],
|
|
||||||
Value: &c.labels[idx+1],
|
|
||||||
})
|
|
||||||
idx++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for name, metrics := range m.floatCounter {
|
||||||
|
mf := &dto.MetricFamily{
|
||||||
|
Name: newString(name),
|
||||||
|
Type: dto.MetricType_GAUGE.Enum(),
|
||||||
|
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
||||||
|
}
|
||||||
|
for _, c := range metrics.cs {
|
||||||
|
m := &dto.Metric{}
|
||||||
|
_ = c.c.Write(m)
|
||||||
|
fillMetric(m, c.labels)
|
||||||
|
mf.Metric = append(mf.Metric, m)
|
||||||
|
}
|
||||||
|
mfs = append(mfs, mf)
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, metrics := range m.histogram {
|
||||||
|
mf := &dto.MetricFamily{
|
||||||
|
Name: newString(name),
|
||||||
|
Type: dto.MetricType_HISTOGRAM.Enum(),
|
||||||
|
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
||||||
|
}
|
||||||
|
for _, c := range metrics.cs {
|
||||||
|
m := &dto.Metric{}
|
||||||
|
_ = c.c.Write(m)
|
||||||
|
fillMetric(m, c.labels)
|
||||||
|
mf.Metric = append(mf.Metric, m)
|
||||||
|
}
|
||||||
|
mfs = append(mfs, mf)
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, metrics := range m.summary {
|
||||||
|
mf := &dto.MetricFamily{
|
||||||
|
Name: newString(name),
|
||||||
|
Type: dto.MetricType_SUMMARY.Enum(),
|
||||||
|
Metric: make([]*dto.Metric, 0, len(metrics.cs)),
|
||||||
|
}
|
||||||
|
for _, c := range metrics.cs {
|
||||||
|
m := &dto.Metric{}
|
||||||
|
_ = c.c.Write(m)
|
||||||
|
fillMetric(m, c.labels)
|
||||||
mf.Metric = append(mf.Metric, m)
|
mf.Metric = append(mf.Metric, m)
|
||||||
}
|
}
|
||||||
mfs = append(mfs, mf)
|
mfs = append(mfs, mf)
|
||||||
@@ -510,3 +518,14 @@ func newHash(labels []string) uint64 {
|
|||||||
}
|
}
|
||||||
return h.Sum64()
|
return h.Sum64()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fillMetric(m *dto.Metric, labels []string) *dto.Metric {
|
||||||
|
m.Label = make([]*dto.LabelPair, 0, len(labels)/2)
|
||||||
|
for idx := 0; idx < len(labels); idx += 2 {
|
||||||
|
m.Label = append(m.Label, &dto.LabelPair{
|
||||||
|
Name: newString(labels[idx]),
|
||||||
|
Value: newString(labels[idx+1]),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user