From d95b7eb34103f1534736a313c8bd3ca790265cd8 Mon Sep 17 00:00:00 2001 From: berfinsari Date: Sun, 3 Mar 2019 08:30:57 +0300 Subject: [PATCH 1/2] Migrate osd_tree metricset to ReporterV2 interface --- metricbeat/module/ceph/osd_tree/osd_tree.go | 23 +++++++++++++++---- .../osd_tree/osd_tree_integration_test.go | 13 ++++++++--- .../module/ceph/osd_tree/osd_tree_test.go | 19 ++++++++------- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/metricbeat/module/ceph/osd_tree/osd_tree.go b/metricbeat/module/ceph/osd_tree/osd_tree.go index e4c70316a861..39dff74dc225 100644 --- a/metricbeat/module/ceph/osd_tree/osd_tree.go +++ b/metricbeat/module/ceph/osd_tree/osd_tree.go @@ -18,7 +18,7 @@ package osd_tree import ( - "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/helper" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/mb/parse" @@ -36,6 +36,8 @@ var ( }.Build() ) +var logger = logp.NewLogger("ceph.osd_tree") + func init() { mb.Registry.MustAddMetricSet("ceph", "osd_tree", New, mb.WithHostParser(hostParser), @@ -61,16 +63,27 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { }, nil } -func (m *MetricSet) Fetch() ([]common.MapStr, error) { +// Fetch methods implements the data gathering and data conversion to the right +// format. It publishes the event which is then forwarded to the output. In case +// of an error set the Error field of mb.Event or simply call report.Error(). +func (m *MetricSet) Fetch(reporter mb.ReporterV2) { content, err := m.HTTP.FetchContent() if err != nil { - return nil, err + logger.Error(err) + reporter.Error(err) + return } events, err := eventsMapping(content) if err != nil { - return nil, err + logger.Error(err) + reporter.Error(err) + return + } + + for _, event := range events { + reporter.Event(mb.Event{MetricSetFields: event}) } - return events, nil + return } diff --git a/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go b/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go index f7e694b3b464..6c31e1535094 100644 --- a/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go +++ b/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go @@ -22,13 +22,20 @@ import ( "os" "testing" + "github.com/stretchr/testify/assert" + mbtest "github.com/elastic/beats/metricbeat/mb/testing" ) func TestData(t *testing.T) { - f := mbtest.NewEventsFetcher(t, getConfig()) - err := mbtest.WriteEvents(f, t) - if err != nil { + f := mbtest.NewReportingMetricSetV2(t, getConfig()) + events, errs := mbtest.ReportingFetchV2(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 { t.Fatal("write", err) } } diff --git a/metricbeat/module/ceph/osd_tree/osd_tree_test.go b/metricbeat/module/ceph/osd_tree/osd_tree_test.go index 8207c4e81569..c8ce52fdf876 100644 --- a/metricbeat/module/ceph/osd_tree/osd_tree_test.go +++ b/metricbeat/module/ceph/osd_tree/osd_tree_test.go @@ -49,14 +49,17 @@ func TestFetchEventContents(t *testing.T) { "hosts": []string{server.URL}, } - f := mbtest.NewEventsFetcher(t, config) - events, err := f.Fetch() - event := events[0] + f := mbtest.NewReportingMetricSetV2(t, config) + events, errs := mbtest.ReportingFetchV2(f) + if len(errs) > 0 { + t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) + } + assert.NotEmpty(t, events) + nodeInfo := events[0].MetricSetFields - t.Logf("%s/%s event: %+v", f.Module().Name(), f.Name(), event.StringToPrint()) + t.Logf("%s/%s event: %+v", f.Module().Name(), f.Name(), nodeInfo.StringToPrint()) //check root bucket info - nodeInfo := events[0] assert.EqualValues(t, "default", nodeInfo["name"]) assert.EqualValues(t, "root", nodeInfo["type"]) assert.EqualValues(t, []string{"-3"}, nodeInfo["children"]) @@ -65,7 +68,7 @@ func TestFetchEventContents(t *testing.T) { assert.EqualValues(t, "", nodeInfo["father"]) //check host bucket info - nodeInfo = events[1] + nodeInfo = events[1].MetricSetFields assert.EqualValues(t, "ceph-mon1", nodeInfo["name"]) assert.EqualValues(t, "host", nodeInfo["type"]) assert.EqualValues(t, []string{"1", "0"}, nodeInfo["children"]) @@ -74,7 +77,7 @@ func TestFetchEventContents(t *testing.T) { assert.EqualValues(t, "default", nodeInfo["father"]) //check osd bucket info - nodeInfo = events[2] + nodeInfo = events[2].MetricSetFields assert.EqualValues(t, "up", nodeInfo["status"]) assert.EqualValues(t, "osd.0", nodeInfo["name"]) assert.EqualValues(t, "osd", nodeInfo["type"]) @@ -88,7 +91,7 @@ func TestFetchEventContents(t *testing.T) { assert.EqualValues(t, "ceph-mon1", nodeInfo["father"]) assert.EqualValues(t, 2, nodeInfo["depth"]) - nodeInfo = events[3] + nodeInfo = events[3].MetricSetFields assert.EqualValues(t, "up", nodeInfo["status"]) assert.EqualValues(t, "osd.1", nodeInfo["name"]) assert.EqualValues(t, "osd", nodeInfo["type"]) From 65c4dbb53f853eab938e1e3ca528144a8f34205f Mon Sep 17 00:00:00 2001 From: berfinsari Date: Sun, 10 Mar 2019 20:10:11 +0300 Subject: [PATCH 2/2] Rebase and use new logger --- metricbeat/module/ceph/osd_tree/_meta/data.json | 4 ---- metricbeat/module/ceph/osd_tree/osd_tree.go | 7 ++----- .../module/ceph/osd_tree/osd_tree_integration_test.go | 7 ------- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/metricbeat/module/ceph/osd_tree/_meta/data.json b/metricbeat/module/ceph/osd_tree/_meta/data.json index 6f8cf7a91065..af8304299ac2 100644 --- a/metricbeat/module/ceph/osd_tree/_meta/data.json +++ b/metricbeat/module/ceph/osd_tree/_meta/data.json @@ -1,9 +1,5 @@ { "@timestamp": "2017-10-12T08:05:34.853Z", - "agent": { - "hostname": "host.example.com", - "name": "host.example.com" - }, "ceph": { "osd_tree": { "children": [ diff --git a/metricbeat/module/ceph/osd_tree/osd_tree.go b/metricbeat/module/ceph/osd_tree/osd_tree.go index 39dff74dc225..b936ae93b14d 100644 --- a/metricbeat/module/ceph/osd_tree/osd_tree.go +++ b/metricbeat/module/ceph/osd_tree/osd_tree.go @@ -18,7 +18,6 @@ package osd_tree import ( - "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/helper" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/mb/parse" @@ -36,8 +35,6 @@ var ( }.Build() ) -var logger = logp.NewLogger("ceph.osd_tree") - func init() { mb.Registry.MustAddMetricSet("ceph", "osd_tree", New, mb.WithHostParser(hostParser), @@ -69,14 +66,14 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { func (m *MetricSet) Fetch(reporter mb.ReporterV2) { content, err := m.HTTP.FetchContent() if err != nil { - logger.Error(err) + m.Logger().Error(err) reporter.Error(err) return } events, err := eventsMapping(content) if err != nil { - logger.Error(err) + m.Logger().Error(err) reporter.Error(err) return } diff --git a/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go b/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go index 6c31e1535094..8b2f4b56bb05 100644 --- a/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go +++ b/metricbeat/module/ceph/osd_tree/osd_tree_integration_test.go @@ -22,18 +22,11 @@ import ( "os" "testing" - "github.com/stretchr/testify/assert" - mbtest "github.com/elastic/beats/metricbeat/mb/testing" ) func TestData(t *testing.T) { f := mbtest.NewReportingMetricSetV2(t, getConfig()) - events, errs := mbtest.ReportingFetchV2(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 { t.Fatal("write", err)