diff options
author | Paul Gier <pgier@redhat.com> | 2019-04-10 11:16:12 -0500 |
---|---|---|
committer | Ben Kochie <superq@gmail.com> | 2019-04-10 18:16:12 +0200 |
commit | b1298677aa13a5f48dd5303120fa4a4bd4579ab9 (patch) | |
tree | a5674890c7713d3d1bd9438a2c3629daa3ca373b /collector/stat_linux.go | |
parent | fbe390709f5370cd9092233239208fb51f46d15f (diff) | |
download | prometheus_node_collector-b1298677aa13a5f48dd5303120fa4a4bd4579ab9.tar.bz2 prometheus_node_collector-b1298677aa13a5f48dd5303120fa4a4bd4579ab9.tar.xz prometheus_node_collector-b1298677aa13a5f48dd5303120fa4a4bd4579ab9.zip |
Early init of procfs (#1315)
Minor change to match naming convention in other collectors.
Initialize the proc or sys FS instance once while initializing
each collector instead of re-creating for each metric update.
Signed-off-by: Paul Gier <pgier@redhat.com>
Diffstat (limited to 'collector/stat_linux.go')
-rw-r--r-- | collector/stat_linux.go | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/collector/stat_linux.go b/collector/stat_linux.go index 290205f..13a4b01 100644 --- a/collector/stat_linux.go +++ b/collector/stat_linux.go | |||
@@ -24,6 +24,7 @@ import ( | |||
24 | ) | 24 | ) |
25 | 25 | ||
26 | type statCollector struct { | 26 | type statCollector struct { |
27 | fs procfs.FS | ||
27 | intr *prometheus.Desc | 28 | intr *prometheus.Desc |
28 | ctxt *prometheus.Desc | 29 | ctxt *prometheus.Desc |
29 | forks *prometheus.Desc | 30 | forks *prometheus.Desc |
@@ -38,7 +39,12 @@ func init() { | |||
38 | 39 | ||
39 | // NewStatCollector returns a new Collector exposing kernel/system statistics. | 40 | // NewStatCollector returns a new Collector exposing kernel/system statistics. |
40 | func NewStatCollector() (Collector, error) { | 41 | func NewStatCollector() (Collector, error) { |
42 | fs, err := procfs.NewFS(*procPath) | ||
43 | if err != nil { | ||
44 | return nil, fmt.Errorf("failed to open procfs: %v", err) | ||
45 | } | ||
41 | return &statCollector{ | 46 | return &statCollector{ |
47 | fs: fs, | ||
42 | intr: prometheus.NewDesc( | 48 | intr: prometheus.NewDesc( |
43 | prometheus.BuildFQName(namespace, "", "intr_total"), | 49 | prometheus.BuildFQName(namespace, "", "intr_total"), |
44 | "Total number of interrupts serviced.", | 50 | "Total number of interrupts serviced.", |
@@ -74,11 +80,7 @@ func NewStatCollector() (Collector, error) { | |||
74 | 80 | ||
75 | // Update implements Collector and exposes kernel and system statistics. | 81 | // Update implements Collector and exposes kernel and system statistics. |
76 | func (c *statCollector) Update(ch chan<- prometheus.Metric) error { | 82 | func (c *statCollector) Update(ch chan<- prometheus.Metric) error { |
77 | fs, err := procfs.NewFS(*procPath) | 83 | stats, err := c.fs.NewStat() |
78 | if err != nil { | ||
79 | return fmt.Errorf("failed to open procfs: %v", err) | ||
80 | } | ||
81 | stats, err := fs.NewStat() | ||
82 | if err != nil { | 84 | if err != nil { |
83 | return err | 85 | return err |
84 | } | 86 | } |