dashboard: rename variables, use group declaration

This commit is contained in:
Kurkó Mihály 2018-01-23 16:56:32 +02:00
parent f4b4204072
commit f95107fea0
6 changed files with 133 additions and 130 deletions

View file

@ -26509,12 +26509,12 @@ var _bundleJs = []byte((((((((((`!function(modules) {
home: {
activeMemory: [],
virtualMemory: [],
ingress: [],
egress: [],
networkIngress: [],
networkEgress: [],
processCPU: [],
systemCPU: [],
read: [],
write: []
diskRead: [],
diskWrite: []
},
chain: {},
txpool: {},
@ -26531,12 +26531,12 @@ var _bundleJs = []byte((((((((((`!function(modules) {
home: {
activeMemory: appender(200),
virtualMemory: appender(200),
ingress: appender(200),
egress: appender(200),
networkIngress: appender(200),
networkEgress: appender(200),
processCPU: appender(200),
systemCPU: appender(200),
read: appender(200),
write: appender(200)
diskRead: appender(200),
diskWrite: appender(200)
},
chain: null,
txpool: null,
@ -31303,16 +31303,16 @@ var _bundleJs = []byte((((((((((`!function(modules) {
data: home.virtualMemory,
tooltip: (0, _CustomTooltip.bytePlotter)("Virtual", (0, _CustomTooltip.multiplier)(-1))
}), this.doubleChart("all", {
data: home.read,
tooltip: (0, _CustomTooltip.bytePerSecPlotter)("Read")
data: home.diskRead,
tooltip: (0, _CustomTooltip.bytePerSecPlotter)("Disk Read")
}, {
data: home.write,
tooltip: (0, _CustomTooltip.bytePerSecPlotter)("Write", (0, _CustomTooltip.multiplier)(-1))
data: home.diskWrite,
tooltip: (0, _CustomTooltip.bytePerSecPlotter)("Disk Write", (0, _CustomTooltip.multiplier)(-1))
}), this.doubleChart("all", {
data: home.ingress,
data: home.networkIngress,
tooltip: (0, _CustomTooltip.bytePerSecPlotter)("Download")
}, {
data: home.egress,
data: home.networkEgress,
tooltip: (0, _CustomTooltip.bytePerSecPlotter)("Upload", (0, _CustomTooltip.multiplier)(-1))
}))), _react2.default.createElement(_Grid2.default, {
item: !0
@ -38400,7 +38400,7 @@ func bundleJs() (*asset, error) {
}
info := bindataFileInfo{name: "bundle.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x78, 0x89, 0xa1, 0x7d, 0x2e, 0xa5, 0xe0, 0xc, 0x68, 0x80, 0x26, 0x5, 0xa7, 0x37, 0x59, 0x73, 0xe6, 0xf2, 0xeb, 0x42, 0x9, 0xb6, 0x84, 0x1, 0x69, 0xb7, 0x23, 0x67, 0x42, 0x97, 0xa5}}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x90, 0x71, 0xbf, 0x69, 0x84, 0xe8, 0x63, 0x9a, 0x6c, 0x14, 0x49, 0xbd, 0x8b, 0x72, 0x2b, 0xe2, 0xd7, 0xdf, 0x49, 0x80, 0xea, 0x49, 0x2e, 0x7d, 0x4f, 0x23, 0x6b, 0xef, 0xcd, 0xc4, 0xdb}}
return a, nil
}

View file

@ -84,12 +84,12 @@ const defaultContent: Content = {
home: {
activeMemory: [],
virtualMemory: [],
ingress: [],
egress: [],
networkIngress: [],
networkEgress: [],
processCPU: [],
systemCPU: [],
read: [],
write: [],
diskRead: [],
diskWrite: [],
},
chain: {},
txpool: {},
@ -111,12 +111,12 @@ const updaters = {
home: {
activeMemory: appender(200),
virtualMemory: appender(200),
ingress: appender(200),
egress: appender(200),
networkIngress: appender(200),
networkEgress: appender(200),
processCPU: appender(200),
systemCPU: appender(200),
read: appender(200),
write: appender(200),
diskRead: appender(200),
diskWrite: appender(200),
},
chain: null,
txpool: null,

View file

@ -151,13 +151,13 @@ class Footer extends Component<Props> {
)}
{this.doubleChart(
'all',
{data: home.read, tooltip: bytePerSecPlotter('Read')},
{data: home.write, tooltip: bytePerSecPlotter('Write', multiplier(-1))},
{data: home.diskRead, tooltip: bytePerSecPlotter('Disk Read')},
{data: home.diskWrite, tooltip: bytePerSecPlotter('Disk Write', multiplier(-1))},
)}
{this.doubleChart(
'all',
{data: home.ingress, tooltip: bytePerSecPlotter('Download')},
{data: home.egress, tooltip: bytePerSecPlotter('Upload', multiplier(-1))},
{data: home.networkIngress, tooltip: bytePerSecPlotter('Download')},
{data: home.networkEgress, tooltip: bytePerSecPlotter('Upload', multiplier(-1))},
)}
</ChartRow>
</Grid>

View file

@ -34,12 +34,12 @@ export type General = {
export type Home = {
activeMemory: ChartEntries,
virtualMemory: ChartEntries,
ingress: ChartEntries,
egress: ChartEntries,
networkIngress: ChartEntries,
networkEgress: ChartEntries,
processCPU: ChartEntries,
systemCPU: ChartEntries,
read: ChartEntries,
write: ChartEntries,
diskRead: ChartEntries,
diskWrite: ChartEntries,
};
export type ChartEntries = Array<ChartEntry>;

View file

@ -46,12 +46,12 @@ import (
const (
activeMemorySampleLimit = 200 // Maximum number of active memory data samples
virtualMemorySampleLimit = 200 // Maximum number of virtual memory data samples
ingressSampleLimit = 200 // Maximum number of ingress data samples
egressSampleLimit = 200 // Maximum number of egress data samples
networkIngressSampleLimit = 200 // Maximum number of network ingress data samples
networkEgressSampleLimit = 200 // Maximum number of network egress data samples
processCPUSampleLimit = 200 // Maximum number of process cpu data samples
systemCPUSampleLimit = 200 // Maximum number of system cpu data samples
readSampleLimit = 200 // Maximum number of read data samples
writeSampleLimit = 200 // Maximum number of write data samples
diskReadSampleLimit = 200 // Maximum number of disk read data samples
diskWriteSampleLimit = 200 // Maximum number of disk write data samples
)
var nextID uint32 // Next connection id
@ -79,30 +79,31 @@ type client struct {
// New creates a new dashboard instance with the given configuration.
func New(config *Config, commit string) (*Dashboard, error) {
now := time.Now()
db := &Dashboard{
conns: make(map[uint32]*client),
config: config,
quit: make(chan chan error),
charts: new(HomeMessage),
charts: &HomeMessage{
ActiveMemory: emptyChartEntries(now, activeMemorySampleLimit, config.Refresh),
VirtualMemory: emptyChartEntries(now, virtualMemorySampleLimit, config.Refresh),
NetworkIngress: emptyChartEntries(now, networkIngressSampleLimit, config.Refresh),
NetworkEgress: emptyChartEntries(now, networkEgressSampleLimit, config.Refresh),
ProcessCPU: emptyChartEntries(now, processCPUSampleLimit, config.Refresh),
SystemCPU: emptyChartEntries(now, systemCPUSampleLimit, config.Refresh),
DiskRead: emptyChartEntries(now, diskReadSampleLimit, config.Refresh),
DiskWrite: emptyChartEntries(now, diskWriteSampleLimit, config.Refresh),
},
commit: commit,
}
now := time.Now()
db.charts.ActiveMemory = db.emptyChartEntries(now, activeMemorySampleLimit)
db.charts.VirtualMemory = db.emptyChartEntries(now, virtualMemorySampleLimit)
db.charts.Ingress = db.emptyChartEntries(now, ingressSampleLimit)
db.charts.Egress = db.emptyChartEntries(now, egressSampleLimit)
db.charts.ProcessCPU = db.emptyChartEntries(now, processCPUSampleLimit)
db.charts.SystemCPU = db.emptyChartEntries(now, systemCPUSampleLimit)
db.charts.Read = db.emptyChartEntries(now, readSampleLimit)
db.charts.Write = db.emptyChartEntries(now, writeSampleLimit)
return db, nil
}
func (db *Dashboard) emptyChartEntries(t time.Time, limit int) ChartEntries {
func emptyChartEntries(t time.Time, limit int, refresh time.Duration) ChartEntries {
ce := make(ChartEntries, limit)
for i := 0; i < limit; i++ {
ce[i] = &ChartEntry{
Time: t.Add(-time.Duration(i) * db.config.Refresh),
Time: t.Add(-time.Duration(i) * refresh),
}
}
return ce
@ -242,12 +243,12 @@ func (db *Dashboard) apiHandler(conn *websocket.Conn) {
Home: &HomeMessage{
ActiveMemory: db.charts.ActiveMemory,
VirtualMemory: db.charts.VirtualMemory,
Ingress: db.charts.Ingress,
Egress: db.charts.Egress,
NetworkIngress: db.charts.NetworkIngress,
NetworkEgress: db.charts.NetworkEgress,
ProcessCPU: db.charts.ProcessCPU,
SystemCPU: db.charts.SystemCPU,
Read: db.charts.Read,
Write: db.charts.Write,
DiskRead: db.charts.DiskRead,
DiskWrite: db.charts.DiskWrite,
},
}
// Start tracking the connection and drop at connection loss.
@ -272,17 +273,19 @@ func (db *Dashboard) apiHandler(conn *websocket.Conn) {
// collectData collects the required data to plot on the dashboard.
func (db *Dashboard) collectData() {
defer db.wg.Done()
prevIn := metrics.DefaultRegistry.Get("p2p/InboundTraffic").(metrics.Meter).Count()
prevOut := metrics.DefaultRegistry.Get("p2p/OutboundTraffic").(metrics.Meter).Count()
prevProcessCPUTime := getProcessCPUTime()
systemCPUUsage := gosigar.Cpu{}
systemCPUUsage.Get()
prevRead := metrics.DefaultRegistry.Get("eth/db/chaindata/compact/input").(metrics.Meter).Count()
prevWrite := metrics.DefaultRegistry.Get("eth/db/chaindata/compact/output").(metrics.Meter).Count()
var (
prevNetworkIngress = metrics.DefaultRegistry.Get("p2p/InboundTraffic").(metrics.Meter).Count()
prevNetworkEgress = metrics.DefaultRegistry.Get("p2p/OutboundTraffic").(metrics.Meter).Count()
prevProcessCPUTime = getProcessCPUTime()
prevSystemCPUUsage = systemCPUUsage
prevDiskRead = metrics.DefaultRegistry.Get("eth/db/chaindata/compact/input").(metrics.Meter).Count()
prevDiskWrite = metrics.DefaultRegistry.Get("eth/db/chaindata/compact/output").(metrics.Meter).Count()
frequency := float64(db.config.Refresh / time.Second)
numCPU := float64(runtime.NumCPU())
frequency = float64(db.config.Refresh / time.Second)
numCPU = float64(runtime.NumCPU())
)
for {
select {
@ -290,34 +293,34 @@ func (db *Dashboard) collectData() {
errc <- nil
return
case <-time.After(db.config.Refresh):
var mem runtime.MemStats
runtime.ReadMemStats(&mem)
curIn := metrics.DefaultRegistry.Get("p2p/InboundTraffic").(metrics.Meter).Count()
inboundTraffic := float64(curIn - prevIn)
prevIn = curIn
curOut := metrics.DefaultRegistry.Get("p2p/OutboundTraffic").(metrics.Meter).Count()
outboundTraffic := float64(curOut - prevOut)
prevOut = curOut
curProcessCPUTime := getProcessCPUTime()
processCPUTime := curProcessCPUTime - prevProcessCPUTime
prevProcessCPUTime = curProcessCPUTime
prevSystemCPUUsage := systemCPUUsage
systemCPUUsage.Get()
deltaCPU := systemCPUUsage.Delta(prevSystemCPUUsage)
curRead := metrics.DefaultRegistry.Get("eth/db/chaindata/compact/input").(metrics.Meter).Count()
deltaRead := curRead - prevRead
prevRead = curRead
curWrite := metrics.DefaultRegistry.Get("eth/db/chaindata/compact/output").(metrics.Meter).Count()
deltaWrite := curWrite - prevWrite
prevWrite = curWrite
var (
curNetworkIngress = metrics.DefaultRegistry.Get("p2p/InboundTraffic").(metrics.Meter).Count()
curNetworkEgress = metrics.DefaultRegistry.Get("p2p/OutboundTraffic").(metrics.Meter).Count()
curProcessCPUTime = getProcessCPUTime()
curSystemCPUUsage = systemCPUUsage
curDiskRead = metrics.DefaultRegistry.Get("eth/db/chaindata/compact/input").(metrics.Meter).Count()
curDiskWrite = metrics.DefaultRegistry.Get("eth/db/chaindata/compact/output").(metrics.Meter).Count()
)
var (
deltaNetworkIngress = float64(curNetworkIngress - prevNetworkIngress)
deltaNetworkEgress = float64(curNetworkEgress - prevNetworkEgress)
deltaProcessCPUTime = curProcessCPUTime - prevProcessCPUTime
deltaSystemCPUUsage = systemCPUUsage.Delta(prevSystemCPUUsage)
deltaDiskRead = curDiskRead - prevDiskRead
deltaDiskWrite = curDiskWrite - prevDiskWrite
)
prevNetworkIngress = curNetworkIngress
prevNetworkEgress = curNetworkEgress
prevProcessCPUTime = curProcessCPUTime
prevSystemCPUUsage = curSystemCPUUsage
prevDiskRead = curDiskRead
prevDiskWrite = curDiskWrite
now := time.Now()
var mem runtime.MemStats
runtime.ReadMemStats(&mem)
activeMemory := &ChartEntry{
Time: now,
Value: float64(mem.Alloc) / frequency,
@ -326,49 +329,49 @@ func (db *Dashboard) collectData() {
Time: now,
Value: float64(mem.Sys) / frequency,
}
ingress := &ChartEntry{
networkIngress := &ChartEntry{
Time: now,
Value: inboundTraffic / frequency,
Value: deltaNetworkIngress / frequency,
}
egress := &ChartEntry{
networkEgress := &ChartEntry{
Time: now,
Value: outboundTraffic / frequency,
Value: deltaNetworkEgress / frequency,
}
processCPU := &ChartEntry{
Time: now,
Value: processCPUTime / frequency / numCPU * 100,
Value: deltaProcessCPUTime / frequency / numCPU * 100,
}
systemCPU := &ChartEntry{
Time: now,
Value: float64(deltaCPU.Sys+deltaCPU.User) / frequency / numCPU,
Value: float64(deltaSystemCPUUsage.Sys+deltaSystemCPUUsage.User) / frequency / numCPU,
}
read := &ChartEntry{
diskRead := &ChartEntry{
Time: now,
Value: float64(deltaRead) / frequency,
Value: float64(deltaDiskRead) / frequency,
}
write := &ChartEntry{
diskWrite := &ChartEntry{
Time: now,
Value: float64(deltaWrite) / frequency,
Value: float64(deltaDiskWrite) / frequency,
}
db.charts.ActiveMemory = append(db.charts.ActiveMemory[1:], activeMemory)
db.charts.VirtualMemory = append(db.charts.VirtualMemory[1:], virtualMemory)
db.charts.Ingress = append(db.charts.Ingress[1:], ingress)
db.charts.Egress = append(db.charts.Egress[1:], egress)
db.charts.NetworkIngress = append(db.charts.NetworkIngress[1:], networkIngress)
db.charts.NetworkEgress = append(db.charts.NetworkEgress[1:], networkEgress)
db.charts.ProcessCPU = append(db.charts.ProcessCPU[1:], processCPU)
db.charts.SystemCPU = append(db.charts.SystemCPU[1:], systemCPU)
db.charts.Read = append(db.charts.Read[1:], read)
db.charts.Write = append(db.charts.Read[1:], write)
db.charts.DiskRead = append(db.charts.DiskRead[1:], diskRead)
db.charts.DiskWrite = append(db.charts.DiskRead[1:], diskWrite)
db.sendToAll(&Message{
Home: &HomeMessage{
ActiveMemory: ChartEntries{activeMemory},
VirtualMemory: ChartEntries{virtualMemory},
Ingress: ChartEntries{ingress},
Egress: ChartEntries{egress},
NetworkIngress: ChartEntries{networkIngress},
NetworkEgress: ChartEntries{networkEgress},
ProcessCPU: ChartEntries{processCPU},
SystemCPU: ChartEntries{systemCPU},
Read: ChartEntries{read},
Write: ChartEntries{write},
DiskRead: ChartEntries{diskRead},
DiskWrite: ChartEntries{diskWrite},
},
})
}

View file

@ -36,12 +36,12 @@ type GeneralMessage struct {
type HomeMessage struct {
ActiveMemory ChartEntries `json:"activeMemory,omitempty"`
VirtualMemory ChartEntries `json:"virtualMemory,omitempty"`
Ingress ChartEntries `json:"ingress,omitempty"`
Egress ChartEntries `json:"egress,omitempty"`
NetworkIngress ChartEntries `json:"networkIngress,omitempty"`
NetworkEgress ChartEntries `json:"networkEgress,omitempty"`
ProcessCPU ChartEntries `json:"processCPU,omitempty"`
SystemCPU ChartEntries `json:"systemCPU,omitempty"`
Read ChartEntries `json:"read,omitempty"`
Write ChartEntries `json:"write,omitempty"`
DiskRead ChartEntries `json:"diskRead,omitempty"`
DiskWrite ChartEntries `json:"diskWrite,omitempty"`
}
type ChartEntries []*ChartEntry