62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
|
package jolokia2
|
||
|
|
||
|
// A MetricConfig represents a TOML form of
|
||
|
// a Metric with some optional fields.
|
||
|
type MetricConfig struct {
|
||
|
Name string
|
||
|
Mbean string
|
||
|
Paths []string
|
||
|
FieldName *string
|
||
|
FieldPrefix *string
|
||
|
FieldSeparator *string
|
||
|
TagPrefix *string
|
||
|
TagKeys []string
|
||
|
}
|
||
|
|
||
|
// A Metric represents a specification for a
|
||
|
// Jolokia read request, and the transformations
|
||
|
// to apply to points generated from the responses.
|
||
|
type Metric struct {
|
||
|
Name string
|
||
|
Mbean string
|
||
|
Paths []string
|
||
|
FieldName string
|
||
|
FieldPrefix string
|
||
|
FieldSeparator string
|
||
|
TagPrefix string
|
||
|
TagKeys []string
|
||
|
}
|
||
|
|
||
|
func NewMetric(config MetricConfig, defaultFieldPrefix, defaultFieldSeparator, defaultTagPrefix string) Metric {
|
||
|
metric := Metric{
|
||
|
Name: config.Name,
|
||
|
Mbean: config.Mbean,
|
||
|
Paths: config.Paths,
|
||
|
TagKeys: config.TagKeys,
|
||
|
}
|
||
|
|
||
|
if config.FieldName != nil {
|
||
|
metric.FieldName = *config.FieldName
|
||
|
}
|
||
|
|
||
|
if config.FieldPrefix == nil {
|
||
|
metric.FieldPrefix = defaultFieldPrefix
|
||
|
} else {
|
||
|
metric.FieldPrefix = *config.FieldPrefix
|
||
|
}
|
||
|
|
||
|
if config.FieldSeparator == nil {
|
||
|
metric.FieldSeparator = defaultFieldSeparator
|
||
|
} else {
|
||
|
metric.FieldSeparator = *config.FieldSeparator
|
||
|
}
|
||
|
|
||
|
if config.TagPrefix == nil {
|
||
|
metric.TagPrefix = defaultTagPrefix
|
||
|
} else {
|
||
|
metric.TagPrefix = *config.TagPrefix
|
||
|
}
|
||
|
|
||
|
return metric
|
||
|
}
|