Esempio n. 1
0
func (c *vmStatCollector) Update(ch chan<- prometheus.Metric) (err error) {
	file, err := os.Open(procFilePath("vmstat"))
	if err != nil {
		return err
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		parts := strings.Fields(scanner.Text())
		value, err := strconv.ParseFloat(parts[1], 64)
		if err != nil {
			return err
		}

		metric := prometheus.NewUntyped(prometheus.UntypedOpts{
			Namespace: Namespace,
			Subsystem: vmStatSubsystem,
			Name:      parts[0],
			Help:      fmt.Sprintf("/proc/vmstat information field %s.", parts[0]),
		})
		metric.Set(value)
		metric.Collect(ch)
	}
	return err
}
func (e *Exporter) setGenericMetric(name string, value float64) {
	if _, ok := e.metrics[name]; !ok {
		e.metrics[name] = prometheus.NewUntyped(prometheus.UntypedOpts{
			Namespace: namespace,
			Name:      name,
		})
	}

	e.metrics[name].Set(value)
}