diff --git a/log-driver/loki/loki.go b/log-driver/loki/loki.go index c79cefd4..9f490fbc 100644 --- a/log-driver/loki/loki.go +++ b/log-driver/loki/loki.go @@ -11,6 +11,8 @@ import ( "strings" "time" + "github.com/eolinker/eosc/log" + log_driver "github.com/APIParkLab/APIPark/log-driver" ) @@ -69,6 +71,8 @@ func (d *Driver) LogInfo(clusterId string, id string) (*log_driver.LogInfo, erro queries.Set("start", strconv.FormatInt(start.UnixNano(), 10)) queries.Set("end", strconv.FormatInt(now.UnixNano(), 10)) queries.Set("limit", "1") + log.Debug("query is ", queries.Get("query")) + list, err := send[LogInfo](http.MethodGet, fmt.Sprintf("%s/loki/api/v1/query_range", d.url), d.headers, queries, "") if err != nil { return nil, err @@ -103,10 +107,13 @@ func (d *Driver) LogCount(clusterId string, conditions map[string]string, spendH } queries := url.Values{} queries.Set("query", fmt.Sprintf("sum(count_over_time({cluster=\"%s\"} | json %s [%dh])) by (%s)", clusterId, tmpCondition, spendHour, group)) + sendRequestTime := time.Now() list, err := send[LogCount](http.MethodGet, fmt.Sprintf("%s/loki/api/v1/query", d.url), d.headers, queries, "") if err != nil { return nil, err } + log.DebugF("send request spend time: %v", time.Now().Sub(sendRequestTime)) + log.Debug("query is ", queries.Get("query")) result := make(map[string]int64) for _, l := range list { if len(l.Value) != 2 { @@ -161,6 +168,7 @@ func (d *Driver) Logs(clusterId string, conditions map[string]string, start time queries.Set("limit", strconv.FormatInt(limit, 10)) queries.Set("direction", "backward") queries.Set("start", strconv.FormatInt(start.UnixNano(), 10)) + log.Debug("query is ", queries.Get("query")) logs, err := d.recuseLogs(queries, end, offset) if err != nil { return nil, 0, err @@ -262,10 +270,13 @@ func send[T any](method string, uri string, headers map[string]string, queries u for key, value := range headers { req.Header.Set(key, value) } + log.DebugF("do request: %s", uri) + doRequestTime := time.Now() resp, err := client.Do(req) if err != nil { return nil, fmt.Errorf("failed to send request: %w", err) } + log.DebugF("do request spend time: %v", time.Now().Sub(doRequestTime)) defer resp.Body.Close() respData, err := io.ReadAll(resp.Body) if err != nil { diff --git a/module/application-authorization/iml.go b/module/application-authorization/iml.go index c872e3f5..9a42ec07 100644 --- a/module/application-authorization/iml.go +++ b/module/application-authorization/iml.go @@ -99,6 +99,9 @@ func (i *imlAuthorizationModule) getApplications(ctx context.Context, appIds []s Expire: a.ExpireTime, Config: authCfg, HideCredential: a.HideCredential, + Label: map[string]string{ + "authorization": a.UUID, + }, } }), } diff --git a/module/log/iml.go b/module/log/iml.go index 96a8daee..6f21b7cb 100644 --- a/module/log/iml.go +++ b/module/log/iml.go @@ -20,6 +20,7 @@ import ( log_dto "github.com/APIParkLab/APIPark/module/log/dto" "github.com/APIParkLab/APIPark/service/log" + log_print "github.com/eolinker/eosc/log" ) var _ ILogModule = (*imlLogModule)(nil) @@ -116,6 +117,8 @@ func (i *imlLogModule) Save(ctx context.Context, driver string, input *log_dto.S attr["formatter"] = logFormatter attr["labels"] = labels attr["method"] = "POST" + attr["scopes"] = []string{"access_log"} + attr["type"] = "json" for k, v := range c { attr[k] = v } @@ -161,6 +164,32 @@ func (i *imlLogModule) Get(ctx context.Context, driver string) (*log_dto.LogSour }, nil } +func (i *imlLogModule) OnComplete() { + drivers := log_driver.Drivers() + if len(drivers) < 1 { + return + } + ctx := context.Background() + for _, driver := range drivers { + factory, has := log_driver.GetFactory(driver) + if !has { + log_print.Errorf("driver %s not found", driver) + continue + } + info, err := i.service.GetLogSource(ctx, driver) + if err != nil { + log_print.Errorf("get log source %s error: %s", driver, err) + continue + } + d, _, err := factory.Create(info.Config) + if err != nil { + log_print.Errorf("create driver %s error: %s,config: %s", driver, err, info.Config) + continue + } + log_driver.SetDriver(driver, d) + } +} + func (i *imlLogModule) initGateway(ctx context.Context, clusterId string, clientDriver gateway.IClientDriver) error { drivers := log_driver.Drivers() if len(drivers) < 1 { @@ -170,19 +199,23 @@ func (i *imlLogModule) initGateway(ctx context.Context, clusterId string, client for _, driver := range drivers { factory, has := log_driver.GetFactory(driver) if !has { + log_print.Errorf("driver %s not found", driver) continue } info, err := i.service.GetLogSource(ctx, driver) if err != nil { + log_print.Errorf("get log source %s error: %s", driver, err) continue } d, c, err := factory.Create(info.Config) if err != nil { + log_print.Errorf("create driver %s error: %s,config: %s", driver, err, info.Config) continue } - + log_driver.SetDriver(driver, d) dynamicClient, err := clientDriver.Dynamic(driver) if err != nil { + log_print.Errorf("get dynamic client %s error: %s", driver, err) continue } attr := make(map[string]interface{}) @@ -203,9 +236,10 @@ func (i *imlLogModule) initGateway(ctx context.Context, clusterId string, client Attr: attr, }) if err != nil { + log_print.Errorf("online driver %s error: %s", driver, err) continue } - log_driver.SetDriver(driver, d) + } return nil