Skip to content

Commit e7f2bfc

Browse files
authored
refactor:statis log add traffic direction info (polarismesh#1232)
1 parent 4df963a commit e7f2bfc

File tree

128 files changed

+5029
-5069
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+5029
-5069
lines changed

.github/workflows/benchmark.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
- name: Setup Go
6565
uses: actions/setup-go@v4
6666
with:
67-
go-version: "1.20"
67+
go-version:
6868
# Checkout latest code
6969
- name: Checkout repo
7070
uses: actions/checkout@v2

README-zh.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ README:
3131

3232
**功能**
3333

34-
- 服务管理:服务发现、服务发现、健康检查
34+
- 服务管理:服务注册、服务发现、健康检查
3535
- 流量控制:可自定义的流量路由、负载均衡、限频限流、访问控制
3636
- 故障容错:服务和接口熔断和降级、实例熔断和切换
3737
- 配置管理:版本管理、灰度发布、动态更新

apiserver/grpcserver/base_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -149,16 +149,17 @@ func TestGetClientOpenMethod(t *testing.T) {
149149
wantErr: false,
150150
},
151151
{
152-
name: "case=1",
152+
name: "case=2",
153153
args: args{
154154
include: []string{
155155
apiserver.DiscoverAccess,
156156
},
157157
protocol: "grpc",
158158
},
159159
want: map[string]bool{
160-
"/v1.PolarisGRPC/Discover": true,
161-
"/v1.PolarisGRPC/ReportClient": true,
160+
"/v1.PolarisGRPC/Discover": true,
161+
"/v1.PolarisGRPC/ReportClient": true,
162+
"/v1.PolarisServiceContractGRPC/ReportServiceContract": true,
162163
},
163164
wantErr: false,
164165
},

apiserver/grpcserver/config/client_access.go

+31-2
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,34 @@ package config
1919

2020
import (
2121
"context"
22+
"fmt"
2223

2324
apiconfig "github.com/polarismesh/specification/source/go/api/v1/config_manage"
2425

2526
"github.com/polarismesh/polaris/apiserver/grpcserver"
27+
"github.com/polarismesh/polaris/common/metrics"
28+
commontime "github.com/polarismesh/polaris/common/time"
29+
"github.com/polarismesh/polaris/common/utils"
30+
"github.com/polarismesh/polaris/plugin"
2631
)
2732

2833
// GetConfigFile 拉取配置
2934
func (g *ConfigGRPCServer) GetConfigFile(ctx context.Context,
30-
configFile *apiconfig.ClientConfigFileInfo) (*apiconfig.ConfigClientResponse, error) {
35+
req *apiconfig.ClientConfigFileInfo) (*apiconfig.ConfigClientResponse, error) {
3136
ctx = grpcserver.ConvertContext(ctx)
32-
response := g.configServer.GetConfigFileForClient(ctx, configFile)
37+
38+
startTime := commontime.CurrentMillisecond()
39+
defer func() {
40+
plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{
41+
ClientIP: utils.ParseClientAddress(ctx),
42+
Namespace: req.GetNamespace().GetValue(),
43+
Resource: fmt.Sprintf("CONFIG_FILE:%s|%s|%d", req.GetGroup().GetValue(),
44+
req.GetFileName().GetValue(), req.GetVersion().GetValue()),
45+
Timestamp: startTime,
46+
CostTime: commontime.CurrentMillisecond() - startTime,
47+
})
48+
}()
49+
response := g.configServer.GetConfigFileForClient(ctx, req)
3350
return response, nil
3451
}
3552

@@ -73,6 +90,18 @@ func (g *ConfigGRPCServer) WatchConfigFiles(ctx context.Context,
7390
func (g *ConfigGRPCServer) GetConfigFileMetadataList(ctx context.Context,
7491
req *apiconfig.ConfigFileGroupRequest) (*apiconfig.ConfigClientListResponse, error) {
7592

93+
startTime := commontime.CurrentMillisecond()
94+
defer func() {
95+
plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{
96+
ClientIP: utils.ParseClientAddress(ctx),
97+
Namespace: req.GetConfigFileGroup().GetNamespace().GetValue(),
98+
Resource: fmt.Sprintf("CONFIG_FILE_LIST:%s|%s", req.GetConfigFileGroup().GetName().GetValue(),
99+
req.GetRevision().GetValue()),
100+
Timestamp: startTime,
101+
CostTime: commontime.CurrentMillisecond() - startTime,
102+
})
103+
}()
104+
76105
ctx = grpcserver.ConvertContext(ctx)
77106
return g.configServer.GetConfigFileNamesWithCache(ctx, req), nil
78107
}

apiserver/grpcserver/discover/v1/client_access.go

+17-3
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,14 @@ import (
3333
"github.com/polarismesh/polaris/apiserver/grpcserver"
3434
api "github.com/polarismesh/polaris/common/api/v1"
3535
commonlog "github.com/polarismesh/polaris/common/log"
36+
"github.com/polarismesh/polaris/common/metrics"
37+
commontime "github.com/polarismesh/polaris/common/time"
3638
"github.com/polarismesh/polaris/common/utils"
39+
"github.com/polarismesh/polaris/plugin"
3740
)
3841

3942
var (
40-
namingLog = commonlog.GetScopeOrDefaultByName(commonlog.NamingLoggerName)
43+
accesslog = commonlog.GetScopeOrDefaultByName(commonlog.APIServerLoggerName)
4144
)
4245

4346
// ReportClient 客户端上报
@@ -101,7 +104,7 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer)
101104
}
102105

103106
msg := fmt.Sprintf("receive grpc discover request: %s", in.Service.String())
104-
namingLog.Info(msg,
107+
accesslog.Info(msg,
105108
zap.String("type", apiservice.DiscoverRequest_DiscoverRequestType_name[int32(in.Type)]),
106109
zap.String("client-address", clientAddress),
107110
zap.String("user-agent", userAgent),
@@ -126,10 +129,21 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer)
126129
continue
127130
}
128131

132+
startTime := commontime.CurrentMillisecond()
133+
defer func() {
134+
plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{
135+
ClientIP: utils.ParseClientAddress(ctx),
136+
Namespace: in.GetService().GetNamespace().GetValue(),
137+
Resource: in.Type.String() + ":" + in.GetService().GetName().GetValue(),
138+
Timestamp: startTime,
139+
CostTime: commontime.CurrentMillisecond() - startTime,
140+
})
141+
}()
142+
129143
var out *apiservice.DiscoverResponse
130144
switch in.Type {
131145
case apiservice.DiscoverRequest_INSTANCE:
132-
out = g.namingServer.ServiceInstancesCache(ctx, in.Service)
146+
out = g.namingServer.ServiceInstancesCache(ctx, &apiservice.DiscoverFilter{}, in.Service)
133147
case apiservice.DiscoverRequest_ROUTING:
134148
out = g.namingServer.GetRoutingConfigWithCache(ctx, in.Service)
135149
case apiservice.DiscoverRequest_RATE_LIMIT:

apiserver/grpcserver/utils/help.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
// GetClientOpenMethod 获取客户端openMethod
3131
func GetClientOpenMethod(include []string, protocol string) (map[string]bool, error) {
3232
clientAccess := make(map[string][]string)
33-
clientAccess[apiserver.DiscoverAccess] = []string{"Discover", "ReportClient"}
33+
clientAccess[apiserver.DiscoverAccess] = []string{"Discover", "ReportClient", "ReportServiceContract"}
3434
clientAccess[apiserver.RegisterAccess] = []string{"RegisterInstance", "DeregisterInstance"}
3535
clientAccess[apiserver.HealthcheckAccess] = []string{"Heartbeat", "BatchHeartbeat", "BatchGetHeartbeat", "BatchDelHeartbeat"}
3636

@@ -49,6 +49,9 @@ func GetClientOpenMethod(include []string, protocol string) (map[string]bool, er
4949
if item == apiserver.HealthcheckAccess && method != "Heartbeat" {
5050
recordMethod = "/v1.PolarisHeartbeat" + strings.ToUpper(protocol) + "/" + method
5151
}
52+
if method == "ReportServiceContract" {
53+
recordMethod = "/v1.PolarisServiceContract" + strings.ToUpper(protocol) + "/" + method
54+
}
5255
openMethod[recordMethod] = true
5356
}
5457
} else {

apiserver/httpserver/config/client_access.go

+32-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package config
1919

2020
import (
21+
"fmt"
2122
"strconv"
2223

2324
"github.com/emicklei/go-restful/v3"
@@ -27,6 +28,10 @@ import (
2728

2829
httpcommon "github.com/polarismesh/polaris/apiserver/httpserver/utils"
2930
api "github.com/polarismesh/polaris/common/api/v1"
31+
"github.com/polarismesh/polaris/common/metrics"
32+
commontime "github.com/polarismesh/polaris/common/time"
33+
"github.com/polarismesh/polaris/common/utils"
34+
"github.com/polarismesh/polaris/plugin"
3035
)
3136

3237
func (h *HTTPServer) ClientGetConfigFile(req *restful.Request, rsp *restful.Response) {
@@ -43,7 +48,20 @@ func (h *HTTPServer) ClientGetConfigFile(req *restful.Request, rsp *restful.Resp
4348
Version: &wrapperspb.UInt64Value{Value: version},
4449
}
4550

46-
response := h.configServer.GetConfigFileForClient(handler.ParseHeaderContext(), configFile)
51+
ctx := handler.ParseHeaderContext()
52+
startTime := commontime.CurrentMillisecond()
53+
defer func() {
54+
plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{
55+
ClientIP: utils.ParseClientAddress(ctx),
56+
Namespace: configFile.GetNamespace().GetValue(),
57+
Resource: fmt.Sprintf("CONFIG_FILE:%s|%s|%d", configFile.GetGroup().GetValue(),
58+
configFile.GetFileName().GetValue(), version),
59+
Timestamp: startTime,
60+
CostTime: commontime.CurrentMillisecond() - startTime,
61+
})
62+
}()
63+
64+
response := h.configServer.GetConfigFileForClient(ctx, configFile)
4765
handler.WriteHeaderAndProto(response)
4866
}
4967

@@ -82,6 +100,19 @@ func (h *HTTPServer) GetConfigFileMetadataList(req *restful.Request, rsp *restfu
82100
handler.WriteHeaderAndProto(api.NewResponseWithMsg(apimodel.Code_ParseException, err.Error()))
83101
return
84102
}
103+
104+
startTime := commontime.CurrentMillisecond()
105+
defer func() {
106+
plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{
107+
ClientIP: utils.ParseClientAddress(ctx),
108+
Namespace: in.GetConfigFileGroup().GetNamespace().GetValue(),
109+
Resource: fmt.Sprintf("CONFIG_FILE_LIST:%s|%s", in.GetConfigFileGroup().GetName().GetValue(),
110+
in.GetRevision().GetValue()),
111+
Timestamp: startTime,
112+
CostTime: commontime.CurrentMillisecond() - startTime,
113+
})
114+
}()
115+
85116
out := h.configServer.GetConfigFileNamesWithCache(ctx, in)
86117
handler.WriteHeaderAndProto(out)
87118
}

apiserver/httpserver/discover/v1/client_access.go

+14-10
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,17 @@ package v1
1919

2020
import (
2121
"context"
22-
"fmt"
2322

2423
"github.com/emicklei/go-restful/v3"
2524
apimodel "github.com/polarismesh/specification/source/go/api/v1/model"
2625
apiservice "github.com/polarismesh/specification/source/go/api/v1/service_manage"
27-
"go.uber.org/zap"
2826

2927
httpcommon "github.com/polarismesh/polaris/apiserver/httpserver/utils"
3028
api "github.com/polarismesh/polaris/common/api/v1"
29+
"github.com/polarismesh/polaris/common/metrics"
30+
commontime "github.com/polarismesh/polaris/common/time"
3131
"github.com/polarismesh/polaris/common/utils"
32+
"github.com/polarismesh/polaris/plugin"
3233
)
3334

3435
// ReportClient 客户端上报信息
@@ -102,18 +103,21 @@ func (h *HTTPServerV1) Discover(req *restful.Request, rsp *restful.Response) {
102103
return
103104
}
104105

105-
msg := fmt.Sprintf("receive http discover request: %s", discoverRequest.Service.String())
106-
namingLog.Info(msg,
107-
zap.String("type", apiservice.DiscoverRequest_DiscoverRequestType_name[int32(discoverRequest.Type)]),
108-
zap.String("client-address", req.Request.RemoteAddr),
109-
zap.String("user-agent", req.HeaderParameter("User-Agent")),
110-
utils.ZapRequestID(req.HeaderParameter("Request-Id")),
111-
)
106+
startTime := commontime.CurrentMillisecond()
107+
defer func() {
108+
plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{
109+
ClientIP: utils.ParseClientAddress(ctx),
110+
Namespace: discoverRequest.GetService().GetNamespace().GetValue(),
111+
Resource: discoverRequest.Type.String() + ":" + discoverRequest.GetService().GetName().GetValue(),
112+
Timestamp: startTime,
113+
CostTime: commontime.CurrentMillisecond() - startTime,
114+
})
115+
}()
112116

113117
var ret *apiservice.DiscoverResponse
114118
switch discoverRequest.Type {
115119
case apiservice.DiscoverRequest_INSTANCE:
116-
ret = h.namingServer.ServiceInstancesCache(ctx, discoverRequest.Service)
120+
ret = h.namingServer.ServiceInstancesCache(ctx, discoverRequest.Filter, discoverRequest.Service)
117121
case apiservice.DiscoverRequest_ROUTING:
118122
ret = h.namingServer.GetRoutingConfigWithCache(ctx, discoverRequest.Service)
119123
case apiservice.DiscoverRequest_RATE_LIMIT:

0 commit comments

Comments
 (0)