master
go 28 lines 612 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package snmp
4
5 import "context"
6
7 func (c *Collector) collectPing(ctx context.Context, mx map[string]int64) error {
8 if c.pingClient == nil {
9 return nil
10 }
11
12 sample, err := c.pingClient.ProbeAndTrack(ctx, c.Hostname)
13 if err != nil {
14 return err
15 }
16
17 if sample.PacketsRecv == 0 {
18 // do not emit metrics if no replies
19 return nil
20 }
21
22 mx["ping_rtt_min"] = sample.RTT.Min.Microseconds()
23 mx["ping_rtt_max"] = sample.RTT.Max.Microseconds()
24 mx["ping_rtt_avg"] = sample.RTT.Avg.Microseconds()
25 mx["ping_rtt_stddev"] = sample.RTT.StdDev.Microseconds()
26
27 return nil
28 }