diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 0340311dff3..953b15b83c0 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -67134,6 +67134,47 @@ type: long -- +[float] +=== datastorecluster + +Datastore Cluster + + + +*`vsphere.datastorecluster.name`*:: ++ +-- +The Datastore Cluster 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 63a10987905..762f7ba255e 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 `cluster`, `network`, `resourcepool`, `datastore`, `host` and `virtualmachine`. +By default it enables the metricsets `cluster`, `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: ["cluster", "datastore", "host", "virtualmachine", "network", "resourcepool"] + metricsets: ["cluster", "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"] @@ -57,6 +57,8 @@ The following metricsets are available: * <> +* <> + * <> * <> @@ -69,6 +71,8 @@ include::vsphere/cluster.asciidoc[] include::vsphere/datastore.asciidoc[] +include::vsphere/datastorecluster.asciidoc[] + include::vsphere/host.asciidoc[] include::vsphere/network.asciidoc[] 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 c50e63f2d3f..c7a53f5b909 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -311,8 +311,9 @@ 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] | -.6+| .6+| |<> beta[] +.7+| .7+| |<> beta[] |<> +|<> beta[] |<> |<> beta[] |<> beta[] diff --git a/metricbeat/include/list_common.go b/metricbeat/include/list_common.go index 89bc495bd8d..3cbb3828473 100644 --- a/metricbeat/include/list_common.go +++ b/metricbeat/include/list_common.go @@ -183,6 +183,7 @@ import ( _ "github.com/elastic/beats/v7/metricbeat/module/vsphere" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/cluster" _ "github.com/elastic/beats/v7/metricbeat/module/vsphere/datastore" + _ "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 816e2fcc804..890031ddb4c 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -1007,7 +1007,7 @@ metricbeat.modules: #------------------------------- VSphere Module ------------------------------- - module: vsphere enabled: true - metricsets: ["cluster", "datastore", "host", "virtualmachine", "network", "resourcepool"] + metricsets: ["cluster", "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 06373b27e63..5e40dd26ba7 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: @@ -30,10 +30,11 @@ Now setup your metricbeat config to connect to Govcsim: metricsets: - cluster - datastore + - datastorecluster - host - - virtualmachine - 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 5e6bfdb488c..91a32da7677 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: ["cluster", "datastore", "host", "virtualmachine", "network", "resourcepool"] + metricsets: ["cluster", "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 09927fb3237..173be03fc4f 100644 --- a/metricbeat/module/vsphere/_meta/config.yml +++ b/metricbeat/module/vsphere/_meta/config.yml @@ -1,11 +1,12 @@ - module: vsphere - #metricsets: + # metricsets: # - cluster # - datastore + # - datastorecluster # - host - # - virtualmachine # - 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/docs.asciidoc b/metricbeat/module/vsphere/_meta/docs.asciidoc index e1329634c21..353cfda1e7b 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 `cluster`, `network`, `resourcepool`, `datastore`, `host` and `virtualmachine`. +By default it enables the metricsets `cluster`, `datastore`, `datastorecluster`, `host`, `network`, `resourcepool` and `virtualmachine`. [float] === Dashboard diff --git a/metricbeat/module/vsphere/datastorecluster/_meta/data.json b/metricbeat/module/vsphere/datastorecluster/_meta/data.json new file mode 100644 index 00000000000..833b852c6da --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/_meta/data.json @@ -0,0 +1,27 @@ +{ + "@timestamp": "2016-05-23T08:05:34.853Z", + "service": { + "address": "https://localhost:8980/sdk", + "type": "vsphere" + }, + "event": { + "dataset": "vsphere.datastorecluster", + "module": "vsphere", + "duration": 15443161 + }, + "metricset": { + "period": 20000, + "name": "datastorecluster" + }, + "vsphere": { + "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/datastorecluster/_meta/fields.yml b/metricbeat/module/vsphere/datastorecluster/_meta/fields.yml new file mode 100644 index 00000000000..8e22bb6259d --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/_meta/fields.yml @@ -0,0 +1,20 @@ +- name: datastorecluster + type: group + release: beta + description: > + Datastore Cluster + fields: + - name: name + type: keyword + description: > + The Datastore Cluster 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/datastorecluster/data.go b/metricbeat/module/vsphere/datastorecluster/data.go new file mode 100644 index 00000000000..8abdc5e695d --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/data.go @@ -0,0 +1,34 @@ +// 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 datastorecluster + +import ( + "github.com/vmware/govmomi/vim25/mo" + + "github.com/elastic/elastic-agent-libs/mapstr" +) + +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/datastorecluster/data_test.go b/metricbeat/module/vsphere/datastorecluster/data_test.go new file mode 100644 index 00000000000..de181264210 --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/data_test.go @@ -0,0 +1,51 @@ +// 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 datastorecluster + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +func TestEventMapping(t *testing.T) { + datastoreClusterTest := mo.StoragePod{ + Summary: &types.StoragePodSummary{ + Capacity: 100, + FreeSpace: 50, + }, + Folder: mo.Folder{ + ManagedEntity: mo.ManagedEntity{ + Name: "Folder1", + }, + }, + } + + event := (&DatastoreClusterMetricSet{}).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/datastorecluster/datastorecluster.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster.go new file mode 100644 index 00000000000..5d20217202a --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster.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 datastorecluster + +import ( + "context" + "fmt" + + "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 +// 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{"StoragePod"}, true) + if err != nil { + return fmt.Errorf("error in creating container view: %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"}, nil, &datastoreCluster) + if err != nil { + return fmt.Errorf("error in retrieve from vsphere: %w", err) + } + + for i := range datastoreCluster { + if ctx.Err() != nil { + return ctx.Err() + } + + reporter.Event(mb.Event{MetricSetFields: m.mapEvent(datastoreCluster[i])}) + } + + return nil +} diff --git a/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go new file mode 100644 index 00000000000..21648421291 --- /dev/null +++ b/metricbeat/module/vsphere/datastorecluster/datastorecluster_test.go @@ -0,0 +1,88 @@ +// 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 datastorecluster + +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() + model.Pod = 1 + err := model.Create() + require.NoError(t, err, "failed to create model") + t.Cleanup(model.Remove) + + ts := model.Service.NewServer() + t.Cleanup(ts.Close) + + f := mbtest.NewReportingMetricSetV2WithContext(t, getConfig(ts)) + events, errs := mbtest.ReportingFetchV2WithContext(f) + 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) + + 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") + + 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") + + 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) { + model := simulator.VPX() + model.Pod = 1 + err := model.Create() + require.NoError(t, err, "failed to create model") + t.Cleanup(model.Remove) + + ts := model.Service.NewServer() + t.Cleanup(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{} { + return map[string]interface{}{ + "module": "vsphere", + "metricsets": []string{"datastorecluster"}, + "hosts": []string{ts.URL.String()}, + "username": "user", + "password": "pass", + "insecure": true, + } +} diff --git a/metricbeat/module/vsphere/fields.go b/metricbeat/module/vsphere/fields.go index c662eb7e840..86bbe2a7704 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 "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" } diff --git a/metricbeat/modules.d/vsphere.yml.disabled b/metricbeat/modules.d/vsphere.yml.disabled index 87c916cc6e5..717ce1326d5 100644 --- a/metricbeat/modules.d/vsphere.yml.disabled +++ b/metricbeat/modules.d/vsphere.yml.disabled @@ -2,13 +2,14 @@ # Docs: https://www.elastic.co/guide/en/beats/metricbeat/main/metricbeat-module-vsphere.html - module: vsphere - #metricsets: + # metricsets: # - cluster # - datastore + # - datastorecluster # - host - # - virtualmachine # - 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/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 71541d491fd..738d7ef2830 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: ["cluster", "datastore", "host", "virtualmachine", "network", "resourcepool"] + metricsets: ["cluster", "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"]