Skip to content

Commit eef83d3

Browse files
feat: add trace logger, and insert buried point to run api server (#412)
* feat(trace_logger): add trace logger package * feat(trace_log): add trace logger buried point to creat run function * feat(api_server): insert buried point to run api server #412 * feat(api_server): add trace log query result to log api server
1 parent eba065a commit eef83d3

File tree

20 files changed

+1360
-43
lines changed

20 files changed

+1360
-43
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,6 @@ __pycache__/
2020

2121
# IDE
2222
.idea/
23+
24+
# go vendor
25+
vendor

AUTHORS.md

+17-16
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
* This is the list of people who have contributed code/doc to the PaddleFlow repository.
22
* Please keep the list sorted by **Github account**.
33

4-
| Github account | Name |
5-
|----------------|-------------------|
6-
| aiheshan | Shan He |
7-
| alexqdh | Duohao Qin |
8-
| badger | Haoqiang Wang |
9-
| D0m021ng | Zezhao Dong |
10-
| ElsieFan | Jiangxun Fan |
11-
| HaozhengAN | Haozheng An |
12-
| loleek | Kai Deng |
13-
| luoyuedong | YueDong Luo |
14-
| mikemoto | Xianyuan Mo |
15-
| mkavim | Xiaoping Xu |
16-
| qiaoshuangshuang | Shuangshuang Qiao |
17-
| stonekim | Kuan Shi |
18-
| tornado404 | Zichao Zhong |
19-
| xiangyuelin | xiangyuelin |
4+
| Github account | Name |
5+
|------------------|-------------------|
6+
| aiheshan | Shan He |
7+
| alexqdh | Duohao Qin |
8+
| badger | Haoqiang Wang |
9+
| D0m021ng | Zezhao Dong |
10+
| ElsieFan | Jiangxun Fan |
11+
| HaozhengAN | Haozheng An |
12+
| kiritoxkiriko | Xinmeng Wang |
13+
| loleek | Kai Deng |
14+
| luoyuedong | YueDong Luo |
15+
| mikemoto | Xianyuan Mo |
16+
| mkavim | Xiaoping Xu |
17+
| qiaoshuangshuang | Shuangshuang Qiao |
18+
| stonekim | Kuan Shi |
19+
| tornado404 | Zichao Zhong |
20+
| xiangyuelin | xiangyuelin |

cmd/server/main.go

+16
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/PaddlePaddle/PaddleFlow/pkg/job"
2727
"github.com/PaddlePaddle/PaddleFlow/pkg/storage"
2828
"github.com/PaddlePaddle/PaddleFlow/pkg/storage/driver"
29+
"github.com/PaddlePaddle/PaddleFlow/pkg/trace_logger"
2930
"github.com/PaddlePaddle/PaddleFlow/pkg/version"
3031
)
3132

@@ -104,6 +105,13 @@ func start() error {
104105
go jobCtrl.WSManager.SendGroupData()
105106
go jobCtrl.WSManager.GetGroupData()
106107

108+
err = trace_logger.Start(ServerConf.TraceLog)
109+
if err != nil {
110+
errMsg := fmt.Errorf("start trace logger failed. error: %w", err)
111+
log.Errorf(errMsg.Error())
112+
return errMsg
113+
}
114+
107115
go func() {
108116
if err := HttpSvr.ListenAndServe(); err != nil && errors.Is(err, http.ErrServerClosed) {
109117
log.Infof("listen: %s", err)
@@ -167,11 +175,19 @@ func initClusterAndQueue(serverConf *config.ServerConfig) error {
167175
}
168176

169177
func setup() {
178+
var err error
170179
if err := logger.InitStandardFileLogger(&ServerConf.Log); err != nil {
171180
log.Errorf("InitStandardFileLogger err: %v", err)
172181
gracefullyExit(err)
173182
}
174183

184+
// init trace logger config
185+
err = trace_logger.Init(ServerConf.TraceLog)
186+
if err != nil {
187+
log.Errorf("InitTraceLoggerManager err: %v", err)
188+
gracefullyExit(err)
189+
}
190+
175191
log.Infof("The final server config is: %s ", config.PrettyFormat(ServerConf))
176192

177193
dbConf := &ServerConf.Storage

config/server/default/paddleserver.yaml

+15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,21 @@ log:
77
maxFileSizeInMB: 100
88
isCompress: true
99

10+
# trace log config
11+
traceLog:
12+
dir: ./
13+
filePrefix: trace-log
14+
level: INFO
15+
maxKeepDays: 7
16+
maxFileNum: 7
17+
maxFileSizeInMB: 100
18+
isCompress: true
19+
# unit is s/m/h/d
20+
timeout: 2h
21+
maxCacheSize: 10000
22+
syncInterval: 30s
23+
deleteInterval: 10s
24+
1025
apiServer:
1126
host: 0.0.0.0
1227
port: 8083

docs/zh_cn/deployment/how_to_install_paddleflow.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ PaddleFlow部署分为客户端和服务端两个部分。
99
**安装**PaddleFlow客户端有两种方式:
1010

1111
1.[release](https://github.com/PaddlePaddle/PaddleFlow/releases)下载最新版, 执行`pip3 install PaddleFlow-1.4.2-py3-none-any.whl`
12-
2. 通过编译包安装,编译包有两处来源,分别是分支的最新产出、执行编译命令`cd client && python3 setup.py bdist_wheel`。得到编译包后执行`pip3 install PaddleFlow-1.4.2-py3-none-any.whl`
12+
2. 通过编译包安装,编译包有两处来源,分别是分支的最新产出、执行编译命令`cd client && python3 setup.py bdist_wheel`。得到编译包后执行`cd dist && pip3 install PaddleFlow-1.4.2-py3-none-any.whl`
1313

1414
**卸载**PaddleFlow
1515

go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ require (
1616
github.com/docker/distribution v2.7.1+incompatible // indirect
1717
github.com/docker/docker v17.12.1-ce+incompatible
1818
github.com/docker/go-connections v0.4.0 // indirect
19+
github.com/emirpasic/gods v1.18.1
1920
github.com/ghodss/yaml v1.0.0
2021
github.com/go-chi/chi v1.5.4
2122
github.com/go-openapi/spec v0.20.4 // indirect
@@ -35,6 +36,7 @@ require (
3536
github.com/mitchellh/mapstructure v1.4.1
3637
github.com/opencontainers/go-digest v1.0.0 // indirect
3738
github.com/opencontainers/image-spec v1.0.1 // indirect
39+
github.com/orcaman/concurrent-map v1.0.0
3840
github.com/paddleflow/paddle-operator v0.3.1
3941
github.com/panjf2000/ants/v2 v2.4.8
4042
github.com/pkg/errors v0.9.1
@@ -51,6 +53,7 @@ require (
5153
github.com/syndtr/goleveldb v1.0.0
5254
github.com/urfave/cli/v2 v2.4.0
5355
github.com/vbauerster/mpb/v7 v7.4.1
56+
github.com/viney-shih/go-lock v1.1.2
5457
github.com/xujiajun/nutsdb v0.8.0
5558
go.uber.org/automaxprocs v1.4.0
5659
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97

go.sum

+6
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb
175175
github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk=
176176
github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
177177
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
178+
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
179+
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
178180
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
179181
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
180182
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -625,6 +627,8 @@ github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3I
625627
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
626628
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
627629
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
630+
github.com/orcaman/concurrent-map v1.0.0 h1:I/2A2XPCb4IuQWcQhBhSwGfiuybl/J0ev9HDbW65HOY=
631+
github.com/orcaman/concurrent-map v1.0.0/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI=
628632
github.com/paddleflow/paddle-operator v0.3.1 h1:0i0EOGIXM3qL94XBhskNwk6vY5/EhxQhdhIM4GSKvWs=
629633
github.com/paddleflow/paddle-operator v0.3.1/go.mod h1:sMEu7Rx1E1DwyolierbVp1zxFTK8iI73e2OiWaS9oqg=
630634
github.com/panjf2000/ants/v2 v2.4.8 h1:JgTbolX6K6RreZ4+bfctI0Ifs+3mrE5BIHudQxUDQ9k=
@@ -772,6 +776,8 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV
772776
github.com/vbauerster/mpb/v7 v7.4.1 h1:NhLMWQ3gNg2KJR8oeA9lO8Xvq+eNPmixDmB6JEQOUdA=
773777
github.com/vbauerster/mpb/v7 v7.4.1/go.mod h1:Ygg2mV9Vj9sQBWqsK2m2pidcf9H3s6bNKtqd3/M4gBo=
774778
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
779+
github.com/viney-shih/go-lock v1.1.2 h1:3TdGTiHZCPqBdTvFbQZQN/TRZzKF3KWw2rFEyKz3YqA=
780+
github.com/viney-shih/go-lock v1.1.2/go.mod h1:Yijm78Ljteb3kRiJrbLAxVntkUukGu5uzSxq/xV7OO8=
775781
github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
776782
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
777783
github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=

pkg/apiserver/controller/log/log.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/PaddlePaddle/PaddleFlow/pkg/common/logger"
2727
"github.com/PaddlePaddle/PaddleFlow/pkg/common/schema"
2828
"github.com/PaddlePaddle/PaddleFlow/pkg/job/runtime"
29+
"github.com/PaddlePaddle/PaddleFlow/pkg/trace_logger"
2930
)
3031

3132
type GetRunLogRequest struct {
@@ -36,7 +37,7 @@ type GetRunLogRequest struct {
3637
}
3738

3839
type GetRunLogResponse struct {
39-
SubmitLog schema.LogInfo `json:"submitLog"`
40+
SubmitLog string `json:"submitLog"`
4041
RunLog []schema.JobLogInfo `json:"runLog"`
4142
RunID string `json:"runID"`
4243
}
@@ -100,6 +101,13 @@ func GetRunLog(ctx *logger.RequestContext, runID string, request GetRunLogReques
100101
}
101102
response.RunLog = append(response.RunLog, jobLogInfo)
102103
}
104+
trace, ok := trace_logger.GetTraceFromCache(runID)
105+
if !ok {
106+
ctx.Logging().Warnf("get trace log failed. runID[%s]", runID)
107+
} else {
108+
response.SubmitLog = trace.String()
109+
}
110+
103111
return response, nil
104112
}
105113

0 commit comments

Comments
 (0)