Add DHCP statistics

This commit is contained in:
Julian Kornberger 2018-04-19 11:26:08 +02:00 committed by Geno
parent 8512afbe6b
commit 10f58a72ea
3 changed files with 43 additions and 0 deletions

View File

@ -9,6 +9,7 @@ package data
type Statistics struct {
NodeID string `json:"node_id"`
Clients Clients `json:"clients"`
DHCP *DHCP `json:"dhcp"`
RootFsUsage float64 `json:"rootfs_usage,omitempty"`
LoadAverage float64 `json:"loadavg,omitempty"`
Memory Memory `json:"memory,omitempty"`
@ -64,6 +65,22 @@ type Clients struct {
Total uint32 `json:"total"`
}
// DHCP struct
type DHCP struct {
// Packet counters
Decline uint32 `json:"dhcp_decline"`
Offer uint32 `json:"dhcp_offer"`
Ack uint32 `json:"dhcp_ack"`
Nak uint32 `json:"dhcp_nak"`
Request uint32 `json:"dhcp_request"`
Discover uint32 `json:"dhcp_discover"`
Inform uint32 `json:"dhcp_inform"`
Release uint32 `json:"dhcp_release"`
LeasesAllocated uint32 `json:"leases_allocated_4"`
LeasesPruned uint32 `json:"leases_pruned_4"`
}
// Memory struct
type Memory struct {
Cached int64 `json:"cached"`

View File

@ -14,6 +14,7 @@ import (
const (
MeasurementLink = "link" // Measurement for per-link statistics
MeasurementNode = "node" // Measurement for per-node statistics
MeasurementDHCP = "dhcp" // Measurement for DHCP server statistics
MeasurementGlobal = "global" // Measurement for summarized global statistics
CounterMeasurementFirmware = "firmware" // Measurement for firmware statistics
CounterMeasurementModel = "model" // Measurement for model statistics

View File

@ -141,5 +141,30 @@ func (conn *Connection) InsertNode(node *runtime.Node) {
conn.addPoint(MeasurementNode, tags, fields, time)
// Add DHCP statistics
if dhcp := stats.DHCP; dhcp != nil {
fields := models.Fields{
"decline": dhcp.Decline,
"offer": dhcp.Offer,
"ack": dhcp.Ack,
"nak": dhcp.Nak,
"request": dhcp.Request,
"discover": dhcp.Discover,
"inform": dhcp.Inform,
"release": dhcp.Release,
"leases.allocated": dhcp.LeasesAllocated,
"leases.pruned": dhcp.LeasesPruned,
}
// Tags
tags.SetString("nodeid", stats.NodeID)
if nodeinfo := node.Nodeinfo; nodeinfo != nil {
tags.SetString("hostname", nodeinfo.Hostname)
}
conn.addPoint(MeasurementDHCP, tags, fields, time)
}
return
}