From 39a1d64cfc88bc62f42d4f1a20b423523a174541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 6 Mar 2018 02:21:20 +0100 Subject: [PATCH 1/3] libbeat: build internal metrics on windows and linux without cgo --- libbeat/cmd/instance/metrics_other.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libbeat/cmd/instance/metrics_other.go b/libbeat/cmd/instance/metrics_other.go index 14328b1665e4..5b50570ea088 100644 --- a/libbeat/cmd/instance/metrics_other.go +++ b/libbeat/cmd/instance/metrics_other.go @@ -1,4 +1,4 @@ -// +build !darwin,!linux,!windows darwin,!cgo linux,!cgo windows,!cgo +// +build !darwin,!linux,!cgo darwin,!cgo freebsd,!cgo openbsd package instance From 75474c7d5247a55c8f08d51a9232e1edcdd6b48d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 6 Mar 2018 03:40:57 +0100 Subject: [PATCH 2/3] libbeat: add ephemeral id even if no internal memory metrics is reported --- libbeat/cmd/instance/metrics_other.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libbeat/cmd/instance/metrics_other.go b/libbeat/cmd/instance/metrics_other.go index 5b50570ea088..9febc2616b6e 100644 --- a/libbeat/cmd/instance/metrics_other.go +++ b/libbeat/cmd/instance/metrics_other.go @@ -2,7 +2,19 @@ package instance -import "github.com/elastic/beats/libbeat/logp" +import ( + "github.com/satori/go.uuid" + + "github.com/elastic/beats/libbeat/logp" +) + +var ( + ephemeralID uuid.UUID +) + +func init() { + ephemeralID = uuid.NewV4() +} func setupMetrics(name string) error { logp.Warn("Metrics not implemented for this OS.") From e18db5d41971a74529b71e4b7f69908e30754289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Mon, 12 Mar 2018 12:52:18 +0100 Subject: [PATCH 3/3] fix incorrect build tags && create common file for all platforms --- CHANGELOG.asciidoc | 1 + libbeat/cmd/instance/metrics.go | 33 +++++------------------- libbeat/cmd/instance/metrics_common.go | 35 ++++++++++++++++++++++++++ libbeat/cmd/instance/metrics_other.go | 14 +++-------- 4 files changed, 45 insertions(+), 38 deletions(-) create mode 100644 libbeat/cmd/instance/metrics_common.go diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 15cf0afbe707..9c3b35f0d92a 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -89,6 +89,7 @@ https://github.com/elastic/beats/compare/v6.0.0-beta2...master[Check the HEAD di - Remove double slashes in Windows service script. {pull}6491[6491] - Fix infinite failure on Kubernetes watch {pull}6504[6504] - Ensure Kubernetes labels/annotations don't break mapping {pull}6490[6490] +- Report ephemeral ID and uptime in monitoring events on all platforms {pull}6501[6501] *Auditbeat* diff --git a/libbeat/cmd/instance/metrics.go b/libbeat/cmd/instance/metrics.go index 8bb204eaa869..a8098461280d 100644 --- a/libbeat/cmd/instance/metrics.go +++ b/libbeat/cmd/instance/metrics.go @@ -1,5 +1,4 @@ -// +build darwin linux windows -// +build cgo +// +build darwin,cgo freebsd,cgo linux windows package instance @@ -7,38 +6,31 @@ import ( "fmt" "os" "runtime" - "time" - - "github.com/satori/go.uuid" "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/libbeat/metric/system/cpu" "github.com/elastic/beats/libbeat/metric/system/process" "github.com/elastic/beats/libbeat/monitoring" - "github.com/elastic/beats/libbeat/monitoring/report/log" ) var ( beatProcessStats *process.Stats - ephemeralID uuid.UUID + systemMetrics *monitoring.Registry ) func init() { - beatMetrics := monitoring.Default.NewRegistry("beat") + systemMetrics = monitoring.Default.NewRegistry("system") +} + +func setupMetrics(name string) error { monitoring.NewFunc(beatMetrics, "memstats", reportMemStats, monitoring.Report) monitoring.NewFunc(beatMetrics, "cpu", reportBeatCPU, monitoring.Report) - monitoring.NewFunc(beatMetrics, "info", reportInfo, monitoring.Report) - systemMetrics := monitoring.Default.NewRegistry("system") monitoring.NewFunc(systemMetrics, "cpu", reportSystemCPUUsage, monitoring.Report) if runtime.GOOS != "windows" { monitoring.NewFunc(systemMetrics, "load", reportSystemLoadAverage, monitoring.Report) } - ephemeralID = uuid.NewV4() -} - -func setupMetrics(name string) error { beatProcessStats = &process.Stats{ Procs: []string{name}, EnvWhitelist: nil, @@ -91,19 +83,6 @@ func getRSSSize() (uint64, error) { return rss, nil } -func reportInfo(_ monitoring.Mode, V monitoring.Visitor) { - V.OnRegistryStart() - defer V.OnRegistryFinished() - - delta := time.Since(log.StartTime) - uptime := int64(delta / time.Millisecond) - monitoring.ReportNamespace(V, "uptime", func() { - monitoring.ReportInt(V, "ms", uptime) - }) - - monitoring.ReportString(V, "ephemeral_id", ephemeralID.String()) -} - func reportBeatCPU(_ monitoring.Mode, V monitoring.Visitor) { V.OnRegistryStart() defer V.OnRegistryFinished() diff --git a/libbeat/cmd/instance/metrics_common.go b/libbeat/cmd/instance/metrics_common.go new file mode 100644 index 000000000000..bdec5fe16056 --- /dev/null +++ b/libbeat/cmd/instance/metrics_common.go @@ -0,0 +1,35 @@ +package instance + +import ( + "time" + + "github.com/satori/go.uuid" + + "github.com/elastic/beats/libbeat/monitoring" + "github.com/elastic/beats/libbeat/monitoring/report/log" +) + +var ( + ephemeralID uuid.UUID + beatMetrics *monitoring.Registry +) + +func init() { + beatMetrics = monitoring.Default.NewRegistry("beat") + monitoring.NewFunc(beatMetrics, "info", reportInfo, monitoring.Report) + + ephemeralID = uuid.NewV4() +} + +func reportInfo(_ monitoring.Mode, V monitoring.Visitor) { + V.OnRegistryStart() + defer V.OnRegistryFinished() + + delta := time.Since(log.StartTime) + uptime := int64(delta / time.Millisecond) + monitoring.ReportNamespace(V, "uptime", func() { + monitoring.ReportInt(V, "ms", uptime) + }) + + monitoring.ReportString(V, "ephemeral_id", ephemeralID.String()) +} diff --git a/libbeat/cmd/instance/metrics_other.go b/libbeat/cmd/instance/metrics_other.go index 9febc2616b6e..f8325bbff1e1 100644 --- a/libbeat/cmd/instance/metrics_other.go +++ b/libbeat/cmd/instance/metrics_other.go @@ -1,21 +1,13 @@ -// +build !darwin,!linux,!cgo darwin,!cgo freebsd,!cgo openbsd +// +build !darwin !cgo +// +build !freebsd !cgo +// +build !linux,!windows package instance import ( - "github.com/satori/go.uuid" - "github.com/elastic/beats/libbeat/logp" ) -var ( - ephemeralID uuid.UUID -) - -func init() { - ephemeralID = uuid.NewV4() -} - func setupMetrics(name string) error { logp.Warn("Metrics not implemented for this OS.") return nil