| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package metrics
- import "github.com/grafana/grafana/pkg/log"
- type MetricMeta struct {
- tags map[string]string
- name string
- }
- func NewMetricMeta(name string, tagStrings []string) *MetricMeta {
- if len(tagStrings)%2 != 0 {
- log.Fatal(3, "Metrics: tags array is missing value for key, %v", tagStrings)
- }
- tags := make(map[string]string)
- for i := 0; i < len(tagStrings); i += 2 {
- tags[tagStrings[i]] = tagStrings[i+1]
- }
- return &MetricMeta{
- tags: tags,
- name: name,
- }
- }
- func (m *MetricMeta) Name() string {
- return m.name
- }
- func (m *MetricMeta) GetTagsCopy() map[string]string {
- if len(m.tags) == 0 {
- return make(map[string]string)
- }
- copy := make(map[string]string)
- for k2, v2 := range m.tags {
- copy[k2] = v2
- }
- return copy
- }
- func (m *MetricMeta) StringifyTags() string {
- if len(m.tags) == 0 {
- return ""
- }
- str := ""
- for key, value := range m.tags {
- str += "." + key + "_" + value
- }
- return str
- }
- type Metric interface {
- Name() string
- GetTagsCopy() map[string]string
- StringifyTags() string
- Snapshot() Metric
- }
|