add dd support
This commit is contained in:
parent
c3ec5d780d
commit
0ab3de2ec4
|
|
@ -323,6 +323,8 @@ func (u *DatadogUnifi) switchExport(r report, v any) { //nolint:cyclop
|
||||||
u.batchUAP(r, v)
|
u.batchUAP(r, v)
|
||||||
case *unifi.USW:
|
case *unifi.USW:
|
||||||
u.batchUSW(r, v)
|
u.batchUSW(r, v)
|
||||||
|
case *unifi.PDU:
|
||||||
|
u.batchPDU(r, v)
|
||||||
case *unifi.USG:
|
case *unifi.USG:
|
||||||
u.batchUSG(r, v)
|
u.batchUSG(r, v)
|
||||||
case *unifi.UXG:
|
case *unifi.UXG:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
package datadogunifi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/unpoller/unifi"
|
||||||
|
)
|
||||||
|
|
||||||
|
// pduT is used as a name for printed/logged counters.
|
||||||
|
const pduT = item("PDU")
|
||||||
|
|
||||||
|
// batchPDU generates Unifi PDU datapoints for Datadog.
|
||||||
|
// These points can be passed directly to datadog.
|
||||||
|
func (u *DatadogUnifi) batchPDU(r report, s *unifi.PDU) {
|
||||||
|
if !s.Adopted.Val || s.Locating.Val {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tags := cleanTags(map[string]string{
|
||||||
|
"mac": s.Mac,
|
||||||
|
"site_name": s.SiteName,
|
||||||
|
"source": s.SourceName,
|
||||||
|
"name": s.Name,
|
||||||
|
"version": s.Version,
|
||||||
|
"model": s.Model,
|
||||||
|
"serial": s.Serial,
|
||||||
|
"type": s.Type,
|
||||||
|
"ip": s.IP,
|
||||||
|
})
|
||||||
|
data := CombineFloat64(
|
||||||
|
u.batchUSWstat(s.Stat.Sw),
|
||||||
|
u.batchSysStats(s.SysStats, s.SystemStats),
|
||||||
|
map[string]float64{
|
||||||
|
"guest_num_sta": s.GuestNumSta.Val,
|
||||||
|
"bytes": s.Bytes.Val,
|
||||||
|
"outlet_ac_power_budget": s.OutletACPowerBudget.Val,
|
||||||
|
"outlet_ac_power_consumption": s.OutletACPowerConsumption.Val,
|
||||||
|
"outlet_enabled": boolToFloat64(s.OutletEnabled.Val),
|
||||||
|
"overheating": boolToFloat64(s.Overheating.Val),
|
||||||
|
"power_source": s.PowerSource.Val,
|
||||||
|
"total_max_power": s.TotalMaxPower.Val,
|
||||||
|
"last_seen": s.LastSeen.Val,
|
||||||
|
"rx_bytes": s.RxBytes.Val,
|
||||||
|
"tx_bytes": s.TxBytes.Val,
|
||||||
|
"uptime": s.Uptime.Val,
|
||||||
|
"state": s.State.Val,
|
||||||
|
"user_num_sta": s.UserNumSta.Val,
|
||||||
|
"upgradeable": boolToFloat64(s.Upgradeable.Val),
|
||||||
|
})
|
||||||
|
r.addCount(pduT)
|
||||||
|
metricName := metricNamespace("pdu")
|
||||||
|
reportGaugeForFloat64Map(r, metricName, data, tags)
|
||||||
|
|
||||||
|
u.batchPortTable(r, tags, s.PortTable)
|
||||||
|
|
||||||
|
for _, oo := range s.OutletOverrides {
|
||||||
|
oot := cleanTags(map[string]string{
|
||||||
|
"mac": s.Mac,
|
||||||
|
"site_name": s.SiteName,
|
||||||
|
"source": s.SourceName,
|
||||||
|
"name": s.Name,
|
||||||
|
"version": s.Version,
|
||||||
|
"model": s.Model,
|
||||||
|
"serial": s.Serial,
|
||||||
|
"type": s.Type,
|
||||||
|
"ip": s.IP,
|
||||||
|
"outlet_index": oo.Index.Txt,
|
||||||
|
"outlet_name": oo.Name,
|
||||||
|
})
|
||||||
|
ood := map[string]float64{
|
||||||
|
"cycle_enabled": boolToFloat64(oo.CycleEnabled.Val),
|
||||||
|
"relay_state": boolToFloat64(oo.RelayState.Val),
|
||||||
|
}
|
||||||
|
reportGaugeForFloat64Map(r, metricNamespace("pdu.outlet_overrides"), ood, oot)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, ot := range s.OutletTable {
|
||||||
|
ott := cleanTags(map[string]string{
|
||||||
|
"mac": s.Mac,
|
||||||
|
"site_name": s.SiteName,
|
||||||
|
"source": s.SourceName,
|
||||||
|
"name": s.Name,
|
||||||
|
"version": s.Version,
|
||||||
|
"model": s.Model,
|
||||||
|
"serial": s.Serial,
|
||||||
|
"type": s.Type,
|
||||||
|
"ip": s.IP,
|
||||||
|
"outlet_index": ot.Index.Txt,
|
||||||
|
"outlet_name": ot.Name,
|
||||||
|
})
|
||||||
|
otd := map[string]float64{
|
||||||
|
"cycle_enabled": boolToFloat64(ot.CycleEnabled.Val),
|
||||||
|
"relay_state": boolToFloat64(ot.RelayState.Val),
|
||||||
|
"outlet_caps": ot.OutletCaps.Val,
|
||||||
|
"outlet_power_factor": ot.OutletPowerFactor.Val,
|
||||||
|
"outlet_current": ot.OutletCurrent.Val,
|
||||||
|
"outlet_power": ot.OutletPower.Val,
|
||||||
|
"outlet_voltage": ot.OutletVoltage.Val,
|
||||||
|
}
|
||||||
|
reportGaugeForFloat64Map(r, metricNamespace("pdu.outlet_table"), otd, ott)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue