From 576310e7b054e147ebdb61a9c254878da0386885 Mon Sep 17 00:00:00 2001 From: Yue Zhu Date: Thu, 26 Sep 2019 12:37:07 -0400 Subject: [PATCH] osd: update ceph_pg_objects_recovered_total in every scrape --- collectors/osd.go | 25 ++++++++++++++----------- collectors/osd_test.go | 21 +++++++++------------ 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/collectors/osd.go b/collectors/osd.go index bfc11ec..0830130 100644 --- a/collectors/osd.go +++ b/collectors/osd.go @@ -753,6 +753,8 @@ func (o *OSDCollector) collectOSDScrubState(ch chan<- prometheus.Metric) error { func (o *OSDCollector) collectPGRecoveryState(ch chan<- prometheus.Metric) error { for _, pg := range o.pgDumpBrief { + diff := 0.0 + if o.initialCollect { query, err := o.performPGQuery(pg.PGID) if err != nil { @@ -760,27 +762,28 @@ func (o *OSDCollector) collectPGRecoveryState(ch chan<- prometheus.Metric) error } o.pgObjectsRecoveredCache[pg.PGID] = query.Info.Stats.StatSum.NumObjectsRecovered + } else if strings.Contains(pg.State, "recovering") { query, err := o.performPGQuery(pg.PGID) if err != nil { continue } - diff := query.Info.Stats.StatSum.NumObjectsRecovered - o.pgObjectsRecoveredCache[pg.PGID] + diff = float64(query.Info.Stats.StatSum.NumObjectsRecovered - o.pgObjectsRecoveredCache[pg.PGID]) o.pgObjectsRecoveredCache[pg.PGID] = query.Info.Stats.StatSum.NumObjectsRecovered + } - if diff < 0 { - continue - } - - ch <- prometheus.MustNewConstMetric( - o.PGObjectsRecoveredDesc, - prometheus.CounterValue, - float64(diff), - pg.PGID, - ) + if diff < 0 { + continue } + + ch <- prometheus.MustNewConstMetric( + o.PGObjectsRecoveredDesc, + prometheus.CounterValue, + diff, + pg.PGID, + ) } return nil } diff --git a/collectors/osd_test.go b/collectors/osd_test.go index 3c5a065..3cf0cae 100644 --- a/collectors/osd_test.go +++ b/collectors/osd_test.go @@ -611,20 +611,17 @@ func TestOSDCollector(t *testing.T) { var buf []byte - // scrape at least twice to have the metrics for number of objects - // recovered available - for i := 0; i < 2; i++ { - resp, err := http.Get(server.URL) - if err != nil { - t.Fatalf("unexpected failed response from prometheus: %s", err) - } - defer resp.Body.Close() + resp, err := http.Get(server.URL) + if err != nil { + t.Fatalf("unexpected failed response from prometheus: %s", err) + } + defer resp.Body.Close() - buf, err = ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatalf("failed reading server response: %s", err) - } + buf, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatalf("failed reading server response: %s", err) } + for _, re := range tt.regexes { if !re.Match(buf) { t.Errorf("failed matching: %q", re)