Browse Source
This creates a single metric like: node_uname_info{domainname="(none)",machine="x86_64",nodename="desktop",release="3.16.0-48-generic",sysname="Linux",version="#64~14.04.1-Ubuntu SMP Thu Aug 20 23:03:57 UTC 2015"} 1pull/113/head
Julius Volz
9 years ago
2 changed files with 64 additions and 1 deletions
@ -0,0 +1,63 @@ |
|||||||
|
// +build !nouname
|
||||||
|
|
||||||
|
package collector |
||||||
|
|
||||||
|
import ( |
||||||
|
"syscall" |
||||||
|
|
||||||
|
"github.com/prometheus/client_golang/prometheus" |
||||||
|
) |
||||||
|
|
||||||
|
var unameDesc = prometheus.NewDesc( |
||||||
|
prometheus.BuildFQName(Namespace, "uname", "info"), |
||||||
|
"Labeled system information as provided by the uname system call.", |
||||||
|
[]string{ |
||||||
|
"sysname", |
||||||
|
"release", |
||||||
|
"version", |
||||||
|
"machine", |
||||||
|
"nodename", |
||||||
|
"domainname", |
||||||
|
}, |
||||||
|
nil, |
||||||
|
) |
||||||
|
|
||||||
|
type unameCollector struct{} |
||||||
|
|
||||||
|
func init() { |
||||||
|
Factories["uname"] = newUnameCollector |
||||||
|
} |
||||||
|
|
||||||
|
// NewUnameCollector returns new unameCollector.
|
||||||
|
func newUnameCollector() (Collector, error) { |
||||||
|
return &unameCollector{}, nil |
||||||
|
} |
||||||
|
|
||||||
|
func intArrayToString(array [65]int8) string { |
||||||
|
var str string |
||||||
|
for _, a := range array { |
||||||
|
if a == 0 { |
||||||
|
break |
||||||
|
} |
||||||
|
str += string(a) |
||||||
|
} |
||||||
|
return str |
||||||
|
} |
||||||
|
|
||||||
|
func (c unameCollector) Update(ch chan<- prometheus.Metric) error { |
||||||
|
var uname syscall.Utsname |
||||||
|
if err := syscall.Uname(&uname); err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
labelValues := []string{ |
||||||
|
intArrayToString(uname.Sysname), |
||||||
|
intArrayToString(uname.Release), |
||||||
|
intArrayToString(uname.Version), |
||||||
|
intArrayToString(uname.Machine), |
||||||
|
intArrayToString(uname.Nodename), |
||||||
|
intArrayToString(uname.Domainname), |
||||||
|
} |
||||||
|
ch <- prometheus.MustNewConstMetric(unameDesc, prometheus.GaugeValue, 1, labelValues...) |
||||||
|
return nil |
||||||
|
} |
Loading…
Reference in new issue