From e3baf8ed16281b94e3d24c9ba93142375b5929c1 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Mon, 6 Nov 2023 15:04:22 +0100 Subject: [PATCH 01/22] flow: Add otelcol.receiver.vcenter component --- component/otelcol/config_scrape.go | 57 ++++++++ component/otelcol/receiver/vcenter/vcenter.go | 104 ++++++++++++++ .../otelcol/receiver/vcenter/vcenter_test.go | 82 +++++++++++ .../components/otelcol.receiver.vcenter.md | 129 ++++++++++++++++++ 4 files changed, 372 insertions(+) create mode 100644 component/otelcol/config_scrape.go create mode 100644 component/otelcol/receiver/vcenter/vcenter.go create mode 100644 component/otelcol/receiver/vcenter/vcenter_test.go create mode 100644 docs/sources/flow/reference/components/otelcol.receiver.vcenter.md diff --git a/component/otelcol/config_scrape.go b/component/otelcol/config_scrape.go new file mode 100644 index 000000000000..f96faed9f946 --- /dev/null +++ b/component/otelcol/config_scrape.go @@ -0,0 +1,57 @@ +package otelcol + +import ( + "errors" + "fmt" + "time" + + scraperhelper "go.opentelemetry.io/collector/receiver/scraperhelper" +) + +var ( + errNonPositiveInterval = errors.New("requires positive value") +) + +// ScraperControllerArguments defines common settings for a scraper controller +// configuration. +type ScraperControllerArguments struct { + CollectionInterval time.Duration `river:"collection_interval,attr,optional"` + InitialDelay time.Duration `river:"initial_delay,attr,optional"` + Timeout time.Duration `river:"timeout,attr,optional"` +} + +// DefaultScraperControllerArguments holds default settings for ScraperControllerArguments. +var DefaultScraperControllerArguments = ScraperControllerArguments{ + CollectionInterval: time.Minute, + InitialDelay: time.Second, + Timeout: 0 * time.Second, +} + +// SetToDefault implements river.Defaulter. +func (args *ScraperControllerArguments) SetToDefault() { + *args = DefaultScraperControllerArguments +} + +// Convert converts args into the upstream type. +func (args *ScraperControllerArguments) Convert() *scraperhelper.ScraperControllerSettings { + if args == nil { + return nil + } + + return &scraperhelper.ScraperControllerSettings{ + CollectionInterval: args.CollectionInterval, + InitialDelay: args.InitialDelay, + Timeout: args.Timeout, + } +} + +// Validate returns an error if args is invalid. +func (args *ScraperControllerArguments) Validate() error { + if args.CollectionInterval <= 0 { + return fmt.Errorf(`"collection_interval": %w`, errNonPositiveInterval) + } + if args.Timeout < 0 { + return fmt.Errorf(`"timeout": %w`, errNonPositiveInterval) + } + return nil +} diff --git a/component/otelcol/receiver/vcenter/vcenter.go b/component/otelcol/receiver/vcenter/vcenter.go new file mode 100644 index 000000000000..2187fac06a02 --- /dev/null +++ b/component/otelcol/receiver/vcenter/vcenter.go @@ -0,0 +1,104 @@ +// Package vcenter provides an otelcol.receiver.vcenter component. +package vcenter + +import ( + "fmt" + "net/url" + + "github.com/grafana/agent/component" + "github.com/grafana/agent/component/otelcol" + "github.com/grafana/agent/component/otelcol/receiver" + otel_service "github.com/grafana/agent/service/otel" + "github.com/grafana/river/rivertypes" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" + otelcomponent "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config/configopaque" + otelextension "go.opentelemetry.io/collector/extension" +) + +func init() { + component.Register(component.Registration{ + Name: "otelcol.receiver.vcenter", + Args: Arguments{}, + NeedsServices: []string{otel_service.ServiceName}, + + Build: func(opts component.Options, args component.Arguments) (component.Component, error) { + fact := vcenterreceiver.NewFactory() + return receiver.New(opts, fact, args.(Arguments)) + }, + }) +} + +// Arguments configures the otelcol.receiver.vcenter component. +type Arguments struct { + Endpoint string `river:"endpoint,attr"` + Username string `river:"username,attr"` + Password rivertypes.Secret `river:"password,attr"` + + ScraperControllerArguments otelcol.ScraperControllerArguments `river:",squash"` + TLS otelcol.TLSClientArguments `river:"tls,block,optional"` + + // DebugMetrics configures component internal metrics. Optional. + DebugMetrics otelcol.DebugMetricsArguments `river:"debug_metrics,block,optional"` + + // Output configures where to send received data. Required. + Output *otelcol.ConsumerArguments `river:"output,block"` +} + +var _ receiver.Arguments = Arguments{} + +var ( + // DefaultArguments holds default values for Arguments. + DefaultArguments = Arguments{ + ScraperControllerArguments: otelcol.DefaultScraperControllerArguments, + } +) + +// SetToDefault implements river.Defaulter. +func (args *Arguments) SetToDefault() { + *args = DefaultArguments +} + +// Convert implements receiver.Arguments. +func (args Arguments) Convert() (otelcomponent.Config, error) { + return &vcenterreceiver.Config{ + TLSClientSetting: *args.TLS.Convert(), + ScraperControllerSettings: *args.ScraperControllerArguments.Convert(), + Endpoint: args.Endpoint, + Username: args.Username, + Password: configopaque.String(args.Password), + }, nil +} + +// Validate checks to see if the supplied config will work for the receiver +func (args Arguments) Validate() error { + res, err := url.Parse(args.Endpoint) + if err != nil { + return fmt.Errorf("unable to parse url %s: %w", args.Endpoint, err) + } + + if res.Scheme != "http" && res.Scheme != "https" { + return fmt.Errorf("url scheme must be http or https") + } + return nil +} + +// Extensions implements receiver.Arguments. +func (args Arguments) Extensions() map[otelcomponent.ID]otelextension.Extension { + return nil +} + +// Exporters implements receiver.Arguments. +func (args Arguments) Exporters() map[otelcomponent.DataType]map[otelcomponent.ID]otelcomponent.Component { + return nil +} + +// NextConsumers implements receiver.Arguments. +func (args Arguments) NextConsumers() *otelcol.ConsumerArguments { + return args.Output +} + +// DebugMetricsConfig implements receiver.Arguments. +func (args Arguments) DebugMetricsConfig() otelcol.DebugMetricsArguments { + return args.DebugMetrics +} diff --git a/component/otelcol/receiver/vcenter/vcenter_test.go b/component/otelcol/receiver/vcenter/vcenter_test.go new file mode 100644 index 000000000000..a632c076e9bd --- /dev/null +++ b/component/otelcol/receiver/vcenter/vcenter_test.go @@ -0,0 +1,82 @@ +package vcenter + +import ( + "fmt" + "testing" + "time" + + "github.com/grafana/agent/pkg/flow/componenttest" + "github.com/grafana/agent/pkg/util" + "github.com/grafana/river" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" + "github.com/phayes/freeport" + "github.com/stretchr/testify/require" +) + +// Test ensures that otelcol.receiver.vcenter can start successfully. +func Test(t *testing.T) { + httpAddr := getFreeAddr(t) + + ctx := componenttest.TestContext(t) + l := util.TestLogger(t) + + ctrl, err := componenttest.NewControllerFromID(l, "otelcol.receiver.vcenter") + require.NoError(t, err) + + cfg := fmt.Sprintf(` + endpoint = "%s" + username = "user" + password = "pass" + + output { /* no-op */ } + `, httpAddr) + + var args Arguments + require.NoError(t, river.Unmarshal([]byte(cfg), &args)) + + go func() { + err := ctrl.Run(ctx, args) + require.NoError(t, err) + }() + + require.NoError(t, ctrl.WaitRunning(time.Second)) +} + +func TestArguments_UnmarshalRiver(t *testing.T) { + httpAddr := getFreeAddr(t) + in := fmt.Sprintf(` + endpoint = "%s" + username = "user" + password = "pass" + collection_interval = "2m" + + output { /* no-op */ } + `, httpAddr) + + var args Arguments + require.NoError(t, river.Unmarshal([]byte(in), &args)) + args.Convert() + ext, err := args.Convert() + require.NoError(t, err) + otelArgs, ok := (ext).(*vcenterreceiver.Config) + + require.True(t, ok) + + require.Equal(t, "user", otelArgs.Username) + require.Equal(t, "pass", string(otelArgs.Password)) + require.Equal(t, httpAddr, otelArgs.Endpoint) + + require.Equal(t, 2*time.Minute, otelArgs.ScraperControllerSettings.CollectionInterval) + require.Equal(t, time.Second, otelArgs.ScraperControllerSettings.InitialDelay) + require.Equal(t, 0*time.Second, otelArgs.ScraperControllerSettings.Timeout) + +} + +func getFreeAddr(t *testing.T) string { + t.Helper() + + portNumber, err := freeport.GetFreePort() + require.NoError(t, err) + + return fmt.Sprintf("http://localhost:%d", portNumber) +} diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md new file mode 100644 index 000000000000..3d59e0ee63a4 --- /dev/null +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -0,0 +1,129 @@ +--- +aliases: +- /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.vcenter/ +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.vcenter/ +- /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.vcenter/ +canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.vcenter/ +title: otelcol.receiver.vcenter +description: Learn about otelcol.receiver.vcenter +--- + +# otelcol.receiver.vcenter + +`otelcol.receiver.vcenter` accepts telemetry data from a +vCenter or ESXi host running VMware vSphere APIs and +forwards it to other `otelcol.*` components. + +> **NOTE**: `otelcol.receiver.vcenter` is a wrapper over the upstream +> OpenTelemetry Collector `vcenter` receiver from the `otelcol-contrib` +> distribution. Bug reports or feature requests will be redirected to the +> upstream repository, if necessary. + +Multiple `otelcol.receiver.vcenter` components can be specified by giving them +different labels. + +## Usage + +```river +otelcol.receiver.vcenter "LABEL" { + endpoint = "VCENTER_ENDPOINT" + username = "VCENTER_USERNAME" + password = "VCENTER_PASSWORD" + + output { + metrics = [...] + } +} +``` + +## Arguments + +`otelcol.receiver.vcenter` supports the following arguments: + + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`endpoint` | `string` | Endpoint to the vCenter Server or ESXi host that has the sdk path enabled. | | yes +`username` | `string` | Username to use for authentication. | | yes +`password` | `string` | Password to use for authentication. | | yes +`collection_interval` | `duration` | This receiver collects metrics on an interval. | `"1m"` | no +`initial_delay` | `duration` | Defines how long this receiver waits before starting.. | `"1s"` | no +`timeout` | `duration` | Defines the timeout for the underlying HTTP client. | `"0s"` | no + +`endpoint` has the following format: `://` (e.g. `https://vcsa.hostname.localnet`) + +## Blocks + +The following blocks are supported inside the definition of +`otelcol.receiver.vcenter`: + +Hierarchy | Block | Description | Required +--------- | ----- | ----------- | -------- +tls | [tls][] | Configures TLS for the server. | no +debug_metrics | [debug_metrics][] | Configures the metrics that this component generates to monitor its state. | no +output | [output][] | Configures where to send received telemetry data. | yes + +[tls]: #tls-block +[debug_metrics]: #debug_metrics-block +[output]: #output-block + +### tls block + +The `tls` block configures TLS settings used for a server. If the `tls` block +isn't provided, TLS won't be used for connections to the server. + +{{< docs/shared lookup="flow/reference/components/otelcol-tls-config-block.md" source="agent" version="" >}} + +### debug_metrics block + +{{< docs/shared lookup="flow/reference/components/otelcol-debug-metrics-block.md" source="agent" version="" >}} + +### output block + +{{< docs/shared lookup="flow/reference/components/output-block.md" source="agent" version="" >}} + +## Exported fields + +`otelcol.receiver.vcenter` does not export any fields. + +## Component health + +`otelcol.receiver.vcenter` is only reported as unhealthy if given an invalid +configuration. + +## Debug information + +`otelcol.receiver.vcenter` does not expose any component-specific debug +information. + +## Example + +This example forwards received telemetry data through a batch processor before +finally sending it to an OTLP-capable endpoint: + +```river +otelcol.receiver.vcenter "default" { + endpoint = "http://localhost:15672" + username = "otelu" + password = "password" + + output { + metrics = [otelcol.processor.batch.default.input] + logs = [otelcol.processor.batch.default.input] + traces = [otelcol.processor.batch.default.input] + } +} + +otelcol.processor.batch "default" { + output { + metrics = [otelcol.exporter.otlp.default.input] + logs = [otelcol.exporter.otlp.default.input] + traces = [otelcol.exporter.otlp.default.input] + } +} + +otelcol.exporter.otlp "default" { + client { + endpoint = env("OTLP_ENDPOINT") + } +} From 12d8ccf3ee3884b939be2d59bcdc2710b0cc4217 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Mon, 6 Nov 2023 15:07:10 +0100 Subject: [PATCH 02/22] flow: Add otelcol.receiver.vcenter component --- CHANGELOG.md | 1 + .../components/prometheus.exporter.vsphere.md | 10 +++++ go.mod | 3 +- go.sum | 37 +++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 536b89e10b6f..5ea0e346fe4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ Main (unreleased) - `otelcol.processor.filter` - filters OTLP telemetry data using OpenTelemetry Transformation Language (OTTL). (@hainenber) + - `otelcol.receiver.vcenter` - receives telemetry data from vCenter. (@marctc) ### Bugfixes diff --git a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md index 9939defbcd57..9158776c33bd 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md @@ -5,6 +5,8 @@ aliases: - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.vsphere/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.vsphere/ title: prometheus.exporter.vsphere +labels: + stage: beta description: Learn about prometheus.exporter.vsphere --- @@ -12,6 +14,14 @@ description: Learn about prometheus.exporter.vsphere The `prometheus.exporter.vsphere` component embeds [`vmware_exporter`](https://github.com/grafana/vmware_exporter) to collect vSphere metrics +> **BETA**: This is a [beta][] component. Beta components are subject to breaking +> changes, and may be replaced with equivalent functionality that cover the +> same use case. We recommend to use [otelcol.receiver.vcenter][] instead. + +[beta]: {{< relref "../../../stability.md#beta" >}} +[otelcol.receiver.vcenter]: {{< relref "./otelcol.receiver.vcenter.md" >}} + + ## Usage ```river diff --git a/go.mod b/go.mod index d62e88a06943..81a53be753ed 100644 --- a/go.mod +++ b/go.mod @@ -568,7 +568,7 @@ require ( github.com/vertica/vertica-sql-go v1.3.0 // indirect github.com/vishvananda/netlink v1.2.1-beta.2 // indirect github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f // indirect - github.com/vmware/govmomi v0.27.2 // indirect + github.com/vmware/govmomi v0.32.0 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/willf/bitset v1.1.11 // indirect github.com/willf/bloom v2.0.3+incompatible // indirect @@ -643,6 +643,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.87.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.87.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.87.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0 // indirect github.com/openshift/api v3.9.0+incompatible // indirect github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142 // indirect github.com/prometheus-community/prom-label-proxy v0.6.0 // indirect diff --git a/go.sum b/go.sum index 6097d5c430b3..8e2511e32e33 100644 --- a/go.sum +++ b/go.sum @@ -956,6 +956,7 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-jsonnet v0.18.0 h1:/6pTy6g+Jh1a1I2UMoAODkqELFiVIdOxbNwv0DDzoOg= @@ -1459,6 +1460,7 @@ github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= @@ -1763,6 +1765,7 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.87. github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.87.0/go.mod h1:3EFmVoLcdM8Adj75N8TGJ4txDB29oW1chTLCFiL/wxs= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.87.0 h1:ekT4/I9J484j4yR/0VHj5AGtgv8KmNd+e4oXxNJNR/o= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.87.0/go.mod h1:waI3VDdKYW7es1LmLY35SHJYNwUX+JJN719wXmP3WAc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.88.0/go.mod h1:JvXKcDtcOQRkz/Sw1m27K4QA3OwMbUvifoeEX2NQC6k= github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.87.0 h1:jtCKA0Mfc5RgZzPGuxXioW8oCSmJsayqXSCTlaA67xM= github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.87.0/go.mod h1:vt3N5XEF1QigYUz4NagTDL3/Gd8bivCLcYFoi91Luy8= github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.87.0 h1:+T/u+x1tO7FShn0DBLB9mqAE2MnXoAZ+u70q5wSbt9E= @@ -1781,6 +1784,7 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.87.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.87.0/go.mod h1:xvO0/6zTw6UBl7g4hZpvapfvANNSnj6sQcSnF6jqSSg= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.87.0 h1:zA50pvJziZjWQiN9MZIkT6Ii3hMSaCKa6jvs1vCYT5g= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.87.0/go.mod h1:IjdtiiTTNlAkspcNyAjHysWAZs5U48alWGUodTkkxhI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.88.0/go.mod h1:IJqzjDv6ZFeu7cYGCUzQ5/3CuTPVIo3UAGK3o2jK/Sw= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.87.0 h1:JFPnEdsGaGhay69k7QJJuT7gq3XQn8fzYL1gm4Oqpj0= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.87.0/go.mod h1:EWuhJl1M5r6lsFeQntHKxkjKzsmM2T4vLk8zWS5TL2A= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.87.0 h1:WRgrvgi/fHuOrqlXgILssE+Bujdd3rCoB3FWfd37g/s= @@ -1819,6 +1823,10 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusrec github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.87.0/go.mod h1:LIGa2oqb+geqkmWvteeDjzulK1PfDYCY8Jp6pI0ey2A= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.87.0 h1:fwmow4M0aJUsmY9DGUMe6yykd0TvgB6PpLS+Z590R5s= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.87.0/go.mod h1:ZLfpGguza42G+SwGEZ5/plr1wa3D7GA7I6KJyARgHPA= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0 h1:TI5m4trLA3cVMQSRyxU14MzCzHXDk56+sc+9TY01uw0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0/go.mod h1:IA/xIUE0Fl8lc7hkEOkVyYcTF7sE7AGawI9s8ipqRKc= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.88.0 h1:wBAJ2TbE1zmwiVUleqAEvl9ReAd+JiTOVFuneOhxLl0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.88.0/go.mod h1:XC4aRWORf3qoSZlQI6WQOwXnvzSH9YMF9aPdIholdTM= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.87.0 h1:0DeNqM3fhNYPsfmPbaZ1PyBJ2vtOSFpMGadRKvryXfs= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.87.0/go.mod h1:tSxkxxWCcGh/vh1mHflhQTlwulkwWM1yyEABa6DXSmY= github.com/openconfig/gnmi v0.0.0-20180912164834-33a1865c3029/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= @@ -2235,6 +2243,8 @@ github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59b github.com/vmware/govmomi v0.19.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/vmware/govmomi v0.27.2 h1:Ecooqg069gUbl5EuWYwcrvzRqMkah9J8BXaf9HCEGVM= github.com/vmware/govmomi v0.27.2/go.mod h1:daTuJEcQosNMXYJOeku0qdBJP9SOLLWB3Mqz8THtv6o= +github.com/vmware/govmomi v0.32.0 h1:Rsdi/HAX5Ebf9Byp/FvBir4sfM7yP5DBUeRlbC6vLBo= +github.com/vmware/govmomi v0.32.0/go.mod h1:JA63Pg0SgQcSjk+LuPzjh3rJdcWBo/ZNCIwbb1qf2/0= github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs= github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= @@ -2333,8 +2343,12 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/collector v0.87.0 h1:160HewHp+/wzr62BzWjQgIvdTtzpaYTlCnGVb8DYnM0= go.opentelemetry.io/collector v0.87.0/go.mod h1:VsAXXIK0D1na+Ysoy1/GIx0GgkH8vQqA6zwosddFz7A= +go.opentelemetry.io/collector v0.88.0 h1:I0lerJK1h88vk7enriSgLV+h7dM099G9FgwkfmIZaf0= +go.opentelemetry.io/collector v0.88.0/go.mod h1:we0quZ+4txHS3Sfb0VdjFv95KYLGmto4ZAThCHiYgGA= go.opentelemetry.io/collector/component v0.87.0 h1:Q+lwM5WAa2x4a5lgyaF6SjFBpIij5gyjsoiv9KFG36A= go.opentelemetry.io/collector/component v0.87.0/go.mod h1:LsfDQRkwJRHOSHNnM1/pdi/6EQNj41WpIxpZRqSdI0E= +go.opentelemetry.io/collector/component v0.88.0 h1:LU/1ov5D/O/gv9D2Uv88EjNKHn7DHcUCZn1qQsb/zgw= +go.opentelemetry.io/collector/component v0.88.0/go.mod h1:4utKxz4Lilym3SPxNXJHosdaTjT1aQxI+TCmnJO54pU= go.opentelemetry.io/collector/config/configauth v0.87.0 h1:FufZLHvJ+VcAM2xi404TpuYnpO1Rmeq7XtHleQLavrs= go.opentelemetry.io/collector/config/configauth v0.87.0/go.mod h1:xT8mIo1b57j0znSOssEFaJtE3rGw/kTZZucP5lEw6OU= go.opentelemetry.io/collector/config/configcompression v0.87.0 h1:hWRT47RJbjbowDGQMXQO/dt/pzyYjMcf+rroW8b8fws= @@ -2347,20 +2361,32 @@ go.opentelemetry.io/collector/config/confignet v0.87.0 h1:ULV44732QN0wTCtSIdYG04 go.opentelemetry.io/collector/config/confignet v0.87.0/go.mod h1:cpO8JYWGONaViOygKVw+Hd2UoBcn2cUiyi0WWeFTwJY= go.opentelemetry.io/collector/config/configopaque v0.87.0 h1:+qqJG1oEzX4+/YNbgeaXW9YM0BPWSj5XCi5y2zZLhDY= go.opentelemetry.io/collector/config/configopaque v0.87.0/go.mod h1:TPCHaU+QXiEV+JXbgyr6mSErTI9chwQyasDVMdJr3eY= +go.opentelemetry.io/collector/config/configopaque v0.88.0 h1:4Q4UnPdAQzGqPsR7mTegJ47eT/2IvCosEnJstl9re6A= +go.opentelemetry.io/collector/config/configopaque v0.88.0/go.mod h1:TPCHaU+QXiEV+JXbgyr6mSErTI9chwQyasDVMdJr3eY= go.opentelemetry.io/collector/config/configtelemetry v0.87.0 h1:xUqayM9b41OvXkjU3p8RkUr8hUrCjfDUmO+oKhRNSwc= go.opentelemetry.io/collector/config/configtelemetry v0.87.0/go.mod h1:+LAXM5WFMW/UbTlAuSs6L/W72WC+q8TBJt/6z39FPOU= +go.opentelemetry.io/collector/config/configtelemetry v0.88.0 h1:54Z9uoSTpbkq3esDwHvJMChoUH8p/nfesG2xJTOXayY= +go.opentelemetry.io/collector/config/configtelemetry v0.88.0/go.mod h1:+LAXM5WFMW/UbTlAuSs6L/W72WC+q8TBJt/6z39FPOU= go.opentelemetry.io/collector/config/configtls v0.87.0 h1:EXa9Plr74+r9t2/59dTyjR3y53zqwigHN0dQsI8VGiQ= go.opentelemetry.io/collector/config/configtls v0.87.0/go.mod h1:3UoeynehS/NNhg1Qbt3xQdgPyrkWnjBRLUG2Gw7BFFc= +go.opentelemetry.io/collector/config/configtls v0.88.0 h1:XL2jAiee2hai/DXmEqAwg1rWojSX5ltkkj8tIU43SVo= +go.opentelemetry.io/collector/config/configtls v0.88.0/go.mod h1:kh0EjprdBzrE1Zpp6V0pdSVXHlU7dkBTQfIKAQiKFKQ= go.opentelemetry.io/collector/config/internal v0.87.0 h1:wffyWbpanr2HFQaPPp5bG62KqJYlw5EdPxwR0iG+Lbo= go.opentelemetry.io/collector/config/internal v0.87.0/go.mod h1:42VsQ/1kP2qnvzjNi+dfNP+KyCFRADejyrJ8m2GVL3M= go.opentelemetry.io/collector/confmap v0.87.0 h1:LFnyDKIOMtlJm5EsdcFN2t0rcU/QLbS9QEs/awM2HOA= go.opentelemetry.io/collector/confmap v0.87.0/go.mod h1:inqYRP70+bMrUwGGnuhcWyyufxyU3VQT6rl3/EX0f+g= +go.opentelemetry.io/collector/confmap v0.88.0 h1:tOgY6NXMXAL2hz2+zVDQ0jvBlCUHprSf90bw5ktbdaI= +go.opentelemetry.io/collector/confmap v0.88.0/go.mod h1:CSJlMk1KRZloXAygpiPeCLpuQiLVDEZYbGsGHIKHeUg= go.opentelemetry.io/collector/connector v0.87.0 h1:Y00shHpxBSxliE/liJex2JMdYpJxbakfCUbaXe9eVMU= go.opentelemetry.io/collector/connector v0.87.0/go.mod h1:qk+c3IeAdRkpUjXLh3PqAnC8BkKuMF7EhA5GpGNu7AI= +go.opentelemetry.io/collector/connector v0.88.0/go.mod h1:vkOHpyWNlHQVFHKUB4Dp1yYCIpAFnouZ2REupkzL/PU= go.opentelemetry.io/collector/consumer v0.87.0 h1:oR5XKZoVF/hwz0FnrYPaHcbbQazHifMsxpENMR7ivvo= go.opentelemetry.io/collector/consumer v0.87.0/go.mod h1:lui5rg1byAT7QPbCY733StCDc/TPxS3hVNXKoVQ3LsI= +go.opentelemetry.io/collector/consumer v0.88.0 h1:l8Ty5UHhZ2U6WCp4yHt97uW6vN1vMP0JbFeQEaVnEgY= +go.opentelemetry.io/collector/consumer v0.88.0/go.mod h1:VVoafgyhjpO6fuJu12GqspmuLrn91JCOou0sOtb9GOg= go.opentelemetry.io/collector/exporter v0.87.0 h1:DZ0QT2yp1qACmHMxs6W2ho5RPqdevCx9R/LFCxnxi9w= go.opentelemetry.io/collector/exporter v0.87.0/go.mod h1:SGobdCR0xwQElJT2Sbofo7BprMlV8XeXdsNP9fsNaKY= +go.opentelemetry.io/collector/exporter v0.88.0/go.mod h1:0KQKlbUlYBwNJ9Dfapn6mRLhdhtM3tUlDGgN88oDVug= go.opentelemetry.io/collector/exporter/loggingexporter v0.87.0 h1:F/WkglGgCSHOFYjafYEAwD/qGpZ5HpawLMWu/Jcf0SE= go.opentelemetry.io/collector/exporter/loggingexporter v0.87.0/go.mod h1:rYi0mKzgRH6xwsrYN9gb+WBccfoP1SpJ9U0xklrhV7g= go.opentelemetry.io/collector/exporter/otlpexporter v0.87.0 h1:1seSC+OX1QnbpED0Kuo1DbWQSER+vy88yp4zxBubY4A= @@ -2369,26 +2395,35 @@ go.opentelemetry.io/collector/exporter/otlphttpexporter v0.87.0 h1:EqexJl7mzozDw go.opentelemetry.io/collector/exporter/otlphttpexporter v0.87.0/go.mod h1:uwNO6qMa82a0EeokQx3YEiMl+R8HJulaDpUSS6T3pkg= go.opentelemetry.io/collector/extension v0.87.0 h1:EMIaEequ5rjWzoid6vNImjQGVMfzbME+8JSa5XACYKs= go.opentelemetry.io/collector/extension v0.87.0/go.mod h1:D3srNZC99QVTAdLNUVuqfmmgJge4sQHDrnt5XWscvxI= +go.opentelemetry.io/collector/extension v0.88.0/go.mod h1:5wPlOyWtVJcZS9CMhFUnuRvNQ0XIoV/iUSaZWtCjoHA= go.opentelemetry.io/collector/extension/auth v0.87.0 h1:na1OumQSd5l+JvUiMr3oaiW6fuiDr7mEnydwQwmE+nk= go.opentelemetry.io/collector/extension/auth v0.87.0/go.mod h1:b7T9VefuK1GzSp5z1yjbkAvTxpWvflUmYoawTcGGuOs= go.opentelemetry.io/collector/extension/zpagesextension v0.87.0 h1:vSaCojdWMq34LDw2qR6To0PkSe4p+1BtP2Xr37PHH7w= go.opentelemetry.io/collector/extension/zpagesextension v0.87.0/go.mod h1:aXIFi7aIGD2uQCJPCF8uRSPJEK0+jjiZfvOehNGA1ZU= go.opentelemetry.io/collector/featuregate v1.0.0-rcv0016 h1:/6N9990tbjotvXgrXpV5AbaFiyxTdFEXDypGBHVDSQM= go.opentelemetry.io/collector/featuregate v1.0.0-rcv0016/go.mod h1:fLmJMf1AoHttkF8p5oJAc4o5ZpHu8yO5XYJ7gbLCLzo= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0017 h1:DtJQalPXMWQqT6jd2LZ1oKrOfLJJRCi+rh2LKnkj4Zo= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0017/go.mod h1:fLmJMf1AoHttkF8p5oJAc4o5ZpHu8yO5XYJ7gbLCLzo= go.opentelemetry.io/collector/pdata v1.0.0-rcv0016 h1:qCPXSQCoD3qeWFb1RuIks8fw9Atxpk78bmtVdi15KhE= go.opentelemetry.io/collector/pdata v1.0.0-rcv0016/go.mod h1:OdN0alYOlYhHXu6BDlGehrZWgtBuiDsz/rlNeJeXiNg= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0017 h1:AgALhc2VenoA5l1DvTdg7mkzaBGqoTSuMkAtjsttBFo= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0017/go.mod h1:Rv9fOclA5AtM/JGm0d4jBOIAo1+jBA13UT5Bx0ovXi4= go.opentelemetry.io/collector/processor v0.87.0 h1:aUGtRyeQk0WgQwp2rZBvJ1j+6+WJO8XMb1kjtanIWo8= go.opentelemetry.io/collector/processor v0.87.0/go.mod h1:FHqpqdm/uyjjhNQxXJBhvQDIwjnP01EW9M6t0xVaRR4= +go.opentelemetry.io/collector/processor v0.88.0/go.mod h1:2T5KxgBQxXuuyMu9dh+PIBxQ/geCFYcdnjmlWZx8o3E= go.opentelemetry.io/collector/processor/batchprocessor v0.87.0 h1:/a2yjC8XMg1j/9hnpDbxTKbG/AyWac2xsQSx0PmFz1M= go.opentelemetry.io/collector/processor/batchprocessor v0.87.0/go.mod h1:uY8Lu7zFtNZC39ylu8bphgqO0c3VIqVdegKxXlHo9Po= go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.87.0 h1:pWR4fPyKOBo0YWi745pai6ae7jFdlRvRiEg7VmtpGNw= go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.87.0/go.mod h1:Id8f4KVl5p5Uzn7RlfFwufdaiINQTKILcTCLQFsSH6c= go.opentelemetry.io/collector/receiver v0.87.0 h1:4HpA5Rxb1jcMywCB8y5aNTXiqSt3n7oaFLfQbAkSaWM= go.opentelemetry.io/collector/receiver v0.87.0/go.mod h1:uApnlS81KGGfQJrzbCdBZWsB5DQJgcPTsYlb9CFdE3s= +go.opentelemetry.io/collector/receiver v0.88.0 h1:MPvVAFOfjl0+Ylka7so8QoK8T2Za2471rv5t3sqbbSY= +go.opentelemetry.io/collector/receiver v0.88.0/go.mod h1:MIZ6jPPZ+I8XibZm6I3RAn9h7Wcy2ZJsPmtXd2BLr60= go.opentelemetry.io/collector/receiver/otlpreceiver v0.87.0 h1:iXO30EKZwEP1TEuLlQjxVaeVeffDkdJqz9DuqjzME9c= go.opentelemetry.io/collector/receiver/otlpreceiver v0.87.0/go.mod h1:1IE82wJuyGW0z0BeJ3A0SoPxsPlqf9aefCycbtuxUO0= go.opentelemetry.io/collector/semconv v0.87.0 h1:BsG1jdLLRCBRlvUujk4QA86af7r/ZXnizczQpEs/gg8= go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= +go.opentelemetry.io/collector/semconv v0.88.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0 h1:CaagQrotQLgtDlHU6u9pE/Mf4mAwiLD8wrReIVt06lY= go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0/go.mod h1:LOjFy00/ZMyMYfKFPta6kZe2cDUc1sNo/qtv1pSORWA= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 h1:RsQi0qJ2imFfCvZabqzM9cNXBG8k6gXMv1A0cXRmH6A= @@ -3079,6 +3114,8 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From d9fe9f9e8b186727c763693f88887ea081614fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:15:38 +0100 Subject: [PATCH 03/22] Update docs/sources/flow/reference/components/otelcol.receiver.vcenter.md Co-authored-by: Paulin Todev --- .../flow/reference/components/otelcol.receiver.vcenter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 3d59e0ee63a4..42287ff07980 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -43,7 +43,7 @@ otelcol.receiver.vcenter "LABEL" { Name | Type | Description | Default | Required ---- | ---- | ----------- | ------- | -------- -`endpoint` | `string` | Endpoint to the vCenter Server or ESXi host that has the sdk path enabled. | | yes +`endpoint` | `string` | Endpoint to a vCenter Server or ESXi host which has the SDK path enabled. | | yes `username` | `string` | Username to use for authentication. | | yes `password` | `string` | Password to use for authentication. | | yes `collection_interval` | `duration` | This receiver collects metrics on an interval. | `"1m"` | no From abfb48a0263e5eb5f613f616de303e34624b7228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:15:46 +0100 Subject: [PATCH 04/22] Update docs/sources/flow/reference/components/otelcol.receiver.vcenter.md Co-authored-by: Paulin Todev --- .../flow/reference/components/otelcol.receiver.vcenter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 42287ff07980..1e48cce2c405 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -47,7 +47,7 @@ Name | Type | Description | Default | Required `username` | `string` | Username to use for authentication. | | yes `password` | `string` | Password to use for authentication. | | yes `collection_interval` | `duration` | This receiver collects metrics on an interval. | `"1m"` | no -`initial_delay` | `duration` | Defines how long this receiver waits before starting.. | `"1s"` | no +`initial_delay` | `duration` | Defines how long this receiver waits before starting. | `"1s"` | no `timeout` | `duration` | Defines the timeout for the underlying HTTP client. | `"0s"` | no `endpoint` has the following format: `://` (e.g. `https://vcsa.hostname.localnet`) From 93fa7c258c4e2bce77a90d1e0020c0219edd867f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:15:52 +0100 Subject: [PATCH 05/22] Update docs/sources/flow/reference/components/otelcol.receiver.vcenter.md Co-authored-by: Paulin Todev --- .../flow/reference/components/otelcol.receiver.vcenter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 1e48cce2c405..9998bffc75d0 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -46,7 +46,7 @@ Name | Type | Description | Default | Required `endpoint` | `string` | Endpoint to a vCenter Server or ESXi host which has the SDK path enabled. | | yes `username` | `string` | Username to use for authentication. | | yes `password` | `string` | Password to use for authentication. | | yes -`collection_interval` | `duration` | This receiver collects metrics on an interval. | `"1m"` | no +`collection_interval` | `duration` | Defines how often to collect metrics. | `"1m"` | no `initial_delay` | `duration` | Defines how long this receiver waits before starting. | `"1s"` | no `timeout` | `duration` | Defines the timeout for the underlying HTTP client. | `"0s"` | no From 5f2cf69e0a0634105bfce7b8f28c71b520bffa13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:15:58 +0100 Subject: [PATCH 06/22] Update docs/sources/flow/reference/components/otelcol.receiver.vcenter.md Co-authored-by: Paulin Todev --- .../flow/reference/components/otelcol.receiver.vcenter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 9998bffc75d0..89c793cd1cd2 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -50,7 +50,7 @@ Name | Type | Description | Default | Required `initial_delay` | `duration` | Defines how long this receiver waits before starting. | `"1s"` | no `timeout` | `duration` | Defines the timeout for the underlying HTTP client. | `"0s"` | no -`endpoint` has the following format: `://` (e.g. `https://vcsa.hostname.localnet`) +`endpoint` has the format `://`. For example, `https://vcsa.hostname.localnet`. ## Blocks From c70842508b25f7d87239da81534a192e498481c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:16:12 +0100 Subject: [PATCH 07/22] Update CHANGELOG.md Co-authored-by: Paulin Todev --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 305b7f26f164..dd1489e95cf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,7 +62,7 @@ Main (unreleased) - `otelcol.processor.filter` - filters OTLP telemetry data using OpenTelemetry Transformation Language (OTTL). (@hainenber) - - `otelcol.receiver.vcenter` - receives telemetry data from vCenter. (@marctc) + - `otelcol.receiver.vcenter` - receives metrics telemetry data from vCenter. (@marctc) ### Enhancements From a3468276f4c87c3ea8ddf09610b57659ffce802d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:16:19 +0100 Subject: [PATCH 08/22] Update docs/sources/flow/reference/components/otelcol.receiver.vcenter.md Co-authored-by: Paulin Todev --- .../flow/reference/components/otelcol.receiver.vcenter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 89c793cd1cd2..b30b7e144da3 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -59,7 +59,7 @@ The following blocks are supported inside the definition of Hierarchy | Block | Description | Required --------- | ----- | ----------- | -------- -tls | [tls][] | Configures TLS for the server. | no +tls | [tls][] | Configures TLS for the HTTP client. | no debug_metrics | [debug_metrics][] | Configures the metrics that this component generates to monitor its state. | no output | [output][] | Configures where to send received telemetry data. | yes From 5cfef4c2be9cd8360455a0750cc63c5797f9057a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Mon, 13 Nov 2023 11:17:07 +0100 Subject: [PATCH 09/22] Update docs/sources/flow/reference/components/otelcol.receiver.vcenter.md Co-authored-by: Paulin Todev --- .../flow/reference/components/otelcol.receiver.vcenter.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index b30b7e144da3..1e3b77d57521 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -103,9 +103,9 @@ finally sending it to an OTLP-capable endpoint: ```river otelcol.receiver.vcenter "default" { - endpoint = "http://localhost:15672" - username = "otelu" - password = "password" + endpoint = "http://localhost:15672" + username = "otelu" + password = "password" output { metrics = [otelcol.processor.batch.default.input] From 84b75ee9d55763931302409a93fac4184d0b6389 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Mon, 13 Nov 2023 11:26:34 +0100 Subject: [PATCH 10/22] Address test feedback --- .../otelcol/receiver/vcenter/vcenter_test.go | 51 ++----------------- 1 file changed, 4 insertions(+), 47 deletions(-) diff --git a/component/otelcol/receiver/vcenter/vcenter_test.go b/component/otelcol/receiver/vcenter/vcenter_test.go index a632c076e9bd..ef082c1eaedd 100644 --- a/component/otelcol/receiver/vcenter/vcenter_test.go +++ b/component/otelcol/receiver/vcenter/vcenter_test.go @@ -1,57 +1,23 @@ package vcenter import ( - "fmt" "testing" "time" - "github.com/grafana/agent/pkg/flow/componenttest" - "github.com/grafana/agent/pkg/util" "github.com/grafana/river" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" - "github.com/phayes/freeport" "github.com/stretchr/testify/require" ) -// Test ensures that otelcol.receiver.vcenter can start successfully. -func Test(t *testing.T) { - httpAddr := getFreeAddr(t) - - ctx := componenttest.TestContext(t) - l := util.TestLogger(t) - - ctrl, err := componenttest.NewControllerFromID(l, "otelcol.receiver.vcenter") - require.NoError(t, err) - - cfg := fmt.Sprintf(` - endpoint = "%s" - username = "user" - password = "pass" - - output { /* no-op */ } - `, httpAddr) - - var args Arguments - require.NoError(t, river.Unmarshal([]byte(cfg), &args)) - - go func() { - err := ctrl.Run(ctx, args) - require.NoError(t, err) - }() - - require.NoError(t, ctrl.WaitRunning(time.Second)) -} - func TestArguments_UnmarshalRiver(t *testing.T) { - httpAddr := getFreeAddr(t) - in := fmt.Sprintf(` - endpoint = "%s" + in := ` + endpoint = "http://localhost:1234" username = "user" password = "pass" collection_interval = "2m" output { /* no-op */ } - `, httpAddr) + ` var args Arguments require.NoError(t, river.Unmarshal([]byte(in), &args)) @@ -64,19 +30,10 @@ func TestArguments_UnmarshalRiver(t *testing.T) { require.Equal(t, "user", otelArgs.Username) require.Equal(t, "pass", string(otelArgs.Password)) - require.Equal(t, httpAddr, otelArgs.Endpoint) + require.Equal(t, "http://localhost:1234", otelArgs.Endpoint) require.Equal(t, 2*time.Minute, otelArgs.ScraperControllerSettings.CollectionInterval) require.Equal(t, time.Second, otelArgs.ScraperControllerSettings.InitialDelay) require.Equal(t, 0*time.Second, otelArgs.ScraperControllerSettings.Timeout) } - -func getFreeAddr(t *testing.T) string { - t.Helper() - - portNumber, err := freeport.GetFreePort() - require.NoError(t, err) - - return fmt.Sprintf("http://localhost:%d", portNumber) -} From 6465d15c6382db9a100f3d78400b6d18a54328bc Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Mon, 13 Nov 2023 15:54:00 +0100 Subject: [PATCH 11/22] clarify docs --- .../flow/reference/components/otelcol.receiver.vcenter.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 1e3b77d57521..8cc8ea6b6901 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -10,7 +10,7 @@ description: Learn about otelcol.receiver.vcenter # otelcol.receiver.vcenter -`otelcol.receiver.vcenter` accepts telemetry data from a +`otelcol.receiver.vcenter` accepts metrics from a vCenter or ESXi host running VMware vSphere APIs and forwards it to other `otelcol.*` components. @@ -22,6 +22,10 @@ forwards it to other `otelcol.*` components. Multiple `otelcol.receiver.vcenter` components can be specified by giving them different labels. +Make sure that you fulfill the [prerequisites](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/vcenterreceiver/README.md#prerequisites) before using this component. + +The full list of metrics that can be collected can be found [here](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/vcenterreceiver/documentation.md) + ## Usage ```river From 1de14067f2a029621842c4afb7dd9c5e6e099041 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Wed, 15 Nov 2023 15:43:48 +0100 Subject: [PATCH 12/22] fix error message --- component/otelcol/config_scrape.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/component/otelcol/config_scrape.go b/component/otelcol/config_scrape.go index f96faed9f946..60f30ae946ac 100644 --- a/component/otelcol/config_scrape.go +++ b/component/otelcol/config_scrape.go @@ -10,6 +10,7 @@ import ( var ( errNonPositiveInterval = errors.New("requires positive value") + errGreaterThanZero = errors.New("requires a value greater than zero") ) // ScraperControllerArguments defines common settings for a scraper controller @@ -51,7 +52,7 @@ func (args *ScraperControllerArguments) Validate() error { return fmt.Errorf(`"collection_interval": %w`, errNonPositiveInterval) } if args.Timeout < 0 { - return fmt.Errorf(`"timeout": %w`, errNonPositiveInterval) + return fmt.Errorf(`"timeout": %w`, errGreaterThanZero) } return nil } From a8aceca67d615f0bc733217f91e98e50ccbe68c9 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 11:50:43 +0100 Subject: [PATCH 13/22] Add component to all.go --- component/all/all.go | 1 + 1 file changed, 1 insertion(+) diff --git a/component/all/all.go b/component/all/all.go index 79da39323077..3822deee7c9c 100644 --- a/component/all/all.go +++ b/component/all/all.go @@ -89,6 +89,7 @@ import ( _ "github.com/grafana/agent/component/otelcol/receiver/opencensus" // Import otelcol.receiver.opencensus _ "github.com/grafana/agent/component/otelcol/receiver/otlp" // Import otelcol.receiver.otlp _ "github.com/grafana/agent/component/otelcol/receiver/prometheus" // Import otelcol.receiver.prometheus + _ "github.com/grafana/agent/component/otelcol/receiver/vcenter" // Import otelcol.receiver.vcenter _ "github.com/grafana/agent/component/otelcol/receiver/zipkin" // Import otelcol.receiver.zipkin _ "github.com/grafana/agent/component/prometheus/exporter/agent" // Import prometheus.exporter.agent _ "github.com/grafana/agent/component/prometheus/exporter/apache" // Import prometheus.exporter.apache From a7478857dda50874a7ad5a104652e0da54bc8938 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 11:50:56 +0100 Subject: [PATCH 14/22] Change vsphere exporter docs --- .../reference/components/prometheus.exporter.vsphere.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md index 9e4ec54902c7..f9231788ef8e 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md @@ -6,8 +6,6 @@ aliases: - /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.vsphere/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.vsphere/ title: prometheus.exporter.vsphere -labels: - stage: beta description: Learn about prometheus.exporter.vsphere --- @@ -15,11 +13,8 @@ description: Learn about prometheus.exporter.vsphere The `prometheus.exporter.vsphere` component embeds [`vmware_exporter`](https://github.com/grafana/vmware_exporter) to collect vSphere metrics -> **BETA**: This is a [beta][] component. Beta components are subject to breaking -> changes, and may be replaced with equivalent functionality that cover the -> same use case. We recommend to use [otelcol.receiver.vcenter][] instead. +> **NOTE**: We recommend to use [otelcol.receiver.vcenter][] instead. -[beta]: {{< relref "../../../stability.md#beta" >}} [otelcol.receiver.vcenter]: {{< relref "./otelcol.receiver.vcenter.md" >}} From 63385eaf8d0eaa9a730a9465b7430371956d8cbb Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 11:57:17 +0100 Subject: [PATCH 15/22] update docs --- .../components/otelcol.receiver.vcenter.md | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index 8cc8ea6b6901..b41a4916ab79 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -22,9 +22,22 @@ forwards it to other `otelcol.*` components. Multiple `otelcol.receiver.vcenter` components can be specified by giving them different labels. -Make sure that you fulfill the [prerequisites](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/vcenterreceiver/README.md#prerequisites) before using this component. +The full list of metrics that can be collected can be found [vcenter metrics][] -The full list of metrics that can be collected can be found [here](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/vcenterreceiver/documentation.md) +[vcenter metrics]: https://github.com/open-telemetry/opentelemetry-collector/blob/{{< param "OTEL_VERSION" >}}/receiver/vcenterreceiver/documentation.md + + +## Prerequisites + +This receiver has been built to support ESXi and vCenter versions: + +- 7.5 +- 7.0 +- 6.7 + +A “Read Only” user assigned to a vSphere with permissions to the vCenter server, cluster and all subsequent resources being monitored must be specified in order for the receiver to retrieve information about them. + +## Configuration ## Usage @@ -113,16 +126,12 @@ otelcol.receiver.vcenter "default" { output { metrics = [otelcol.processor.batch.default.input] - logs = [otelcol.processor.batch.default.input] - traces = [otelcol.processor.batch.default.input] } } otelcol.processor.batch "default" { output { metrics = [otelcol.exporter.otlp.default.input] - logs = [otelcol.exporter.otlp.default.input] - traces = [otelcol.exporter.otlp.default.input] } } From 80876f9e92e236f61e602e4a300386d09a9f2bcf Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 11:58:28 +0100 Subject: [PATCH 16/22] update docs --- .../flow/reference/components/otelcol.receiver.vcenter.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index b41a4916ab79..dbaceae50823 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -22,7 +22,7 @@ forwards it to other `otelcol.*` components. Multiple `otelcol.receiver.vcenter` components can be specified by giving them different labels. -The full list of metrics that can be collected can be found [vcenter metrics][] +The full list of metrics that can be collected can be found [here][vcenter metrics] [vcenter metrics]: https://github.com/open-telemetry/opentelemetry-collector/blob/{{< param "OTEL_VERSION" >}}/receiver/vcenterreceiver/documentation.md @@ -37,8 +37,6 @@ This receiver has been built to support ESXi and vCenter versions: A “Read Only” user assigned to a vSphere with permissions to the vCenter server, cluster and all subsequent resources being monitored must be specified in order for the receiver to retrieve information about them. -## Configuration - ## Usage ```river From 33a62aa1812dfaef8f70c41dd1f55f889c879474 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 11:59:09 +0100 Subject: [PATCH 17/22] update docs --- .../flow/reference/components/otelcol.receiver.vcenter.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index dbaceae50823..b3bd5b11ad7b 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -22,11 +22,10 @@ forwards it to other `otelcol.*` components. Multiple `otelcol.receiver.vcenter` components can be specified by giving them different labels. -The full list of metrics that can be collected can be found [here][vcenter metrics] +The full list of metrics that can be collected can be found [here][vcenter metrics]. [vcenter metrics]: https://github.com/open-telemetry/opentelemetry-collector/blob/{{< param "OTEL_VERSION" >}}/receiver/vcenterreceiver/documentation.md - ## Prerequisites This receiver has been built to support ESXi and vCenter versions: From cf803c96cb128e1c13133462578115039c859a7d Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Thu, 16 Nov 2023 15:00:51 +0000 Subject: [PATCH 18/22] Metrics and attributes disabled by default --- component/otelcol/receiver/vcenter/vcenter.go | 189 +++++++++++++++++- 1 file changed, 182 insertions(+), 7 deletions(-) diff --git a/component/otelcol/receiver/vcenter/vcenter.go b/component/otelcol/receiver/vcenter/vcenter.go index 2187fac06a02..ac9d3bd28d47 100644 --- a/component/otelcol/receiver/vcenter/vcenter.go +++ b/component/otelcol/receiver/vcenter/vcenter.go @@ -10,6 +10,7 @@ import ( "github.com/grafana/agent/component/otelcol/receiver" otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" + "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" otelcomponent "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configopaque" @@ -29,12 +30,177 @@ func init() { }) } +type MetricConfig struct { + Enabled bool `river:"enabled,attr"` +} + +func (r *MetricConfig) Convert() map[string]interface{} { + if r == nil { + return nil + } + + return map[string]interface{}{ + "enabled": r.Enabled, + } +} + +type MetricsConfig struct { + VcenterClusterCPUEffective *MetricConfig `river:"vcenter.cluster.cpu.effective,block,optional"` + VcenterClusterCPULimit *MetricConfig `river:"vcenter.cluster.cpu.limit,block,optional"` + VcenterClusterHostCount *MetricConfig `river:"vcenter.cluster.host.count,block,optional"` + VcenterClusterMemoryEffective *MetricConfig `river:"vcenter.cluster.memory.effective,block,optional"` + VcenterClusterMemoryLimit *MetricConfig `river:"vcenter.cluster.memory.limit,block,optional"` + VcenterClusterMemoryUsed *MetricConfig `river:"vcenter.cluster.memory.used,block,optional"` + VcenterClusterVMCount *MetricConfig `river:"vcenter.cluster.vm.count,block,optional"` + VcenterDatastoreDiskUsage *MetricConfig `river:"vcenter.datastore.disk.usage,block,optional"` + VcenterDatastoreDiskUtilization *MetricConfig `river:"vcenter.datastore.disk.utilization,block,optional"` + VcenterHostCPUUsage *MetricConfig `river:"vcenter.host.cpu.usage,block,optional"` + VcenterHostCPUUtilization *MetricConfig `river:"vcenter.host.cpu.utilization,block,optional"` + VcenterHostDiskLatencyAvg *MetricConfig `river:"vcenter.host.disk.latency.avg,block,optional"` + VcenterHostDiskLatencyMax *MetricConfig `river:"vcenter.host.disk.latency.max,block,optional"` + VcenterHostDiskThroughput *MetricConfig `river:"vcenter.host.disk.throughput,block,optional"` + VcenterHostMemoryUsage *MetricConfig `river:"vcenter.host.memory.usage,block,optional"` + VcenterHostMemoryUtilization *MetricConfig `river:"vcenter.host.memory.utilization,block,optional"` + VcenterHostNetworkPacketCount *MetricConfig `river:"vcenter.host.network.packet.count,block,optional"` + VcenterHostNetworkPacketErrors *MetricConfig `river:"vcenter.host.network.packet.errors,block,optional"` + VcenterHostNetworkThroughput *MetricConfig `river:"vcenter.host.network.throughput,block,optional"` + VcenterHostNetworkUsage *MetricConfig `river:"vcenter.host.network.usage,block,optional"` + VcenterResourcePoolCPUShares *MetricConfig `river:"vcenter.resource_pool.cpu.shares,block,optional"` + VcenterResourcePoolCPUUsage *MetricConfig `river:"vcenter.resource_pool.cpu.usage,block,optional"` + VcenterResourcePoolMemoryShares *MetricConfig `river:"vcenter.resource_pool.memory.shares,block,optional"` + VcenterResourcePoolMemoryUsage *MetricConfig `river:"vcenter.resource_pool.memory.usage,block,optional"` + VcenterVMCPUUsage *MetricConfig `river:"vcenter.vm.cpu.usage,block,optional"` + VcenterVMCPUUtilization *MetricConfig `river:"vcenter.vm.cpu.utilization,block,optional"` + VcenterVMDiskLatencyAvg *MetricConfig `river:"vcenter.vm.disk.latency.avg,block,optional"` + VcenterVMDiskLatencyMax *MetricConfig `river:"vcenter.vm.disk.latency.max,block,optional"` + VcenterVMDiskThroughput *MetricConfig `river:"vcenter.vm.disk.throughput,block,optional"` + VcenterVMDiskUsage *MetricConfig `river:"vcenter.vm.disk.usage,block,optional"` + VcenterVMDiskUtilization *MetricConfig `river:"vcenter.vm.disk.utilization,block,optional"` + VcenterVMMemoryBallooned *MetricConfig `river:"vcenter.vm.memory.ballooned,block,optional"` + VcenterVMMemorySwapped *MetricConfig `river:"vcenter.vm.memory.swapped,block,optional"` + VcenterVMMemorySwappedSsd *MetricConfig `river:"vcenter.vm.memory.swapped_ssd,block,optional"` + VcenterVMMemoryUsage *MetricConfig `river:"vcenter.vm.memory.usage,block,optional"` + VcenterVMMemoryUtilization *MetricConfig `river:"vcenter.vm.memory.utilization,block,optional"` + VcenterVMNetworkPacketCount *MetricConfig `river:"vcenter.vm.network.packet.count,block,optional"` + VcenterVMNetworkThroughput *MetricConfig `river:"vcenter.vm.network.throughput,block,optional"` + VcenterVMNetworkUsage *MetricConfig `river:"vcenter.vm.network.usage,block,optional"` +} + +func (args *MetricsConfig) Convert() map[string]interface{} { + if args == nil { + return nil + } + + return map[string]interface{}{ + "vcenter.cluster.cpu.effective": args.VcenterClusterCPUEffective.Convert(), + "vcenter.cluster.cpu.limit": args.VcenterClusterCPULimit.Convert(), + "vcenter.cluster.host.count": args.VcenterClusterHostCount.Convert(), + "vcenter.cluster.memory.effective": args.VcenterClusterMemoryEffective.Convert(), + "vcenter.cluster.memory.limit": args.VcenterClusterMemoryLimit.Convert(), + "vcenter.cluster.memory.used": args.VcenterClusterMemoryUsed.Convert(), + "vcenter.cluster.vm.count": args.VcenterClusterVMCount.Convert(), + "vcenter.datastore.disk.usage": args.VcenterDatastoreDiskUsage.Convert(), + "vcenter.datastore.disk.utilization": args.VcenterDatastoreDiskUtilization.Convert(), + "vcenter.host.cpu.usage": args.VcenterHostCPUUsage.Convert(), + "vcenter.host.cpu.utilization": args.VcenterHostCPUUtilization.Convert(), + "vcenter.host.disk.latency.avg": args.VcenterHostDiskLatencyAvg.Convert(), + "vcenter.host.disk.latency.max": args.VcenterHostDiskLatencyMax.Convert(), + "vcenter.host.disk.throughput": args.VcenterHostDiskThroughput.Convert(), + "vcenter.host.memory.usage": args.VcenterHostMemoryUsage.Convert(), + "vcenter.host.memory.utilization": args.VcenterHostMemoryUtilization.Convert(), + "vcenter.host.network.packet.count": args.VcenterHostNetworkPacketCount.Convert(), + "vcenter.host.network.packet.errors": args.VcenterHostNetworkPacketErrors.Convert(), + "vcenter.host.network.throughput": args.VcenterHostNetworkThroughput.Convert(), + "vcenter.host.network.usage": args.VcenterHostNetworkUsage.Convert(), + "vcenter.resource_pool.cpu.shares": args.VcenterResourcePoolCPUShares.Convert(), + "vcenter.resource_pool.cpu.usage": args.VcenterResourcePoolCPUUsage.Convert(), + "vcenter.resource_pool.memory.shares": args.VcenterResourcePoolMemoryShares.Convert(), + "vcenter.resource_pool.memory.usage": args.VcenterResourcePoolMemoryUsage.Convert(), + "vcenter.vm.cpu.usage": args.VcenterVMCPUUsage.Convert(), + "vcenter.vm.cpu.utilization": args.VcenterVMCPUUtilization.Convert(), + "vcenter.vm.disk.latency.avg": args.VcenterVMDiskLatencyAvg.Convert(), + "vcenter.vm.disk.latency.max": args.VcenterVMDiskLatencyMax.Convert(), + "vcenter.vm.disk.throughput": args.VcenterVMDiskThroughput.Convert(), + "vcenter.vm.disk.usage": args.VcenterVMDiskUsage.Convert(), + "vcenter.vm.disk.utilization": args.VcenterVMDiskUtilization.Convert(), + "vcenter.vm.memory.ballooned": args.VcenterVMMemoryBallooned.Convert(), + "vcenter.vm.memory.swapped": args.VcenterVMMemorySwapped.Convert(), + "vcenter.vm.memory.swapped_ssd": args.VcenterVMMemorySwappedSsd.Convert(), + "vcenter.vm.memory.usage": args.VcenterVMMemoryUsage.Convert(), + "vcenter.vm.memory.utilization": args.VcenterVMMemoryUtilization.Convert(), + "vcenter.vm.network.packet.count": args.VcenterVMNetworkPacketCount.Convert(), + "vcenter.vm.network.throughput": args.VcenterVMNetworkThroughput.Convert(), + "vcenter.vm.network.usage": args.VcenterVMNetworkUsage.Convert()} +} + +type ResourceAttributeConfig struct { + Enabled bool `river:"enabled"` +} + +func (r *ResourceAttributeConfig) Convert() map[string]interface{} { + if r == nil { + return nil + } + + return map[string]interface{}{ + "enabled": r.Enabled, + } +} + +type ResourceAttributesConfig struct { + VcenterClusterName *ResourceAttributeConfig `river:"vcenter.cluster.name,block,optional"` + VcenterDatastoreName *ResourceAttributeConfig `river:"vcenter.datastore.name,block,optional"` + VcenterHostName *ResourceAttributeConfig `river:"vcenter.host.name,block,optional"` + VcenterResourcePoolInventoryPath *ResourceAttributeConfig `river:"vcenter.resource_pool.inventory_path,block,optional"` + VcenterResourcePoolName *ResourceAttributeConfig `river:"vcenter.resource_pool.name,block,optional"` + VcenterVMID *ResourceAttributeConfig `river:"vcenter.vm.id,block,optional"` + VcenterVMName *ResourceAttributeConfig `river:"vcenter.vm.name,block,optional"` +} + +func (args *ResourceAttributesConfig) Convert() map[string]interface{} { + if args == nil { + return nil + } + + res := map[string]interface{}{ + "vcenter.cluster.name": args.VcenterClusterName.Convert(), + "vcenter.datastore.name": args.VcenterDatastoreName.Convert(), + "vcenter.host.name": args.VcenterHostName.Convert(), + "vcenter.resource_pool.inventory_path": args.VcenterResourcePoolInventoryPath.Convert(), + "vcenter.resource_pool.name": args.VcenterResourcePoolName.Convert(), + "vcenter.vm.id": args.VcenterVMID.Convert(), + "vcenter.vm.name": args.VcenterVMName.Convert(), + } + + return res +} + +type MetricsBuilderConfig struct { + Metrics MetricsConfig `river:"metrics"` + ResourceAttributes ResourceAttributesConfig `river:"resource_attributes"` +} + +func (args *MetricsBuilderConfig) Convert() map[string]interface{} { + if args == nil { + return nil + } + + res := map[string]interface{}{ + "metrics": args.Metrics.Convert(), + "resource_attributes": args.ResourceAttributes.Convert(), + } + + return res +} + // Arguments configures the otelcol.receiver.vcenter component. type Arguments struct { Endpoint string `river:"endpoint,attr"` Username string `river:"username,attr"` Password rivertypes.Secret `river:"password,attr"` + MetricsBuilderConfig MetricsBuilderConfig `mapstructure:",squash"` + ScraperControllerArguments otelcol.ScraperControllerArguments `river:",squash"` TLS otelcol.TLSClientArguments `river:"tls,block,optional"` @@ -61,13 +227,22 @@ func (args *Arguments) SetToDefault() { // Convert implements receiver.Arguments. func (args Arguments) Convert() (otelcomponent.Config, error) { - return &vcenterreceiver.Config{ - TLSClientSetting: *args.TLS.Convert(), - ScraperControllerSettings: *args.ScraperControllerArguments.Convert(), - Endpoint: args.Endpoint, - Username: args.Username, - Password: configopaque.String(args.Password), - }, nil + cfg := args.MetricsBuilderConfig.Convert() + + var result vcenterreceiver.Config + err := mapstructure.Decode(cfg, &result) + + if err != nil { + return nil, err + } + + result.Endpoint = args.Endpoint + result.Username = args.Username + result.Password = configopaque.String(args.Password) + result.TLSClientSetting = *args.TLS.Convert() + result.ScraperControllerSettings = *args.ScraperControllerArguments.Convert() + + return result, nil } // Validate checks to see if the supplied config will work for the receiver From ea66d8f0a7ccf038f8274412dd2048018e7896e4 Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Thu, 16 Nov 2023 15:24:23 +0000 Subject: [PATCH 19/22] Enable most metrics and attributes by default./ --- component/otelcol/receiver/vcenter/vcenter.go | 168 ++++++++++++------ 1 file changed, 117 insertions(+), 51 deletions(-) diff --git a/component/otelcol/receiver/vcenter/vcenter.go b/component/otelcol/receiver/vcenter/vcenter.go index ac9d3bd28d47..d9c7e81845e3 100644 --- a/component/otelcol/receiver/vcenter/vcenter.go +++ b/component/otelcol/receiver/vcenter/vcenter.go @@ -44,46 +44,53 @@ func (r *MetricConfig) Convert() map[string]interface{} { } } +// SetToDefault implements river.Defaulter. +func (args *MetricConfig) SetToDefault() { + *args = MetricConfig{ + Enabled: true, + } +} + type MetricsConfig struct { - VcenterClusterCPUEffective *MetricConfig `river:"vcenter.cluster.cpu.effective,block,optional"` - VcenterClusterCPULimit *MetricConfig `river:"vcenter.cluster.cpu.limit,block,optional"` - VcenterClusterHostCount *MetricConfig `river:"vcenter.cluster.host.count,block,optional"` - VcenterClusterMemoryEffective *MetricConfig `river:"vcenter.cluster.memory.effective,block,optional"` - VcenterClusterMemoryLimit *MetricConfig `river:"vcenter.cluster.memory.limit,block,optional"` - VcenterClusterMemoryUsed *MetricConfig `river:"vcenter.cluster.memory.used,block,optional"` - VcenterClusterVMCount *MetricConfig `river:"vcenter.cluster.vm.count,block,optional"` - VcenterDatastoreDiskUsage *MetricConfig `river:"vcenter.datastore.disk.usage,block,optional"` - VcenterDatastoreDiskUtilization *MetricConfig `river:"vcenter.datastore.disk.utilization,block,optional"` - VcenterHostCPUUsage *MetricConfig `river:"vcenter.host.cpu.usage,block,optional"` - VcenterHostCPUUtilization *MetricConfig `river:"vcenter.host.cpu.utilization,block,optional"` - VcenterHostDiskLatencyAvg *MetricConfig `river:"vcenter.host.disk.latency.avg,block,optional"` - VcenterHostDiskLatencyMax *MetricConfig `river:"vcenter.host.disk.latency.max,block,optional"` - VcenterHostDiskThroughput *MetricConfig `river:"vcenter.host.disk.throughput,block,optional"` - VcenterHostMemoryUsage *MetricConfig `river:"vcenter.host.memory.usage,block,optional"` - VcenterHostMemoryUtilization *MetricConfig `river:"vcenter.host.memory.utilization,block,optional"` - VcenterHostNetworkPacketCount *MetricConfig `river:"vcenter.host.network.packet.count,block,optional"` - VcenterHostNetworkPacketErrors *MetricConfig `river:"vcenter.host.network.packet.errors,block,optional"` - VcenterHostNetworkThroughput *MetricConfig `river:"vcenter.host.network.throughput,block,optional"` - VcenterHostNetworkUsage *MetricConfig `river:"vcenter.host.network.usage,block,optional"` - VcenterResourcePoolCPUShares *MetricConfig `river:"vcenter.resource_pool.cpu.shares,block,optional"` - VcenterResourcePoolCPUUsage *MetricConfig `river:"vcenter.resource_pool.cpu.usage,block,optional"` - VcenterResourcePoolMemoryShares *MetricConfig `river:"vcenter.resource_pool.memory.shares,block,optional"` - VcenterResourcePoolMemoryUsage *MetricConfig `river:"vcenter.resource_pool.memory.usage,block,optional"` - VcenterVMCPUUsage *MetricConfig `river:"vcenter.vm.cpu.usage,block,optional"` - VcenterVMCPUUtilization *MetricConfig `river:"vcenter.vm.cpu.utilization,block,optional"` - VcenterVMDiskLatencyAvg *MetricConfig `river:"vcenter.vm.disk.latency.avg,block,optional"` - VcenterVMDiskLatencyMax *MetricConfig `river:"vcenter.vm.disk.latency.max,block,optional"` - VcenterVMDiskThroughput *MetricConfig `river:"vcenter.vm.disk.throughput,block,optional"` - VcenterVMDiskUsage *MetricConfig `river:"vcenter.vm.disk.usage,block,optional"` - VcenterVMDiskUtilization *MetricConfig `river:"vcenter.vm.disk.utilization,block,optional"` - VcenterVMMemoryBallooned *MetricConfig `river:"vcenter.vm.memory.ballooned,block,optional"` - VcenterVMMemorySwapped *MetricConfig `river:"vcenter.vm.memory.swapped,block,optional"` - VcenterVMMemorySwappedSsd *MetricConfig `river:"vcenter.vm.memory.swapped_ssd,block,optional"` - VcenterVMMemoryUsage *MetricConfig `river:"vcenter.vm.memory.usage,block,optional"` - VcenterVMMemoryUtilization *MetricConfig `river:"vcenter.vm.memory.utilization,block,optional"` - VcenterVMNetworkPacketCount *MetricConfig `river:"vcenter.vm.network.packet.count,block,optional"` - VcenterVMNetworkThroughput *MetricConfig `river:"vcenter.vm.network.throughput,block,optional"` - VcenterVMNetworkUsage *MetricConfig `river:"vcenter.vm.network.usage,block,optional"` + VcenterClusterCPUEffective MetricConfig `river:"vcenter.cluster.cpu.effective,block,optional"` + VcenterClusterCPULimit MetricConfig `river:"vcenter.cluster.cpu.limit,block,optional"` + VcenterClusterHostCount MetricConfig `river:"vcenter.cluster.host.count,block,optional"` + VcenterClusterMemoryEffective MetricConfig `river:"vcenter.cluster.memory.effective,block,optional"` + VcenterClusterMemoryLimit MetricConfig `river:"vcenter.cluster.memory.limit,block,optional"` + VcenterClusterMemoryUsed MetricConfig `river:"vcenter.cluster.memory.used,block,optional"` + VcenterClusterVMCount MetricConfig `river:"vcenter.cluster.vm.count,block,optional"` + VcenterDatastoreDiskUsage MetricConfig `river:"vcenter.datastore.disk.usage,block,optional"` + VcenterDatastoreDiskUtilization MetricConfig `river:"vcenter.datastore.disk.utilization,block,optional"` + VcenterHostCPUUsage MetricConfig `river:"vcenter.host.cpu.usage,block,optional"` + VcenterHostCPUUtilization MetricConfig `river:"vcenter.host.cpu.utilization,block,optional"` + VcenterHostDiskLatencyAvg MetricConfig `river:"vcenter.host.disk.latency.avg,block,optional"` + VcenterHostDiskLatencyMax MetricConfig `river:"vcenter.host.disk.latency.max,block,optional"` + VcenterHostDiskThroughput MetricConfig `river:"vcenter.host.disk.throughput,block,optional"` + VcenterHostMemoryUsage MetricConfig `river:"vcenter.host.memory.usage,block,optional"` + VcenterHostMemoryUtilization MetricConfig `river:"vcenter.host.memory.utilization,block,optional"` + VcenterHostNetworkPacketCount MetricConfig `river:"vcenter.host.network.packet.count,block,optional"` + VcenterHostNetworkPacketErrors MetricConfig `river:"vcenter.host.network.packet.errors,block,optional"` + VcenterHostNetworkThroughput MetricConfig `river:"vcenter.host.network.throughput,block,optional"` + VcenterHostNetworkUsage MetricConfig `river:"vcenter.host.network.usage,block,optional"` + VcenterResourcePoolCPUShares MetricConfig `river:"vcenter.resource_pool.cpu.shares,block,optional"` + VcenterResourcePoolCPUUsage MetricConfig `river:"vcenter.resource_pool.cpu.usage,block,optional"` + VcenterResourcePoolMemoryShares MetricConfig `river:"vcenter.resource_pool.memory.shares,block,optional"` + VcenterResourcePoolMemoryUsage MetricConfig `river:"vcenter.resource_pool.memory.usage,block,optional"` + VcenterVMCPUUsage MetricConfig `river:"vcenter.vm.cpu.usage,block,optional"` + VcenterVMCPUUtilization MetricConfig `river:"vcenter.vm.cpu.utilization,block,optional"` + VcenterVMDiskLatencyAvg MetricConfig `river:"vcenter.vm.disk.latency.avg,block,optional"` + VcenterVMDiskLatencyMax MetricConfig `river:"vcenter.vm.disk.latency.max,block,optional"` + VcenterVMDiskThroughput MetricConfig `river:"vcenter.vm.disk.throughput,block,optional"` + VcenterVMDiskUsage MetricConfig `river:"vcenter.vm.disk.usage,block,optional"` + VcenterVMDiskUtilization MetricConfig `river:"vcenter.vm.disk.utilization,block,optional"` + VcenterVMMemoryBallooned MetricConfig `river:"vcenter.vm.memory.ballooned,block,optional"` + VcenterVMMemorySwapped MetricConfig `river:"vcenter.vm.memory.swapped,block,optional"` + VcenterVMMemorySwappedSsd MetricConfig `river:"vcenter.vm.memory.swapped_ssd,block,optional"` + VcenterVMMemoryUsage MetricConfig `river:"vcenter.vm.memory.usage,block,optional"` + VcenterVMMemoryUtilization MetricConfig `river:"vcenter.vm.memory.utilization,block,optional"` + VcenterVMNetworkPacketCount MetricConfig `river:"vcenter.vm.network.packet.count,block,optional"` + VcenterVMNetworkThroughput MetricConfig `river:"vcenter.vm.network.throughput,block,optional"` + VcenterVMNetworkUsage MetricConfig `river:"vcenter.vm.network.usage,block,optional"` } func (args *MetricsConfig) Convert() map[string]interface{} { @@ -134,7 +141,14 @@ func (args *MetricsConfig) Convert() map[string]interface{} { } type ResourceAttributeConfig struct { - Enabled bool `river:"enabled"` + Enabled bool `river:"enabled,attr"` +} + +// SetToDefault implements river.Defaulter. +func (args *ResourceAttributeConfig) SetToDefault() { + *args = ResourceAttributeConfig{ + Enabled: true, + } } func (r *ResourceAttributeConfig) Convert() map[string]interface{} { @@ -148,13 +162,13 @@ func (r *ResourceAttributeConfig) Convert() map[string]interface{} { } type ResourceAttributesConfig struct { - VcenterClusterName *ResourceAttributeConfig `river:"vcenter.cluster.name,block,optional"` - VcenterDatastoreName *ResourceAttributeConfig `river:"vcenter.datastore.name,block,optional"` - VcenterHostName *ResourceAttributeConfig `river:"vcenter.host.name,block,optional"` - VcenterResourcePoolInventoryPath *ResourceAttributeConfig `river:"vcenter.resource_pool.inventory_path,block,optional"` - VcenterResourcePoolName *ResourceAttributeConfig `river:"vcenter.resource_pool.name,block,optional"` - VcenterVMID *ResourceAttributeConfig `river:"vcenter.vm.id,block,optional"` - VcenterVMName *ResourceAttributeConfig `river:"vcenter.vm.name,block,optional"` + VcenterClusterName ResourceAttributeConfig `river:"vcenter.cluster.name,block,optional"` + VcenterDatastoreName ResourceAttributeConfig `river:"vcenter.datastore.name,block,optional"` + VcenterHostName ResourceAttributeConfig `river:"vcenter.host.name,block,optional"` + VcenterResourcePoolInventoryPath ResourceAttributeConfig `river:"vcenter.resource_pool.inventory_path,block,optional"` + VcenterResourcePoolName ResourceAttributeConfig `river:"vcenter.resource_pool.name,block,optional"` + VcenterVMID ResourceAttributeConfig `river:"vcenter.vm.id,block,optional"` + VcenterVMName ResourceAttributeConfig `river:"vcenter.vm.name,block,optional"` } func (args *ResourceAttributesConfig) Convert() map[string]interface{} { @@ -176,8 +190,8 @@ func (args *ResourceAttributesConfig) Convert() map[string]interface{} { } type MetricsBuilderConfig struct { - Metrics MetricsConfig `river:"metrics"` - ResourceAttributes ResourceAttributesConfig `river:"resource_attributes"` + Metrics MetricsConfig `river:"metrics,block,optional"` + ResourceAttributes ResourceAttributesConfig `river:"resource_attributes,block,optional"` } func (args *MetricsBuilderConfig) Convert() map[string]interface{} { @@ -199,7 +213,7 @@ type Arguments struct { Username string `river:"username,attr"` Password rivertypes.Secret `river:"password,attr"` - MetricsBuilderConfig MetricsBuilderConfig `mapstructure:",squash"` + MetricsBuilderConfig MetricsBuilderConfig `river:",squash"` ScraperControllerArguments otelcol.ScraperControllerArguments `river:",squash"` TLS otelcol.TLSClientArguments `river:"tls,block,optional"` @@ -217,6 +231,58 @@ var ( // DefaultArguments holds default values for Arguments. DefaultArguments = Arguments{ ScraperControllerArguments: otelcol.DefaultScraperControllerArguments, + MetricsBuilderConfig: MetricsBuilderConfig{ + Metrics: MetricsConfig{ + VcenterClusterCPUEffective: MetricConfig{Enabled: true}, + VcenterClusterCPULimit: MetricConfig{Enabled: true}, + VcenterClusterHostCount: MetricConfig{Enabled: true}, + VcenterClusterMemoryEffective: MetricConfig{Enabled: true}, + VcenterClusterMemoryLimit: MetricConfig{Enabled: true}, + VcenterClusterMemoryUsed: MetricConfig{Enabled: true}, + VcenterClusterVMCount: MetricConfig{Enabled: true}, + VcenterDatastoreDiskUsage: MetricConfig{Enabled: true}, + VcenterDatastoreDiskUtilization: MetricConfig{Enabled: true}, + VcenterHostCPUUsage: MetricConfig{Enabled: true}, + VcenterHostCPUUtilization: MetricConfig{Enabled: true}, + VcenterHostDiskLatencyAvg: MetricConfig{Enabled: true}, + VcenterHostDiskLatencyMax: MetricConfig{Enabled: true}, + VcenterHostDiskThroughput: MetricConfig{Enabled: true}, + VcenterHostMemoryUsage: MetricConfig{Enabled: true}, + VcenterHostMemoryUtilization: MetricConfig{Enabled: true}, + VcenterHostNetworkPacketCount: MetricConfig{Enabled: true}, + VcenterHostNetworkPacketErrors: MetricConfig{Enabled: true}, + VcenterHostNetworkThroughput: MetricConfig{Enabled: true}, + VcenterHostNetworkUsage: MetricConfig{Enabled: true}, + VcenterResourcePoolCPUShares: MetricConfig{Enabled: true}, + VcenterResourcePoolCPUUsage: MetricConfig{Enabled: true}, + VcenterResourcePoolMemoryShares: MetricConfig{Enabled: true}, + VcenterResourcePoolMemoryUsage: MetricConfig{Enabled: true}, + VcenterVMCPUUsage: MetricConfig{Enabled: true}, + VcenterVMCPUUtilization: MetricConfig{Enabled: true}, + VcenterVMDiskLatencyAvg: MetricConfig{Enabled: true}, + VcenterVMDiskLatencyMax: MetricConfig{Enabled: true}, + VcenterVMDiskThroughput: MetricConfig{Enabled: true}, + VcenterVMDiskUsage: MetricConfig{Enabled: true}, + VcenterVMDiskUtilization: MetricConfig{Enabled: true}, + VcenterVMMemoryBallooned: MetricConfig{Enabled: true}, + VcenterVMMemorySwapped: MetricConfig{Enabled: true}, + VcenterVMMemorySwappedSsd: MetricConfig{Enabled: true}, + VcenterVMMemoryUsage: MetricConfig{Enabled: true}, + VcenterVMMemoryUtilization: MetricConfig{Enabled: false}, + VcenterVMNetworkPacketCount: MetricConfig{Enabled: true}, + VcenterVMNetworkThroughput: MetricConfig{Enabled: true}, + VcenterVMNetworkUsage: MetricConfig{Enabled: true}, + }, + ResourceAttributes: ResourceAttributesConfig{ + VcenterClusterName: ResourceAttributeConfig{Enabled: true}, + VcenterDatastoreName: ResourceAttributeConfig{Enabled: true}, + VcenterHostName: ResourceAttributeConfig{Enabled: true}, + VcenterResourcePoolInventoryPath: ResourceAttributeConfig{Enabled: true}, + VcenterResourcePoolName: ResourceAttributeConfig{Enabled: true}, + VcenterVMID: ResourceAttributeConfig{Enabled: true}, + VcenterVMName: ResourceAttributeConfig{Enabled: true}, + }, + }, } ) @@ -242,7 +308,7 @@ func (args Arguments) Convert() (otelcomponent.Config, error) { result.TLSClientSetting = *args.TLS.Convert() result.ScraperControllerSettings = *args.ScraperControllerArguments.Convert() - return result, nil + return &result, nil } // Validate checks to see if the supplied config will work for the receiver From f3ea19e8a3ee4e822b01c66b1c7fee456a697c65 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 16:30:17 +0100 Subject: [PATCH 20/22] add stability level --- .../flow/reference/components/otelcol.receiver.vcenter.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index b3bd5b11ad7b..f6d3d640898d 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -6,10 +6,14 @@ aliases: canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.vcenter/ title: otelcol.receiver.vcenter description: Learn about otelcol.receiver.vcenter +labels: + stage: experimental --- # otelcol.receiver.vcenter +{{< docs/shared lookup="flow/stability/experimental.md" source="agent" version="" >}} + `otelcol.receiver.vcenter` accepts metrics from a vCenter or ESXi host running VMware vSphere APIs and forwards it to other `otelcol.*` components. From fa17b650928906071fdfa587049f59a302025d68 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 16:42:20 +0100 Subject: [PATCH 21/22] lint --- component/otelcol/receiver/vcenter/vcenter_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/component/otelcol/receiver/vcenter/vcenter_test.go b/component/otelcol/receiver/vcenter/vcenter_test.go index ef082c1eaedd..e6b84800a192 100644 --- a/component/otelcol/receiver/vcenter/vcenter_test.go +++ b/component/otelcol/receiver/vcenter/vcenter_test.go @@ -35,5 +35,4 @@ func TestArguments_UnmarshalRiver(t *testing.T) { require.Equal(t, 2*time.Minute, otelArgs.ScraperControllerSettings.CollectionInterval) require.Equal(t, time.Second, otelArgs.ScraperControllerSettings.InitialDelay) require.Equal(t, 0*time.Second, otelArgs.ScraperControllerSettings.Timeout) - } From 65f723351966c7f5ad529e6fd7027d2a17368ac8 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 16 Nov 2023 17:14:11 +0100 Subject: [PATCH 22/22] last tweaks --- component/otelcol/receiver/vcenter/vcenter.go | 14 -------------- component/otelcol/receiver/vcenter/vcenter_test.go | 4 ++++ .../components/otelcol.receiver.vcenter.md | 2 +- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/component/otelcol/receiver/vcenter/vcenter.go b/component/otelcol/receiver/vcenter/vcenter.go index d9c7e81845e3..88efd9402940 100644 --- a/component/otelcol/receiver/vcenter/vcenter.go +++ b/component/otelcol/receiver/vcenter/vcenter.go @@ -44,13 +44,6 @@ func (r *MetricConfig) Convert() map[string]interface{} { } } -// SetToDefault implements river.Defaulter. -func (args *MetricConfig) SetToDefault() { - *args = MetricConfig{ - Enabled: true, - } -} - type MetricsConfig struct { VcenterClusterCPUEffective MetricConfig `river:"vcenter.cluster.cpu.effective,block,optional"` VcenterClusterCPULimit MetricConfig `river:"vcenter.cluster.cpu.limit,block,optional"` @@ -144,13 +137,6 @@ type ResourceAttributeConfig struct { Enabled bool `river:"enabled,attr"` } -// SetToDefault implements river.Defaulter. -func (args *ResourceAttributeConfig) SetToDefault() { - *args = ResourceAttributeConfig{ - Enabled: true, - } -} - func (r *ResourceAttributeConfig) Convert() map[string]interface{} { if r == nil { return nil diff --git a/component/otelcol/receiver/vcenter/vcenter_test.go b/component/otelcol/receiver/vcenter/vcenter_test.go index e6b84800a192..934d87d0798c 100644 --- a/component/otelcol/receiver/vcenter/vcenter_test.go +++ b/component/otelcol/receiver/vcenter/vcenter_test.go @@ -35,4 +35,8 @@ func TestArguments_UnmarshalRiver(t *testing.T) { require.Equal(t, 2*time.Minute, otelArgs.ScraperControllerSettings.CollectionInterval) require.Equal(t, time.Second, otelArgs.ScraperControllerSettings.InitialDelay) require.Equal(t, 0*time.Second, otelArgs.ScraperControllerSettings.Timeout) + + require.Equal(t, true, otelArgs.Metrics.VcenterClusterCPUEffective.Enabled) + require.Equal(t, false, otelArgs.Metrics.VcenterVMMemoryUtilization.Enabled) + require.Equal(t, true, otelArgs.ResourceAttributes.VcenterClusterName.Enabled) } diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index f6d3d640898d..c5d9ef68563b 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -26,7 +26,7 @@ forwards it to other `otelcol.*` components. Multiple `otelcol.receiver.vcenter` components can be specified by giving them different labels. -The full list of metrics that can be collected can be found [here][vcenter metrics]. +The full list of metrics that can be collected can be found in [vcenter receiver documentation][vcenter metrics]. [vcenter metrics]: https://github.com/open-telemetry/opentelemetry-collector/blob/{{< param "OTEL_VERSION" >}}/receiver/vcenterreceiver/documentation.md