mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-03-01 16:16:35 +00:00
performancecounter: Add the possibility to request formatted values (#1830)
This commit is contained in:
@@ -35,7 +35,16 @@ import (
|
||||
|
||||
const Name = "performancecounter"
|
||||
|
||||
var reNonAlphaNum = regexp.MustCompile(`[^a-zA-Z0-9]`)
|
||||
var (
|
||||
reNonAlphaNum = regexp.MustCompile(`[^a-zA-Z0-9]`)
|
||||
|
||||
//nolint:gochecknoglobals // strings.NewReplacer is safe for concurrent use
|
||||
stringReplacer = strings.NewReplacer(
|
||||
"%", "percent",
|
||||
"(", "",
|
||||
")", "",
|
||||
)
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Objects []Object `yaml:"objects"`
|
||||
@@ -200,7 +209,11 @@ func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error {
|
||||
|
||||
valueType := reflect.StructOf(fields)
|
||||
|
||||
collector, err := pdh.NewCollectorWithReflection(object.Object, object.Instances, valueType)
|
||||
if object.Type == "" {
|
||||
object.Type = pdh.CounterTypeRaw
|
||||
}
|
||||
|
||||
collector, err := pdh.NewCollectorWithReflection(object.Type, object.Object, object.Instances, valueType)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Errorf("failed collector for %s: %w", object.Name, err))
|
||||
}
|
||||
@@ -364,5 +377,5 @@ func (c *Collector) collectObject(ch chan<- prometheus.Metric, perfDataObject Ob
|
||||
}
|
||||
|
||||
func sanitizeMetricName(name string) string {
|
||||
return strings.Trim(reNonAlphaNum.ReplaceAllString(strings.ToLower(name), "_"), "_")
|
||||
return strings.Trim(reNonAlphaNum.ReplaceAllString(strings.ToLower(stringReplacer.Replace(name)), "_"), "_")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user