|
|
|
|
@ -25,11 +25,18 @@ import ( |
|
|
|
|
|
|
|
|
|
"github.com/go-kit/log" |
|
|
|
|
"github.com/prometheus/client_golang/prometheus" |
|
|
|
|
"gopkg.in/alecthomas/kingpin.v2" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
arpDeviceInclude = kingpin.Flag("collector.arp.device-include", "Regexp of arp devices to include (mutually exclusive to device-exclude).").String() |
|
|
|
|
arpDeviceExclude = kingpin.Flag("collector.arp.device-exclude", "Regexp of arp devices to exclude (mutually exclusive to device-include).").String() |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type arpCollector struct { |
|
|
|
|
entries *prometheus.Desc |
|
|
|
|
logger log.Logger |
|
|
|
|
deviceFilter netDevFilter |
|
|
|
|
entries *prometheus.Desc |
|
|
|
|
logger log.Logger |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func init() { |
|
|
|
|
@ -39,6 +46,7 @@ func init() { |
|
|
|
|
// NewARPCollector returns a new Collector exposing ARP stats.
|
|
|
|
|
func NewARPCollector(logger log.Logger) (Collector, error) { |
|
|
|
|
return &arpCollector{ |
|
|
|
|
deviceFilter: newNetDevFilter(*arpDeviceExclude, *arpDeviceInclude), |
|
|
|
|
entries: prometheus.NewDesc( |
|
|
|
|
prometheus.BuildFQName(namespace, "arp", "entries"), |
|
|
|
|
"ARP entries by device", |
|
|
|
|
@ -98,6 +106,9 @@ func (c *arpCollector) Update(ch chan<- prometheus.Metric) error { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for device, entryCount := range entries { |
|
|
|
|
if c.deviceFilter.ignored(device) { |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.entries, prometheus.GaugeValue, float64(entryCount), device) |
|
|
|
|
} |
|
|
|
|
|