diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index cf3d5d36c92..de7e8608e7e 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -23,6 +23,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Remove deprecated/undocumented IncludeCreatorMetadata setting from kubernetes metadata config options {pull}28006[28006] - Remove deprecated fields from kubernetes module {pull}28046[28046] - Remove deprecated config option aws_partition. {pull}28120[28120] +- Improve stats API {pull}27963[27963] - Enable IMDSv2 support for `add_cloud_metadata` processor on AWS. {issue}22101[22101] {pull}28285[28285] - Update kubernetes.namespace from keyword to group field and add name, labels, annotations, uuid as its fields {pull}27917[27917] diff --git a/libbeat/metric/system/process/process.go b/libbeat/metric/system/process/process.go index 756f9d0e6a8..65b86f5ab67 100644 --- a/libbeat/metric/system/process/process.go +++ b/libbeat/metric/system/process/process.go @@ -30,6 +30,8 @@ import ( "github.com/pkg/errors" + "github.com/elastic/go-sysinfo/types" + "github.com/elastic/beats/v7/libbeat/common" "github.com/elastic/beats/v7/libbeat/common/match" "github.com/elastic/beats/v7/libbeat/logp" @@ -61,7 +63,7 @@ type Process struct { FD sigar.ProcFDUsage Env common.MapStr - //cpu stats + // cpu stats cpuSinceStart float64 cpuTotalPct float64 cpuTotalPctNorm float64 @@ -95,6 +97,7 @@ type Stats struct { envRegexps []match.Matcher // List of regular expressions used to whitelist env vars. cgroups *cgroup.Reader logger *logp.Logger + host types.Host } // Ticks of CPU for a process @@ -293,15 +296,11 @@ func GetOwnResourceUsageTimeInMillis() (int64, int64, error) { } func (procStats *Stats) getProcessEvent(process *Process) common.MapStr { - // This is a holdover until we migrate this library to metricbeat/internal // At which point we'll use the memory code there. var totalPhyMem uint64 - host, err := sysinfo.Host() - if err != nil { - procStats.logger.Warnf("Getting host details: %v", err) - } else { - memStats, err := host.Memory() + if procStats.host != nil { + memStats, err := procStats.host.Memory() if err != nil { procStats.logger.Warnf("Getting memory details: %v", err) } else { @@ -427,6 +426,14 @@ func (procStats *Stats) matchProcess(name string) bool { // cannot be compiled. func (procStats *Stats) Init() error { procStats.logger = logp.NewLogger("processes") + + var err error + procStats.host, err = sysinfo.Host() + if err != nil { + procStats.host = nil + procStats.logger.Warnf("Getting host details: %v", err) + } + procStats.ProcsMap = make(ProcsMap) if len(procStats.Procs) == 0 {