mirror of
https://github.com/prometheus/node_exporter.git
synced 2024-11-10 07:34:09 -08:00
add pool size to entropy collector
Signed-off-by: binjip978 <binjip978@gmail.com>
This commit is contained in:
parent
3799895d41
commit
6d1a4ddb24
|
@ -20,10 +20,13 @@ import (
|
||||||
|
|
||||||
"github.com/go-kit/kit/log"
|
"github.com/go-kit/kit/log"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
"github.com/prometheus/procfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
type entropyCollector struct {
|
type entropyCollector struct {
|
||||||
|
fs procfs.FS
|
||||||
entropyAvail *prometheus.Desc
|
entropyAvail *prometheus.Desc
|
||||||
|
entropyPoolSize *prometheus.Desc
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,23 +36,44 @@ func init() {
|
||||||
|
|
||||||
// NewEntropyCollector returns a new Collector exposing entropy stats.
|
// NewEntropyCollector returns a new Collector exposing entropy stats.
|
||||||
func NewEntropyCollector(logger log.Logger) (Collector, error) {
|
func NewEntropyCollector(logger log.Logger) (Collector, error) {
|
||||||
|
fs, err := procfs.NewFS(*procPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to open procfs: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
return &entropyCollector{
|
return &entropyCollector{
|
||||||
|
fs: fs,
|
||||||
entropyAvail: prometheus.NewDesc(
|
entropyAvail: prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(namespace, "", "entropy_available_bits"),
|
prometheus.BuildFQName(namespace, "", "entropy_available_bits"),
|
||||||
"Bits of available entropy.",
|
"Bits of available entropy.",
|
||||||
nil, nil,
|
nil, nil,
|
||||||
),
|
),
|
||||||
|
entropyPoolSize: prometheus.NewDesc(
|
||||||
|
prometheus.BuildFQName(namespace, "", "entropy_pool_size_bytes"),
|
||||||
|
"Bytes of entropy pool.",
|
||||||
|
nil, nil,
|
||||||
|
),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *entropyCollector) Update(ch chan<- prometheus.Metric) error {
|
func (c *entropyCollector) Update(ch chan<- prometheus.Metric) error {
|
||||||
value, err := readUintFromFile(procFilePath("sys/kernel/random/entropy_avail"))
|
stats, err := c.fs.KernelRandom()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("couldn't get entropy_avail: %s", err)
|
return fmt.Errorf("failed to get kernel random stats: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if stats.EntropyAvaliable == nil {
|
||||||
|
return fmt.Errorf("couldn't get entropy_avail")
|
||||||
}
|
}
|
||||||
ch <- prometheus.MustNewConstMetric(
|
ch <- prometheus.MustNewConstMetric(
|
||||||
c.entropyAvail, prometheus.GaugeValue, float64(value))
|
c.entropyAvail, prometheus.GaugeValue, float64(*stats.EntropyAvaliable))
|
||||||
|
|
||||||
|
if stats.PoolSize == nil {
|
||||||
|
return fmt.Errorf("couldn't get entropy pool size")
|
||||||
|
}
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
c.entropyPoolSize, prometheus.GaugeValue, float64(*stats.PoolSize))
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -627,6 +627,9 @@ node_edac_uncorrectable_errors_total{controller="0"} 5
|
||||||
# HELP node_entropy_available_bits Bits of available entropy.
|
# HELP node_entropy_available_bits Bits of available entropy.
|
||||||
# TYPE node_entropy_available_bits gauge
|
# TYPE node_entropy_available_bits gauge
|
||||||
node_entropy_available_bits 1337
|
node_entropy_available_bits 1337
|
||||||
|
# HELP node_entropy_pool_size_bytes Bytes of entropy pool.
|
||||||
|
# TYPE node_entropy_pool_size_bytes gauge
|
||||||
|
node_entropy_pool_size_bytes 4096
|
||||||
# HELP node_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which node_exporter was built.
|
# HELP node_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which node_exporter was built.
|
||||||
# TYPE node_exporter_build_info gauge
|
# TYPE node_exporter_build_info gauge
|
||||||
# HELP node_filefd_allocated File descriptor statistics: allocated.
|
# HELP node_filefd_allocated File descriptor statistics: allocated.
|
||||||
|
|
1
collector/fixtures/proc/sys/kernel/random/poolsize
Normal file
1
collector/fixtures/proc/sys/kernel/random/poolsize
Normal file
|
@ -0,0 +1 @@
|
||||||
|
4096
|
Loading…
Reference in a new issue