mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
d5c180e680
It is better developing vmctl tool in VictoriaMetrics repository, so it could be released together with the rest of vmutils tools such as vmalert, vmagent, vmbackup, vmrestore and vmauth.
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package models
|
|
|
|
// Statistic is the representation of a statistic used by the monitoring service.
|
|
type Statistic struct {
|
|
Name string `json:"name"`
|
|
Tags map[string]string `json:"tags"`
|
|
Values map[string]interface{} `json:"values"`
|
|
}
|
|
|
|
// NewStatistic returns an initialized Statistic.
|
|
func NewStatistic(name string) Statistic {
|
|
return Statistic{
|
|
Name: name,
|
|
Tags: make(map[string]string),
|
|
Values: make(map[string]interface{}),
|
|
}
|
|
}
|
|
|
|
// StatisticTags is a map that can be merged with others without causing
|
|
// mutations to either map.
|
|
type StatisticTags map[string]string
|
|
|
|
// Merge creates a new map containing the merged contents of tags and t.
|
|
// If both tags and the receiver map contain the same key, the value in tags
|
|
// is used in the resulting map.
|
|
//
|
|
// Merge always returns a usable map.
|
|
func (t StatisticTags) Merge(tags map[string]string) map[string]string {
|
|
// Add everything in tags to the result.
|
|
out := make(map[string]string, len(tags))
|
|
for k, v := range tags {
|
|
out[k] = v
|
|
}
|
|
|
|
// Only add values from t that don't appear in tags.
|
|
for k, v := range t {
|
|
if _, ok := tags[k]; !ok {
|
|
out[k] = v
|
|
}
|
|
}
|
|
return out
|
|
}
|