Fix division by zero to calculate memory usage

Closes #41
This commit is contained in:
Julian Kornberger 2017-07-06 11:33:20 +02:00
parent fd7e712282
commit 2148a7de28
1 changed files with 14 additions and 10 deletions

View File

@ -23,15 +23,15 @@ type Flags struct {
// Statistics a meshviewer spezifisch struct, diffrent from respondd // Statistics a meshviewer spezifisch struct, diffrent from respondd
type Statistics struct { type Statistics struct {
NodeID string `json:"node_id"` NodeID string `json:"node_id"`
Clients uint32 `json:"clients"` Clients uint32 `json:"clients"`
RootFsUsage float64 `json:"rootfs_usage,omitempty"` RootFsUsage float64 `json:"rootfs_usage,omitempty"`
LoadAverage float64 `json:"loadavg,omitempty"` LoadAverage float64 `json:"loadavg,omitempty"`
MemoryUsage float64 `json:"memory_usage,omitempty"` MemoryUsage *float64 `json:"memory_usage,omitempty"`
Uptime float64 `json:"uptime,omitempty"` Uptime float64 `json:"uptime,omitempty"`
Idletime float64 `json:"idletime,omitempty"` Idletime float64 `json:"idletime,omitempty"`
GatewayIPv4 string `json:"gateway,omitempty"` GatewayIPv4 string `json:"gateway,omitempty"`
GatewayIPv6 string `json:"gateway6,omitempty"` GatewayIPv6 string `json:"gateway6,omitempty"`
Processes struct { Processes struct {
Total uint32 `json:"total"` Total uint32 `json:"total"`
Running uint32 `json:"running"` Running uint32 `json:"running"`
@ -57,7 +57,11 @@ func NewStatistics(stats *data.Statistics) *Statistics {
* calc is coppied from node statuspage (look discussion: * calc is coppied from node statuspage (look discussion:
* https://github.com/FreifunkBremen/yanic/issues/35) * https://github.com/FreifunkBremen/yanic/issues/35)
*/ */
memoryUsage := 1 - (float64(stats.Memory.Free)+float64(stats.Memory.Buffers)+float64(stats.Memory.Cached))/float64(stats.Memory.Total) var memoryUsage *float64
if stats.Memory.Total > 0 {
usage := 1 - (float64(stats.Memory.Free)+float64(stats.Memory.Buffers)+float64(stats.Memory.Cached))/float64(stats.Memory.Total)
memoryUsage = &usage
}
return &Statistics{ return &Statistics{
NodeID: stats.NodeID, NodeID: stats.NodeID,