Skip to content

Commit

Permalink
support label
Browse files Browse the repository at this point in the history
  • Loading branch information
kobtea committed Oct 19, 2018
1 parent 8f3d082 commit 0eaf339
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 21 deletions.
37 changes: 22 additions & 15 deletions dummy_exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import (
"gopkg.in/alecthomas/kingpin.v2"
"io/ioutil"
"net/http"
"sort"
"strconv"
)

const (
Expand All @@ -25,24 +27,21 @@ var (
type collector struct {
namespace string
config map[string]config.Metric
desc map[string][]*prometheus.Desc
desc map[string]*prometheus.Desc
}

func newCollector(namespace string, metrics []config.Metric) (*collector, error) {
c := map[string]config.Metric{}
d := map[string][]*prometheus.Desc{}
d := map[string]*prometheus.Desc{}
for _, metric := range metrics {
var keys []string
for k := range metric.Labels {
keys = append(keys, k)
}
var descs []*prometheus.Desc
for i := 0; i < metric.Size; i++ {
descs = append(descs, prometheus.NewDesc(fmt.Sprintf("%s_%s_%d", namespace, metric.Name, i), "dummy", keys, nil))
}

sort.Strings(keys)
keys = append([]string{"id"}, keys...)
c[metric.Name] = metric
d[metric.Name] = descs
d[metric.Name] = prometheus.NewDesc(fmt.Sprintf("%s_%s", namespace, metric.Name), "dummy", keys, nil)
}
return &collector{
namespace: namespace,
Expand All @@ -52,17 +51,25 @@ func newCollector(namespace string, metrics []config.Metric) (*collector, error)
}

func (collector collector) Describe(ch chan<- *prometheus.Desc) {
for _, descs := range collector.desc {
for _, desc := range descs {
ch <- desc
}
for _, desc := range collector.desc {
ch <- desc
}
}

func (collector collector) Collect(ch chan<- prometheus.Metric) {
for _, descs := range collector.desc {
for _, desc := range descs {
ch <- prometheus.MustNewConstMetric(desc, prometheus.GaugeValue, 1)
for name, desc := range collector.desc {
var keys []string
for k := range collector.config[name].Labels {
keys = append(keys, k)
}
sort.Strings(keys)
for i := 0; i < collector.config[name].Size; i++ {
labels := []string{strconv.Itoa(i)}
for _, key := range keys {
vals := collector.config[name].Labels[key]
labels = append(labels, vals[i%len(vals)])
}
ch <- prometheus.MustNewConstMetric(desc, prometheus.GaugeValue, 1, labels...)
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions example/simple.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ metrics:
- name: foo
type: counter
size: 5
#- name: bar
# type: counter
# size: 10
# labels:
# l1: [one, two, three]
# l2: [aaa]
- name: bar
type: counter
size: 10
labels:
l1: [one, two, three]
l2: [aaa]

0 comments on commit 0eaf339

Please sign in to comment.