@@ -108,6 +108,7 @@ func (internalError *internalError) Wrap(err string) *internalError {
108
108
// https://nginx.org/en/docs/http/ngx_http_api_module.html
109
109
type Stats struct {
110
110
NginxInfo NginxInfo
111
+ Processes Processes
111
112
Connections Connections
112
113
Slabs Slabs
113
114
HTTPRequests HTTPRequests
@@ -372,6 +373,11 @@ type ResolverResponses struct {
372
373
Unknown int64
373
374
}
374
375
376
+ // Processes represents processes related stats
377
+ type Processes struct {
378
+ Respawned int64 `json:"respawned"`
379
+ }
380
+
375
381
// NewNginxClient creates an NginxClient.
376
382
func NewNginxClient (httpClient * http.Client , apiEndpoint string ) (* NginxClient , error ) {
377
383
versions , err := getAPIVersions (httpClient , apiEndpoint )
@@ -930,13 +936,18 @@ func determineStreamUpdates(updatedServers []StreamUpstreamServer, nginxServers
930
936
return
931
937
}
932
938
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.
934
940
func (client * NginxClient ) GetStats () (* Stats , error ) {
935
941
info , err := client .getNginxInfo ()
936
942
if err != nil {
937
943
return nil , fmt .Errorf ("failed to get stats: %v" , err )
938
944
}
939
945
946
+ processes , err := client .getProcesses ()
947
+ if err != nil {
948
+ return nil , fmt .Errorf ("failed to get stats: %v" , err )
949
+ }
950
+
940
951
slabs , err := client .getSlabs ()
941
952
if err != nil {
942
953
return nil , fmt .Errorf ("failed to get stats: %v" , err )
@@ -994,6 +1005,7 @@ func (client *NginxClient) GetStats() (*Stats, error) {
994
1005
995
1006
return & Stats {
996
1007
NginxInfo : * info ,
1008
+ Processes : * processes ,
997
1009
Slabs : * slabs ,
998
1010
Connections : * cons ,
999
1011
HTTPRequests : * requests ,
@@ -1134,6 +1146,16 @@ func (client *NginxClient) getResolvers() (*Resolvers, error) {
1134
1146
return & resolvers , err
1135
1147
}
1136
1148
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
+
1137
1159
// KeyValPairs are the key-value pairs stored in a zone.
1138
1160
type KeyValPairs map [string ]string
1139
1161
0 commit comments