master
go 55 lines 1.25 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package nginxvts
4
5 import (
6 "github.com/netdata/netdata/go/plugins/pkg/stm"
7 "github.com/netdata/netdata/go/plugins/pkg/web"
8 )
9
10 func (c *Collector) collect() (map[string]int64, error) {
11 ms, err := c.scapeVTS()
12 if err != nil {
13 return nil, nil
14 }
15
16 collected := make(map[string]any)
17 c.collectMain(collected, ms)
18 c.collectSharedZones(collected, ms)
19 c.collectServerZones(collected, ms)
20
21 return stm.ToMap(collected), nil
22 }
23
24 func (c *Collector) collectMain(collected map[string]any, ms *vtsMetrics) {
25 collected["uptime"] = (ms.NowMsec - ms.LoadMsec) / 1000
26 collected["connections"] = ms.Connections
27 }
28
29 func (c *Collector) collectSharedZones(collected map[string]any, ms *vtsMetrics) {
30 collected["sharedzones"] = ms.SharedZones
31 }
32
33 func (c *Collector) collectServerZones(collected map[string]any, ms *vtsMetrics) {
34 if !ms.hasServerZones() {
35 return
36 }
37
38 // "*" means all servers
39 collected["total"] = ms.ServerZones["*"]
40 }
41
42 func (c *Collector) scapeVTS() (*vtsMetrics, error) {
43 req, err := web.NewHTTPRequest(c.RequestConfig)
44 if err != nil {
45 return nil, err
46 }
47
48 var total vtsMetrics
49 if err := web.DoHTTP(c.httpClient).RequestJSON(req, &total); err != nil {
50 c.Warning(err)
51 return nil, err
52 }
53
54 return &total, nil
55 }