summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/phpfpm/init.go
blob: 144e34abafddbd1eb99a86c7fd0fa2ae222e347c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// SPDX-License-Identifier: GPL-3.0-or-later

package phpfpm

import (
	"errors"
	"fmt"
	"os"

	"github.com/netdata/netdata/go/go.d.plugin/pkg/web"
)

func (p *Phpfpm) initClient() (client, error) {
	if p.Socket != "" {
		return p.initSocketClient()
	}
	if p.Address != "" {
		return p.initTcpClient()
	}
	if p.URL != "" {
		return p.initHTTPClient()
	}

	return nil, errors.New("neither 'socket' nor 'url' set")
}

func (p *Phpfpm) initHTTPClient() (*httpClient, error) {
	c, err := web.NewHTTPClient(p.Client)
	if err != nil {
		return nil, fmt.Errorf("create HTTP client: %v", err)
	}

	p.Debugf("using HTTP client, URL: %s", p.URL)
	p.Debugf("using timeout: %s", p.Timeout)

	return newHTTPClient(c, p.Request)
}

func (p *Phpfpm) initSocketClient() (*socketClient, error) {
	if _, err := os.Stat(p.Socket); err != nil {
		return nil, fmt.Errorf("the socket '%s' does not exist: %v", p.Socket, err)
	}

	p.Debugf("using socket client: %s", p.Socket)
	p.Debugf("using timeout: %s", p.Timeout)
	p.Debugf("using fcgi path: %s", p.FcgiPath)

	return newSocketClient(p.Socket, p.Timeout.Duration(), p.FcgiPath), nil
}

func (p *Phpfpm) initTcpClient() (*tcpClient, error) {
	p.Debugf("using tcp client: %s", p.Address)
	p.Debugf("using timeout: %s", p.Timeout)
	p.Debugf("using fcgi path: %s", p.FcgiPath)

	return newTcpClient(p.Address, p.Timeout.Duration(), p.FcgiPath), nil
}