From 017cdce94653b4aaed6a34a5af5765e9e1b66be1 Mon Sep 17 00:00:00 2001 From: berfinsari Date: Tue, 26 Mar 2019 06:57:30 +0300 Subject: [PATCH] migrate docker module to ReporterV2 error --- metricbeat/module/docker/container/container.go | 12 ++++-------- .../docker/container/container_integration_test.go | 6 +++--- metricbeat/module/docker/cpu/cpu.go | 12 ++++-------- metricbeat/module/docker/cpu/cpu_integration_test.go | 6 +++--- metricbeat/module/docker/diskio/diskio.go | 12 ++++-------- .../module/docker/diskio/diskio_integration_test.go | 6 +++--- metricbeat/module/docker/healthcheck/data.go | 3 ++- metricbeat/module/docker/healthcheck/healthcheck.go | 12 ++++-------- .../healthcheck/healthcheck_integration_test.go | 6 +++--- metricbeat/module/docker/memory/memory.go | 12 ++++-------- .../module/docker/memory/memory_integration_test.go | 6 +++--- metricbeat/module/docker/network/network.go | 12 ++++-------- .../docker/network/network_integration_test.go | 4 ++-- 13 files changed, 43 insertions(+), 66 deletions(-) diff --git a/metricbeat/module/docker/container/container.go b/metricbeat/module/docker/container/container.go index 06fa64d7db1..8f84dc3eda2 100644 --- a/metricbeat/module/docker/container/container.go +++ b/metricbeat/module/docker/container/container.go @@ -24,13 +24,10 @@ import ( "github.com/docker/docker/client" "github.com/pkg/errors" - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/docker" ) -var logger = logp.NewLogger("docker.container") - func init() { mb.Registry.MustAddMetricSet("docker", "container", New, mb.WithHostParser(docker.HostParser), @@ -66,16 +63,15 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // Fetch returns a list of all containers as events. // This is based on https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-containers. -func (m *MetricSet) Fetch(r mb.ReporterV2) { +func (m *MetricSet) Fetch(r mb.ReporterV2) error { // Fetch a list of all containers. containers, err := m.dockerClient.ContainerList(context.Background(), types.ContainerListOptions{}) if err != nil { - err = errors.Wrap(err, "failed to get docker containers list") - logger.Error(err) - r.Error(err) - return + return errors.Wrap(err, "failed to get docker containers list") } eventsMapping(r, containers, m.dedot) + + return nil } //Close stops the metricset diff --git a/metricbeat/module/docker/container/container_integration_test.go b/metricbeat/module/docker/container/container_integration_test.go index 321a727fa43..cd1dd4afcc3 100644 --- a/metricbeat/module/docker/container/container_integration_test.go +++ b/metricbeat/module/docker/container/container_integration_test.go @@ -28,14 +28,14 @@ import ( ) func TestData(t *testing.T) { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) - events, errs := mbtest.ReportingFetchV2(f) + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + events, errs := mbtest.ReportingFetchV2Error(f) if len(errs) > 0 { t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) } assert.NotEmpty(t, events) - if err := mbtest.WriteEventsReporterV2(f, t, ""); err != nil { + if err := mbtest.WriteEventsReporterV2Error(f, t, ""); err != nil { t.Fatal("write", err) } } diff --git a/metricbeat/module/docker/cpu/cpu.go b/metricbeat/module/docker/cpu/cpu.go index 05cc0c99665..a9fcbbc77b8 100644 --- a/metricbeat/module/docker/cpu/cpu.go +++ b/metricbeat/module/docker/cpu/cpu.go @@ -21,13 +21,10 @@ import ( "github.com/docker/docker/client" "github.com/pkg/errors" - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/docker" ) -var logger = logp.NewLogger("docker.cpu") - func init() { mb.Registry.MustAddMetricSet("docker", "cpu", New, mb.WithHostParser(docker.HostParser), @@ -72,17 +69,16 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Fetch returns a list of docker CPU stats. -func (m *MetricSet) Fetch(r mb.ReporterV2) { +func (m *MetricSet) Fetch(r mb.ReporterV2) error { stats, err := docker.FetchStats(m.dockerClient, m.Module().Config().Timeout) if err != nil { - err = errors.Wrap(err, "failed to get docker stats") - logger.Error(err) - r.Error(err) - return + return errors.Wrap(err, "failed to get docker stats") } formattedStats := m.cpuService.getCPUStatsList(stats, m.dedot) eventsMapping(r, formattedStats) + + return nil } //Close stops the metricset diff --git a/metricbeat/module/docker/cpu/cpu_integration_test.go b/metricbeat/module/docker/cpu/cpu_integration_test.go index 1dad5cb1dd8..9fe62182550 100644 --- a/metricbeat/module/docker/cpu/cpu_integration_test.go +++ b/metricbeat/module/docker/cpu/cpu_integration_test.go @@ -28,14 +28,14 @@ import ( ) func TestData(t *testing.T) { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) - events, errs := mbtest.ReportingFetchV2(f) + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + events, errs := mbtest.ReportingFetchV2Error(f) if len(errs) > 0 { t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) } assert.NotEmpty(t, events) - if err := mbtest.WriteEventsReporterV2(f, t, ""); err != nil { + if err := mbtest.WriteEventsReporterV2Error(f, t, ""); err != nil { t.Fatal("write", err) } } diff --git a/metricbeat/module/docker/diskio/diskio.go b/metricbeat/module/docker/diskio/diskio.go index fd3d66bf10b..fbfadc09052 100644 --- a/metricbeat/module/docker/diskio/diskio.go +++ b/metricbeat/module/docker/diskio/diskio.go @@ -21,13 +21,10 @@ import ( "github.com/docker/docker/client" "github.com/pkg/errors" - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/docker" ) -var logger = logp.NewLogger("docker.diskio") - func init() { mb.Registry.MustAddMetricSet("docker", "diskio", New, mb.WithHostParser(docker.HostParser), @@ -63,17 +60,16 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Fetch creates list of events with diskio stats for all containers. -func (m *MetricSet) Fetch(r mb.ReporterV2) { +func (m *MetricSet) Fetch(r mb.ReporterV2) error { stats, err := docker.FetchStats(m.dockerClient, m.Module().Config().Timeout) if err != nil { - err = errors.Wrap(err, "failed to get docker stats") - logger.Error(err) - r.Error(err) - return + return errors.Wrap(err, "failed to get docker stats") } formattedStats := m.blkioService.getBlkioStatsList(stats, m.dedot) eventsMapping(r, formattedStats) + + return nil } //Close stops the metricset diff --git a/metricbeat/module/docker/diskio/diskio_integration_test.go b/metricbeat/module/docker/diskio/diskio_integration_test.go index 21e3b20c20d..c694475d721 100644 --- a/metricbeat/module/docker/diskio/diskio_integration_test.go +++ b/metricbeat/module/docker/diskio/diskio_integration_test.go @@ -28,14 +28,14 @@ import ( ) func TestData(t *testing.T) { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) - events, errs := mbtest.ReportingFetchV2(f) + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + events, errs := mbtest.ReportingFetchV2Error(f) if len(errs) > 0 { t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) } assert.NotEmpty(t, events) - if err := mbtest.WriteEventsReporterV2(f, t, ""); err != nil { + if err := mbtest.WriteEventsReporterV2Error(f, t, ""); err != nil { t.Fatal("write", err) } } diff --git a/metricbeat/module/docker/healthcheck/data.go b/metricbeat/module/docker/healthcheck/data.go index 673e15a7323..5f0c8dbc9cc 100644 --- a/metricbeat/module/docker/healthcheck/data.go +++ b/metricbeat/module/docker/healthcheck/data.go @@ -22,6 +22,7 @@ import ( "strings" "github.com/docker/docker/api/types" + "github.com/pkg/errors" "github.com/elastic/beats/libbeat/common" "github.com/elastic/beats/metricbeat/mb" @@ -41,7 +42,7 @@ func eventMapping(r mb.ReporterV2, cont *types.Container, m *MetricSet) { container, err := m.dockerClient.ContainerInspect(context.TODO(), cont.ID) if err != nil { - logger.Error("Error inspecting container %v: %v", cont.ID, err) + errors.Wrapf(err, "Error inspecting container %v", cont.ID) return } diff --git a/metricbeat/module/docker/healthcheck/healthcheck.go b/metricbeat/module/docker/healthcheck/healthcheck.go index 8ac122fdfbe..c1af433a0dd 100644 --- a/metricbeat/module/docker/healthcheck/healthcheck.go +++ b/metricbeat/module/docker/healthcheck/healthcheck.go @@ -24,13 +24,10 @@ import ( "github.com/docker/docker/client" "github.com/pkg/errors" - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/docker" ) -var logger = logp.NewLogger("docker.healthcheck") - func init() { mb.Registry.MustAddMetricSet("docker", "healthcheck", New, mb.WithHostParser(docker.HostParser), @@ -65,16 +62,15 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // Fetch returns a list of all containers as events. // This is based on https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-containers. -func (m *MetricSet) Fetch(r mb.ReporterV2) { +func (m *MetricSet) Fetch(r mb.ReporterV2) error { // Fetch a list of all containers. containers, err := m.dockerClient.ContainerList(context.TODO(), types.ContainerListOptions{}) if err != nil { - err = errors.Wrap(err, "failed to get docker containers list") - logger.Error(err) - r.Error(err) - return + return errors.Wrap(err, "failed to get docker containers list") } eventsMapping(r, containers, m) + + return nil } //Close stops the metricset diff --git a/metricbeat/module/docker/healthcheck/healthcheck_integration_test.go b/metricbeat/module/docker/healthcheck/healthcheck_integration_test.go index 79dfeb00ab7..e2510f883b8 100644 --- a/metricbeat/module/docker/healthcheck/healthcheck_integration_test.go +++ b/metricbeat/module/docker/healthcheck/healthcheck_integration_test.go @@ -28,14 +28,14 @@ import ( ) func TestData(t *testing.T) { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) - events, errs := mbtest.ReportingFetchV2(f) + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + events, errs := mbtest.ReportingFetchV2Error(f) if len(errs) > 0 { t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) } assert.NotEmpty(t, events) - if err := mbtest.WriteEventsReporterV2(f, t, ""); err != nil { + if err := mbtest.WriteEventsReporterV2Error(f, t, ""); err != nil { t.Fatal("write", err) } } diff --git a/metricbeat/module/docker/memory/memory.go b/metricbeat/module/docker/memory/memory.go index 142e6b1af67..142de586a19 100644 --- a/metricbeat/module/docker/memory/memory.go +++ b/metricbeat/module/docker/memory/memory.go @@ -21,13 +21,10 @@ import ( "github.com/docker/docker/client" "github.com/pkg/errors" - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/docker" ) -var logger = logp.NewLogger("docker.memory") - func init() { mb.Registry.MustAddMetricSet("docker", "memory", New, mb.WithHostParser(docker.HostParser), @@ -63,17 +60,16 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Fetch creates a list of memory events for each container. -func (m *MetricSet) Fetch(r mb.ReporterV2) { +func (m *MetricSet) Fetch(r mb.ReporterV2) error { stats, err := docker.FetchStats(m.dockerClient, m.Module().Config().Timeout) if err != nil { - err = errors.Wrap(err, "failed to get docker stats") - logger.Error(err) - r.Error(err) - return + return errors.Wrap(err, "failed to get docker stats") } memoryStats := m.memoryService.getMemoryStatsList(stats, m.dedot) eventsMapping(r, memoryStats) + + return nil } //Close stops the metricset diff --git a/metricbeat/module/docker/memory/memory_integration_test.go b/metricbeat/module/docker/memory/memory_integration_test.go index e77284614f0..69a9ea0c814 100644 --- a/metricbeat/module/docker/memory/memory_integration_test.go +++ b/metricbeat/module/docker/memory/memory_integration_test.go @@ -28,14 +28,14 @@ import ( ) func TestData(t *testing.T) { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) - events, errs := mbtest.ReportingFetchV2(f) + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + events, errs := mbtest.ReportingFetchV2Error(f) if len(errs) > 0 { t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) } assert.NotEmpty(t, events) - if err := mbtest.WriteEventsReporterV2(f, t, ""); err != nil { + if err := mbtest.WriteEventsReporterV2Error(f, t, ""); err != nil { t.Fatal("write", err) } } diff --git a/metricbeat/module/docker/network/network.go b/metricbeat/module/docker/network/network.go index 7635abc6df2..a9b0b54c60d 100644 --- a/metricbeat/module/docker/network/network.go +++ b/metricbeat/module/docker/network/network.go @@ -21,13 +21,10 @@ import ( "github.com/docker/docker/client" "github.com/pkg/errors" - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/docker" ) -var logger = logp.NewLogger("docker.network") - func init() { mb.Registry.MustAddMetricSet("docker", "network", New, mb.WithHostParser(docker.HostParser), @@ -65,17 +62,16 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Fetch methods creates a list of network events for each container. -func (m *MetricSet) Fetch(r mb.ReporterV2) { +func (m *MetricSet) Fetch(r mb.ReporterV2) error { stats, err := docker.FetchStats(m.dockerClient, m.Module().Config().Timeout) if err != nil { - err = errors.Wrap(err, "failed to get docker stats") - logger.Error(err) - r.Error(err) - return + return errors.Wrap(err, "failed to get docker stats") } formattedStats := m.netService.getNetworkStatsPerContainer(stats, m.dedot) eventsMapping(r, formattedStats) + + return nil } //Close stops the metricset diff --git a/metricbeat/module/docker/network/network_integration_test.go b/metricbeat/module/docker/network/network_integration_test.go index f110d0d7794..015bf40a5fa 100644 --- a/metricbeat/module/docker/network/network_integration_test.go +++ b/metricbeat/module/docker/network/network_integration_test.go @@ -26,8 +26,8 @@ import ( ) func TestData(t *testing.T) { - ms := mbtest.NewReportingMetricSetV2(t, getConfig()) - err := mbtest.WriteEventsReporterV2(ms, t, "") + ms := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + err := mbtest.WriteEventsReporterV2Error(ms, t, "") if err != nil { t.Fatal("write", err) }