add WanStatus
This commit is contained in:
parent
cd742fe7b6
commit
5285dddf4b
2 changed files with 74 additions and 0 deletions
|
|
@ -146,6 +146,17 @@ type StationStatusData struct {
|
|||
IpPrefixClass string `json:"IpPrefixClass"`
|
||||
}
|
||||
|
||||
type WanStatusData struct {
|
||||
Ipv4 string `json:"ipv4"`
|
||||
Mac string `json:"mac_address"`
|
||||
Duration string `json:"duration"`
|
||||
DurationIpv6 string `json:"durationIpv6"`
|
||||
Expires string `json:"expires"`
|
||||
Ipv4Dns string `json:"ipv4_dns"`
|
||||
IPAddressV6 []string `json:"IPAddress_v6"`
|
||||
DNSTblRT []string `json:"DNSTblRT"`
|
||||
}
|
||||
|
||||
type CallLog struct {
|
||||
Lines map[string]*PhoneNumberCallLog
|
||||
Line0 *PhoneNumberCallLog `json:"0"`
|
||||
|
|
@ -189,6 +200,12 @@ type StationAboutResponse struct {
|
|||
Data *StationAboutData `json:"data"`
|
||||
}
|
||||
|
||||
type WanStatusResponse struct {
|
||||
Error string `json:"error"`
|
||||
Message string `json:"message"`
|
||||
Data *WanStatusData `json:"data"`
|
||||
}
|
||||
|
||||
type StationAboutData struct {
|
||||
Software []*SoftwareInfo `json:"cosp"`
|
||||
}
|
||||
|
|
@ -321,6 +338,15 @@ func (v *VodafoneStation) GetLedSetting() (*LedSettingResponse, error) {
|
|||
return ledSettingResponse, json.Unmarshal(responseBody, ledSettingResponse)
|
||||
}
|
||||
|
||||
func (v *VodafoneStation) GetWanStatus() (*WanStatusResponse, error) {
|
||||
responseBody, err := v.doRequest("GET", v.URL+"/api/v1/wan?_="+strconv.FormatInt(makeTimestamp(), 10), "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
WanStatusResponse := &WanStatusResponse{}
|
||||
return WanStatusResponse, json.Unmarshal(responseBody, WanStatusResponse)
|
||||
}
|
||||
|
||||
func (v *VodafoneStation) GetStationAbout() (*StationAboutResponse, error) {
|
||||
responseBody, err := v.doRequest("GET", v.URL+"/api/v1/sta_about?_="+strconv.FormatInt(makeTimestamp(), 10), "")
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,15 @@ var (
|
|||
ipAddressRTDesc *prometheus.Desc
|
||||
ipPrefixClassDesc *prometheus.Desc
|
||||
|
||||
Ipv4Desc *prometheus.Desc
|
||||
MacDesc *prometheus.Desc
|
||||
DurationDesc *prometheus.Desc
|
||||
DurationIpv6Desc *prometheus.Desc
|
||||
ExpiresDesc *prometheus.Desc
|
||||
Ipv4DnsDesc *prometheus.Desc
|
||||
IPAddressV6Desc *prometheus.Desc
|
||||
DNSTblRTDesc *prometheus.Desc
|
||||
|
||||
callEndTimeDesc *prometheus.Desc
|
||||
callStartTimeDesc *prometheus.Desc
|
||||
|
||||
|
|
@ -132,6 +141,15 @@ func init() {
|
|||
ipAddressRTDesc = prometheus.NewDesc(prefix+"ip_address_rt_info", "IP address RT", []string{"ip"}, nil)
|
||||
ipPrefixClassDesc = prometheus.NewDesc(prefix+"ip_prefix_class_info", "IP prefix class info", []string{"prefix_class"}, nil)
|
||||
|
||||
Ipv4Desc = prometheus.NewDesc(prefix+"wan_ip4_info", "WAN IPv4 info", []string{"wan_ip4"}, nil)
|
||||
MacDesc = prometheus.NewDesc(prefix+"wan_mac_address_info", "WAN MAC address", []string{"wan_mac_address"}, nil)
|
||||
DurationDesc = prometheus.NewDesc(prefix+"wan_duration_seconds", "WAN Duration in seconds", nil, nil)
|
||||
DurationIpv6Desc = prometheus.NewDesc(prefix+"wan_ip6_duration_seconds", "WAN IPv6 Duration in seconds", nil, nil)
|
||||
ExpiresDesc = prometheus.NewDesc(prefix+"wan_expires_seconds", "WAN Expires in seconds", nil, nil)
|
||||
Ipv4DnsDesc = prometheus.NewDesc(prefix+"wan_ipv4_dns_info", "WAN IPv4 DNS server", []string{"wan_ipv4_dns"}, nil)
|
||||
IPAddressV6Desc = prometheus.NewDesc(prefix+"wan_ip6_info", "WAN IPv6 info", []string{"wan_ip6"}, nil)
|
||||
DNSTblRTDesc = prometheus.NewDesc(prefix+"wan_ipv6_dns_info", "WAN IPv6 DNS server", []string{"wan_ipv6_dns"}, nil)
|
||||
|
||||
callEndTimeDesc = prometheus.NewDesc(prefix+"call_end_time_epoch", "Call endtime as unix epoch", []string{"port", "id", "external_number", "direction", "type"}, nil)
|
||||
callStartTimeDesc = prometheus.NewDesc(prefix+"call_start_time_epoch", "Call starttime as unix epoch", []string{"port", "id", "external_number", "direction", "type"}, nil)
|
||||
|
||||
|
|
@ -197,6 +215,15 @@ func (c *Collector) Describe(ch chan<- *prometheus.Desc) {
|
|||
ch <- ipAddressRTDesc
|
||||
ch <- ipPrefixClassDesc
|
||||
|
||||
ch <- Ipv4Desc
|
||||
ch <- MacDesc
|
||||
ch <- DurationDesc
|
||||
ch <- DurationIpv6Desc
|
||||
ch <- ExpiresDesc
|
||||
ch <- Ipv4DnsDesc
|
||||
ch <- IPAddressV6Desc
|
||||
ch <- DNSTblRTDesc
|
||||
|
||||
ch <- callEndTimeDesc
|
||||
ch <- callStartTimeDesc
|
||||
|
||||
|
|
@ -303,6 +330,27 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) {
|
|||
ch <- prometheus.MustNewConstMetric(ipPrefixClassDesc, prometheus.GaugeValue, 1, stationStatusResponse.Data.IpPrefixClass)
|
||||
}
|
||||
|
||||
wanStatusResponse, err := c.Station.GetWanStatus()
|
||||
if err != nil {
|
||||
log.With("error", err.Error()).Error("Failed to get wan status")
|
||||
} else if wanStatusResponse.Data != nil {
|
||||
ch <- prometheus.MustNewConstMetric(Ipv4Desc, prometheus.GaugeValue, 1, wanStatusResponse.Data.Ipv4)
|
||||
ch <- prometheus.MustNewConstMetric(MacDesc, prometheus.GaugeValue, 1, wanStatusResponse.Data.Mac)
|
||||
ch <- prometheus.MustNewConstMetric(DurationDesc, prometheus.GaugeValue, parse2float(wanStatusResponse.Data.Duration))
|
||||
ch <- prometheus.MustNewConstMetric(DurationIpv6Desc, prometheus.GaugeValue, parse2float(wanStatusResponse.Data.DurationIpv6))
|
||||
ch <- prometheus.MustNewConstMetric(ExpiresDesc, prometheus.GaugeValue, parse2float(wanStatusResponse.Data.Expires))
|
||||
ch <- prometheus.MustNewConstMetric(Ipv4DnsDesc, prometheus.GaugeValue, 1, wanStatusResponse.Data.Ipv4Dns)
|
||||
// ch <- prometheus.MustNewConstMetric(IPAddressV6Desc, prometheus.GaugeValue, 1, wanStatusResponse.Data.IPAddressV6)
|
||||
for _, IPAddressV6 := range wanStatusResponse.Data.IPAddressV6 {
|
||||
ch <- prometheus.MustNewConstMetric(IPAddressV6Desc, prometheus.GaugeValue, 1, IPAddressV6)
|
||||
}
|
||||
|
||||
// ch <- prometheus.MustNewConstMetric(DNSTblRTDesc, prometheus.GaugeValue, 1, wanStatusResponse.Data.DNSTblRT)
|
||||
for _, DNSTblRT := range wanStatusResponse.Data.DNSTblRT {
|
||||
ch <- prometheus.MustNewConstMetric(DNSTblRTDesc, prometheus.GaugeValue, 1, DNSTblRT)
|
||||
}
|
||||
}
|
||||
|
||||
callLog, err := c.Station.GetCallLog()
|
||||
if err != nil {
|
||||
log.With("error", err.Error()).Error("Failed to get call log")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue