Skip to content

Commit

Permalink
Merge pull request #128 from digitalocean/yzhu/fix-pg-objects-recovered
Browse files Browse the repository at this point in the history
osd: update ceph_pg_objects_recovered_total in every scrape
  • Loading branch information
yuezhu committed Sep 26, 2019
2 parents 72151ed + 576310e commit 8018a0b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
25 changes: 14 additions & 11 deletions collectors/osd.go
Original file line number Diff line number Diff line change
Expand Up @@ -753,34 +753,37 @@ 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 {
continue
}

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
}
Expand Down
21 changes: 9 additions & 12 deletions collectors/osd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 8018a0b

Please sign in to comment.