master
go 48 lines 1.04 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package puppet
4
5 import (
6 "fmt"
7 "net/url"
8
9 "github.com/netdata/netdata/go/plugins/pkg/stm"
10 "github.com/netdata/netdata/go/plugins/pkg/web"
11 )
12
13 var (
14 //https://puppet.com/docs/puppet/8/server/status-api/v1/services
15 urlPathStatusService = "/status/v1/services"
16 urlQueryStatusService = url.Values{"level": {"debug"}}.Encode()
17 )
18
19 func (c *Collector) collect() (map[string]int64, error) {
20 stats, err := c.queryStatsService()
21 if err != nil {
22 return nil, err
23 }
24
25 mx := stm.ToMap(stats)
26
27 return mx, nil
28 }
29
30 func (c *Collector) queryStatsService() (*statusServiceResponse, error) {
31 req, err := web.NewHTTPRequestWithPath(c.RequestConfig, urlPathStatusService)
32 if err != nil {
33 return nil, err
34 }
35
36 req.URL.RawQuery = urlQueryStatusService
37
38 var stats statusServiceResponse
39 if err := web.DoHTTP(c.httpClient).RequestJSON(req, &stats); err != nil {
40 return nil, err
41 }
42
43 if stats.StatusService == nil {
44 return nil, fmt.Errorf("unexpected response: not puppet service status data")
45 }
46
47 return &stats, nil
48 }