Add scraping of call log

This commit is contained in:
fluepke 2020-12-04 20:55:14 +01:00
parent 9739f241be
commit 7f045f968c
No known key found for this signature in database
GPG key ID: 37E30BD2FBE7746A
2 changed files with 61 additions and 7 deletions

View file

@ -62,6 +62,9 @@ var (
ipAddressRTDesc *prometheus.Desc
ipPrefixClassDesc *prometheus.Desc
callEndTimeDesc *prometheus.Desc
callStartTimeDesc *prometheus.Desc
logoutSuccessDesc *prometheus.Desc
logoutMessageDesc *prometheus.Desc
)
@ -121,6 +124,9 @@ 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)
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)
logoutSuccessDesc = prometheus.NewDesc(prefix+"logout_success_bool", "1 if the logout was successfull", nil, nil)
logoutMessageDesc = prometheus.NewDesc(prefix+"logout_message_info", "Logout message returned by the web interface", []string{"message"}, nil)
}
@ -176,6 +182,9 @@ func (c *Collector) Describe(ch chan<- *prometheus.Desc) {
ch <- ipAddressRTDesc
ch <- ipPrefixClassDesc
ch <- callEndTimeDesc
ch <- callStartTimeDesc
ch <- logoutSuccessDesc
ch <- logoutMessageDesc
}
@ -272,6 +281,22 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) {
ch <- prometheus.MustNewConstMetric(ipPrefixClassDesc, prometheus.GaugeValue, 1, stationStatusResponse.Data.IpPrefixClass)
}
callLog, err := c.Station.GetCallLog()
if err != nil {
log.With("error", err.Error()).Error("Failed to get call log")
} else {
for port, phoneNumberCallLog := range callLog.Lines {
if phoneNumberCallLog.Data == nil {
continue
}
for _, callLogEntry := range phoneNumberCallLog.Data.Entries { //port", "id", "external_number", "direction", "type
labels := []string{port, callLogEntry.Id, callLogEntry.ExternalNumber, callLogEntry.Direction, callLogEntry.Type}
ch <- prometheus.MustNewConstMetric(callEndTimeDesc, prometheus.GaugeValue, parse2float(callLogEntry.EndTime), labels...)
ch <- prometheus.MustNewConstMetric(callStartTimeDesc, prometheus.GaugeValue, parse2float(callLogEntry.StartTime), labels...)
}
}
}
logoutresponse, err := c.Station.Logout()
if logoutresponse != nil {
ch <- prometheus.MustNewConstMetric(logoutMessageDesc, prometheus.GaugeValue, 1, logoutresponse.Message)