Add product name & version to os collector
This commit is contained in:
parent
abd5a53045
commit
375a74f1e8
|
@ -17,6 +17,7 @@ func init() {
|
||||||
|
|
||||||
// A OSCollector is a Prometheus collector for WMI metrics
|
// A OSCollector is a Prometheus collector for WMI metrics
|
||||||
type OSCollector struct {
|
type OSCollector struct {
|
||||||
|
OSInformation *prometheus.Desc
|
||||||
PhysicalMemoryFreeBytes *prometheus.Desc
|
PhysicalMemoryFreeBytes *prometheus.Desc
|
||||||
PagingFreeBytes *prometheus.Desc
|
PagingFreeBytes *prometheus.Desc
|
||||||
VirtualMemoryFreeBytes *prometheus.Desc
|
VirtualMemoryFreeBytes *prometheus.Desc
|
||||||
|
@ -36,6 +37,12 @@ func NewOSCollector() (Collector, error) {
|
||||||
const subsystem = "os"
|
const subsystem = "os"
|
||||||
|
|
||||||
return &OSCollector{
|
return &OSCollector{
|
||||||
|
OSInformation: prometheus.NewDesc(
|
||||||
|
prometheus.BuildFQName(Namespace, subsystem, "info"),
|
||||||
|
"OperatingSystem.Caption, OperatingSystem.Version",
|
||||||
|
[]string{"product", "version"},
|
||||||
|
nil,
|
||||||
|
),
|
||||||
PagingLimitBytes: prometheus.NewDesc(
|
PagingLimitBytes: prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(Namespace, subsystem, "paging_limit_bytes"),
|
prometheus.BuildFQName(Namespace, subsystem, "paging_limit_bytes"),
|
||||||
"OperatingSystem.SizeStoredInPagingFiles",
|
"OperatingSystem.SizeStoredInPagingFiles",
|
||||||
|
@ -124,9 +131,11 @@ func (c *OSCollector) Collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) e
|
||||||
// Win32_OperatingSystem docs:
|
// Win32_OperatingSystem docs:
|
||||||
// - https://msdn.microsoft.com/en-us/library/aa394239 - Win32_OperatingSystem class
|
// - https://msdn.microsoft.com/en-us/library/aa394239 - Win32_OperatingSystem class
|
||||||
type Win32_OperatingSystem struct {
|
type Win32_OperatingSystem struct {
|
||||||
|
Caption string
|
||||||
FreePhysicalMemory uint64
|
FreePhysicalMemory uint64
|
||||||
FreeSpaceInPagingFiles uint64
|
FreeSpaceInPagingFiles uint64
|
||||||
FreeVirtualMemory uint64
|
FreeVirtualMemory uint64
|
||||||
|
LocalDateTime time.Time
|
||||||
MaxNumberOfProcesses uint32
|
MaxNumberOfProcesses uint32
|
||||||
MaxProcessMemorySize uint64
|
MaxProcessMemorySize uint64
|
||||||
NumberOfProcesses uint32
|
NumberOfProcesses uint32
|
||||||
|
@ -134,7 +143,7 @@ type Win32_OperatingSystem struct {
|
||||||
SizeStoredInPagingFiles uint64
|
SizeStoredInPagingFiles uint64
|
||||||
TotalVirtualMemorySize uint64
|
TotalVirtualMemorySize uint64
|
||||||
TotalVisibleMemorySize uint64
|
TotalVisibleMemorySize uint64
|
||||||
LocalDateTime time.Time
|
Version string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
func (c *OSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
||||||
|
@ -148,6 +157,14 @@ func (c *OSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, er
|
||||||
return nil, errors.New("WMI query returned empty result set")
|
return nil, errors.New("WMI query returned empty result set")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
c.OSInformation,
|
||||||
|
prometheus.GaugeValue,
|
||||||
|
1.0,
|
||||||
|
dst[0].Caption,
|
||||||
|
dst[0].Version,
|
||||||
|
)
|
||||||
|
|
||||||
ch <- prometheus.MustNewConstMetric(
|
ch <- prometheus.MustNewConstMetric(
|
||||||
c.PhysicalMemoryFreeBytes,
|
c.PhysicalMemoryFreeBytes,
|
||||||
prometheus.GaugeValue,
|
prometheus.GaugeValue,
|
||||||
|
|
|
@ -16,6 +16,7 @@ None
|
||||||
|
|
||||||
Name | Description | Type | Labels
|
Name | Description | Type | Labels
|
||||||
-----|-------------|------|-------
|
-----|-------------|------|-------
|
||||||
|
`wmi_os_info` | Contains full product name & version in labels | gauge | `product`, `version`
|
||||||
`wmi_os_paging_limit_bytes` | Total number of bytes that can be sotred in the operating system paging files. 0 (zero) indicates that there are no paging files | gauge | None
|
`wmi_os_paging_limit_bytes` | Total number of bytes that can be sotred in the operating system paging files. 0 (zero) indicates that there are no paging files | gauge | None
|
||||||
`wmi_os_paging_free_bytes` | Number of bytes that can be mapped into the operating system paging files without causing any other pages to be swapped out | gauge | None
|
`wmi_os_paging_free_bytes` | Number of bytes that can be mapped into the operating system paging files without causing any other pages to be swapped out | gauge | None
|
||||||
`wmi_os_physical_memory_free_bytes` | Bytes of physical memory currently unused and available | gauge | None
|
`wmi_os_physical_memory_free_bytes` | Bytes of physical memory currently unused and available | gauge | None
|
||||||
|
|
Loading…
Reference in New Issue