@@ -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
379+ }
380+
375381// NewNginxClient creates an NginxClient.
376382func NewNginxClient (httpClient * http.Client , apiEndpoint string ) (* NginxClient , error ) {
377383 versions , err := getAPIVersions (httpClient , apiEndpoint )
@@ -930,70 +936,76 @@ 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 ) {
935- info , err := client .getNginxInfo ()
941+ info , err := client .GetNginxInfo ()
942+ if err != nil {
943+ return nil , fmt .Errorf ("failed to get stats: %v" , err )
944+ }
945+
946+ processes , err := client .GetProcesses ()
936947 if err != nil {
937948 return nil , fmt .Errorf ("failed to get stats: %v" , err )
938949 }
939950
940- slabs , err := client .getSlabs ()
951+ slabs , err := client .GetSlabs ()
941952 if err != nil {
942953 return nil , fmt .Errorf ("failed to get stats: %v" , err )
943954 }
944955
945- cons , err := client .getConnections ()
956+ cons , err := client .GetConnections ()
946957 if err != nil {
947958 return nil , fmt .Errorf ("failed to get stats: %v" , err )
948959 }
949960
950- requests , err := client .getHTTPRequests ()
961+ requests , err := client .GetHTTPRequests ()
951962 if err != nil {
952963 return nil , fmt .Errorf ("Failed to get stats: %v" , err )
953964 }
954965
955- ssl , err := client .getSSL ()
966+ ssl , err := client .GetSSL ()
956967 if err != nil {
957968 return nil , fmt .Errorf ("failed to get stats: %v" , err )
958969 }
959970
960- zones , err := client .getServerZones ()
971+ zones , err := client .GetServerZones ()
961972 if err != nil {
962973 return nil , fmt .Errorf ("failed to get stats: %v" , err )
963974 }
964975
965- upstreams , err := client .getUpstreams ()
976+ upstreams , err := client .GetUpstreams ()
966977 if err != nil {
967978 return nil , fmt .Errorf ("failed to get stats: %v" , err )
968979 }
969980
970- streamZones , err := client .getStreamServerZones ()
981+ streamZones , err := client .GetStreamServerZones ()
971982 if err != nil {
972983 return nil , fmt .Errorf ("failed to get stats: %v" , err )
973984 }
974985
975- streamUpstreams , err := client .getStreamUpstreams ()
986+ streamUpstreams , err := client .GetStreamUpstreams ()
976987 if err != nil {
977988 return nil , fmt .Errorf ("failed to get stats: %v" , err )
978989 }
979990
980- streamZoneSync , err := client .getStreamZoneSync ()
991+ streamZoneSync , err := client .GetStreamZoneSync ()
981992 if err != nil {
982993 return nil , fmt .Errorf ("failed to get stats: %v" , err )
983994 }
984995
985- locationZones , err := client .getLocationZones ()
996+ locationZones , err := client .GetLocationZones ()
986997 if err != nil {
987998 return nil , fmt .Errorf ("failed to get stats: %v" , err )
988999 }
9891000
990- resolvers , err := client .getResolvers ()
1001+ resolvers , err := client .GetResolvers ()
9911002 if err != nil {
9921003 return nil , fmt .Errorf ("failed to get stats: %v" , err )
9931004 }
9941005
9951006 return & Stats {
9961007 NginxInfo : * info ,
1008+ Processes : * processes ,
9971009 Slabs : * slabs ,
9981010 Connections : * cons ,
9991011 HTTPRequests : * requests ,
@@ -1008,7 +1020,8 @@ func (client *NginxClient) GetStats() (*Stats, error) {
10081020 }, nil
10091021}
10101022
1011- func (client * NginxClient ) getNginxInfo () (* NginxInfo , error ) {
1023+ // GetNginxInfo returns Nginx stats.
1024+ func (client * NginxClient ) GetNginxInfo () (* NginxInfo , error ) {
10121025 var info NginxInfo
10131026 err := client .get ("nginx" , & info )
10141027 if err != nil {
@@ -1017,7 +1030,8 @@ func (client *NginxClient) getNginxInfo() (*NginxInfo, error) {
10171030 return & info , nil
10181031}
10191032
1020- func (client * NginxClient ) getSlabs () (* Slabs , error ) {
1033+ // GetSlabs returns Slabs stats.
1034+ func (client * NginxClient ) GetSlabs () (* Slabs , error ) {
10211035 var slabs Slabs
10221036 err := client .get ("slabs" , & slabs )
10231037 if err != nil {
@@ -1026,7 +1040,8 @@ func (client *NginxClient) getSlabs() (*Slabs, error) {
10261040 return & slabs , nil
10271041}
10281042
1029- func (client * NginxClient ) getConnections () (* Connections , error ) {
1043+ // GetConnections returns Connections stats.
1044+ func (client * NginxClient ) GetConnections () (* Connections , error ) {
10301045 var cons Connections
10311046 err := client .get ("connections" , & cons )
10321047 if err != nil {
@@ -1035,7 +1050,8 @@ func (client *NginxClient) getConnections() (*Connections, error) {
10351050 return & cons , nil
10361051}
10371052
1038- func (client * NginxClient ) getHTTPRequests () (* HTTPRequests , error ) {
1053+ // GetHTTPRequests returns http/requests stats.
1054+ func (client * NginxClient ) GetHTTPRequests () (* HTTPRequests , error ) {
10391055 var requests HTTPRequests
10401056 err := client .get ("http/requests" , & requests )
10411057 if err != nil {
@@ -1044,7 +1060,8 @@ func (client *NginxClient) getHTTPRequests() (*HTTPRequests, error) {
10441060 return & requests , nil
10451061}
10461062
1047- func (client * NginxClient ) getSSL () (* SSL , error ) {
1063+ // GetSSL returns SSL stats.
1064+ func (client * NginxClient ) GetSSL () (* SSL , error ) {
10481065 var ssl SSL
10491066 err := client .get ("ssl" , & ssl )
10501067 if err != nil {
@@ -1053,7 +1070,8 @@ func (client *NginxClient) getSSL() (*SSL, error) {
10531070 return & ssl , nil
10541071}
10551072
1056- func (client * NginxClient ) getServerZones () (* ServerZones , error ) {
1073+ // GetServerZones returns http/server_zones stats.
1074+ func (client * NginxClient ) GetServerZones () (* ServerZones , error ) {
10571075 var zones ServerZones
10581076 err := client .get ("http/server_zones" , & zones )
10591077 if err != nil {
@@ -1062,7 +1080,8 @@ func (client *NginxClient) getServerZones() (*ServerZones, error) {
10621080 return & zones , err
10631081}
10641082
1065- func (client * NginxClient ) getStreamServerZones () (* StreamServerZones , error ) {
1083+ // GetStreamServerZones returns stream/server_zones stats.
1084+ func (client * NginxClient ) GetStreamServerZones () (* StreamServerZones , error ) {
10661085 var zones StreamServerZones
10671086 err := client .get ("stream/server_zones" , & zones )
10681087 if err != nil {
@@ -1076,7 +1095,8 @@ func (client *NginxClient) getStreamServerZones() (*StreamServerZones, error) {
10761095 return & zones , err
10771096}
10781097
1079- func (client * NginxClient ) getUpstreams () (* Upstreams , error ) {
1098+ // GetUpstreams returns http/upstreams stats.
1099+ func (client * NginxClient ) GetUpstreams () (* Upstreams , error ) {
10801100 var upstreams Upstreams
10811101 err := client .get ("http/upstreams" , & upstreams )
10821102 if err != nil {
@@ -1085,7 +1105,8 @@ func (client *NginxClient) getUpstreams() (*Upstreams, error) {
10851105 return & upstreams , nil
10861106}
10871107
1088- func (client * NginxClient ) getStreamUpstreams () (* StreamUpstreams , error ) {
1108+ // GetStreamUpstreams returns stream/upstreams stats.
1109+ func (client * NginxClient ) GetStreamUpstreams () (* StreamUpstreams , error ) {
10891110 var upstreams StreamUpstreams
10901111 err := client .get ("stream/upstreams" , & upstreams )
10911112 if err != nil {
@@ -1099,7 +1120,8 @@ func (client *NginxClient) getStreamUpstreams() (*StreamUpstreams, error) {
10991120 return & upstreams , nil
11001121}
11011122
1102- func (client * NginxClient ) getStreamZoneSync () (* StreamZoneSync , error ) {
1123+ // GetStreamZoneSync returns stream/zone_sync stats.
1124+ func (client * NginxClient ) GetStreamZoneSync () (* StreamZoneSync , error ) {
11031125 var streamZoneSync StreamZoneSync
11041126 err := client .get ("stream/zone_sync" , & streamZoneSync )
11051127 if err != nil {
@@ -1114,7 +1136,8 @@ func (client *NginxClient) getStreamZoneSync() (*StreamZoneSync, error) {
11141136 return & streamZoneSync , err
11151137}
11161138
1117- func (client * NginxClient ) getLocationZones () (* LocationZones , error ) {
1139+ // GetLocationZones returns http/location_zones stats.
1140+ func (client * NginxClient ) GetLocationZones () (* LocationZones , error ) {
11181141 var locationZones LocationZones
11191142 err := client .get ("http/location_zones" , & locationZones )
11201143 if err != nil {
@@ -1124,7 +1147,8 @@ func (client *NginxClient) getLocationZones() (*LocationZones, error) {
11241147 return & locationZones , err
11251148}
11261149
1127- func (client * NginxClient ) getResolvers () (* Resolvers , error ) {
1150+ // GetResolvers returns Resolvers stats.
1151+ func (client * NginxClient ) GetResolvers () (* Resolvers , error ) {
11281152 var resolvers Resolvers
11291153 err := client .get ("resolvers" , & resolvers )
11301154 if err != nil {
@@ -1134,6 +1158,17 @@ func (client *NginxClient) getResolvers() (*Resolvers, error) {
11341158 return & resolvers , err
11351159}
11361160
1161+ // GetProcesses returns Processes stats.
1162+ func (client * NginxClient ) GetProcesses () (* Processes , error ) {
1163+ var processes Processes
1164+ err := client .get ("processes" , & processes )
1165+ if err != nil {
1166+ return nil , fmt .Errorf ("failed to get processes: %v" , err )
1167+ }
1168+
1169+ return & processes , err
1170+ }
1171+
11371172// KeyValPairs are the key-value pairs stored in a zone.
11381173type KeyValPairs map [string ]string
11391174
0 commit comments