Add hostnames to database-output of link

Grafana is currently not able to resolve the target.id or source.id
into a human readable hostname. Therefore reading the neighbour
graphs is quite difficult for humans. To resolve this, we add the
additional tags source.hostname and target.hostname to the influx
link measurements.

In PR  #197
This commit is contained in:
lemoer 2021-03-26 10:18:29 +01:00 committed by GitHub
parent 4103535992
commit 0325aad24e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View File

@ -14,6 +14,12 @@ func (conn *Connection) InsertLink(link *runtime.Link, t time.Time) {
tags.SetString("source.addr", link.SourceAddress) tags.SetString("source.addr", link.SourceAddress)
tags.SetString("target.id", link.TargetID) tags.SetString("target.id", link.TargetID)
tags.SetString("target.addr", link.TargetAddress) tags.SetString("target.addr", link.TargetAddress)
if link.SourceHostname != "" {
tags.SetString("source.hostname", link.SourceHostname)
}
if link.TargetHostname != "" {
tags.SetString("target.hostname", link.TargetHostname)
}
conn.addPoint(MeasurementLink, tags, models.Fields{"tq": link.TQ * 100}, t) conn.addPoint(MeasurementLink, tags, models.Fields{"tq": link.TQ * 100}, t)
} }

View File

@ -22,9 +22,11 @@ type Node struct {
// Link represents a link between two nodes // Link represents a link between two nodes
type Link struct { type Link struct {
SourceID string SourceID string
SourceHostname string
SourceAddress string SourceAddress string
TargetID string TargetID string
TargetAddress string TargetAddress string
TargetHostname string
TQ float32 TQ float32
} }

View File

@ -117,13 +117,24 @@ func (nodes *Nodes) NodeLinks(node *Node) (result []Link) {
for sourceMAC, batadv := range neighbours.Batadv { for sourceMAC, batadv := range neighbours.Batadv {
for neighbourMAC, link := range batadv.Neighbours { for neighbourMAC, link := range batadv.Neighbours {
if neighbourID := nodes.ifaceToNodeID[neighbourMAC]; neighbourID != "" { if neighbourID := nodes.ifaceToNodeID[neighbourMAC]; neighbourID != "" {
result = append(result, Link{ neighbour := nodes.List[neighbours.NodeID]
link := Link{
SourceID: neighbours.NodeID, SourceID: neighbours.NodeID,
SourceAddress: sourceMAC, SourceAddress: sourceMAC,
TargetID: neighbourID, TargetID: neighbourID,
TargetAddress: neighbourMAC, TargetAddress: neighbourMAC,
TQ: float32(link.Tq) / 255.0, TQ: float32(link.Tq) / 255.0,
}) }
if neighbour.Nodeinfo != nil {
link.SourceHostname = neighbour.Nodeinfo.Hostname
}
if node.Nodeinfo != nil {
link.TargetHostname = node.Nodeinfo.Hostname
}
result = append(result, link)
} }
} }
} }