@@ -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
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,70 +936,76 @@ 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
- 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 ()
936
947
if err != nil {
937
948
return nil , fmt .Errorf ("failed to get stats: %v" , err )
938
949
}
939
950
940
- slabs , err := client .getSlabs ()
951
+ slabs , err := client .GetSlabs ()
941
952
if err != nil {
942
953
return nil , fmt .Errorf ("failed to get stats: %v" , err )
943
954
}
944
955
945
- cons , err := client .getConnections ()
956
+ cons , err := client .GetConnections ()
946
957
if err != nil {
947
958
return nil , fmt .Errorf ("failed to get stats: %v" , err )
948
959
}
949
960
950
- requests , err := client .getHTTPRequests ()
961
+ requests , err := client .GetHTTPRequests ()
951
962
if err != nil {
952
963
return nil , fmt .Errorf ("Failed to get stats: %v" , err )
953
964
}
954
965
955
- ssl , err := client .getSSL ()
966
+ ssl , err := client .GetSSL ()
956
967
if err != nil {
957
968
return nil , fmt .Errorf ("failed to get stats: %v" , err )
958
969
}
959
970
960
- zones , err := client .getServerZones ()
971
+ zones , err := client .GetServerZones ()
961
972
if err != nil {
962
973
return nil , fmt .Errorf ("failed to get stats: %v" , err )
963
974
}
964
975
965
- upstreams , err := client .getUpstreams ()
976
+ upstreams , err := client .GetUpstreams ()
966
977
if err != nil {
967
978
return nil , fmt .Errorf ("failed to get stats: %v" , err )
968
979
}
969
980
970
- streamZones , err := client .getStreamServerZones ()
981
+ streamZones , err := client .GetStreamServerZones ()
971
982
if err != nil {
972
983
return nil , fmt .Errorf ("failed to get stats: %v" , err )
973
984
}
974
985
975
- streamUpstreams , err := client .getStreamUpstreams ()
986
+ streamUpstreams , err := client .GetStreamUpstreams ()
976
987
if err != nil {
977
988
return nil , fmt .Errorf ("failed to get stats: %v" , err )
978
989
}
979
990
980
- streamZoneSync , err := client .getStreamZoneSync ()
991
+ streamZoneSync , err := client .GetStreamZoneSync ()
981
992
if err != nil {
982
993
return nil , fmt .Errorf ("failed to get stats: %v" , err )
983
994
}
984
995
985
- locationZones , err := client .getLocationZones ()
996
+ locationZones , err := client .GetLocationZones ()
986
997
if err != nil {
987
998
return nil , fmt .Errorf ("failed to get stats: %v" , err )
988
999
}
989
1000
990
- resolvers , err := client .getResolvers ()
1001
+ resolvers , err := client .GetResolvers ()
991
1002
if err != nil {
992
1003
return nil , fmt .Errorf ("failed to get stats: %v" , err )
993
1004
}
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 ,
@@ -1008,7 +1020,8 @@ func (client *NginxClient) GetStats() (*Stats, error) {
1008
1020
}, nil
1009
1021
}
1010
1022
1011
- func (client * NginxClient ) getNginxInfo () (* NginxInfo , error ) {
1023
+ // GetNginxInfo returns Nginx stats.
1024
+ func (client * NginxClient ) GetNginxInfo () (* NginxInfo , error ) {
1012
1025
var info NginxInfo
1013
1026
err := client .get ("nginx" , & info )
1014
1027
if err != nil {
@@ -1017,7 +1030,8 @@ func (client *NginxClient) getNginxInfo() (*NginxInfo, error) {
1017
1030
return & info , nil
1018
1031
}
1019
1032
1020
- func (client * NginxClient ) getSlabs () (* Slabs , error ) {
1033
+ // GetSlabs returns Slabs stats.
1034
+ func (client * NginxClient ) GetSlabs () (* Slabs , error ) {
1021
1035
var slabs Slabs
1022
1036
err := client .get ("slabs" , & slabs )
1023
1037
if err != nil {
@@ -1026,7 +1040,8 @@ func (client *NginxClient) getSlabs() (*Slabs, error) {
1026
1040
return & slabs , nil
1027
1041
}
1028
1042
1029
- func (client * NginxClient ) getConnections () (* Connections , error ) {
1043
+ // GetConnections returns Connections stats.
1044
+ func (client * NginxClient ) GetConnections () (* Connections , error ) {
1030
1045
var cons Connections
1031
1046
err := client .get ("connections" , & cons )
1032
1047
if err != nil {
@@ -1035,7 +1050,8 @@ func (client *NginxClient) getConnections() (*Connections, error) {
1035
1050
return & cons , nil
1036
1051
}
1037
1052
1038
- func (client * NginxClient ) getHTTPRequests () (* HTTPRequests , error ) {
1053
+ // GetHTTPRequests returns http/requests stats.
1054
+ func (client * NginxClient ) GetHTTPRequests () (* HTTPRequests , error ) {
1039
1055
var requests HTTPRequests
1040
1056
err := client .get ("http/requests" , & requests )
1041
1057
if err != nil {
@@ -1044,7 +1060,8 @@ func (client *NginxClient) getHTTPRequests() (*HTTPRequests, error) {
1044
1060
return & requests , nil
1045
1061
}
1046
1062
1047
- func (client * NginxClient ) getSSL () (* SSL , error ) {
1063
+ // GetSSL returns SSL stats.
1064
+ func (client * NginxClient ) GetSSL () (* SSL , error ) {
1048
1065
var ssl SSL
1049
1066
err := client .get ("ssl" , & ssl )
1050
1067
if err != nil {
@@ -1053,7 +1070,8 @@ func (client *NginxClient) getSSL() (*SSL, error) {
1053
1070
return & ssl , nil
1054
1071
}
1055
1072
1056
- func (client * NginxClient ) getServerZones () (* ServerZones , error ) {
1073
+ // GetServerZones returns http/server_zones stats.
1074
+ func (client * NginxClient ) GetServerZones () (* ServerZones , error ) {
1057
1075
var zones ServerZones
1058
1076
err := client .get ("http/server_zones" , & zones )
1059
1077
if err != nil {
@@ -1062,7 +1080,8 @@ func (client *NginxClient) getServerZones() (*ServerZones, error) {
1062
1080
return & zones , err
1063
1081
}
1064
1082
1065
- func (client * NginxClient ) getStreamServerZones () (* StreamServerZones , error ) {
1083
+ // GetStreamServerZones returns stream/server_zones stats.
1084
+ func (client * NginxClient ) GetStreamServerZones () (* StreamServerZones , error ) {
1066
1085
var zones StreamServerZones
1067
1086
err := client .get ("stream/server_zones" , & zones )
1068
1087
if err != nil {
@@ -1076,7 +1095,8 @@ func (client *NginxClient) getStreamServerZones() (*StreamServerZones, error) {
1076
1095
return & zones , err
1077
1096
}
1078
1097
1079
- func (client * NginxClient ) getUpstreams () (* Upstreams , error ) {
1098
+ // GetUpstreams returns http/upstreams stats.
1099
+ func (client * NginxClient ) GetUpstreams () (* Upstreams , error ) {
1080
1100
var upstreams Upstreams
1081
1101
err := client .get ("http/upstreams" , & upstreams )
1082
1102
if err != nil {
@@ -1085,7 +1105,8 @@ func (client *NginxClient) getUpstreams() (*Upstreams, error) {
1085
1105
return & upstreams , nil
1086
1106
}
1087
1107
1088
- func (client * NginxClient ) getStreamUpstreams () (* StreamUpstreams , error ) {
1108
+ // GetStreamUpstreams returns stream/upstreams stats.
1109
+ func (client * NginxClient ) GetStreamUpstreams () (* StreamUpstreams , error ) {
1089
1110
var upstreams StreamUpstreams
1090
1111
err := client .get ("stream/upstreams" , & upstreams )
1091
1112
if err != nil {
@@ -1099,7 +1120,8 @@ func (client *NginxClient) getStreamUpstreams() (*StreamUpstreams, error) {
1099
1120
return & upstreams , nil
1100
1121
}
1101
1122
1102
- func (client * NginxClient ) getStreamZoneSync () (* StreamZoneSync , error ) {
1123
+ // GetStreamZoneSync returns stream/zone_sync stats.
1124
+ func (client * NginxClient ) GetStreamZoneSync () (* StreamZoneSync , error ) {
1103
1125
var streamZoneSync StreamZoneSync
1104
1126
err := client .get ("stream/zone_sync" , & streamZoneSync )
1105
1127
if err != nil {
@@ -1114,7 +1136,8 @@ func (client *NginxClient) getStreamZoneSync() (*StreamZoneSync, error) {
1114
1136
return & streamZoneSync , err
1115
1137
}
1116
1138
1117
- func (client * NginxClient ) getLocationZones () (* LocationZones , error ) {
1139
+ // GetLocationZones returns http/location_zones stats.
1140
+ func (client * NginxClient ) GetLocationZones () (* LocationZones , error ) {
1118
1141
var locationZones LocationZones
1119
1142
err := client .get ("http/location_zones" , & locationZones )
1120
1143
if err != nil {
@@ -1124,7 +1147,8 @@ func (client *NginxClient) getLocationZones() (*LocationZones, error) {
1124
1147
return & locationZones , err
1125
1148
}
1126
1149
1127
- func (client * NginxClient ) getResolvers () (* Resolvers , error ) {
1150
+ // GetResolvers returns Resolvers stats.
1151
+ func (client * NginxClient ) GetResolvers () (* Resolvers , error ) {
1128
1152
var resolvers Resolvers
1129
1153
err := client .get ("resolvers" , & resolvers )
1130
1154
if err != nil {
@@ -1134,6 +1158,17 @@ func (client *NginxClient) getResolvers() (*Resolvers, error) {
1134
1158
return & resolvers , err
1135
1159
}
1136
1160
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
+
1137
1172
// KeyValPairs are the key-value pairs stored in a zone.
1138
1173
type KeyValPairs map [string ]string
1139
1174
0 commit comments