ofesseler / gluster_exporter

Gluster Exporter for Prometheus
Apache License 2.0
81 stars 57 forks source link

Multiple up checks are sent causing 500s #16

Open bfosberry opened 7 years ago

bfosberry commented 7 years ago

https://github.com/ofesseler/gluster_exporter/blob/master/main.go#L210

Im seeing a behaviour where the exporter is returning a 500 from the metrics api with this error:

An error has occurred during metrics gathering:

collected metric gluster_up gauge:<value:1 >  was collected before with the same name and label values

My guess is that here

    volumeInfo, err := ExecVolumeInfo()

    if err != nil {
        log.Errorf("couldn't parse xml volume info: %v", err)
        ch <- prometheus.MustNewConstMetric(
            up, prometheus.GaugeValue, 0.0,
        )
    }

    // use OpErrno as indicator for up
    if volumeInfo.OpErrno != 0 {
        ch <- prometheus.MustNewConstMetric(
            up, prometheus.GaugeValue, 0.0,
        )
    } else {
        ch <- prometheus.MustNewConstMetric(
            up, prometheus.GaugeValue, 1.0,
        )
    }

ExecVolumeInfo is returning an error and we are also sending up status on whats in volumeInfo.OpErrno. We should be short circuiting there.