Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
fdbf8be7
Commit
fdbf8be7
authored
Jun 25, 2015
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmd/geth, rpc/api: fix reported metrics issues
parent
c0343c8f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
27 deletions
+20
-27
monitorcmd.go
cmd/geth/monitorcmd.go
+8
-12
debug.go
rpc/api/debug.go
+12
-15
No files found.
cmd/geth/monitorcmd.go
View file @
fdbf8be7
...
@@ -4,6 +4,7 @@ import (
...
@@ -4,6 +4,7 @@ import (
"fmt"
"fmt"
"math"
"math"
"reflect"
"reflect"
"runtime"
"sort"
"sort"
"strings"
"strings"
"time"
"time"
...
@@ -72,15 +73,7 @@ func monitor(ctx *cli.Context) {
...
@@ -72,15 +73,7 @@ func monitor(ctx *cli.Context) {
}
}
monitored
:=
resolveMetrics
(
metrics
,
ctx
.
Args
())
monitored
:=
resolveMetrics
(
metrics
,
ctx
.
Args
())
if
len
(
monitored
)
==
0
{
if
len
(
monitored
)
==
0
{
list
:=
[]
string
{}
list
:=
expandMetrics
(
metrics
,
""
)
for
_
,
metric
:=
range
expandMetrics
(
metrics
,
""
)
{
switch
{
case
strings
.
HasSuffix
(
metric
,
"/0"
)
:
list
=
append
(
list
,
strings
.
Replace
(
metric
,
"/0"
,
"/[0-100]"
,
-
1
))
case
!
strings
.
Contains
(
metric
,
"Percentiles"
)
:
list
=
append
(
list
,
metric
)
}
}
sort
.
Strings
(
list
)
sort
.
Strings
(
list
)
utils
.
Fatalf
(
"No metrics specified.
\n\n
Available:
\n
- %s"
,
strings
.
Join
(
list
,
"
\n
- "
))
utils
.
Fatalf
(
"No metrics specified.
\n\n
Available:
\n
- %s"
,
strings
.
Join
(
list
,
"
\n
- "
))
}
}
...
@@ -116,11 +109,14 @@ func monitor(ctx *cli.Context) {
...
@@ -116,11 +109,14 @@ func monitor(ctx *cli.Context) {
}
}
for
i
,
metric
:=
range
monitored
{
for
i
,
metric
:=
range
monitored
{
charts
[
i
]
=
termui
.
NewLineChart
()
charts
[
i
]
=
termui
.
NewLineChart
()
if
runtime
.
GOOS
==
"windows"
{
charts
[
i
]
.
Mode
=
"dot"
}
charts
[
i
]
.
Data
=
make
([]
float64
,
512
)
charts
[
i
]
.
Data
=
make
([]
float64
,
512
)
charts
[
i
]
.
DataLabels
=
[]
string
{
""
}
charts
[
i
]
.
DataLabels
=
[]
string
{
""
}
charts
[
i
]
.
Height
=
(
termui
.
TermHeight
()
-
footer
.
Height
)
/
rows
charts
[
i
]
.
Height
=
(
termui
.
TermHeight
()
-
footer
.
Height
)
/
rows
charts
[
i
]
.
AxesColor
=
termui
.
ColorWhite
charts
[
i
]
.
AxesColor
=
termui
.
ColorWhite
charts
[
i
]
.
PaddingBottom
=
-
1
charts
[
i
]
.
PaddingBottom
=
-
2
charts
[
i
]
.
Border
.
Label
=
metric
charts
[
i
]
.
Border
.
Label
=
metric
charts
[
i
]
.
Border
.
LabelFgColor
=
charts
[
i
]
.
Border
.
FgColor
|
termui
.
AttrBold
charts
[
i
]
.
Border
.
LabelFgColor
=
charts
[
i
]
.
Border
.
FgColor
|
termui
.
AttrBold
...
@@ -141,7 +137,7 @@ func monitor(ctx *cli.Context) {
...
@@ -141,7 +137,7 @@ func monitor(ctx *cli.Context) {
for
{
for
{
select
{
select
{
case
event
:=
<-
termui
.
EventCh
()
:
case
event
:=
<-
termui
.
EventCh
()
:
if
event
.
Type
==
termui
.
EventKey
&&
event
.
Ch
==
'q'
{
if
event
.
Type
==
termui
.
EventKey
&&
event
.
Key
==
termui
.
KeyCtrlC
{
return
return
}
}
if
event
.
Type
==
termui
.
EventResize
{
if
event
.
Type
==
termui
.
EventResize
{
...
@@ -302,7 +298,7 @@ func updateChart(metric string, data []float64, chart *termui.LineChart, err err
...
@@ -302,7 +298,7 @@ func updateChart(metric string, data []float64, chart *termui.LineChart, err err
func
updateFooter
(
ctx
*
cli
.
Context
,
err
error
,
footer
*
termui
.
Par
)
{
func
updateFooter
(
ctx
*
cli
.
Context
,
err
error
,
footer
*
termui
.
Par
)
{
// Generate the basic footer
// Generate the basic footer
refresh
:=
time
.
Duration
(
ctx
.
Int
(
monitorCommandRefreshFlag
.
Name
))
*
time
.
Second
refresh
:=
time
.
Duration
(
ctx
.
Int
(
monitorCommandRefreshFlag
.
Name
))
*
time
.
Second
footer
.
Text
=
fmt
.
Sprintf
(
"Press
q
to quit. Refresh interval: %v."
,
refresh
)
footer
.
Text
=
fmt
.
Sprintf
(
"Press
Ctrl+C
to quit. Refresh interval: %v."
,
refresh
)
footer
.
TextFgColor
=
termui
.
Theme
()
.
ParTextFg
|
termui
.
AttrBold
footer
.
TextFgColor
=
termui
.
Theme
()
.
ParTextFg
|
termui
.
AttrBold
// Append any encountered errors
// Append any encountered errors
...
...
rpc/api/debug.go
View file @
fdbf8be7
...
@@ -193,11 +193,6 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
...
@@ -193,11 +193,6 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
format
:=
func
(
total
float64
,
rate
float64
)
string
{
format
:=
func
(
total
float64
,
rate
float64
)
string
{
return
fmt
.
Sprintf
(
"%s (%s/s)"
,
round
(
total
,
0
),
round
(
rate
,
2
))
return
fmt
.
Sprintf
(
"%s (%s/s)"
,
round
(
total
,
0
),
round
(
rate
,
2
))
}
}
// Create the percentile units
percentiles
:=
make
([]
float64
,
101
)
for
i
:=
0
;
i
<=
100
;
i
++
{
percentiles
[
i
]
=
float64
(
i
)
/
100
}
// Iterate over all the metrics, and just dump for now
// Iterate over all the metrics, and just dump for now
counters
:=
make
(
map
[
string
]
interface
{})
counters
:=
make
(
map
[
string
]
interface
{})
metrics
.
DefaultRegistry
.
Each
(
func
(
name
string
,
metric
interface
{})
{
metrics
.
DefaultRegistry
.
Each
(
func
(
name
string
,
metric
interface
{})
{
...
@@ -220,21 +215,23 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
...
@@ -220,21 +215,23 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
"AvgRate05Min"
:
metric
.
Rate5
(),
"AvgRate05Min"
:
metric
.
Rate5
(),
"AvgRate15Min"
:
metric
.
Rate15
(),
"AvgRate15Min"
:
metric
.
Rate15
(),
"MeanRate"
:
metric
.
RateMean
(),
"MeanRate"
:
metric
.
RateMean
(),
"
Total"
:
float64
(
metric
.
Count
()),
"
Overall"
:
float64
(
metric
.
Count
()),
}
}
case
metrics
.
Timer
:
case
metrics
.
Timer
:
ps
:=
make
(
map
[
string
]
interface
{})
for
i
,
p
:=
range
metric
.
Percentiles
(
percentiles
)
{
ps
[
fmt
.
Sprintf
(
"%d"
,
i
)]
=
p
}
root
[
name
]
=
map
[
string
]
interface
{}{
root
[
name
]
=
map
[
string
]
interface
{}{
"AvgRate01Min"
:
metric
.
Rate1
(),
"AvgRate01Min"
:
metric
.
Rate1
(),
"AvgRate05Min"
:
metric
.
Rate5
(),
"AvgRate05Min"
:
metric
.
Rate5
(),
"AvgRate15Min"
:
metric
.
Rate15
(),
"AvgRate15Min"
:
metric
.
Rate15
(),
"MeanRate"
:
metric
.
RateMean
(),
"MeanRate"
:
metric
.
RateMean
(),
"Total"
:
float64
(
metric
.
Count
()),
"Overall"
:
float64
(
metric
.
Count
()),
"Percentiles"
:
ps
,
"Percentiles"
:
map
[
string
]
interface
{}{
"5"
:
metric
.
Percentile
(
0.05
),
"20"
:
metric
.
Percentile
(
0.2
),
"50"
:
metric
.
Percentile
(
0.5
),
"80"
:
metric
.
Percentile
(
0.8
),
"95"
:
metric
.
Percentile
(
0.95
),
},
}
}
default
:
default
:
...
@@ -247,7 +244,7 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
...
@@ -247,7 +244,7 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
"Avg01Min"
:
format
(
metric
.
Rate1
()
*
60
,
metric
.
Rate1
()),
"Avg01Min"
:
format
(
metric
.
Rate1
()
*
60
,
metric
.
Rate1
()),
"Avg05Min"
:
format
(
metric
.
Rate5
()
*
300
,
metric
.
Rate5
()),
"Avg05Min"
:
format
(
metric
.
Rate5
()
*
300
,
metric
.
Rate5
()),
"Avg15Min"
:
format
(
metric
.
Rate15
()
*
900
,
metric
.
Rate15
()),
"Avg15Min"
:
format
(
metric
.
Rate15
()
*
900
,
metric
.
Rate15
()),
"
Total"
:
format
(
float64
(
metric
.
Count
()),
metric
.
RateMean
()),
"
Overall"
:
format
(
float64
(
metric
.
Count
()),
metric
.
RateMean
()),
}
}
case
metrics
.
Timer
:
case
metrics
.
Timer
:
...
@@ -255,15 +252,15 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
...
@@ -255,15 +252,15 @@ func (self *debugApi) Metrics(req *shared.Request) (interface{}, error) {
"Avg01Min"
:
format
(
metric
.
Rate1
()
*
60
,
metric
.
Rate1
()),
"Avg01Min"
:
format
(
metric
.
Rate1
()
*
60
,
metric
.
Rate1
()),
"Avg05Min"
:
format
(
metric
.
Rate5
()
*
300
,
metric
.
Rate5
()),
"Avg05Min"
:
format
(
metric
.
Rate5
()
*
300
,
metric
.
Rate5
()),
"Avg15Min"
:
format
(
metric
.
Rate15
()
*
900
,
metric
.
Rate15
()),
"Avg15Min"
:
format
(
metric
.
Rate15
()
*
900
,
metric
.
Rate15
()),
"
Total"
:
format
(
float64
(
metric
.
Count
()),
metric
.
RateMean
()),
"
Overall"
:
format
(
float64
(
metric
.
Count
()),
metric
.
RateMean
()),
"Maximum"
:
time
.
Duration
(
metric
.
Max
())
.
String
(),
"Maximum"
:
time
.
Duration
(
metric
.
Max
())
.
String
(),
"Minimum"
:
time
.
Duration
(
metric
.
Min
())
.
String
(),
"Minimum"
:
time
.
Duration
(
metric
.
Min
())
.
String
(),
"Percentiles"
:
map
[
string
]
interface
{}{
"Percentiles"
:
map
[
string
]
interface
{}{
"5"
:
time
.
Duration
(
metric
.
Percentile
(
0.05
))
.
String
(),
"20"
:
time
.
Duration
(
metric
.
Percentile
(
0.2
))
.
String
(),
"20"
:
time
.
Duration
(
metric
.
Percentile
(
0.2
))
.
String
(),
"50"
:
time
.
Duration
(
metric
.
Percentile
(
0.5
))
.
String
(),
"50"
:
time
.
Duration
(
metric
.
Percentile
(
0.5
))
.
String
(),
"80"
:
time
.
Duration
(
metric
.
Percentile
(
0.8
))
.
String
(),
"80"
:
time
.
Duration
(
metric
.
Percentile
(
0.8
))
.
String
(),
"95"
:
time
.
Duration
(
metric
.
Percentile
(
0.95
))
.
String
(),
"95"
:
time
.
Duration
(
metric
.
Percentile
(
0.95
))
.
String
(),
"99"
:
time
.
Duration
(
metric
.
Percentile
(
0.99
))
.
String
(),
},
},
}
}
...
...
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