1297 lines
37 KiB
Go
1297 lines
37 KiB
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package collector
|
|
|
|
import (
|
|
"github.com/go-kit/log"
|
|
"github.com/go-kit/log/level"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"github.com/yusufpapurcu/wmi"
|
|
)
|
|
|
|
// A vmwareBlastCollector is a Prometheus collector for WMI metrics:
|
|
// win32_PerfRawData_Counters_VMwareBlastAudioCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastCDRCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastClipboardCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastHTML5MMRCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastImagingCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastRTAVCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastSerialPortandScannerCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastSessionCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastSkypeforBusinessControlCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastThinPrintCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastUSBCounters
|
|
// win32_PerfRawData_Counters_VMwareBlastWindowsMediaMMRCounters
|
|
|
|
type vmwareBlastCollector struct {
|
|
logger log.Logger
|
|
|
|
AudioReceivedBytes *prometheus.Desc
|
|
AudioReceivedPackets *prometheus.Desc
|
|
AudioTransmittedBytes *prometheus.Desc
|
|
AudioTransmittedPackets *prometheus.Desc
|
|
|
|
CDRReceivedBytes *prometheus.Desc
|
|
CDRReceivedPackets *prometheus.Desc
|
|
CDRTransmittedBytes *prometheus.Desc
|
|
CDRTransmittedPackets *prometheus.Desc
|
|
|
|
ClipboardReceivedBytes *prometheus.Desc
|
|
ClipboardReceivedPackets *prometheus.Desc
|
|
ClipboardTransmittedBytes *prometheus.Desc
|
|
ClipboardTransmittedPackets *prometheus.Desc
|
|
|
|
HTML5MMRReceivedBytes *prometheus.Desc
|
|
HTML5MMRReceivedPackets *prometheus.Desc
|
|
HTML5MMRTransmittedBytes *prometheus.Desc
|
|
HTML5MMRTransmittedPackets *prometheus.Desc
|
|
|
|
ImagingDirtyFramesPerSecond *prometheus.Desc
|
|
ImagingFBCRate *prometheus.Desc
|
|
ImagingFramesPerSecond *prometheus.Desc
|
|
ImagingPollRate *prometheus.Desc
|
|
ImagingReceivedBytes *prometheus.Desc
|
|
ImagingReceivedPackets *prometheus.Desc
|
|
ImagingTotalDirtyFrames *prometheus.Desc
|
|
ImagingTotalFBC *prometheus.Desc
|
|
ImagingTotalFrames *prometheus.Desc
|
|
ImagingTotalPoll *prometheus.Desc
|
|
ImagingTransmittedBytes *prometheus.Desc
|
|
ImagingTransmittedPackets *prometheus.Desc
|
|
|
|
RTAVReceivedBytes *prometheus.Desc
|
|
RTAVReceivedPackets *prometheus.Desc
|
|
RTAVTransmittedBytes *prometheus.Desc
|
|
RTAVTransmittedPackets *prometheus.Desc
|
|
|
|
SerialPortandScannerReceivedBytes *prometheus.Desc
|
|
SerialPortandScannerReceivedPackets *prometheus.Desc
|
|
SerialPortandScannerTransmittedBytes *prometheus.Desc
|
|
SerialPortandScannerTransmittedPackets *prometheus.Desc
|
|
|
|
SessionAutomaticReconnectCount *prometheus.Desc
|
|
SessionCumulativeReceivedBytesOverTCP *prometheus.Desc
|
|
SessionCumulativeReceivedBytesOverUDP *prometheus.Desc
|
|
SessionCumulativeTransmittedBytesOverTCP *prometheus.Desc
|
|
SessionCumulativeTransmittedBytesOverUDP *prometheus.Desc
|
|
SessionEstimatedBandwidthUplink *prometheus.Desc
|
|
SessionInstantaneousReceivedBytesOverTCP *prometheus.Desc
|
|
SessionInstantaneousReceivedBytesOverUDP *prometheus.Desc
|
|
SessionInstantaneousTransmittedBytesOverTCP *prometheus.Desc
|
|
SessionInstantaneousTransmittedBytesOverUDP *prometheus.Desc
|
|
SessionJitterUplink *prometheus.Desc
|
|
SessionPacketLossUplink *prometheus.Desc
|
|
SessionReceivedBytes *prometheus.Desc
|
|
SessionReceivedPackets *prometheus.Desc
|
|
SessionRTT *prometheus.Desc
|
|
SessionTransmittedBytes *prometheus.Desc
|
|
SessionTransmittedPackets *prometheus.Desc
|
|
|
|
SkypeforBusinessControlReceivedBytes *prometheus.Desc
|
|
SkypeforBusinessControlReceivedPackets *prometheus.Desc
|
|
SkypeforBusinessControlTransmittedBytes *prometheus.Desc
|
|
SkypeforBusinessControlTransmittedPackets *prometheus.Desc
|
|
|
|
ThinPrintReceivedBytes *prometheus.Desc
|
|
ThinPrintReceivedPackets *prometheus.Desc
|
|
ThinPrintTransmittedBytes *prometheus.Desc
|
|
ThinPrintTransmittedPackets *prometheus.Desc
|
|
|
|
USBReceivedBytes *prometheus.Desc
|
|
USBReceivedPackets *prometheus.Desc
|
|
USBTransmittedBytes *prometheus.Desc
|
|
USBTransmittedPackets *prometheus.Desc
|
|
|
|
WindowsMediaMMRReceivedBytes *prometheus.Desc
|
|
WindowsMediaMMRReceivedPackets *prometheus.Desc
|
|
WindowsMediaMMRTransmittedBytes *prometheus.Desc
|
|
WindowsMediaMMRTransmittedPackets *prometheus.Desc
|
|
}
|
|
|
|
// newVmwareBlastCollector constructs a new vmwareBlastCollector
|
|
func newVmwareBlastCollector(logger log.Logger) (Collector, error) {
|
|
const subsystem = "vmware_blast"
|
|
return &vmwareBlastCollector{
|
|
logger: log.With(logger, "collector", subsystem),
|
|
AudioReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "audio_received_bytes_total"),
|
|
"(AudioReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
AudioReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "audio_received_packets_total"),
|
|
"(AudioReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
AudioTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "audio_transmitted_bytes_total"),
|
|
"(AudioTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
AudioTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "audio_transmitted_packets_total"),
|
|
"(AudioTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
CDRReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "cdr_received_bytes_total"),
|
|
"(CDRReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
CDRReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "cdr_received_packets_total"),
|
|
"(CDRReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
CDRTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "cdr_transmitted_bytes_total"),
|
|
"(CDRTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
CDRTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "cdr_transmitted_packets_total"),
|
|
"(CDRTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
ClipboardReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "clipboard_received_bytes_total"),
|
|
"(ClipboardReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ClipboardReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "clipboard_received_packets_total"),
|
|
"(ClipboardReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ClipboardTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "clipboard_transmitted_bytes_total"),
|
|
"(ClipboardTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ClipboardTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "clipboard_transmitted_packets_total"),
|
|
"(ClipboardTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
HTML5MMRReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "html5_mmr_received_bytes_total"),
|
|
"(HTML5MMRReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
HTML5MMRReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "html5_mmr_received_packets_total"),
|
|
"(HTML5MMRReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
HTML5MMRTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "html5_mmr_transmitted_bytes_total"),
|
|
"(HTML5MMRTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
HTML5MMRTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "html5_mmr_transmitted_packets_total"),
|
|
"(HTML5MMRTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
ImagingDirtyFramesPerSecond: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_dirty_frames_per_second"),
|
|
"(ImagingDirtyFramesPerSecond)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingFBCRate: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_fbc_rate"),
|
|
"(ImagingFBCRate)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingFramesPerSecond: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_frames_per_second"),
|
|
"(ImagingFramesPerSecond)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingPollRate: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_poll_rate"),
|
|
"(ImagingPollRate)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_received_bytes_total"),
|
|
"(ImagingReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_received_packets_total"),
|
|
"(ImagingReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingTotalDirtyFrames: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_total_dirty_frames_total"),
|
|
"(ImagingTotalDirtyFrames)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingTotalFBC: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_fbc_total"),
|
|
"(ImagingTotalFBC)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingTotalFrames: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_frames_total"),
|
|
"(ImagingTotalFrames)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingTotalPoll: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_poll_total"),
|
|
"(ImagingTotalPoll)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_transmitted_bytes_total"),
|
|
"(ImagingTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ImagingTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "imaging_transmitted_packets_total"),
|
|
"(ImagingTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
RTAVReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "rtav_received_bytes_total"),
|
|
"(RTAVReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
RTAVReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "rtav_received_packets_total"),
|
|
"(RTAVReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
RTAVTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "rtav_transmitted_bytes_total"),
|
|
"(RTAVTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
RTAVTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "rtav_transmitted_packets_total"),
|
|
"(RTAVTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
SerialPortandScannerReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "serial_port_and_scanner_received_bytes_total"),
|
|
"(SerialPortandScannerReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SerialPortandScannerReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "serial_port_and_scanner_received_packets_total"),
|
|
"(SerialPortandScannerReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SerialPortandScannerTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "serial_port_and_scanner_transmitted_bytes_total"),
|
|
"(SerialPortandScannerTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SerialPortandScannerTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "serial_port_and_scanner_transmitted_packets_total"),
|
|
"(SerialPortandScannerTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
SessionAutomaticReconnectCount: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_automatic_reconnect_count_total"),
|
|
"(SessionAutomaticReconnectCount)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionCumulativeReceivedBytesOverTCP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_cumlative_received_bytes_over_tcp_total"),
|
|
"(SessionCumulativeReceivedBytesOverTCP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionCumulativeReceivedBytesOverUDP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_cumlative_received_bytes_over_udp_total"),
|
|
"(SessionCumulativeReceivedBytesOverUDP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionCumulativeTransmittedBytesOverTCP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_cumlative_transmitted_bytes_over_tcp_total"),
|
|
"(SessionCumulativeTransmittedBytesOverTCP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionCumulativeTransmittedBytesOverUDP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_cumlative_transmitted_bytes_over_udp_total"),
|
|
"(SessionCumulativeTransmittedBytesOverUDP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionEstimatedBandwidthUplink: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_estimated_bandwidth_uplink"),
|
|
"(SessionEstimatedBandwidthUplink)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionInstantaneousReceivedBytesOverTCP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_instantaneous_received_bytes_over_tcp_total"),
|
|
"(SessionInstantaneousReceivedBytesOverTCP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionInstantaneousReceivedBytesOverUDP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_instantaneous_received_bytes_over_udp_total"),
|
|
"(SessionInstantaneousReceivedBytesOverUDP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionInstantaneousTransmittedBytesOverTCP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_instantaneous_transmitted_bytes_over_tcp_total"),
|
|
"(SessionInstantaneousTransmittedBytesOverTCP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionInstantaneousTransmittedBytesOverUDP: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_instantaneous_transmitted_bytes_over_udp_total"),
|
|
"(SessionInstantaneousTransmittedBytesOverUDP)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionJitterUplink: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_jitter_uplink"),
|
|
"(SessionJitterUplink)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionPacketLossUplink: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_packet_loss_uplink"),
|
|
"(SessionPacketLossUplink)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_received_bytes_total"),
|
|
"(SessionReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_received_packets_total"),
|
|
"(SessionReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionRTT: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_rtt"),
|
|
"(SessionRTT)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_transmitted_bytes_total"),
|
|
"(SessionTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SessionTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "session_transmitted_packets_total"),
|
|
"(SessionTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
SkypeforBusinessControlReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "skype_for_business_control_received_bytes_total"),
|
|
"(SkypeforBusinessControlReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SkypeforBusinessControlReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "skype_for_business_control_received_packets_total"),
|
|
"(SkypeforBusinessControlReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SkypeforBusinessControlTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "skype_for_business_control_transmitted_bytes_total"),
|
|
"(SkypeforBusinessControlTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
SkypeforBusinessControlTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "skype_for_business_control_transmitted_packets_total"),
|
|
"(SkypeforBusinessControlTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
ThinPrintReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "thinprint_received_bytes_total"),
|
|
"(ThinPrintReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ThinPrintReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "thinprint_received_packets_total"),
|
|
"(ThinPrintReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ThinPrintTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "thinprint_transmitted_bytes_total"),
|
|
"(ThinPrintTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
ThinPrintTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "thinprint_transmitted_packets_total"),
|
|
"(ThinPrintTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
USBReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "usb_received_bytes_total"),
|
|
"(USBReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
USBReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "usb_received_packets_total"),
|
|
"(USBReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
USBTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "usb_transmitted_bytes_total"),
|
|
"(USBTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
USBTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "usb_transmitted_packets_total"),
|
|
"(USBTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
|
|
WindowsMediaMMRReceivedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "windows_media_mmr_received_bytes_total"),
|
|
"(WindowsMediaMMRReceivedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
WindowsMediaMMRReceivedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "windows_media_mmr_received_packets_total"),
|
|
"(WindowsMediaMMRReceivedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
WindowsMediaMMRTransmittedBytes: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "windows_media_mmr_transmitted_bytes_total"),
|
|
"(WindowsMediaMMRTransmittedBytes)",
|
|
nil,
|
|
nil,
|
|
),
|
|
WindowsMediaMMRTransmittedPackets: prometheus.NewDesc(
|
|
prometheus.BuildFQName(Namespace, subsystem, "windows_media_mmr_transmitted_packets_total"),
|
|
"(WindowsMediaMMRTransmittedPackets)",
|
|
nil,
|
|
nil,
|
|
),
|
|
}, nil
|
|
}
|
|
|
|
// Collect sends the metric values for each metric
|
|
// to the provided prometheus Metric channel.
|
|
func (c *vmwareBlastCollector) Collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) error {
|
|
if desc, err := c.collectAudio(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast audio metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectCdr(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast CDR metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectClipboard(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast clipboard metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectHtml5Mmr(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast HTML5 MMR metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectImaging(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast imaging metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectRtav(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast RTAV metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectSerialPortandScanner(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast serial port and scanner metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectSession(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectSkypeforBusinessControl(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast skype for business control metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectThinPrint(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast thin print metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectUsb(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast USB metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
if desc, err := c.collectWindowsMediaMmr(ch); err != nil {
|
|
_ = level.Error(c.logger).Log("failed collecting vmware blast windows media MMR metrics", "desc", desc, "err", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastAudioCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastCDRCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastClipboardCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastHTML5MMRcounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastImagingCounters struct {
|
|
Dirtyframespersecond uint32
|
|
FBCRate uint32
|
|
Framespersecond uint32
|
|
PollRate uint32
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
Totaldirtyframes uint32
|
|
TotalFBC uint32
|
|
Totalframes uint32
|
|
Totalpoll uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastRTAVCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastSerialPortandScannerCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastSessionCounters struct {
|
|
AutomaticReconnectCount uint32
|
|
CumulativeReceivedBytesoverTCP uint32
|
|
CumulativeReceivedBytesoverUDP uint32
|
|
CumulativeTransmittedBytesoverTCP uint32
|
|
CumulativeTransmittedBytesoverUDP uint32
|
|
EstimatedBandwidthUplink uint32
|
|
InstantaneousReceivedBytesoverTCP uint32
|
|
InstantaneousReceivedBytesoverUDP uint32
|
|
InstantaneousTransmittedBytesoverTCP uint32
|
|
InstantaneousTransmittedBytesoverUDP uint32
|
|
JitterUplink uint32
|
|
PacketLossUplink uint32
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
RTT uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastSkypeforBusinessControlCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastThinPrintCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastUSBCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
type win32_PerfRawData_Counters_VMwareBlastWindowsMediaMMRCounters struct {
|
|
ReceivedBytes uint32
|
|
ReceivedPackets uint32
|
|
TransmittedBytes uint32
|
|
TransmittedPackets uint32
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectAudio(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastAudioCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.AudioReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.AudioReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.AudioTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.AudioTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectCdr(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastCDRCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.CDRReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.CDRReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.CDRTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.CDRTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectClipboard(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastClipboardCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ClipboardReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ClipboardReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ClipboardTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ClipboardTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectHtml5Mmr(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastHTML5MMRcounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.HTML5MMRReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.HTML5MMRReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.HTML5MMRTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.HTML5MMRTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectImaging(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastImagingCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingDirtyFramesPerSecond,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].Dirtyframespersecond),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingFBCRate,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].FBCRate),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingFramesPerSecond,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].Framespersecond),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingPollRate,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].PollRate),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingTotalDirtyFrames,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].Totaldirtyframes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingTotalFBC,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TotalFBC),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingTotalFrames,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].Totalframes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingTotalPoll,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].Totalpoll),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ImagingTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectRtav(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastRTAVCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.RTAVReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.RTAVReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.RTAVTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.RTAVTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectSerialPortandScanner(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastSerialPortandScannerCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SerialPortandScannerReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SerialPortandScannerReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SerialPortandScannerTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SerialPortandScannerTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectSession(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastSessionCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionAutomaticReconnectCount,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].AutomaticReconnectCount),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionCumulativeReceivedBytesOverTCP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].CumulativeReceivedBytesoverTCP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionCumulativeReceivedBytesOverUDP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].CumulativeReceivedBytesoverUDP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionCumulativeTransmittedBytesOverTCP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].CumulativeTransmittedBytesoverTCP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionCumulativeTransmittedBytesOverUDP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].CumulativeTransmittedBytesoverUDP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionEstimatedBandwidthUplink,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].EstimatedBandwidthUplink),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionInstantaneousReceivedBytesOverTCP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].InstantaneousReceivedBytesoverTCP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionInstantaneousReceivedBytesOverUDP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].InstantaneousReceivedBytesoverUDP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionInstantaneousTransmittedBytesOverTCP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].InstantaneousTransmittedBytesoverTCP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionInstantaneousTransmittedBytesOverUDP,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].InstantaneousTransmittedBytesoverUDP),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionJitterUplink,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].JitterUplink),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionPacketLossUplink,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].PacketLossUplink),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionRTT,
|
|
prometheus.GaugeValue,
|
|
float64(dst[0].RTT),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SessionTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectSkypeforBusinessControl(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastSkypeforBusinessControlCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SkypeforBusinessControlReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SkypeforBusinessControlReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SkypeforBusinessControlTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.SkypeforBusinessControlTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectThinPrint(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastThinPrintCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ThinPrintReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ThinPrintReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ThinPrintTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.ThinPrintTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectUsb(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastUSBCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.USBReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.USBReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.USBTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.USBTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func (c *vmwareBlastCollector) collectWindowsMediaMmr(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
|
var dst []win32_PerfRawData_Counters_VMwareBlastWindowsMediaMMRCounters
|
|
q := queryAll(&dst, c.logger)
|
|
if err := wmi.Query(q, &dst); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(dst) == 0 {
|
|
// It's possible for these classes to legitimately return null when queried
|
|
return nil, nil
|
|
}
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.WindowsMediaMMRReceivedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.WindowsMediaMMRReceivedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].ReceivedPackets),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.WindowsMediaMMRTransmittedBytes,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedBytes),
|
|
)
|
|
|
|
ch <- prometheus.MustNewConstMetric(
|
|
c.WindowsMediaMMRTransmittedPackets,
|
|
prometheus.CounterValue,
|
|
float64(dst[0].TransmittedPackets),
|
|
)
|
|
|
|
return nil, nil
|
|
}
|