Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
enoch
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DevOps
enoch
Commits
3fe4ee2d
Commit
3fe4ee2d
authored
Nov 20, 2019
by
jingbo.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
总表 OK
parent
84b776f3
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
62 additions
and
40 deletions
+62
-40
report_form.go
pkg/report-form/report_form.go
+4
-4
report_form_test.go
pkg/report-form/report_form_test.go
+11
-0
service.go
pkg/report-form/service.go
+11
-0
service_map.go
pkg/report-form/service_map.go
+13
-17
service_map_test.go
pkg/report-form/service_map_test.go
+1
-1
service_test.go
pkg/report-form/service_test.go
+5
-4
trace.go
pkg/report-form/trace.go
+13
-11
trace_test.go
pkg/report-form/trace_test.go
+4
-3
No files found.
pkg/report-form/report_form.go
View file @
3fe4ee2d
...
@@ -82,7 +82,7 @@ func GetServiceNameListFromDb() []string {
...
@@ -82,7 +82,7 @@ func GetServiceNameListFromDb() []string {
}
}
//从db拉取数据
//从db拉取数据
func
GetDataFromDb
(
startTime
time
.
Time
,
endTime
time
.
Time
)
*
ServiceMap
{
func
GetDataFromDb
(
startTime
time
.
Time
,
endTime
time
.
Time
)
ServiceMap
{
serviceNameList
:=
GetServiceNameListFromDb
()
serviceNameList
:=
GetServiceNameListFromDb
()
serviceMap
:=
NewServiceMap
()
serviceMap
:=
NewServiceMap
()
...
@@ -95,7 +95,7 @@ func GetDataFromDb(startTime time.Time, endTime time.Time) *ServiceMap {
...
@@ -95,7 +95,7 @@ func GetDataFromDb(startTime time.Time, endTime time.Time) *ServiceMap {
for
_
,
v
:=
range
resp
.
Results
{
for
_
,
v
:=
range
resp
.
Results
{
for
_
,
row
:=
range
v
.
Series
{
for
_
,
row
:=
range
v
.
Series
{
traceList
:=
rowToTraceList
(
row
)
traceList
:=
rowToTraceList
(
serviceName
,
row
)
for
_
,
trace
:=
range
traceList
{
for
_
,
trace
:=
range
traceList
{
serviceMap
.
AddTrace
(
serviceName
,
trace
.
Path
,
trace
)
serviceMap
.
AddTrace
(
serviceName
,
trace
.
Path
,
trace
)
}
}
...
@@ -106,7 +106,7 @@ func GetDataFromDb(startTime time.Time, endTime time.Time) *ServiceMap {
...
@@ -106,7 +106,7 @@ func GetDataFromDb(startTime time.Time, endTime time.Time) *ServiceMap {
return
serviceMap
return
serviceMap
}
}
func
rowToTraceList
(
row
models
.
Row
)
[]
*
Trace
{
func
rowToTraceList
(
serviceName
string
,
row
models
.
Row
)
[]
*
Trace
{
//[time duration host msg path sys_name traceId]
//[time duration host msg path sys_name traceId]
rtn
:=
make
([]
*
Trace
,
0
)
rtn
:=
make
([]
*
Trace
,
0
)
durationIndex
,
ok
:=
getModRowKeyIdx
(
"duration"
,
row
)
durationIndex
,
ok
:=
getModRowKeyIdx
(
"duration"
,
row
)
...
@@ -165,7 +165,7 @@ func rowToTraceList(row models.Row) []*Trace {
...
@@ -165,7 +165,7 @@ func rowToTraceList(row models.Row) []*Trace {
continue
continue
}
}
rtn
=
append
(
rtn
,
NewTrace
(
id
,
host
,
path
,
duration
,
timePoint
))
rtn
=
append
(
rtn
,
NewTrace
(
id
,
serviceName
,
host
,
path
,
duration
,
timePoint
))
}
}
return
rtn
return
rtn
...
...
pkg/report-form/report_form_test.go
View file @
3fe4ee2d
...
@@ -14,4 +14,15 @@ func TestGetDataFromDb(t *testing.T) {
...
@@ -14,4 +14,15 @@ func TestGetDataFromDb(t *testing.T) {
start
:=
end
.
AddDate
(
0
,
0
,
-
10
)
start
:=
end
.
AddDate
(
0
,
0
,
-
10
)
sm
:=
GetDataFromDb
(
start
,
end
)
sm
:=
GetDataFromDb
(
start
,
end
)
t
.
Log
(
sm
.
GetAverageTime
(),
sm
.
GetCount
())
t
.
Log
(
sm
.
GetAverageTime
(),
sm
.
GetCount
())
tl
:=
NewTraceList
(
""
)
for
_
,
v
:=
range
sm
{
if
trace
,
ok
:=
v
.
GetMaxMediaTrace
();
ok
{
tl
.
AddTrace
(
trace
)
}
}
list
:=
tl
.
GetTraceList
()
for
_
,
v
:=
range
list
{
t
.
Log
(
v
.
Duration
,
v
.
ServiceName
,
v
.
Id
,
v
.
Path
)
}
}
}
pkg/report-form/service.go
View file @
3fe4ee2d
...
@@ -28,6 +28,17 @@ func (s *Service) DelPath(path string) {
...
@@ -28,6 +28,17 @@ func (s *Service) DelPath(path string) {
delete
(
s
.
pathMap
,
path
)
delete
(
s
.
pathMap
,
path
)
}
}
//获取最大中位值的trace
func
(
s
*
Service
)
GetMaxMediaTrace
()
(
*
Trace
,
bool
)
{
tl
:=
NewTraceList
(
""
)
for
_
,
path
:=
range
s
.
pathMap
{
if
trace
,
ok
:=
path
.
GetMediaTrace
();
ok
{
tl
.
AddTrace
(
trace
)
}
}
return
tl
.
GetMediaTrace
()
}
//求服务的平均响应时间
//求服务的平均响应时间
func
(
s
*
Service
)
GetAverageTime
()
time
.
Duration
{
func
(
s
*
Service
)
GetAverageTime
()
time
.
Duration
{
count
:=
s
.
GetCount
()
count
:=
s
.
GetCount
()
...
...
pkg/report-form/service_map.go
View file @
3fe4ee2d
...
@@ -2,40 +2,36 @@ package report_form
...
@@ -2,40 +2,36 @@ package report_form
import
"time"
import
"time"
type
ServiceMap
struct
{
type
ServiceMap
map
[
string
]
*
Service
serviceMap
map
[
string
]
*
Service
}
func
NewServiceMap
()
*
ServiceMap
{
func
NewServiceMap
()
ServiceMap
{
return
&
ServiceMap
{
return
make
(
map
[
string
]
*
Service
)
serviceMap
:
make
(
map
[
string
]
*
Service
),
}
}
}
//添加trace
//添加trace
func
(
sm
*
ServiceMap
)
AddTrace
(
service
string
,
path
string
,
trace
*
Trace
)
{
func
(
sm
ServiceMap
)
AddTrace
(
service
string
,
path
string
,
trace
*
Trace
)
{
if
_
,
ok
:=
sm
.
serviceMap
[
service
];
!
ok
{
if
_
,
ok
:=
sm
[
service
];
!
ok
{
sm
.
serviceMap
[
service
]
=
NewService
(
service
)
sm
[
service
]
=
NewService
(
service
)
}
}
sm
.
serviceMap
[
service
]
.
AddTrace
(
path
,
trace
)
sm
[
service
]
.
AddTrace
(
path
,
trace
)
}
}
//获取service
//获取service
func
(
sm
*
ServiceMap
)
GetService
(
service
string
)
(
*
Service
,
bool
)
{
func
(
sm
ServiceMap
)
GetService
(
service
string
)
(
*
Service
,
bool
)
{
s
,
ok
:=
sm
.
serviceMap
[
service
]
s
,
ok
:=
sm
[
service
]
return
s
,
ok
return
s
,
ok
}
}
//求服务的平均响应时间
//求服务的平均响应时间
func
(
sm
*
ServiceMap
)
GetAverageTime
()
time
.
Duration
{
func
(
sm
ServiceMap
)
GetAverageTime
()
time
.
Duration
{
count
:=
sm
.
GetCount
()
count
:=
sm
.
GetCount
()
if
count
==
0
{
if
count
==
0
{
return
0
return
0
}
}
sum
:=
time
.
Duration
(
0
)
sum
:=
time
.
Duration
(
0
)
for
_
,
v
:=
range
sm
.
serviceMap
{
for
_
,
v
:=
range
sm
{
for
_
,
vv
:=
range
v
.
pathMap
{
for
_
,
vv
:=
range
v
.
pathMap
{
for
_
,
vvv
:=
range
vv
.
traceList
{
for
_
,
vvv
:=
range
vv
.
traceList
{
sum
+=
vvv
.
Duration
sum
+=
vvv
.
Duration
...
@@ -47,9 +43,9 @@ func (sm *ServiceMap) GetAverageTime() time.Duration {
...
@@ -47,9 +43,9 @@ func (sm *ServiceMap) GetAverageTime() time.Duration {
}
}
//求服务的访问量
//求服务的访问量
func
(
sm
*
ServiceMap
)
GetCount
()
int
{
func
(
sm
ServiceMap
)
GetCount
()
int
{
sum
:=
0
sum
:=
0
for
_
,
v
:=
range
sm
.
serviceMap
{
for
_
,
v
:=
range
sm
{
sum
+=
v
.
GetCount
()
sum
+=
v
.
GetCount
()
}
}
return
sum
return
sum
...
...
pkg/report-form/service_map_test.go
View file @
3fe4ee2d
...
@@ -12,7 +12,7 @@ func TestNewServiceMap(t *testing.T) {
...
@@ -12,7 +12,7 @@ func TestNewServiceMap(t *testing.T) {
host
=
"1.1.1.1"
host
=
"1.1.1.1"
)
)
sm
:=
NewServiceMap
()
sm
:=
NewServiceMap
()
sm
.
AddTrace
(
service
,
path
,
NewTrace
(
"1"
,
host
,
path
,
1
,
time
.
Now
()))
sm
.
AddTrace
(
service
,
path
,
NewTrace
(
"1"
,
service
,
host
,
path
,
1
,
time
.
Now
()))
s
,
ok
:=
sm
.
GetService
(
service
)
s
,
ok
:=
sm
.
GetService
(
service
)
if
!
ok
{
if
!
ok
{
t
.
Error
(
"can not found service:"
,
service
)
t
.
Error
(
"can not found service:"
,
service
)
...
...
pkg/report-form/service_test.go
View file @
3fe4ee2d
...
@@ -8,13 +8,14 @@ import (
...
@@ -8,13 +8,14 @@ import (
func
TestNewService
(
t
*
testing
.
T
)
{
func
TestNewService
(
t
*
testing
.
T
)
{
const
(
const
(
path
=
"/hello"
path
=
"/hello"
host
=
"1.1.1.1"
host
=
"1.1.1.1"
serviceName
=
"aaaa"
)
)
s
:=
NewService
(
"aaaa"
)
s
:=
NewService
(
serviceName
)
for
i
:=
1
;
i
<=
10
;
i
++
{
for
i
:=
1
;
i
<=
10
;
i
++
{
s
.
AddTrace
(
path
,
NewTrace
(
strconv
.
Itoa
(
i
),
host
,
path
,
time
.
Duration
(
i
),
time
.
Now
()
.
Add
(
time
.
Duration
(
i
))))
s
.
AddTrace
(
path
,
NewTrace
(
strconv
.
Itoa
(
i
),
serviceName
,
host
,
path
,
time
.
Duration
(
i
),
time
.
Now
()
.
Add
(
time
.
Duration
(
i
))))
}
}
t
.
Log
(
s
.
GetAverageTime
())
t
.
Log
(
s
.
GetAverageTime
())
...
...
pkg/report-form/trace.go
View file @
3fe4ee2d
...
@@ -7,20 +7,22 @@ import (
...
@@ -7,20 +7,22 @@ import (
)
)
type
Trace
struct
{
type
Trace
struct
{
Id
string
Id
string
Host
string
ServiceName
string
Path
string
Host
string
Duration
time
.
Duration
Path
string
TimePoint
time
.
Time
Duration
time
.
Duration
TimePoint
time
.
Time
}
}
func
NewTrace
(
id
string
,
host
string
,
path
string
,
duration
time
.
Duration
,
timePoint
time
.
Time
)
*
Trace
{
func
NewTrace
(
id
string
,
serviceName
string
,
host
string
,
path
string
,
duration
time
.
Duration
,
timePoint
time
.
Time
)
*
Trace
{
return
&
Trace
{
return
&
Trace
{
Id
:
id
,
Id
:
id
,
Host
:
host
,
ServiceName
:
serviceName
,
Path
:
path
,
Host
:
host
,
Duration
:
duration
,
Path
:
path
,
TimePoint
:
timePoint
,
Duration
:
duration
,
TimePoint
:
timePoint
,
}
}
}
}
...
...
pkg/report-form/trace_test.go
View file @
3fe4ee2d
...
@@ -8,12 +8,13 @@ import (
...
@@ -8,12 +8,13 @@ import (
func
TestNewTraceList
(
t
*
testing
.
T
)
{
func
TestNewTraceList
(
t
*
testing
.
T
)
{
const
(
const
(
path
=
"/hello"
path
=
"/hello"
host
=
"1.1.1.1"
host
=
"1.1.1.1"
serviceName
=
"aaaa"
)
)
tl
:=
NewTraceList
(
path
)
tl
:=
NewTraceList
(
path
)
for
i
:=
1
;
i
<=
10
;
i
++
{
for
i
:=
1
;
i
<=
10
;
i
++
{
tl
.
AddTrace
(
NewTrace
(
strconv
.
Itoa
(
i
),
host
,
path
,
time
.
Duration
(
i
),
time
.
Now
()
.
Add
(
time
.
Duration
(
i
))))
tl
.
AddTrace
(
NewTrace
(
strconv
.
Itoa
(
i
),
serviceName
,
host
,
path
,
time
.
Duration
(
i
),
time
.
Now
()
.
Add
(
time
.
Duration
(
i
))))
}
}
t
.
Log
(
tl
.
GetCount
())
t
.
Log
(
tl
.
GetCount
())
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment