master
go 51 lines 999 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package riakkv
4
5 import (
6 "errors"
7 "net/http"
8
9 "github.com/netdata/netdata/go/plugins/pkg/stm"
10 "github.com/netdata/netdata/go/plugins/pkg/web"
11 )
12
13 func (c *Collector) collect() (map[string]int64, error) {
14 stats, err := c.getStats()
15 if err != nil {
16 return nil, err
17 }
18
19 mx := stm.ToMap(stats)
20
21 if len(mx) == 0 {
22 return nil, errors.New("no stats")
23 }
24
25 c.once.Do(func() { c.adjustCharts(mx) })
26
27 return mx, nil
28 }
29
30 func (c *Collector) getStats() (*riakStats, error) {
31 req, err := web.NewHTTPRequest(c.RequestConfig)
32 if err != nil {
33 return nil, err
34 }
35
36 var stats riakStats
37 if err := c.client().RequestJSON(req, &stats); err != nil {
38 return nil, err
39 }
40
41 return &stats, nil
42 }
43
44 func (c *Collector) client() *web.Client {
45 return web.DoHTTP(c.httpClient).OnNokCode(func(resp *http.Response) (bool, error) {
46 if resp.StatusCode == http.StatusNotFound {
47 return false, errors.New("riak_kv_stat is not enabled)")
48 }
49 return false, nil
50 })
51 }