performancecounter: Add the possibility to request formatted values (#1830)

This commit is contained in:
Jan-Otto Kröpke
2025-01-14 23:32:44 +01:00
committed by GitHub
parent 4cd9627ebf
commit 86e6d12518
80 changed files with 354 additions and 132 deletions

View File

@@ -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)), "_"), "_")
}