@@ -108,6 +108,7 @@ func (internalError *internalError) Wrap(err string) *internalError {
108108// https://nginx.org/en/docs/http/ngx_http_api_module.html
109109type 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.
376382func 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.
934940func (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.
11381160type KeyValPairs map [string ]string
11391161
0 commit comments