code: func NewCPUCollector() (Collector, error) {
  	fs, err := procfs.NewFS(*procPath)
  	if err != nil {
  		return nil, fmt.Errorf("failed to open procfs: %v", err)
  	}
  	return &cpuCollector{
  		fs:  fs,
  		cpu: nodeCPUSecondsDesc,
  		cpuGuest: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "guest_seconds_total"),
  			"Seconds the cpus spent in guests (VMs) for each mode.",
  			[]string{"cpu", "mode"}, nil,
  		),
  		cpuCoreThrottle: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "core_throttles_total"),
  			"Number of times this cpu core has been throttled.",
  			[]string{"package", "core"}, nil,
  		),
  		cpuPackageThrottle: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "package_throttles_total"),
  			"Number of times this cpu package has been throttled.",
  			[]string{"package"}, nil,
  		),
  	}, nil
  }
docs: // NewCPUCollector returns a new Collector exposing kernel/system statistics.