Skip to content

Commit e11aefd

Browse files
Alex ShchukinAlexander Shchukin
Alex Shchukin
authored and
Alexander Shchukin
committed
add functionality to get /processes, export funcs
1 parent 39ed7a7 commit e11aefd

File tree

1 file changed

+60
-25
lines changed

1 file changed

+60
-25
lines changed

client/nginx.go

Lines changed: 60 additions & 25 deletions
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
379+
}
380+
375381
// NewNginxClient creates an NginxClient.
376382
func 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.
934940
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()
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.
11381173
type KeyValPairs map[string]string
11391174

0 commit comments

Comments
 (0)