Skip to content

Commit 75e4d00

Browse files
author
Alex Shchukin
committed
add functionality to get /processes
1 parent 39ed7a7 commit 75e4d00

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

client/nginx.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ func (internalError *internalError) Wrap(err string) *internalError {
108108
// https://nginx.org/en/docs/http/ngx_http_api_module.html
109109
type Stats struct {
110110
NginxInfo NginxInfo
111+
Processes Processes
111112
Connections Connections
112113
Slabs Slabs
113114
HTTPRequests HTTPRequests
@@ -372,6 +373,11 @@ type ResolverResponses struct {
372373
Unknown int64
373374
}
374375

376+
// Processes represents processes related stats
377+
type Processes struct {
378+
Respawned int64 `json:"respawned"`
379+
}
380+
375381
// NewNginxClient creates an NginxClient.
376382
func NewNginxClient(httpClient *http.Client, apiEndpoint string) (*NginxClient, error) {
377383
versions, err := getAPIVersions(httpClient, apiEndpoint)
@@ -930,13 +936,18 @@ func determineStreamUpdates(updatedServers []StreamUpstreamServer, nginxServers
930936
return
931937
}
932938

933-
// GetStats gets connection, request, ssl, zone, stream zone, upstream and stream upstream related stats from the NGINX Plus API.
939+
// GetStats gets process, slab, connection, request, ssl, zone, stream zone, upstream and stream upstream related stats from the NGINX Plus API.
934940
func (client *NginxClient) GetStats() (*Stats, error) {
935941
info, err := client.getNginxInfo()
936942
if err != nil {
937943
return nil, fmt.Errorf("failed to get stats: %v", err)
938944
}
939945

946+
processes, err := client.getProcesses()
947+
if err != nil {
948+
return nil, fmt.Errorf("failed to get stats: %v", err)
949+
}
950+
940951
slabs, err := client.getSlabs()
941952
if err != nil {
942953
return nil, fmt.Errorf("failed to get stats: %v", err)
@@ -994,6 +1005,7 @@ func (client *NginxClient) GetStats() (*Stats, error) {
9941005

9951006
return &Stats{
9961007
NginxInfo: *info,
1008+
Processes: *processes,
9971009
Slabs: *slabs,
9981010
Connections: *cons,
9991011
HTTPRequests: *requests,
@@ -1134,6 +1146,16 @@ func (client *NginxClient) getResolvers() (*Resolvers, error) {
11341146
return &resolvers, err
11351147
}
11361148

1149+
func (client *NginxClient) getProcesses() (*Processes, error) {
1150+
var processes Processes
1151+
err := client.get("processes", &processes)
1152+
if err != nil {
1153+
return nil, fmt.Errorf("failed to get processes: %v", err)
1154+
}
1155+
1156+
return &processes, err
1157+
}
1158+
11371159
// KeyValPairs are the key-value pairs stored in a zone.
11381160
type KeyValPairs map[string]string
11391161

0 commit comments

Comments
 (0)