--- main.go 2018-02-27 14:33:38.959715746 +0100 +++ main.go.fra 2018-02-27 14:40:03.963715746 +0100 @@ -140,6 +140,11 @@ isUpRows.Close() e.up.Set(1) + if err = ScrapeFraSpace(db, ch); err != nil { + log.Errorln("Error scraping for FRA space:", err) + e.scrapeErrors.WithLabelValues("FRA").Inc() + } + if err = ScrapeActivity(db, ch); err != nil { log.Errorln("Error scraping for activity:", err) e.scrapeErrors.WithLabelValues("activity").Inc() @@ -277,6 +282,27 @@ return nil } +func ScrapeFraSpace(db *sql.DB, ch chan<- prometheus.Metric) error { + var err error + var name string + var limit float64 + var used float64 + + err = db.QueryRow("SELECT name, space_limit, space_used FROM v$recovery_file_dest").Scan(&name, &limit, &used) + if err != nil { + return err + } + + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc(prometheus.BuildFQName(namespace, name, "limit"), "Generic counter metric with FRA limit", []string{}, nil), + prometheus.GaugeValue, limit) + + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc(prometheus.BuildFQName(namespace, name, "used"), "Generic counter metric with FRA used", []string{}, nil), + prometheus.GaugeValue, used) + return nil +} + // ScrapeTablespace collects tablespace size. func ScrapeTablespace(db *sql.DB, ch chan<- prometheus.Metric) error { var (