From d9b96fc66b84166c032eddcc4dff32e4bfec9c77 Mon Sep 17 00:00:00 2001 From: zhangyudi Date: Tue, 19 May 2020 17:04:39 +0800 Subject: [PATCH] update --- src/config/conf.go | 2 ++ src/dao/service_request_record.go | 20 ++++++++++++++++ src/handler/proxyhandler.go | 4 ++-- src/main.go | 4 ++-- src/model/response.go | 3 +++ src/service/field.go | 39 ++++++++++++++++++++++++++++++- src/tools/tool.go | 6 ----- 7 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 src/dao/service_request_record.go diff --git a/src/config/conf.go b/src/config/conf.go index 881c3c1..4f010c6 100644 --- a/src/config/conf.go +++ b/src/config/conf.go @@ -11,6 +11,8 @@ var ( EsHost []string ) +const CallRecord string = "callRecord" + var ProxyConf = struct { MeshId string `json:"meshId"` Url string `json:"url"` diff --git a/src/dao/service_request_record.go b/src/dao/service_request_record.go new file mode 100644 index 0000000..0890265 --- /dev/null +++ b/src/dao/service_request_record.go @@ -0,0 +1,20 @@ +package dao + +import "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools" + +type Service_request_record struct { + Id int `json:"id" xorm:"id"` + Service_id int `json:"service_id" xorm:"service_id"` + Apply_id int `json:"apply_id" xorm:"apply_id"` + User_id string `json:"user_id" xorm:"user_id"` + Request_time tools.JsonTime `json:"request_time" xorm:"request_time created"` + Date_day int `json:"date_day" xorm:"date_day"` + Date_month int `json:"date_month" xorm:"date_month"` + Date_year int `json:"date_year" xorm:"date_year"` + Status int `json:"status" xorm:"status"` + Error string `json:"error" xorm:"error"` +} + +func (s Service_request_record) TableName() string { + return "service_request_record" +} diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index 2828bc4..ae3a482 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -51,7 +51,8 @@ func Proxy(c *gin.Context) { if sensitiveflag == false { res = service.SensitiveFilter(proxyData, res) } - + //调用痕迹进入队列 + service.RecordCall(proxyData, resp.StatusCode, res) Return(res) return nil })) @@ -60,7 +61,6 @@ func Proxy(c *gin.Context) { c.Request.RequestURI = proxyData.RealUrl c.Request.Host = getHost(proxyData.RealUrl) f.ServeHTTP(c.Writer, c.Request) - } func Return(res interface{}) { diff --git a/src/main.go b/src/main.go index c7e69e4..7f7a2af 100644 --- a/src/main.go +++ b/src/main.go @@ -16,9 +16,9 @@ import ( ) var ( - argPort = pflag.Int("port", 8088, "") + argPort = pflag.Int("port", 8011, "") argPrefix = pflag.String("prefix", "/bgmesh/fiddler", "") - redisUrl = pflag.String("redisUrl", "redis://localhost:6333", "") + redisUrl = pflag.String("redisUrl", "redis://localhost:63793", "") redisTag = pflag.String("redisTag", "apaas-mesh-proxy", "") confPath = pflag.String("confPath", "/app/config/proxy.json", "") dbURL = pflag.String("dbURL", "host=localhost port=5432 user=postgres password=passwd123 dbname=apaas sslmode=disable", "") diff --git a/src/model/response.go b/src/model/response.go index af602c9..7897d65 100644 --- a/src/model/response.go +++ b/src/model/response.go @@ -6,4 +6,7 @@ type ProxyData struct { Count int `json:"count" xorm:"count"` Sensituve_word string `json:"sensituve_word" xorm:"sensituve_word"` Sensitive_count int `json:"sensitive_count" xorm:"sensitive_count"` + Apply_id int `json:"apply_id" xorm:"apply_id"` + Service_id int `json:"service_id" xorm:"service_id"` + User_id string `json:"user_id" xorm:"user_id"` } diff --git a/src/service/field.go b/src/service/field.go index 1393978..f2ecf95 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -12,7 +12,10 @@ import ( "errors" "fmt" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/client" + "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/config" + "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/dao" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model" + "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools" "strconv" "time" ) @@ -77,6 +80,40 @@ func GetExpire() time.Duration { return subMin } +//记录调用痕迹 +func RecordCall(proxyData model.ProxyData, status int, res interface{}) { + acc := dao.Service_request_record{} + redis, err := client.GetRedisClient() + if err != nil { + fmt.Println(err.Error()) + return + } + if status != 200 { + acc.Error = string(res.([]byte)) + } + acc.Request_time = tools.JsonTime(time.Now()) + acc.Apply_id = proxyData.Apply_id + acc.User_id = proxyData.User_id + acc.Service_id = proxyData.Service_id + acc.Date_day = time.Now().Day() + fmt.Println(time.Now().Month().String()) + //acc.Date_month,err = strconv.Atoi(time.Now().Month().String()) + //if err!=nil{ + // fmt.Println(err.Error()) + // return + //} + acc.Date_year = time.Now().Year() + acc.Status = status + b, _ := json.Marshal(acc) + if errs := redis.Conn.RPush(config.CallRecord, b).Err(); errs != nil { + err = errs + fmt.Println("rpush data to list failed:", errs.Error()) + return + } + fmt.Println("调用记录进入队列") + return +} + //过滤返回字段 func FiledFilter(proxyData model.ProxyData, respbody []byte) interface{} { model := make(map[string]interface{}) @@ -250,7 +287,7 @@ func GetRealPath(appId string) (res model.ProxyData, err error) { } has, err := db. Select(`service_apply.res_fields as res_fields,service.req_url as req_url,service_request_spcs.count as count,service_safe_config.sensituve_word as sensituve_word -,service_request_spcs.sensitive_count as sensitive_count`). +,service_request_spcs.sensitive_count as sensitive_count,service_apply.service_id as service_id,service_apply.id as apply_id,service_apply.user_id as user_id`). Table(`service`). Join(`left`, `service_apply`, `service_apply.service_id = service.id`). Join(`left`, `service_request_spcs`, `service_request_spcs.id = service_apply.request_spcs_id`). diff --git a/src/tools/tool.go b/src/tools/tool.go index 3f4cd5a..43d961a 100644 --- a/src/tools/tool.go +++ b/src/tools/tool.go @@ -22,9 +22,3 @@ type JsonDate time.Time func (j JsonDate) MarshalJSON() ([]byte, error) { return []byte(`"` + time.Time(j).Format(config.LocalDateFormat) + `"`), nil } - -type JsonTime time.Time - -func (j JsonTime) MarshalJSON() ([]byte, error) { - return []byte(`"` + time.Time(j).Format(conf.LocalDateTimeFormat) + `"`), nil -} -- 2.26.0