From f52d04a4f2639e7258bd6ce88f2be87f913d8434 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Wed, 28 Aug 2024 10:20:47 +0530 Subject: [PATCH 01/15] initial commit for datastore cluster --- metricbeat/docs/fields.asciidoc | 41 +++++++ metricbeat/docs/modules/vsphere.asciidoc | 4 + .../vsphere/datastore_cluster.asciidoc | 28 +++++ metricbeat/docs/modules_list.asciidoc | 3 +- metricbeat/include/list_common.go | 1 + .../vsphere/datastore_cluster/_meta/data.json | 26 +++++ .../datastore_cluster/_meta/docs.asciidoc | 1 + .../datastore_cluster/_meta/fields.yml | 20 ++++ .../module/vsphere/datastore_cluster/data.go | 33 ++++++ .../vsphere/datastore_cluster/data_test.go | 53 +++++++++ .../datastore_cluster/datastore_cluster.go | 101 ++++++++++++++++++ .../datastore_cluster_test.go | 91 ++++++++++++++++ metricbeat/module/vsphere/fields.go | 2 +- 13 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc create mode 100644 metricbeat/module/vsphere/datastore_cluster/_meta/data.json create mode 100644 metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc create mode 100644 metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml create mode 100644 metricbeat/module/vsphere/datastore_cluster/data.go create mode 100644 metricbeat/module/vsphere/datastore_cluster/data_test.go create mode 100644 metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go create mode 100644 metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 2ebe8a22783..c74be1f5cc3 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -66929,6 +66929,47 @@ format: percent -- +[float] +=== datastorecluster + +datastorecluster + + + +*`vsphere.datastorecluster.name`*:: ++ +-- +datastorecluster name. + + +type: keyword + +-- + +*`vsphere.datastorecluster.capacity.bytes`*:: ++ +-- +Total capacity of this storage pod, in bytes. + + +type: long + +format: bytes + +-- + +*`vsphere.datastorecluster.free_space.bytes`*:: ++ +-- +Total free space on this storage pod, in bytes. + + +type: long + +format: bytes + +-- + [float] === host diff --git a/metricbeat/docs/modules/vsphere.asciidoc b/metricbeat/docs/modules/vsphere.asciidoc index 738bc1153d2..ecf75bbd7d6 100644 --- a/metricbeat/docs/modules/vsphere.asciidoc +++ b/metricbeat/docs/modules/vsphere.asciidoc @@ -55,12 +55,16 @@ The following metricsets are available: * <> +* <> + * <> * <> include::vsphere/datastore.asciidoc[] +include::vsphere/datastore_cluster.asciidoc[] + include::vsphere/host.asciidoc[] include::vsphere/virtualmachine.asciidoc[] diff --git a/metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc b/metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc new file mode 100644 index 00000000000..d4c4fe3b6d4 --- /dev/null +++ b/metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc @@ -0,0 +1,28 @@ +//// +This file is generated! See scripts/mage/docs_collector.go +//// +:edit_url: https://github.com/elastic/beats/edit/main/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc + + +[[metricbeat-metricset-vsphere-datastore_cluster]] +=== vSphere datastore_cluster metricset + +beta[] + +include::../../../module/vsphere/datastore_cluster/_meta/docs.asciidoc[] + + +:edit_url: + +==== Fields + +For a description of each field in the metricset, see the +<> section. + +Here is an example document generated by this metricset: + +[source,json] +---- +include::../../../module/vsphere/datastore_cluster/_meta/data.json[] +---- +:edit_url!: \ No newline at end of file diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index da0f7525e0f..06df3a55eff 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -311,7 +311,8 @@ This file is generated! See scripts/mage/docs_collector.go |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | .1+| .1+| |<> |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | -.3+| .3+| |<> +.4+| .4+| |<> +|<> beta[] |<> |<> |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | diff --git a/metricbeat/include/list_common.go b/metricbeat/include/list_common.go index 0d061e55e8d..de4e69bbca6 100644 --- a/metricbeat/include/list_common.go +++ b/metricbeat/include/list_common.go @@ -182,6 +182,7 @@ import ( _ "github.com/elastic/beats/v7/metricbeat/module/uwsgi/status" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/datastore" + _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/datastore_cluster" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/host" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/virtualmachine" _ "github.com/elastic/beats/v7/metricbeat/module/windows" diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json b/metricbeat/module/vsphere/datastore_cluster/_meta/data.json new file mode 100644 index 00000000000..389555e31cd --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/_meta/data.json @@ -0,0 +1,26 @@ +{ + "@timestamp": "2016-05-23T08:05:34.853Z", + "service": { + "address": "https://localhost:8980/sdk", + "type": "vsphere" + }, + "event": { + "dataset": "vsphere.generic", + "module": "vsphere", + "duration": 15443161 + }, + "metricset": { + "period": 20000, + "name": "generic" + }, + "vsphere": { + "datastorecluster": { + "capacity": { + "bytes": 0 + }, + "free_space": { + "bytes": 0 + } + } + } +} diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc b/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc new file mode 100644 index 00000000000..e708e60e2bc --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc @@ -0,0 +1 @@ +This is the datastorecluster metricset of the module vsphere. diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml b/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml new file mode 100644 index 00000000000..6af182d49d6 --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml @@ -0,0 +1,20 @@ +- name: datastorecluster + type: group + release: beta + description: > + datastorecluster + fields: + - name: name + type: keyword + description: > + datastorecluster name. + - name: capacity.bytes + type: long + description: > + Total capacity of this storage pod, in bytes. + format: bytes + - name: free_space.bytes + type: long + description: > + Total free space on this storage pod, in bytes. + format: bytes \ No newline at end of file diff --git a/metricbeat/module/vsphere/datastore_cluster/data.go b/metricbeat/module/vsphere/datastore_cluster/data.go new file mode 100644 index 00000000000..5cec333f943 --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/data.go @@ -0,0 +1,33 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package datastore_cluster + +import ( + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/vmware/govmomi/vim25/mo" +) + +func (m *DatastoreClusterMetricSet) mapEvent(datastoreCluster mo.StoragePod) mapstr.M { + event := mapstr.M{} + + event.Put("name", datastoreCluster.Name) + event.Put("capacity.bytes", datastoreCluster.Summary.Capacity) + event.Put("free_space.bytes", datastoreCluster.Summary.FreeSpace) + + return event +} diff --git a/metricbeat/module/vsphere/datastore_cluster/data_test.go b/metricbeat/module/vsphere/datastore_cluster/data_test.go new file mode 100644 index 00000000000..881de630cea --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/data_test.go @@ -0,0 +1,53 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package datastore_cluster + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +func TestEventMapping(t *testing.T) { + m := &DatastoreClusterMetricSet{} + + datastoreclusterTest := mo.StoragePod{ + Summary: &types.StoragePodSummary{ + Capacity: 100, + FreeSpace: 50, + }, + Folder: mo.Folder{ + ManagedEntity: mo.ManagedEntity{ + Name: "Folder1", + }, + }, + } + + event := m.mapEvent(datastoreclusterTest) + + name, _ := event.GetValue("name") + assert.Equal(t, "Folder1", name) + + capacity, _ := event.GetValue("capacity.bytes") + assert.Equal(t, int64(100), capacity) + + freeSpace, _ := event.GetValue("free_space.bytes") + assert.Equal(t, int64(50), freeSpace) +} diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go new file mode 100644 index 00000000000..770dbd2214e --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go @@ -0,0 +1,101 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package datastore_cluster + +import ( + "context" + "fmt" + + "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/metricbeat/module/vsphere" + "github.com/vmware/govmomi" + "github.com/vmware/govmomi/view" + "github.com/vmware/govmomi/vim25/mo" +) + +// init registers the MetricSet with the central registry as soon as the program +// starts. The New function will be called later to instantiate an instance of +// the MetricSet for each network is defined in the module's configuration. After the +// MetricSet has been created then Fetch will begin to be called periodically. + +func init() { + mb.Registry.MustAddMetricSet("vsphere", "datastorecluster", New, + mb.WithHostParser(vsphere.HostParser), + mb.DefaultMetricSet(), + ) +} + +// MetricSet type defines all fields of the MetricSet. +type DatastoreClusterMetricSet struct { + *vsphere.MetricSet +} + +// New creates a new instance of the MetricSet. +func New(base mb.BaseMetricSet) (mb.MetricSet, error) { + ms, err := vsphere.NewMetricSet(base) + if err != nil { + return nil, fmt.Errorf("failed to create vSphere metricset: %w", err) + } + return &DatastoreClusterMetricSet{ms}, nil +} + +func (m *DatastoreClusterMetricSet) Fetch(ctx context.Context, reporter mb.ReporterV2) error { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + client, err := govmomi.NewClient(ctx, m.HostURL, m.Insecure) + if err != nil { + return fmt.Errorf("error in NewClient: %w", err) + } + + defer func() { + if err := client.Logout(ctx); err != nil { + m.Logger().Errorf("error trying to logout from vSphere: %w", err) + } + }() + + c := client.Client + + v, err := view.NewManager(c).CreateContainerView(ctx, c.ServiceContent.RootFolder, []string{"Network"}, true) + if err != nil { + return fmt.Errorf("error in CreateContainerView: %w", err) + } + + defer func() { + if err := v.Destroy(ctx); err != nil { + m.Logger().Errorf("error trying to destroy view from vSphere: %w", err) + } + }() + + var datastoreCluster []mo.StoragePod + err = v.Retrieve(ctx, []string{"StoragePod"}, []string{}, &datastoreCluster) + if err != nil { + return fmt.Errorf("error in Retrieve: %w", err) + } + + for i := range datastoreCluster { + select { + case <-ctx.Done(): + return ctx.Err() + default: + reporter.Event(mb.Event{MetricSetFields: m.mapEvent(datastoreCluster[i])}) + } + } + + return nil +} diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go new file mode 100644 index 00000000000..6f07914132d --- /dev/null +++ b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go @@ -0,0 +1,91 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package datastore_cluster + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vmware/govmomi/simulator" + + mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +func TestFetchEventContents(t *testing.T) { + model := simulator.VPX() + err := model.Create() + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { model.Remove() }) + + ts := model.Service.NewServer() + t.Cleanup(func() { ts.Close() }) + + f := mbtest.NewReportingMetricSetV2WithContext(t, getConfig(ts)) + events, errs := mbtest.ReportingFetchV2WithContext(f) + require.Empty(t, errs, "expected no error") + + require.NotEmpty(t, events, "didn't get any event, should have gotten at least X") + + event := events[0].MetricSetFields + + t.Logf("Fetched event from %s/%s event: %+v", f.Module().Name(), f.Name(), event) + + if name, ok := event["name"].(mapstr.M); ok { + assert.NotNil(t, name) + } + + if capacity, ok := event["capacity"].(mapstr.M); ok { + assert.GreaterOrEqual(t, capacity["bytes"], int64(0)) + } + + if freespace, ok := event["free_space"].(mapstr.M); ok { + assert.GreaterOrEqual(t, freespace["bytes"], int64(0)) + } +} + +func TestDatastoreCluster(t *testing.T) { + model := simulator.ESX() + err := model.Create() + require.NoError(t, err, "failed to create model") + t.Cleanup(func() { model.Remove() }) + + ts := model.Service.NewServer() + t.Cleanup(func() { ts.Close() }) + + f := mbtest.NewReportingMetricSetV2WithContext(t, getConfig(ts)) + + err = mbtest.WriteEventsReporterV2WithContext(f, t, "") + assert.NoError(t, err, "failed to write events with reporter") +} + +func getConfig(ts *simulator.Server) map[string]interface{} { + urlSimulator := ts.URL.Scheme + "://" + ts.URL.Host + ts.URL.Path + + return map[string]interface{}{ + "module": "vsphere", + "metricsets": []string{"datastorecluster"}, + "hosts": []string{urlSimulator}, + "username": "user", + "password": "pass", + "insecure": true, + } +} diff --git a/metricbeat/module/vsphere/fields.go b/metricbeat/module/vsphere/fields.go index 26d9707a819..b3a122d1cc3 100644 --- a/metricbeat/module/vsphere/fields.go +++ b/metricbeat/module/vsphere/fields.go @@ -32,5 +32,5 @@ func init() { // AssetVsphere returns asset data. // This is the base64 encoded zlib format compressed contents of module/vsphere. func AssetVsphere() string { - return "eJzMmc2O2zYQx+9+ikHu8QP4UCDYIt0C3bTAbnJd0NTYYs0PgRzJcJ6+ICkpsi15LZs06sMCkZT5/zicGQ7Jz7DDwwoaV5VocQFAgiSu4FPzGp58WgAU6LgVFQmjV/DbAgCgfQvKFLX0/82iROZwBVu2ANgIlIVbhU8/g2YKhxL+R4fKf2xNXbVPRlSODQ2NFYyYI9ObGzc5abZ9NWLkeBzd7xRjiOL/Hr3oSHZ42BtbnLy7wON/v3dM53Y7wY3z9tNJfhUS3cERKjgz3GlyVjEu6LAkQ0wu1wdCN0ogjd7Ok3/zFiFYBLMBKnF0YvxvY6xitIJz+TPOjUVMivnVIianrB0WSSm/OyzyUFacRhkdZxKL94007PSDa1grtBw1XUvbft6/PSsMpXF0T014No5A6KgnjIaNNaovd6gbYY1WqGl5V9HgVR3dqsqfKaf+6Z/vIDS8PP9cTurGFE4nHBP4GuWQlOmEQ0p+pNtH1NL/ezzPbiqbfwkXwpZJeRy6Qdh9RMNNrcczar4jvtVqjdbD9PYdGB2wfEJMsAi3Ww6SnG3TVsy3EoEpP0xP5qnYFvuqAry2FjXJA6xR6C1wo12tQvkCYzt81OTpZhevMLgCG8FRMkLND0vWoCdYqlQD/BINDgZJQiEIAmI7dEAGuFGVREJgGl6fXv/0DxTTRSwrVXlwgjMJEdTHsRJSCofc6GIqhPzIujG1uZxqRM9iW6IjaM1Dw2SNwLg1zoVA9+IO6rjK9PE1A9wiS7vidZOg+xyIy58Xil4OySncDpDxEiLijQG1t4LSJskUvlci1D6GEvKn795eaxXqjucLLvfBHdwElvmBDKB9mATt+fQKlbG5urqXYPx+uly9cSq+PN3m3XRpN1ChgfMmx4uQRtobu3tP3Ax8i2YvLf2tcu42RF9PkqcFaa1f0YB0HGumi70oqFySZdopX/nyLBK+JAEj2JeCl6FZgj1zMJCFora+G/HkQhPahsklvJXCryiVRYeaXHjbU3d7l2448xPgzA8WOYrmsU7oNP8fHsi2UnX5MZxzv2b1w4/LVlfORr1x8/gqxndI7ijO82RhqzQc5uUk7ND60MvL1ctcBYXWGvtIt+0FlRBV57uwpX2QJ4eot3k1pFpKyNi26Euo1xGqWpLgzNEDpr7Xuj13fuFmnvtz1nkzP/Br9sk/Y70OsbCmqrB4wMQPV4LOnZ36LNTMk96vUHdBPi7bL+I5YlQnbIPfSgTjGxwpoUQmqWwlQm/cn1L4ZfyDw9xfjHVFYmJrcttpWPB9a/aYqz04CRVyLmajcu8pfrxc2k40KlPAN8JSzSQoxkuhp440e4z4dfvx4hRkxh3ApKX55/wBVZy6/97t7YnBIzH/J9OOumvzT+5Ycu3kf7TT/xLnYfpC1CQM/VPRvyu0jPwO4DVekU5S5L7SObH6uBudC8KJL3S+NExItpb4kfbwQGtbo6Nsx1pmA394gX5DOHvvN2QNGZoRtb29vI80RlN6tx4dZibzawjB9LDDg+H7WXntyKj3uFKMEpr1v3h2wx4fvt9Rzp6CMIwIP/JAdPFfAAAA//+hUbzT" + return "eJzMmk2P2zYTx+/+FIOcn+gD+PAAwRbpFuimBXaT64KmxhZrvgjkSIbz6QuSkiLbkteyKKM+GIilzP/HIeeF5H6GPR7XULuyQIsrABIkcQ2f6tfwy6cVQI6OW1GSMHoN/18BADRPQZm8kv6/WZTIHK5hx1YAW4Eyd+vw6mfQTGFfwn/oWPqXranK5pcBlVNDfWM5I+bIdOaGTY6abR4NGDkdR/s5x+ij+O+TBy3JHo8HY/OzZ1d4/Oe3lunSbiu4dd5+OsmvQqI7OkIFF4ZbTc5KxgUdMzLEZLY5ErpBAmn0bpr8m7cIwSKYLVCBgxPjP1tjFaM1XMpfcG4tYlLMrxYxOWXlME9K+d1hvgxlyWmQ0XEmMX/fSsPOX7iFtUTLUdOttM3r3dPxxMBl5Qjth/mhC/gNEpuYNy41HpcoziGC+ez6RKYP29Z0nD/hwCOxHUJp8v+B0HF5ZZPXng/fd1cynjaII7Q3DsE4GD0bu0UujKM51ejZOAKho4gwGrbWqK7Qoq6FNVqhpmxWueJlFQNaFT9TJp2nv797x708/xxZhGXVFI90wnE6b1EO5SCdcCgGH+l2EZr5fw8v4btC/0/hQsJkUp4mzSDsPqLhptLDuXy6I75VaoPWw3T2XQwqDAExwiLcPuuVF7ZLHOYFAlN+mJ6sje0uV/HKWtQkj7BBoXfAjXaVCoUTjG3xUZOnm5y6wuByrAVHyQg1P2asRk+QqVQD/BIN9gZJQiEIAmJ7dEAGuFGlREJgGl6fXv/wPyim85hWyuLoBGcSIqhfx0pIKRxyo/OxJeRH1o6pieVUI3oWuwIdQWMeaiYrBMatcS4sdC/uoIr9Tbe+JoBbZGl7rXYSdBcDsfHyQtHLITiF2wMyXkBEvHNBHaygtEEyhu+VCLVfQwn50+8bXisV8o7nCy73izu4CSzzA+lBz+hEFCpjl9pPvATj8+mW2pWl4ltmnzObLm1HHhq48S5cIx2M3b8nbga+RbPXSn+jvHQbom8nWaYFaazf0IC0HBum84PIqcjIMu2Uz3zLFAmfkoARHArBi9AswYE56MlCXlnfjXhyoQltzWQGb353YrG06FCTC0876nbX3A5negBc+MEiR1E/1gmt5n/DA4tVqjY++nPua1Y3/Fi22nQ26I27x1cyvkdyJ+t8mShslPrDvB6ELVq39Jbl6mRugkJrjX2k2w6CCoiq013Y0D7Ik33U+7waQi0lZGxb9DXU2whVJUlw5ugBU99p3R87v3AXnvtL1mkz3/Pr4pN/wXobYm5NWWL+gInvV4LWna36JNSFJ72rULMgHxftV/EcMaoStsFvBYLxDY6UUCCTVDQSoTfuTil8Gf/gMPcXY1WSGNma3HcaFnzfmD3lag5OQoacilmrpfcUP16ubSdqtdCCr4WliklQjBdCjx1pdhjx7ebl1TnIhDuAUUvTz/kDqjh3/9zt7ZnBEzH/tdCOum3zz+5YltrJ/2im/yXOw/hVvEm49M9F/yrRMvI7gNd4OT9KsfSVzpnVx93oXBFOfKHzpWZCso3Ej7T7B1q7Ch0tdqxltvC7F+g2hJP3fn3WEKELoja3l/NI42pK79aTw8xkfg1LMD1s/2B4PiuvHBn1HivFIKHZ/IMXf9sRf3yfkc6egjAMCD/yQHT1bwAAAP//vI1jbg==" } From 952c69a6da6d53646c02ba0e7e287d23967b8272 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Wed, 28 Aug 2024 11:37:18 +0530 Subject: [PATCH 02/15] mage update --- metricbeat/docs/modules/vsphere.asciidoc | 4 ++-- metricbeat/metricbeat.reference.yml | 2 +- metricbeat/module/vsphere/_meta/README.md | 1 + metricbeat/module/vsphere/_meta/config.reference.yml | 2 +- metricbeat/module/vsphere/_meta/config.yml | 1 + metricbeat/module/vsphere/_meta/docs.asciidoc | 2 +- metricbeat/modules.d/vsphere.yml.disabled | 1 + 7 files changed, 8 insertions(+), 5 deletions(-) diff --git a/metricbeat/docs/modules/vsphere.asciidoc b/metricbeat/docs/modules/vsphere.asciidoc index ecf75bbd7d6..c7e546a0dad 100644 --- a/metricbeat/docs/modules/vsphere.asciidoc +++ b/metricbeat/docs/modules/vsphere.asciidoc @@ -11,7 +11,7 @@ This file is generated! See scripts/mage/docs_collector.go The vSphere module uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5. -By default it enables the metricsets `datastore`, `host` and `virtualmachine`. +By default it enables the metricsets `datastore_cluster`, `datastore`, `host` and `virtualmachine`. [float] === Dashboard @@ -35,7 +35,7 @@ in <>. Here is an example configuration: metricbeat.modules: - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine"] + metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 4c72f9dad04..fd184490f3d 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -1007,7 +1007,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine"] + metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/README.md b/metricbeat/module/vsphere/_meta/README.md index 9ebb2bbd263..85011e632b7 100644 --- a/metricbeat/module/vsphere/_meta/README.md +++ b/metricbeat/module/vsphere/_meta/README.md @@ -31,6 +31,7 @@ Now setup your metricbeat config to connect to Govcsim: - datastore - host - virtualmachine + - datastore_cluster enabled: true period: 5s hosts: ["https://127.0.0.1:8989/sdk"] diff --git a/metricbeat/module/vsphere/_meta/config.reference.yml b/metricbeat/module/vsphere/_meta/config.reference.yml index 18da5eb6b91..87db4389c8f 100644 --- a/metricbeat/module/vsphere/_meta/config.reference.yml +++ b/metricbeat/module/vsphere/_meta/config.reference.yml @@ -1,6 +1,6 @@ - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine"] + metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/config.yml b/metricbeat/module/vsphere/_meta/config.yml index 8b76d29f907..24118b5614d 100644 --- a/metricbeat/module/vsphere/_meta/config.yml +++ b/metricbeat/module/vsphere/_meta/config.yml @@ -3,6 +3,7 @@ # - datastore # - host # - virtualmachine + # - datastore_cluster # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/docs.asciidoc b/metricbeat/module/vsphere/_meta/docs.asciidoc index c936565acb4..d0110c86289 100644 --- a/metricbeat/module/vsphere/_meta/docs.asciidoc +++ b/metricbeat/module/vsphere/_meta/docs.asciidoc @@ -1,6 +1,6 @@ The vSphere module uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5. -By default it enables the metricsets `datastore`, `host` and `virtualmachine`. +By default it enables the metricsets `datastore_cluster`, `datastore`, `host` and `virtualmachine`. [float] === Dashboard diff --git a/metricbeat/modules.d/vsphere.yml.disabled b/metricbeat/modules.d/vsphere.yml.disabled index 6659aa39bbc..d86dbbbbc27 100644 --- a/metricbeat/modules.d/vsphere.yml.disabled +++ b/metricbeat/modules.d/vsphere.yml.disabled @@ -6,6 +6,7 @@ # - datastore # - host # - virtualmachine + # - datastore_cluster # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] From 1a98867a3619bc1281c12033ba4ce5774161b3d7 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Wed, 28 Aug 2024 12:00:38 +0530 Subject: [PATCH 03/15] make update --- x-pack/metricbeat/metricbeat.reference.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 026c1c6f993..5cc25f453c5 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -1568,7 +1568,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine"] + metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] From 5f26cc17d620ee7ebeeb0580809fcd6fc2732bd2 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Wed, 28 Aug 2024 12:15:16 +0530 Subject: [PATCH 04/15] make update --- metricbeat/module/vsphere/datastore_cluster/data.go | 3 ++- .../module/vsphere/datastore_cluster/datastore_cluster.go | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/metricbeat/module/vsphere/datastore_cluster/data.go b/metricbeat/module/vsphere/datastore_cluster/data.go index 5cec333f943..25d30490f73 100644 --- a/metricbeat/module/vsphere/datastore_cluster/data.go +++ b/metricbeat/module/vsphere/datastore_cluster/data.go @@ -18,8 +18,9 @@ package datastore_cluster import ( - "github.com/elastic/elastic-agent-libs/mapstr" "github.com/vmware/govmomi/vim25/mo" + + "github.com/elastic/elastic-agent-libs/mapstr" ) func (m *DatastoreClusterMetricSet) mapEvent(datastoreCluster mo.StoragePod) mapstr.M { diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go index 770dbd2214e..73eacb516f3 100644 --- a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go +++ b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go @@ -21,11 +21,12 @@ import ( "context" "fmt" - "github.com/elastic/beats/v7/metricbeat/mb" - "github.com/elastic/beats/v7/metricbeat/module/vsphere" "github.com/vmware/govmomi" "github.com/vmware/govmomi/view" "github.com/vmware/govmomi/vim25/mo" + + "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/metricbeat/module/vsphere" ) // init registers the MetricSet with the central registry as soon as the program From 335be28ee68da8348b5c105ca217e7fbcef37f20 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Thu, 29 Aug 2024 14:39:41 +0530 Subject: [PATCH 05/15] update: - data.json - field.yml --- metricbeat/docs/fields.asciidoc | 12 ++++++------ .../module/vsphere/datastore_cluster/_meta/data.json | 9 +++++---- .../vsphere/datastore_cluster/_meta/fields.yml | 6 +++--- metricbeat/module/vsphere/fields.go | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 2cc46bb7564..0d2a8f2ed83 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -67034,23 +67034,23 @@ type: long -- [float] -=== datastorecluster +=== datastore_cluster -datastorecluster +Datastore Cluster -*`vsphere.datastorecluster.name`*:: +*`vsphere.datastore_cluster.name`*:: + -- -datastorecluster name. +The Datastore Cluster name. type: keyword -- -*`vsphere.datastorecluster.capacity.bytes`*:: +*`vsphere.datastore_cluster.capacity.bytes`*:: + -- Total capacity of this storage pod, in bytes. @@ -67062,7 +67062,7 @@ format: bytes -- -*`vsphere.datastorecluster.free_space.bytes`*:: +*`vsphere.datastore_cluster.free_space.bytes`*:: + -- Total free space on this storage pod, in bytes. diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json b/metricbeat/module/vsphere/datastore_cluster/_meta/data.json index 389555e31cd..155dbf2b46a 100644 --- a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json +++ b/metricbeat/module/vsphere/datastore_cluster/_meta/data.json @@ -11,15 +11,16 @@ }, "metricset": { "period": 20000, - "name": "generic" + "name": "datastore_cluster" }, "vsphere": { - "datastorecluster": { + "datastore_cluster": { + "name": "datastore_cluster1", "capacity": { - "bytes": 0 + "bytes": 8795019280384 }, "free_space": { - "bytes": 0 + "bytes": 8788836876288 } } } diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml b/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml index 6af182d49d6..632993e0a7b 100644 --- a/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml +++ b/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml @@ -1,13 +1,13 @@ -- name: datastorecluster +- name: datastore_cluster type: group release: beta description: > - datastorecluster + Datastore Cluster fields: - name: name type: keyword description: > - datastorecluster name. + The Datastore Cluster name. - name: capacity.bytes type: long description: > diff --git a/metricbeat/module/vsphere/fields.go b/metricbeat/module/vsphere/fields.go index 3c74e2d630f..cd82ff63429 100644 --- a/metricbeat/module/vsphere/fields.go +++ b/metricbeat/module/vsphere/fields.go @@ -32,5 +32,5 @@ func init() { // AssetVsphere returns asset data. // This is the base64 encoded zlib format compressed contents of module/vsphere. func AssetVsphere() string { - return "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" + return "eJzUWk2P2zYQve+vGOTcOPc9FAi2aDdANxvUm1wNmhpbrClSIEc2nF9fkPqwLEuyZZPO1ocgsLXzHjkznDdDfYQN7h9ha/MUDT4AkCCJj/BhO/fffHgASNByI3ISWj3C7w8AANWvkOmkkO7PDEpkFh9hzR4AVgJlYh/9ox9BsQzbEO5D+9w9bHSRV9/0oBwbahtLGDFLujHXb3LQbPVTj5HjddSfLo02Fc5yxgXtZyuDOFvuCe3RczUxqdW688MIN/f50yCCNwh6BZTigfGs8/BKm4zRI5zCn9AkTUwG5fnmLIYnWlhMgvL8bjGJRDPn1EvSciYxWaykZt0HzpD9hoajIrZGR7Yh2uCCxx2gnZd/3Et8ZR21XrYb3O+0SSZGqZBo95Yw81ZmvaCptjTjulD92zTdl1+LbInGbY0zbUdQ3X/7I+iq5f4tLDlYJqUPIYfh4QY4CJ2Hit85aePi4cunV3jSioyWwNZrg2tGmMAXlRf06bWgvCB4zdEwZ8i6SII5cq2Sfobu33D780cTqc5uP6JBFjaz/2Hk08QZFmrt0wVWRme3ZrlnKhmh4vXJmYUi/XmL3p0sc3nhjySRoSMFzAODrp3YsxYQCjIhpbDetQPRZ4lRETD6597emeOzqfhZpJT/8TKw3G0WO91/vIwl+84ICqsB6sh2lpvIJn1rXJdEf0Vge+QrI3tYBi64LCyhOSsHG323RGKXycTDifZ0AjImDMOeq28pnjIZOWMbfRJe6TUSxB8DwoKtClOuk9+c9zzk9KB0Anphc8bDplBJ2hkHbxy0upl2W2Hc0oI8O/UgVAnSpEPdXaHaCqNVhopmt/UoeVHq1Cz9GVJMP3377jbu5fnnQBDmRX24BAMu3XkJsm/IwgH7duwc7uFMjlyIkiOdNVCPDmziFOLGvi2TqpTDA1yE3cxaXRNbB07ztF1x6txuzipeGIOK5B6W6Aop18oWmW8IQZuaPipy7CYfXX5xCW4Fx7qosrIKRi+rgoDYBq1TBVxnuURCYArmT/Mv7ouMqaQ8VvJ0bwVnEkqilylIv7JIQuFZrFO0BJV52DJZIDButLU+0B249Z2uc1PTbl1OPHinUTtBNTlQDhS8Xj9oGWE3gIynYHsar4sDKrycHKLvkAhVoyzD8A8/apoXmT93HD+/5S64S0lpmFtIi/QNSiTDTJtYE70Xb/x2drEGeaH4xZnf3cwurCx/rsc/A7MVpJ02m0VgMfC1NDtW+ivk2DJEXc4kjgSprF8gQGoeS6aSnUgonZFhymbu5ItTJNyRBIxglwqelq37jllowUJSGKdGHHOhCM2WyRm8ue7EYG7QoiLrf21Y18OXejnTE+BkHwxyFNv7bkKN+T52IFqlqvOj7XNXs5rll2WrPs56d+Pq9eWMb5DsUZzHycIKqb3M8SSsqTWhF5dXA3MRKTRGm3tu205QCiXq9C2s2N5pJ9tUr9tVn2ohSZayRY1RvYxhVkgSnFm6g+sbrOtz50A3su9PuU7zfGtfozv/hOtlFBOj8xyTOzi+XQnq7azRJ1GN7PSmQt1E8n7ZPkov9D3YW4qgncCRElJkktIKwmvjZkrhyviZYe6BY5GTGGhNrpuG+b2vzB7zqgYn/oScSvNX37FFu1XcCkMFk5Axngo1NNJsaJRPVw8/dIlMuAMYtDR9zu+piu7239reioGk8mjun/AttbNYy/yRji4o7o/K/y+lI0a6eh0w+Luo1Ysbag3z8qWakSu+yLc66S+71RlDDnyr83nLhGRLiWfB22OtdYGWog239Ar+cgCBZnA+gSJyrS4xg4wzw2/s0VAz3M76MAzPtj0hDkCWF5Z0tihrRi9FvfwXT15eLL9c3HCsPXngqli9t9lo34u/MFi6YaDoQqcSdddwbh0XrMWvx5k+eeMKmLWaC//in7+0EbYjJLrB0gqKHvkEYzF7KdO+e+GJPDvB8b9zUDOOftf+uZZlrHbq9biVYio5aqc6yvxO7dOhcaqakkPj1PNK2sN/AQAA//8rWRUg" } From 5637cc0cdc884f5975049893eb6fd7c800fb6423 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 12:16:32 +0530 Subject: [PATCH 06/15] doc updates --- metricbeat/docs/modules/vsphere.asciidoc | 4 ++-- metricbeat/metricbeat.reference.yml | 2 +- metricbeat/module/vsphere/_meta/README.md | 4 ++-- metricbeat/module/vsphere/_meta/config.reference.yml | 2 +- metricbeat/module/vsphere/_meta/config.yml | 6 +++--- metricbeat/module/vsphere/_meta/docs.asciidoc | 2 +- metricbeat/modules.d/vsphere.yml.disabled | 6 +++--- x-pack/metricbeat/metricbeat.reference.yml | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/metricbeat/docs/modules/vsphere.asciidoc b/metricbeat/docs/modules/vsphere.asciidoc index f204aae88eb..78411c55f49 100644 --- a/metricbeat/docs/modules/vsphere.asciidoc +++ b/metricbeat/docs/modules/vsphere.asciidoc @@ -11,7 +11,7 @@ This file is generated! See scripts/mage/docs_collector.go The vSphere module uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5. -By default it enables the metricsets `network`, `datastore_cluster`, `resourcepool`, `datastore`, `host` and `virtualmachine`. +By default it enables the metricsets `datastore`, `datastore_cluster`, `host`, `network`, `resourcepool` and `virtualmachine`. [float] === Dashboard @@ -35,7 +35,7 @@ in <>. Here is an example configuration: metricbeat.modules: - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster", "network", "resourcepool"] + metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 0d9752226c1..745ec8244af 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -1007,7 +1007,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster", "network", "resourcepool"] + metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/README.md b/metricbeat/module/vsphere/_meta/README.md index ae2ecd5b73d..c8022b40937 100644 --- a/metricbeat/module/vsphere/_meta/README.md +++ b/metricbeat/module/vsphere/_meta/README.md @@ -29,11 +29,11 @@ Now setup your metricbeat config to connect to Govcsim: - module: vsphere metricsets: - datastore - - host - - virtualmachine - datastore_cluster + - host - network - resourcepool + - virtualmachine enabled: true period: 5s hosts: ["https://127.0.0.1:8989/sdk"] diff --git a/metricbeat/module/vsphere/_meta/config.reference.yml b/metricbeat/module/vsphere/_meta/config.reference.yml index d137a47f4ac..c2b0a870a17 100644 --- a/metricbeat/module/vsphere/_meta/config.reference.yml +++ b/metricbeat/module/vsphere/_meta/config.reference.yml @@ -1,6 +1,6 @@ - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster", "network", "resourcepool"] + metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/config.yml b/metricbeat/module/vsphere/_meta/config.yml index a7485e0b278..e198703e445 100644 --- a/metricbeat/module/vsphere/_meta/config.yml +++ b/metricbeat/module/vsphere/_meta/config.yml @@ -1,11 +1,11 @@ - module: vsphere - #metricsets: + # metricsets: # - datastore + # - datastore_cluster # - host - # - virtualmachine # - network - # - datastore_cluster # - resourcepool + # - virtualmachine # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/docs.asciidoc b/metricbeat/module/vsphere/_meta/docs.asciidoc index e3d6dc6d907..4263a929c9f 100644 --- a/metricbeat/module/vsphere/_meta/docs.asciidoc +++ b/metricbeat/module/vsphere/_meta/docs.asciidoc @@ -1,6 +1,6 @@ The vSphere module uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5. -By default it enables the metricsets `network`, `datastore_cluster`, `resourcepool`, `datastore`, `host` and `virtualmachine`. +By default it enables the metricsets `datastore`, `datastore_cluster`, `host`, `network`, `resourcepool` and `virtualmachine`. [float] === Dashboard diff --git a/metricbeat/modules.d/vsphere.yml.disabled b/metricbeat/modules.d/vsphere.yml.disabled index 40cbc8d333c..7d6e1424681 100644 --- a/metricbeat/modules.d/vsphere.yml.disabled +++ b/metricbeat/modules.d/vsphere.yml.disabled @@ -2,13 +2,13 @@ # Docs: https://www.elastic.co/guide/en/beats/metricbeat/main/metricbeat-module-vsphere.html - module: vsphere - #metricsets: + # metricsets: # - datastore + # - datastore_cluster # - host - # - virtualmachine # - network - # - datastore_cluster # - resourcepool + # - virtualmachine # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 3c7559eed69..8279b5577cc 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -1568,7 +1568,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["datastore", "host", "virtualmachine", "datastore_cluster", "network", "resourcepool"] + metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] From 1900633f72850d19eea08e5d9d914c54ef434ec8 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 12:20:37 +0530 Subject: [PATCH 07/15] resolve review comments --- .../vsphere/datastore_cluster/_meta/data.json | 2 +- .../module/vsphere/datastore_cluster/data.go | 2 +- .../vsphere/datastore_cluster/data_test.go | 4 +--- .../datastore_cluster/datastore_cluster.go | 6 ++--- .../datastore_cluster_test.go | 23 +++++++++---------- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json b/metricbeat/module/vsphere/datastore_cluster/_meta/data.json index 155dbf2b46a..08d595aa6a3 100644 --- a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json +++ b/metricbeat/module/vsphere/datastore_cluster/_meta/data.json @@ -5,7 +5,7 @@ "type": "vsphere" }, "event": { - "dataset": "vsphere.generic", + "dataset": "vsphere.datastore_cluster", "module": "vsphere", "duration": 15443161 }, diff --git a/metricbeat/module/vsphere/datastore_cluster/data.go b/metricbeat/module/vsphere/datastore_cluster/data.go index 25d30490f73..8d570aa95ec 100644 --- a/metricbeat/module/vsphere/datastore_cluster/data.go +++ b/metricbeat/module/vsphere/datastore_cluster/data.go @@ -29,6 +29,6 @@ func (m *DatastoreClusterMetricSet) mapEvent(datastoreCluster mo.StoragePod) map event.Put("name", datastoreCluster.Name) event.Put("capacity.bytes", datastoreCluster.Summary.Capacity) event.Put("free_space.bytes", datastoreCluster.Summary.FreeSpace) - + return event } diff --git a/metricbeat/module/vsphere/datastore_cluster/data_test.go b/metricbeat/module/vsphere/datastore_cluster/data_test.go index 881de630cea..8812db8ba05 100644 --- a/metricbeat/module/vsphere/datastore_cluster/data_test.go +++ b/metricbeat/module/vsphere/datastore_cluster/data_test.go @@ -26,8 +26,6 @@ import ( ) func TestEventMapping(t *testing.T) { - m := &DatastoreClusterMetricSet{} - datastoreclusterTest := mo.StoragePod{ Summary: &types.StoragePodSummary{ Capacity: 100, @@ -40,7 +38,7 @@ func TestEventMapping(t *testing.T) { }, } - event := m.mapEvent(datastoreclusterTest) + event := (&DatastoreClusterMetricSet{}).mapEvent(datastoreclusterTest) name, _ := event.GetValue("name") assert.Equal(t, "Folder1", name) diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go index 73eacb516f3..8334e37cfca 100644 --- a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go +++ b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go @@ -74,7 +74,7 @@ func (m *DatastoreClusterMetricSet) Fetch(ctx context.Context, reporter mb.Repor v, err := view.NewManager(c).CreateContainerView(ctx, c.ServiceContent.RootFolder, []string{"Network"}, true) if err != nil { - return fmt.Errorf("error in CreateContainerView: %w", err) + return fmt.Errorf("error in creating container view: %w", err) } defer func() { @@ -84,9 +84,9 @@ func (m *DatastoreClusterMetricSet) Fetch(ctx context.Context, reporter mb.Repor }() var datastoreCluster []mo.StoragePod - err = v.Retrieve(ctx, []string{"StoragePod"}, []string{}, &datastoreCluster) + err = v.Retrieve(ctx, []string{"StoragePod"}, nil, &datastoreCluster) if err != nil { - return fmt.Errorf("error in Retrieve: %w", err) + return fmt.Errorf("error in retrieve from vsphere: %w", err) } for i := range datastoreCluster { diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go index 6f07914132d..b52ade97b66 100644 --- a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go +++ b/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go @@ -41,25 +41,24 @@ func TestFetchEventContents(t *testing.T) { f := mbtest.NewReportingMetricSetV2WithContext(t, getConfig(ts)) events, errs := mbtest.ReportingFetchV2WithContext(f) - require.Empty(t, errs, "expected no error") - - require.NotEmpty(t, events, "didn't get any event, should have gotten at least X") + require.Empty(t, errs, "Expected no errors during fetch") + require.NotEmpty(t, events, "Expected to receive at least one event") event := events[0].MetricSetFields t.Logf("Fetched event from %s/%s event: %+v", f.Module().Name(), f.Name(), event) - if name, ok := event["name"].(mapstr.M); ok { - assert.NotNil(t, name) - } + name, ok := event["name"].(mapstr.M) + require.True(t, ok, "Expected 'name' field to be of type mapstr.M") + assert.NotNil(t, name, "Expected 'name' field to be non-nil") - if capacity, ok := event["capacity"].(mapstr.M); ok { - assert.GreaterOrEqual(t, capacity["bytes"], int64(0)) - } + capacity, ok := event["capacity"].(mapstr.M) + require.True(t, ok, "Expected 'capacity' field to be of type mapstr.M") + assert.GreaterOrEqual(t, capacity["bytes"], int64(0), "Expected 'capacity.bytes' to be non-negative") - if freespace, ok := event["free_space"].(mapstr.M); ok { - assert.GreaterOrEqual(t, freespace["bytes"], int64(0)) - } + freeSpace, ok := event["free_space"].(mapstr.M) + require.True(t, ok, "Expected 'free_space' field to be of type mapstr.M") + assert.GreaterOrEqual(t, freeSpace["bytes"], int64(0), "Expected 'free_space.bytes' to be non-negative") } func TestDatastoreCluster(t *testing.T) { From b06ce4b55753dcf8d43f140ba0aceedadfbcdff1 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 13:02:35 +0530 Subject: [PATCH 08/15] datastore_cluster -> datastorecluster --- metricbeat/docs/fields.asciidoc | 8 ++--- metricbeat/docs/modules/vsphere.asciidoc | 8 ++--- .../vsphere/datastore_cluster.asciidoc | 28 ------------------ .../modules/vsphere/datastorecluster.asciidoc | 29 +++++++++++++++++++ metricbeat/docs/modules_list.asciidoc | 2 +- metricbeat/include/list_common.go | 2 +- metricbeat/metricbeat.reference.yml | 2 +- metricbeat/module/vsphere/_meta/README.md | 4 +-- .../module/vsphere/_meta/config.reference.yml | 2 +- metricbeat/module/vsphere/_meta/config.yml | 2 +- metricbeat/module/vsphere/_meta/docs.asciidoc | 2 +- .../datastore_cluster/_meta/docs.asciidoc | 1 - .../_meta/data.json | 18 ++++++------ .../datastorecluster/_meta/docs.asciidoc | 1 + .../_meta/fields.yml | 2 +- .../data.go | 2 +- .../data_test.go | 6 ++-- .../datastorecluster.go} | 2 +- .../datastorecluster_test.go} | 2 +- metricbeat/module/vsphere/fields.go | 2 +- metricbeat/modules.d/vsphere.yml.disabled | 2 +- x-pack/metricbeat/metricbeat.reference.yml | 2 +- 22 files changed, 65 insertions(+), 64 deletions(-) delete mode 100644 metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc create mode 100644 metricbeat/docs/modules/vsphere/datastorecluster.asciidoc delete mode 100644 metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc rename metricbeat/module/vsphere/{datastore_cluster => datastorecluster}/_meta/data.json (59%) create mode 100644 metricbeat/module/vsphere/datastorecluster/_meta/docs.asciidoc rename metricbeat/module/vsphere/{datastore_cluster => datastorecluster}/_meta/fields.yml (94%) rename metricbeat/module/vsphere/{datastore_cluster => datastorecluster}/data.go (97%) rename metricbeat/module/vsphere/{datastore_cluster => datastorecluster}/data_test.go (91%) rename metricbeat/module/vsphere/{datastore_cluster/datastore_cluster.go => datastorecluster/datastorecluster.go} (99%) rename metricbeat/module/vsphere/{datastore_cluster/datastore_cluster_test.go => datastorecluster/datastorecluster_test.go} (99%) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 1a096b33f06..18bbf00f6e8 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -67034,13 +67034,13 @@ type: long -- [float] -=== datastore_cluster +=== datastorecluster Datastore Cluster -*`vsphere.datastore_cluster.name`*:: +*`vsphere.datastorecluster.name`*:: + -- The Datastore Cluster name. @@ -67050,7 +67050,7 @@ type: keyword -- -*`vsphere.datastore_cluster.capacity.bytes`*:: +*`vsphere.datastorecluster.capacity.bytes`*:: + -- Total capacity of this storage pod, in bytes. @@ -67062,7 +67062,7 @@ format: bytes -- -*`vsphere.datastore_cluster.free_space.bytes`*:: +*`vsphere.datastorecluster.free_space.bytes`*:: + -- Total free space on this storage pod, in bytes. diff --git a/metricbeat/docs/modules/vsphere.asciidoc b/metricbeat/docs/modules/vsphere.asciidoc index 78411c55f49..f0520abd715 100644 --- a/metricbeat/docs/modules/vsphere.asciidoc +++ b/metricbeat/docs/modules/vsphere.asciidoc @@ -11,7 +11,7 @@ This file is generated! See scripts/mage/docs_collector.go The vSphere module uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5. -By default it enables the metricsets `datastore`, `datastore_cluster`, `host`, `network`, `resourcepool` and `virtualmachine`. +By default it enables the metricsets `datastore`, `datastorecluster`, `host`, `network`, `resourcepool` and `virtualmachine`. [float] === Dashboard @@ -35,7 +35,7 @@ in <>. Here is an example configuration: metricbeat.modules: - module: vsphere enabled: true - metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] + metricsets: ["datastore", "datastorecluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] @@ -55,7 +55,7 @@ The following metricsets are available: * <> -* <> +* <> * <> @@ -67,7 +67,7 @@ The following metricsets are available: include::vsphere/datastore.asciidoc[] -include::vsphere/datastore_cluster.asciidoc[] +include::vsphere/datastorecluster.asciidoc[] include::vsphere/host.asciidoc[] diff --git a/metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc b/metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc deleted file mode 100644 index d4c4fe3b6d4..00000000000 --- a/metricbeat/docs/modules/vsphere/datastore_cluster.asciidoc +++ /dev/null @@ -1,28 +0,0 @@ -//// -This file is generated! See scripts/mage/docs_collector.go -//// -:edit_url: https://github.com/elastic/beats/edit/main/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc - - -[[metricbeat-metricset-vsphere-datastore_cluster]] -=== vSphere datastore_cluster metricset - -beta[] - -include::../../../module/vsphere/datastore_cluster/_meta/docs.asciidoc[] - - -:edit_url: - -==== Fields - -For a description of each field in the metricset, see the -<> section. - -Here is an example document generated by this metricset: - -[source,json] ----- -include::../../../module/vsphere/datastore_cluster/_meta/data.json[] ----- -:edit_url!: \ No newline at end of file diff --git a/metricbeat/docs/modules/vsphere/datastorecluster.asciidoc b/metricbeat/docs/modules/vsphere/datastorecluster.asciidoc new file mode 100644 index 00000000000..07614187be1 --- /dev/null +++ b/metricbeat/docs/modules/vsphere/datastorecluster.asciidoc @@ -0,0 +1,29 @@ +//// +This file is generated! See scripts/mage/docs_collector.go +//// +:edit_url: https://github.com/elastic/beats/edit/main/metricbeat/module/vsphere/datastorecluster/_meta/docs.asciidoc + + +[[metricbeat-metricset-vsphere-datastorecluster]] +=== vSphere datastorecluster metricset + +beta[] + +include::../../../module/vsphere/datastorecluster/_meta/docs.asciidoc[] + +This is a default metricset. If the host module is unconfigured, this metricset is enabled by default. + +:edit_url: + +==== Fields + +For a description of each field in the metricset, see the +<> section. + +Here is an example document generated by this metricset: + +[source,json] +---- +include::../../../module/vsphere/datastorecluster/_meta/data.json[] +---- +:edit_url!: \ No newline at end of file diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index e4d5097c616..0af2182cdbc 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -312,7 +312,7 @@ This file is generated! See scripts/mage/docs_collector.go .1+| .1+| |<> |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | .6+| .6+| |<> -|<> beta[] +|<> beta[] |<> |<> beta[] |<> beta[] diff --git a/metricbeat/include/list_common.go b/metricbeat/include/list_common.go index 03670abd474..594a711e245 100644 --- a/metricbeat/include/list_common.go +++ b/metricbeat/include/list_common.go @@ -182,7 +182,7 @@ import ( _ "github.com/elastic/beats/v7/metricbeat/module/uwsgi/status" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/datastore" - _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/datastore_cluster" + _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/datastorecluster" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/host" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/network" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/resourcepool" diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 745ec8244af..9195bd184fa 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -1007,7 +1007,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] + metricsets: ["datastore", "datastorecluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/README.md b/metricbeat/module/vsphere/_meta/README.md index c8022b40937..f09c5ecf119 100644 --- a/metricbeat/module/vsphere/_meta/README.md +++ b/metricbeat/module/vsphere/_meta/README.md @@ -1,7 +1,7 @@ # Testing using GOVCSIM. -To test the vsphere module without a real Vmware SDK URL you can use the following setup. Govcsim is a vCenter Server and ESXi API based simulator written using govmomi. It creates a vCenter Server model with a datacenter, hosts, cluster, resource pools, networks and a datastore. +To test the vsphere module without a real Vmware SDK URL you can use the following setup. Govcsim is a vCenter Server and ESXi API based simulator written using govmomi. It creates a vCenter Server model with a datacenter, datastore cluster, hosts, cluster, resource pools, networks and a datastore. Requirements: @@ -29,7 +29,7 @@ Now setup your metricbeat config to connect to Govcsim: - module: vsphere metricsets: - datastore - - datastore_cluster + - datastorecluster - host - network - resourcepool diff --git a/metricbeat/module/vsphere/_meta/config.reference.yml b/metricbeat/module/vsphere/_meta/config.reference.yml index c2b0a870a17..0887b5c0ce1 100644 --- a/metricbeat/module/vsphere/_meta/config.reference.yml +++ b/metricbeat/module/vsphere/_meta/config.reference.yml @@ -1,6 +1,6 @@ - module: vsphere enabled: true - metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] + metricsets: ["datastore", "datastorecluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] diff --git a/metricbeat/module/vsphere/_meta/config.yml b/metricbeat/module/vsphere/_meta/config.yml index e198703e445..012f3d9bde4 100644 --- a/metricbeat/module/vsphere/_meta/config.yml +++ b/metricbeat/module/vsphere/_meta/config.yml @@ -1,7 +1,7 @@ - module: vsphere # metricsets: # - datastore - # - datastore_cluster + # - datastorecluster # - host # - network # - resourcepool diff --git a/metricbeat/module/vsphere/_meta/docs.asciidoc b/metricbeat/module/vsphere/_meta/docs.asciidoc index 4263a929c9f..056dd5db5b2 100644 --- a/metricbeat/module/vsphere/_meta/docs.asciidoc +++ b/metricbeat/module/vsphere/_meta/docs.asciidoc @@ -1,6 +1,6 @@ The vSphere module uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5. -By default it enables the metricsets `datastore`, `datastore_cluster`, `host`, `network`, `resourcepool` and `virtualmachine`. +By default it enables the metricsets `datastore`, `datastorecluster`, `host`, `network`, `resourcepool` and `virtualmachine`. [float] === Dashboard diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc b/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc deleted file mode 100644 index e708e60e2bc..00000000000 --- a/metricbeat/module/vsphere/datastore_cluster/_meta/docs.asciidoc +++ /dev/null @@ -1 +0,0 @@ -This is the datastorecluster metricset of the module vsphere. diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json b/metricbeat/module/vsphere/datastorecluster/_meta/data.json similarity index 59% rename from metricbeat/module/vsphere/datastore_cluster/_meta/data.json rename to metricbeat/module/vsphere/datastorecluster/_meta/data.json index 08d595aa6a3..bd76a8c9b97 100644 --- a/metricbeat/module/vsphere/datastore_cluster/_meta/data.json +++ b/metricbeat/module/vsphere/datastorecluster/_meta/data.json @@ -14,14 +14,14 @@ "name": "datastore_cluster" }, "vsphere": { - "datastore_cluster": { - "name": "datastore_cluster1", - "capacity": { - "bytes": 8795019280384 - }, - "free_space": { - "bytes": 8788836876288 - } + "datastorecluster": { + "name": "datastore_cluster1", + "capacity": { + "bytes": 8795019280384 + }, + "free_space": { + "bytes": 8788836876288 + } } } -} +} \ No newline at end of file diff --git a/metricbeat/module/vsphere/datastorecluster/_meta/docs.asciidoc b/metricbeat/module/vsphere/datastorecluster/_meta/docs.asciidoc new file mode 100644 index 00000000000..858a9fa3d50 --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/_meta/docs.asciidoc @@ -0,0 +1 @@ +This is the Datastore Cluster metricset of the module vsphere. diff --git a/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml b/metricbeat/module/vsphere/datastorecluster/_meta/fields.yml similarity index 94% rename from metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml rename to metricbeat/module/vsphere/datastorecluster/_meta/fields.yml index 632993e0a7b..8e22bb6259d 100644 --- a/metricbeat/module/vsphere/datastore_cluster/_meta/fields.yml +++ b/metricbeat/module/vsphere/datastorecluster/_meta/fields.yml @@ -1,4 +1,4 @@ -- name: datastore_cluster +- name: datastorecluster type: group release: beta description: > diff --git a/metricbeat/module/vsphere/datastore_cluster/data.go b/metricbeat/module/vsphere/datastorecluster/data.go similarity index 97% rename from metricbeat/module/vsphere/datastore_cluster/data.go rename to metricbeat/module/vsphere/datastorecluster/data.go index 8d570aa95ec..d5af9e40e1a 100644 --- a/metricbeat/module/vsphere/datastore_cluster/data.go +++ b/metricbeat/module/vsphere/datastorecluster/data.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package datastore_cluster +package datastorecluster import ( "github.com/vmware/govmomi/vim25/mo" diff --git a/metricbeat/module/vsphere/datastore_cluster/data_test.go b/metricbeat/module/vsphere/datastorecluster/data_test.go similarity index 91% rename from metricbeat/module/vsphere/datastore_cluster/data_test.go rename to metricbeat/module/vsphere/datastorecluster/data_test.go index 8812db8ba05..de181264210 100644 --- a/metricbeat/module/vsphere/datastore_cluster/data_test.go +++ b/metricbeat/module/vsphere/datastorecluster/data_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package datastore_cluster +package datastorecluster import ( "testing" @@ -26,7 +26,7 @@ import ( ) func TestEventMapping(t *testing.T) { - datastoreclusterTest := mo.StoragePod{ + datastoreClusterTest := mo.StoragePod{ Summary: &types.StoragePodSummary{ Capacity: 100, FreeSpace: 50, @@ -38,7 +38,7 @@ func TestEventMapping(t *testing.T) { }, } - event := (&DatastoreClusterMetricSet{}).mapEvent(datastoreclusterTest) + event := (&DatastoreClusterMetricSet{}).mapEvent(datastoreClusterTest) name, _ := event.GetValue("name") assert.Equal(t, "Folder1", name) diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go similarity index 99% rename from metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go rename to metricbeat/module/vsphere/datastorecluster/datastorecluster.go index 8334e37cfca..7a6b3a4046d 100644 --- a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package datastore_cluster +package datastorecluster import ( "context" diff --git a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go similarity index 99% rename from metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go rename to metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go index b52ade97b66..2a8ff5f6dd7 100644 --- a/metricbeat/module/vsphere/datastore_cluster/datastore_cluster_test.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package datastore_cluster +package datastorecluster import ( "testing" diff --git a/metricbeat/module/vsphere/fields.go b/metricbeat/module/vsphere/fields.go index 5d7ee3a2b3b..a8c44565052 100644 --- a/metricbeat/module/vsphere/fields.go +++ b/metricbeat/module/vsphere/fields.go @@ -32,5 +32,5 @@ func init() { // AssetVsphere returns asset data. // This is the base64 encoded zlib format compressed contents of module/vsphere. func AssetVsphere() string { - return "eJzUXEtv4zgSvudXFOay3UDac89hgdk0drqBTfegnck1oKmyxQ1FasmSDefXL0jqZVuSZZtyEh8aDT+qvnoXi6V8gRfc3sHa5ikavAEgQRLv4Lf13L/z2w1AgpYbkZPQ6g7+eQMAUH4KmU4K6X5mUCKzeAcrdgOwFCgTe+e/+gUUy7DNwr1om7svG13k5TsdXHYJtYkljJglXZPrJtlLtvyog8iuHNVrH0YbCmc544K2s6VBnC22hHbnexUwqdVq74MBbO71b4MIniDoJVCKDeLZ3peX2mSM7uCQ/QFM0sRkVJyPjmJ8oIXFJCrOvy0mE8HMOXWCtJxJTJ6XUrP9LxwB+xcajorYCh3YGmjNFzzfHth5+HEn8KV10DrRvuB2o01yopcKiXZrCTNPZdbJNNWWZlwXqltNp9vyR5Et0DjVONJ2gKv7b7cHnSXuf4Qlx5ZJ6V3I8fDsejAIncfy3zlp4/zh++8/4V4rMloCW60MrhhhAt9VXtDvPwvKC4KfORrmCFnnSTBHrlXSjdD9G08/X2tPdXS7ORpkcSP7FyMfJo6wUCsfLrA0Ors0yj1SyQgVrzJnFgv0H2v05mSZiwufkkSGDhQwzxh0ZcQOWUAoyISUwnrT9nifJUZFRO+fe3pH0mdd8bOJQv7poUfcdTZ1uD89DAX7xgiK2wNUnu0o155N+lK/DkDfwrE95zM9u78NfOaysITmaDtY93cLJDauTWwy2v0Bk6HGMG5efUzxEMlAjq37k/idXt2C+DQgLNiyMOU6uXXW8yxPd0rXQD/bnPG4IRRAO+LgiYNWF8NudxiXHEG+ue5BqMCkDofqdIVqLYxWGSqaXXZGyYvQp2bpa8xm+v6vv53iHr699jhhXlTJJRrjYM4xnP2BLB5jfxw7xrfJyRMXomSnz+qpRw2aaQpxTd+GoArtcA8WYV9mrVMTW0UO87RdcarYrnMVL4xBRXILC3SFlGtli8wfCEGbCj4qcuhOTl1euATXgmNVVFmogpOXVUFA7AWt6wq4znKJhMAUzO/n390bGVNJSCt5urWCMwkB6LgO0ks2UaPwTaxStAQleVgzWSAwbrS13tEdc+tPus5M9XFrPPDoJ43KCKqOgTBQ8P1608sI+wLIeAq24+A12qHit5N98B0nQlV3lnHwxx81zYvM5x2Hz6vcOXdoKQ1zgrRAX9CJZJhpM9VE78ETvxzdVIO8WPimmd9djC5uW/6tGv/0zFaQNtq8PEduBn4EskOlv+Q8dRuixiOZpgUpqY9oQCocC6aSjUgonZFhymYu801TJFxKAkawSQVPw9F9wyy02EJSGNeNOORCEZo1kzN4dKcTg7lBi4qs/7RGXQ1fKnFOD4ADPRjkKNbXVULF831oYLJKVcVH2+auZtXih7JVpbNObZwtX874C5Ld8fNporDk1BZzOAgraLXrTYurZjMKFBqjzTXVthGUQuB6ugpLtFfSZBvqeVr1oRYTZGhb1BDUcQizQpLgzNIVTF/zOj92GrgT2/4Q62mWb+l1cuMfYB0HMTE6zzG5guHblaBSZ8X9JKgTG72uUBeBvF60D8KLfQ/2mCJo1+BICSkySWnJwvfG9ZTClfEjw9wGY5GT6DmanDcN87ovye7iKgcnPkOeCvOt79gmu1VcC0MFk5AxngrVN9Lcc/ibfQQRLpzK090X42eJSft+oK2SoYE/4xytFQvZ7U8LrSUydZqmvqtEcN+tblKkFI3r6p1wBFpVkzkLXKulWBUGEyANudFrkWC4cOls2OuJvf/dLHakHqJ2Ni0XVlJmIUFC7tvyGnq4ihHWFgPrLJ0Q963fZyfYG0jsC3xM6BGCu9cPR7o6LvlFGSejCvL6WV+fVWDHMofhBkMhNxbd7g7PWGjTDHKcqgYPllOVkj9RuTpSlZESwo8hCHEXuB63+b7k8Alnq9ltheLTnJhKmEk+38JXYcmIRUGYPIWEmWtDn/ty9YeLkoMq8C4D5hyUzU6T1YXhmGstpyhfv0r64BicfLl95Bo7mj+FC8jD22GIYKd/MSu4vyrO0XjxFUefOIQlwe1t5xVyG12CGVNd1/XvA56/JpWY7e+YtvF1GQUGDNOm3y33UdlHyg8Ht8VOF1VYVNLfAqWMQiw9PbjOppTahdgtMAucSV6EFm2xha+/5ocKg73CIXiPTWPLFpjtCNa2WrmMtZdGupN4uM6JG3iTeM2qQEudQ9xdHpdr+E/HqVQMFCSkeA0Zbi+IOq+oapF657j7gvkTyDXk8rdZk4p1rQxyDW3t5pCgtkY/0fLHKZ5S5phrSV9mmdJjxieaWF6UG7FmPSsSR2UdIaeT0bW3Lgb6TSwsrAxTZfN1IGxoe5RWX2zK3LE4baKsS/xxogdaH0Hylrj1r0pNLJA2iOpwofskTWyYH/x9AFVUx/B/WI867KOeL/mCSam1mlh2K17r82HJERIj1micDk6M7XGC6TWaFFnXee7jloYmP36qNPQ5+M5GSAkLrBfdDr2HLfQaQZANTU5D8X+FMD7RRmgzqpXIq5WPRkOVwTuiq3dxkzSYwjng08NlVYTrLDdo+9aVjko9Mo4aaRuGlSEbIdt7qU8P5wbTdM8gqNaczLRP+h/34iXilOoNJj/lLcWALeDKY7QTIdZmCD8rf3V0MjWAqJfS6U9O+KOX2NfIpQuDouea0nNz/8RfUmzH7cCOXFS+5YAYHsoq1r8nqSOmiH2u5aOwagXzcOsz8NDUxM/JpG/2nMwQ58jPyfyxZkKyhcSjzNuLwv3DmxjrwnpZzmzibDX3DmQiYS0fC4uyIB5fsTtr4vE0690wPtr2zn0EsLywpLPnUDM6IerFf/Hgz0GEN58vSGv3nnFZrN7btnnXn1KBD3Hf1zxHx6zVXLD2HdpuI/GWF36tJ+1OxNm/sAIfwkD1gv+7ts+5KKc6J/3cPSMxleyck0Zd/ERfSGtW0co1r2YVreMh/5v/BwAA//8QuYyT" + return "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" } diff --git a/metricbeat/modules.d/vsphere.yml.disabled b/metricbeat/modules.d/vsphere.yml.disabled index 7d6e1424681..54eeea92cbe 100644 --- a/metricbeat/modules.d/vsphere.yml.disabled +++ b/metricbeat/modules.d/vsphere.yml.disabled @@ -4,7 +4,7 @@ - module: vsphere # metricsets: # - datastore - # - datastore_cluster + # - datastorecluster # - host # - network # - resourcepool diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 8279b5577cc..8ca7e12990a 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -1568,7 +1568,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["datastore", "datastore_cluster", "host", "network", "resourcepool", "virtualmachine"] + metricsets: ["datastore", "datastorecluster", "host", "network", "resourcepool", "virtualmachine"] # Real-time data collection – An ESXi Server collects data for each performance counter every 20 seconds. period: 20s hosts: ["https://localhost/sdk"] From 98aea460cd676e023f95178a486c642999ededd8 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 13:04:40 +0530 Subject: [PATCH 09/15] resolve review comments --- .../module/vsphere/datastorecluster/datastorecluster.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go index 7a6b3a4046d..dedd5be3590 100644 --- a/metricbeat/module/vsphere/datastorecluster/datastorecluster.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go @@ -90,12 +90,11 @@ func (m *DatastoreClusterMetricSet) Fetch(ctx context.Context, reporter mb.Repor } for i := range datastoreCluster { - select { - case <-ctx.Done(): + if ctx.Err() != nil { return ctx.Err() - default: - reporter.Event(mb.Event{MetricSetFields: m.mapEvent(datastoreCluster[i])}) } + + reporter.Event(mb.Event{MetricSetFields: m.mapEvent(datastoreCluster[i])}) } return nil From 908f1b408ea5c7a38c2c4c96146865a4eb2ab5d8 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 14:56:26 +0530 Subject: [PATCH 10/15] fix UTs --- metricbeat/module/vsphere/datastorecluster/data.go | 2 +- .../vsphere/datastorecluster/datastorecluster.go | 2 +- .../datastorecluster/datastorecluster_test.go | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/metricbeat/module/vsphere/datastorecluster/data.go b/metricbeat/module/vsphere/datastorecluster/data.go index d5af9e40e1a..8abdc5e695d 100644 --- a/metricbeat/module/vsphere/datastorecluster/data.go +++ b/metricbeat/module/vsphere/datastorecluster/data.go @@ -29,6 +29,6 @@ func (m *DatastoreClusterMetricSet) mapEvent(datastoreCluster mo.StoragePod) map event.Put("name", datastoreCluster.Name) event.Put("capacity.bytes", datastoreCluster.Summary.Capacity) event.Put("free_space.bytes", datastoreCluster.Summary.FreeSpace) - + return event } diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go index dedd5be3590..5d20217202a 100644 --- a/metricbeat/module/vsphere/datastorecluster/datastorecluster.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go @@ -72,7 +72,7 @@ func (m *DatastoreClusterMetricSet) Fetch(ctx context.Context, reporter mb.Repor c := client.Client - v, err := view.NewManager(c).CreateContainerView(ctx, c.ServiceContent.RootFolder, []string{"Network"}, true) + v, err := view.NewManager(c).CreateContainerView(ctx, c.ServiceContent.RootFolder, []string{"StoragePod"}, true) if err != nil { return fmt.Errorf("error in creating container view: %w", err) } diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go index 2a8ff5f6dd7..f86d2327ce3 100644 --- a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go @@ -30,14 +30,13 @@ import ( func TestFetchEventContents(t *testing.T) { model := simulator.VPX() + model.Pod = 1 err := model.Create() - if err != nil { - t.Fatal(err) - } - t.Cleanup(func() { model.Remove() }) + require.NoError(t, err, "failed to create model") + t.Cleanup(model.Remove) ts := model.Service.NewServer() - t.Cleanup(func() { ts.Close() }) + t.Cleanup(ts.Close) f := mbtest.NewReportingMetricSetV2WithContext(t, getConfig(ts)) events, errs := mbtest.ReportingFetchV2WithContext(f) @@ -48,7 +47,7 @@ func TestFetchEventContents(t *testing.T) { t.Logf("Fetched event from %s/%s event: %+v", f.Module().Name(), f.Name(), event) - name, ok := event["name"].(mapstr.M) + name, ok := event["name"].(string) require.True(t, ok, "Expected 'name' field to be of type mapstr.M") assert.NotNil(t, name, "Expected 'name' field to be non-nil") @@ -62,7 +61,8 @@ func TestFetchEventContents(t *testing.T) { } func TestDatastoreCluster(t *testing.T) { - model := simulator.ESX() + model := simulator.VPX() + model.Pod = 1 err := model.Create() require.NoError(t, err, "failed to create model") t.Cleanup(func() { model.Remove() }) From 5804754bf7f38d3fc62d454329e827ab14520a7b Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 14:58:16 +0530 Subject: [PATCH 11/15] update URL for UTs --- .../vsphere/datastorecluster/datastorecluster_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go index f86d2327ce3..dec03026688 100644 --- a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go @@ -18,6 +18,7 @@ package datastorecluster import ( + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -77,12 +78,11 @@ func TestDatastoreCluster(t *testing.T) { } func getConfig(ts *simulator.Server) map[string]interface{} { - urlSimulator := ts.URL.Scheme + "://" + ts.URL.Host + ts.URL.Path - + fmt.Printf("ts.URL.String(): %v\n", ts.URL.String()) return map[string]interface{}{ "module": "vsphere", "metricsets": []string{"datastorecluster"}, - "hosts": []string{urlSimulator}, + "hosts": []string{ts.URL.String()}, "username": "user", "password": "pass", "insecure": true, From 8d4a5a286470231bc2902804bb5eb2175e9f6dc2 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 15:04:53 +0530 Subject: [PATCH 12/15] fix UT --- .../module/vsphere/datastorecluster/datastorecluster_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go index dec03026688..cc77271fddc 100644 --- a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go @@ -18,7 +18,6 @@ package datastorecluster import ( - "fmt" "testing" "github.com/stretchr/testify/assert" @@ -78,7 +77,6 @@ func TestDatastoreCluster(t *testing.T) { } func getConfig(ts *simulator.Server) map[string]interface{} { - fmt.Printf("ts.URL.String(): %v\n", ts.URL.String()) return map[string]interface{}{ "module": "vsphere", "metricsets": []string{"datastorecluster"}, From 263b004447090cca3a6af96ce823a18fd2656e42 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 15:59:04 +0530 Subject: [PATCH 13/15] update UTs --- .../module/vsphere/datastorecluster/datastorecluster_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go index cc77271fddc..21648421291 100644 --- a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go @@ -65,10 +65,10 @@ func TestDatastoreCluster(t *testing.T) { model.Pod = 1 err := model.Create() require.NoError(t, err, "failed to create model") - t.Cleanup(func() { model.Remove() }) + t.Cleanup(model.Remove) ts := model.Service.NewServer() - t.Cleanup(func() { ts.Close() }) + t.Cleanup(ts.Close) f := mbtest.NewReportingMetricSetV2WithContext(t, getConfig(ts)) From b65ee98593403096a103546fbe063770405cda00 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 17:48:47 +0530 Subject: [PATCH 14/15] fix field mapping --- metricbeat/module/vsphere/datastorecluster/_meta/data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metricbeat/module/vsphere/datastorecluster/_meta/data.json b/metricbeat/module/vsphere/datastorecluster/_meta/data.json index bd76a8c9b97..f586da67484 100644 --- a/metricbeat/module/vsphere/datastorecluster/_meta/data.json +++ b/metricbeat/module/vsphere/datastorecluster/_meta/data.json @@ -11,7 +11,7 @@ }, "metricset": { "period": 20000, - "name": "datastore_cluster" + "name": "datastorecluster" }, "vsphere": { "datastorecluster": { From e98f7a3273abf2a0f858531bb29da063d3d13b19 Mon Sep 17 00:00:00 2001 From: Kush Rana Date: Fri, 30 Aug 2024 18:20:54 +0530 Subject: [PATCH 15/15] update data.json --- metricbeat/module/vsphere/datastorecluster/_meta/data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metricbeat/module/vsphere/datastorecluster/_meta/data.json b/metricbeat/module/vsphere/datastorecluster/_meta/data.json index f586da67484..833b852c6da 100644 --- a/metricbeat/module/vsphere/datastorecluster/_meta/data.json +++ b/metricbeat/module/vsphere/datastorecluster/_meta/data.json @@ -5,7 +5,7 @@ "type": "vsphere" }, "event": { - "dataset": "vsphere.datastore_cluster", + "dataset": "vsphere.datastorecluster", "module": "vsphere", "duration": 15443161 },