Supported telemetry types
The vSphere integration supports these telemetry types:
The integration converts vCenter events to log records. Standalone ESXi hosts provide
metrics only.
Prerequisites
The vSphere integration has the following prerequisites:- A vSphere account with the Read-only role assigned at the root of each inventory you monitor. The role must propagate to the managed hosts and virtual machines.
- HTTPS access from the Collector host to each vCenter Server or standalone ESXi
host. The default port is
443. - The root certificate authority certificate for each endpoint, unless you disable certificate verification. System trust stores don’t typically trust the certificates included with vCenter Server and ESXi.
Configure
To configure the vSphere integration, follow these steps:- Make each vSphere password available as an environment variable to the Collector process. If you verify endpoint certificates, make each root certificate available as a file.
-
Add your vCenter Servers to the Collector configuration. For example:
Each vCenter Server provides metrics for its managed hosts and virtual machines.
-
Optional: Attach vSphere tags to metrics for filtering and grouping. The Collector
adds tags from each virtual machine, host, cluster, datastore, and datacenter to
that object’s metrics. For example:
Standalone ESXi hosts don’t support tags.
-
Optional: Add standalone ESXi hosts under
esxi.instances. A standalone host runs without a vCenter Server, or no configured vCenter Server manages it. For example:Configuring both paths for the same host produces duplicate metrics.
Validate
To validate the vSphere integration, follow these steps:-
In Live Telemetry Analyzer, filter for
__name__=cxdot.integration.target.healthandcxdot.integration.name=vsphere. Confirm that the metric reports1for each configured endpoint. Usecxdot.integration.targetto identify the endpoint. -
In Metrics Explorer, run the following query:
Confirm that the query returns
hosttime series for each endpoint. Endpoints with powered-on virtual machines also returnvmtime series. -
In Logs Explorer, filter for the
vsphere.event.typeattribute after a vCenter event occurs. Confirm that the log record includes the vCenter Server’sserver.address.
Troubleshooting
- A host or its virtual machines report duplicate metrics: Remove the host from
esxi.instanceswhen a configured vCenter Server already manages it. - A virtual machine has no performance time series: vSphere provides real-time performance counters only for powered-on virtual machines. The integration skips powered-off and suspended virtual machines and templates.
Configuration reference
Configure one VMware vSphere integration instance with the following settings. In Helm values, place these settings underconfig.integrations.vsphere. In a Collector configuration file,
place them under cxdot.integrations.vsphere.
Optional settings
-
enabledType:boolean. Optional. Default:true. Whether to enable this vSphere integration instance. If true, the Collector collects from its configured vCenter Servers and ESXi hosts. If false, the Collector doesn’t run the integration instance. -
collection_intervalType:duration. Optional. Default:2m. How often the Collector reads performance counters. vSphere serves real-time counters as 20-second samples, and each collection returns the newest sample since the previous collection. A collection that runs past this interval delays the next collection. Use an interval closer to 20 seconds for a small inventory to retain more samples. -
timeoutType:duration. Optional. Default:10m. How long a collection or event poll can run before the Collector abandons it. This setting guards against an unresponsive endpoint. Set a value long enough for a large inventory or slow server to finish without overlapping the next collection. -
collect_property_metricsType:boolean. Optional. Default:false. Whether to collect inventory property metrics. If true, the Collector collects virtual machine uptime, configured CPU and memory, VMware Tools status, guest disks, network adapters and routes, host connection, power, and maintenance state, and cluster HA and DRS settings. Device properties produce one time series per device and increase collection work for a large vCenter inventory. Cluster settings produce four time series per cluster;metric_filtersdon’t affect them, andclusterresource filters drop them with the cluster. If false, the Collector doesn’t collect these inventory property metrics. -
inventory_refresh_intervalType:duration. Optional. Default:5m. How often the Collector refreshes hosts, virtual machines, placement, and properties in the inventory. Performance counters use the cached inventory between refreshes. A new virtual machine appears after the next refresh. -
max_query_metricsType:integer. Optional. Default:500. Minimum:1. Maximum number of metric IDs in one performance query. The Collector splits larger collections across multiple queries. Increase this value to make fewer, larger requests, or decrease it to make more, smaller requests. A metric collected per instance throughper_instance_metricscounts as one ID here, but the server returns one series per device for it, so lower this value when you enable per-instance collection on objects with many devices. -
concurrencyType:integer. Optional. Default:4. Minimum:1. Maximum:8. How many performance queries are in flight at once against one endpoint, from 1 to 8. Increase this value to collect a large inventory faster, or decrease it to reduce load on a busy server. -
metric_filtersType:object. Optional. Per resource type, which metrics to collect for its objects, as regular expressions over metric names (vcenter.cpu.usage.avg,vcenter.vm.cpu.usage). A metric is collected when any pattern matches anywhere in its name; anchor with^and$for an exact name. A resource type with no patterns collects every metric. A pattern that doesn’t match a metric selects nothing. A pattern that does not compile, or a type other thanvmandhost, prevents the Collector from starting. -
metric_filters.vmType:array of string. Optional. Default:[]. Patterns for virtual machine series. -
metric_filters.hostType:array of string. Optional. Default:[]. Patterns for ESXi host series. -
per_instance_metricsType:object. Optional. Per resource type, which metrics to also collect for each instance of the counter — every NIC, LUN, datastore, vCPU or virtual disk of the object — as regular expressions over metric names, matched the waymetric_filtersare. By default every counter is one series per object, the aggregate over its instances; a matching metric gains one series per instance beside it, told apart by theobjectattribute, which is empty on the aggregate. This is the Datadog checks’collect_per_instance_filters, except that the aggregate stays. Per-instance series multiply a metric’s series count by the number of devices on each object, and the server only returns instances for the counters it keeps per device; the rest stay on the aggregate alone. A metricmetric_filtersdrops for a type is not collected at all, per instance or otherwise. Off for every metric by default;host: [".*"]asks for every host counter per device. -
per_instance_metrics.vmType:array of string. Optional. Default:[]. Patterns for virtual machine series. -
per_instance_metrics.hostType:array of string. Optional. Default:[]. Patterns for ESXi host series. -
vcenterType:object. Optional. Settings for collecting from vCenter Servers. -
vcenter.enabledType:boolean. Optional. Default:true. Whether to collect from the configured vCenter Servers. If true, the Collector collects metrics and logs from those servers. If false, the Collector doesn’t collect from them. -
vcenter.instancesType:array of object. Optional. Default:[]. The vCenter Servers to monitor, each with its own endpoint and credentials. The Collector doesn’t discover vCenter Servers. List each server in this setting. An empty or omitted list collects no vCenter data. -
vcenter.instances[].endpointType:string. Required. The server, ashostorhost:port(vcsa.example.com,esx1.example.com:443). The connection is always HTTPS; the port defaults to 443. -
vcenter.instances[].passwordType:string. Required. Password forusername. The Collector masks this value in debug output, logs, and error output. -
vcenter.instances[].resource_filtersType:array of object. Optional. Default:[]. Which of this endpoint’s hosts, VMs, clusters, datastores, and datacenters to collect. Each entry names a resource type, the property to match, whether it includes or excludes, and regular expressions over that property. With no entry for a resource type, every object of that type is collected. Otherwise an object matching anyexcludeentry is dropped, and whenincludeentries exist for its type it must match one of them; an object both included and excluded is excluded. Patterns are anchored at the start of the property, soweb-matchesweb-01and notold-web-01. Each object is filtered on its own: excluding a cluster or datacenter drops its own time series and leaves the hosts and VMs under it collected, still labeled with its name. Resource filters don’t affect event logs. Select events byvcenter.events.typesandresource_types. -
vcenter.instances[].resource_filters[].patternsType:array of string. Required. Minimum items:1. Regular expressions (Go/RE2 syntax) over the property; one match is enough. Each is anchored at the start of the value. A pattern that doesn’t compile prevents the Collector from starting. -
vcenter.instances[].resource_filters[].propertyType:string. Optional. Default:name. What the patterns are matched against: the object’s name in vCenter, the only supported property. Allowed values:name. -
vcenter.instances[].resource_filters[].resourceType:string. Required. The resource type the filter applies to. Allowed values:vm,host,cluster,datastore,datacenter. -
vcenter.instances[].resource_filters[].typeType:string. Optional. Default:include. Whether a match collects the object (include) or drops it (exclude). Allowed values:include,exclude. -
vcenter.instances[].tagsType:array of string. Optional. Default:[]. Extra resource attributes inkey:valueformat to add to every time series and event from this endpoint, on top of the collector-wideresource_attributes:product:billingadds the attributeproductwith the valuebilling. A value may itself contain colons; an entry without a colon is ignored; a repeated key keeps its last value; a tag never replaces an attribute the integration sets itself. -
vcenter.instances[].tlsType:object. Optional. TLS settings for the connection to this endpoint. vCenter and ESXi typically use certificates signed by the VMware Certificate Authority. Setca_fileto that authority’s root certificate, or setinsecure_skip_verifytotrueto disable certificate verification. By default, the Collector verifies the server certificate against the system certificate authorities. -
vcenter.instances[].tls.ca_fileType:string. Optional. Path to a PEM-encoded certificate authority (CA) certificate file used to verify the vSphere server certificate. If omitted, the Collector uses the system certificate authority pool. -
vcenter.instances[].tls.ca_pemType:string. Optional. PEM-encoded certificate authority certificate content used to verify the vSphere server certificate. -
vcenter.instances[].tls.cert_fileType:string. Optional. Path to the PEM-encoded client certificate file to present when the vSphere endpoint requires mutual TLS authentication. -
vcenter.instances[].tls.cert_pemType:string. Optional. PEM-encoded client certificate content to present when the vSphere endpoint requires mutual TLS authentication. -
vcenter.instances[].tls.cipher_suitesType:array of string. Optional. TLS cipher suites that the Collector can use, in preference order. If omitted, the Collector uses the secure defaults from the Go TLS library. For supported names, see https://go.dev/src/crypto/tls/cipher_suites.go. -
vcenter.instances[].tls.curve_preferencesType:array of string. Optional. Elliptic curves that the Collector can use for an elliptic curve Diffie-Hellman ephemeral handshake, in preference order. If omitted, the Collector uses the Go TLS library defaults. -
vcenter.instances[].tls.include_system_ca_certs_poolType:boolean. Optional. Whether to add certificates from the system certificate authority pool to the configured certificate authorities. If true, the Collector trusts both sources. If false, the Collector trusts only the configured certificate authorities. -
vcenter.instances[].tls.insecureType:boolean. Optional. Whether to disable transport security. If true, the Collector uses an unencrypted connection. If false, the Collector uses TLS. -
vcenter.instances[].tls.insecure_skip_verifyType:boolean. Optional. Whether to skip verification of the vSphere server certificate. If true, the connection is encrypted but isn’t authenticated and is vulnerable to man-in-the-middle attacks. If false, the Collector verifies the certificate. -
vcenter.instances[].tls.key_fileType:string. Optional. Path to the PEM-encoded client private key file used withcert_filefor mutual TLS authentication. -
vcenter.instances[].tls.key_pemType:string. Optional. PEM-encoded client private key content used withcert_pemfor mutual TLS authentication. -
vcenter.instances[].tls.max_versionType:string. Optional. Maximum TLS protocol version the Collector can use. If omitted, the Collector uses the maximum version supported by the Go TLS library. -
vcenter.instances[].tls.min_versionType:string. Optional. Minimum TLS protocol version the Collector can use. If omitted, the minimum version is TLS 1.2. -
vcenter.instances[].tls.reload_intervalType:duration. Optional. How often the Collector reloads certificate and key files. If omitted, the Collector doesn’t reload the files. -
vcenter.instances[].tls.server_name_overrideType:string. Optional. Server name to verify in the vSphere certificate instead of the endpoint hostname. Use this setting when the certificate name differs from the endpoint hostname. -
vcenter.instances[].tls.tpmType:object. Optional. Trusted platform module settings for the TLS private key. -
vcenter.instances[].tls.tpm.authType:string. Optional. Authorization value for the trusted platform module key. -
vcenter.instances[].tls.tpm.enabledType:boolean. Optional. Whether to use a trusted platform module for the TLS private key. If true, the Collector loads the key from the configured device or socket. If false, the Collector uses the configured key file or in-memory key. -
vcenter.instances[].tls.tpm.owner_authType:string. Optional. Owner authorization value for the trusted platform module. -
vcenter.instances[].tls.tpm.pathType:string. Optional. Path to the trusted platform module device or Unix domain socket, such as/dev/tpm0or/dev/tpmrm0. -
vcenter.instances[].usernameType:string. Required. vSphere user for connecting to this endpoint. A read-only role on the vCenter Server or ESXi host is sufficient. -
vcenter.collection_levelType:integer. Optional. Default:1. Minimum:1. Maximum:4. vSphere statistics collection level whose counters are read, 1 to 4. Level 1 is the set every vCenter exposes without configuration; each higher level adds counters and multiplies the query volume across the inventory. -
vcenter.collect_tagsType:boolean. Optional. Default:false. Whether to attach vSphere tags to metrics. If true, the Collector reads the tags assigned to each virtual machine, host, cluster, datastore, and datacenter and adds them to that object’s metrics. Each tag category becomes an attribute key. A category that allows one tag per object sets a string value. A category that allows several sets a sorted list of tag names, such as["daily","offsite"]. Some backends store a list as one string, so filter on a tag in such a category with a regular expression match rather than an equality match. A tag doesn’t replace the object’s name or placement attributes, but it takes precedence over an instance’stagsentry with the same key. Datadog keeps both values when keys collide, but the Collector keeps only the vSphere tag, so rename the instance’stagsentry if a monitor filters on its value. The Collector drops a tag whose attribute key, includingtags_prefix, starts withvcenter.,vsphere.,cxdot., orserver.. A tag change can take up to five minutes to appear, orinventory_refresh_intervalif that’s longer, plus onecollection_interval. The account for each instance needs read access to tags, which the vCenter Read-only role grants. If the Collector can’t read tags, metrics retain the tags from the last successful refresh. If false, the Collector doesn’t read tags. -
vcenter.tags_prefixType:string. Optional. Default: “. Text the Collector adds before each tag category name to form the attribute key. For example,vsphere_turns the categoryownerinto the attribute keyvsphere_owner. A prefix keeps a category from colliding with an attribute set elsewhere in the pipeline. The prefix can’t start with a reserved prefix listed undercollect_tags, such asvsphere.. Applies only whencollect_tagsis true. -
vcenter.eventsType:object. Optional. Settings for converting vCenter events to log records. The Collector reads events from eachvcenter.instancesendpoint everycollection_interval. Standalone ESXi hosts don’t provide event history. -
vcenter.events.enabledType:boolean. Optional. Default:true. Whether to collect vCenter events as logs. If true, the Collector collects the selected events. If false, the Collector doesn’t collect vCenter events. -
vcenter.events.typesType:array of string. Optional. Default:["AlarmStatusChangedEvent","TaskEvent","VmBeingHotMigratedEvent","VmMessageEvent","VmMigratedEvent","VmPoweredOnEvent","VmPoweredOffEvent","VmReconfiguredEvent","VmSuspendedEvent"]. Event classes to collect, as vSphere names them without thevim.event.prefix (VmPoweredOnEvent). The default is the receiver’s built-in set: alarm status changes, tasks, and VM power, migration, message, reconfiguration and suspend events. An empty list collects the same set. -
vcenter.events.resource_typesType:array of string. Optional. Default:["vm","host"]. Inventory object types whose events are collected, for the event classes that name the object they are about: alarms, tasks, scheduled tasks, permission and custom field changes. Omitted, VMs and hosts, the objects the metrics cover, so a datastore alarm or a cluster task is not collected unless its type is listed. An empty list collects none of those classes. Classes that name no object, such as user sessions, are unaffected either way. -
vcenter.events.excluded_messagesType:object. Optional. Default:{}. Per event class, regular expressions that drop an event whose formatted message matches. Added to the built-in exclusions of routine task events and gray alarm transitions. A pattern that doesn’t compile prevents the Collector from starting. -
esxiType:object. Optional. Settings for collecting directly from standalone ESXi hosts. -
esxi.enabledType:boolean. Optional. Default:true. Whether to collect from the configured standalone ESXi hosts. If true, the Collector collects metrics from those hosts. If false, the Collector doesn’t collect from them. -
esxi.instancesType:array of object. Optional. Default:[]. ESXi hosts to monitor directly, each with its own endpoint and credentials. A standalone host typically has a local account. Use this setting for hosts not managed by a listed vCenter Server. Listing a host both ways collects duplicate metrics. An empty or omitted list collects no standalone ESXi data. -
esxi.instances[].endpointType:string. Required. The server, ashostorhost:port(vcsa.example.com,esx1.example.com:443). The connection is always HTTPS; the port defaults to 443. -
esxi.instances[].passwordType:string. Required. Password forusername. The Collector masks this value in debug output, logs, and error output. -
esxi.instances[].resource_filtersType:array of object. Optional. Default:[]. Which of this endpoint’s hosts, VMs, clusters, datastores, and datacenters to collect. Each entry names a resource type, the property to match, whether it includes or excludes, and regular expressions over that property. With no entry for a resource type, every object of that type is collected. Otherwise an object matching anyexcludeentry is dropped, and whenincludeentries exist for its type it must match one of them; an object both included and excluded is excluded. Patterns are anchored at the start of the property, soweb-matchesweb-01and notold-web-01. Each object is filtered on its own: excluding a cluster or datacenter drops its own time series and leaves the hosts and VMs under it collected, still labeled with its name. Resource filters don’t affect event logs. Select events byvcenter.events.typesandresource_types. -
esxi.instances[].resource_filters[].patternsType:array of string. Required. Minimum items:1. Regular expressions (Go/RE2 syntax) over the property; one match is enough. Each is anchored at the start of the value. A pattern that doesn’t compile prevents the Collector from starting. -
esxi.instances[].resource_filters[].propertyType:string. Optional. Default:name. What the patterns are matched against: the object’s name in vCenter, the only supported property. Allowed values:name. -
esxi.instances[].resource_filters[].resourceType:string. Required. The resource type the filter applies to. Allowed values:vm,host,cluster,datastore,datacenter. -
esxi.instances[].resource_filters[].typeType:string. Optional. Default:include. Whether a match collects the object (include) or drops it (exclude). Allowed values:include,exclude. -
esxi.instances[].tagsType:array of string. Optional. Default:[]. Extra resource attributes inkey:valueformat to add to every time series and event from this endpoint, on top of the collector-wideresource_attributes:product:billingadds the attributeproductwith the valuebilling. A value may itself contain colons; an entry without a colon is ignored; a repeated key keeps its last value; a tag never replaces an attribute the integration sets itself. -
esxi.instances[].tlsType:object. Optional. TLS settings for the connection to this endpoint. vCenter and ESXi typically use certificates signed by the VMware Certificate Authority. Setca_fileto that authority’s root certificate, or setinsecure_skip_verifytotrueto disable certificate verification. By default, the Collector verifies the server certificate against the system certificate authorities. -
esxi.instances[].tls.ca_fileType:string. Optional. Path to a PEM-encoded certificate authority (CA) certificate file used to verify the vSphere server certificate. If omitted, the Collector uses the system certificate authority pool. -
esxi.instances[].tls.ca_pemType:string. Optional. PEM-encoded certificate authority certificate content used to verify the vSphere server certificate. -
esxi.instances[].tls.cert_fileType:string. Optional. Path to the PEM-encoded client certificate file to present when the vSphere endpoint requires mutual TLS authentication. -
esxi.instances[].tls.cert_pemType:string. Optional. PEM-encoded client certificate content to present when the vSphere endpoint requires mutual TLS authentication. -
esxi.instances[].tls.cipher_suitesType:array of string. Optional. TLS cipher suites that the Collector can use, in preference order. If omitted, the Collector uses the secure defaults from the Go TLS library. For supported names, see https://go.dev/src/crypto/tls/cipher_suites.go. -
esxi.instances[].tls.curve_preferencesType:array of string. Optional. Elliptic curves that the Collector can use for an elliptic curve Diffie-Hellman ephemeral handshake, in preference order. If omitted, the Collector uses the Go TLS library defaults. -
esxi.instances[].tls.include_system_ca_certs_poolType:boolean. Optional. Whether to add certificates from the system certificate authority pool to the configured certificate authorities. If true, the Collector trusts both sources. If false, the Collector trusts only the configured certificate authorities. -
esxi.instances[].tls.insecureType:boolean. Optional. Whether to disable transport security. If true, the Collector uses an unencrypted connection. If false, the Collector uses TLS. -
esxi.instances[].tls.insecure_skip_verifyType:boolean. Optional. Whether to skip verification of the vSphere server certificate. If true, the connection is encrypted but isn’t authenticated and is vulnerable to man-in-the-middle attacks. If false, the Collector verifies the certificate. -
esxi.instances[].tls.key_fileType:string. Optional. Path to the PEM-encoded client private key file used withcert_filefor mutual TLS authentication. -
esxi.instances[].tls.key_pemType:string. Optional. PEM-encoded client private key content used withcert_pemfor mutual TLS authentication. -
esxi.instances[].tls.max_versionType:string. Optional. Maximum TLS protocol version the Collector can use. If omitted, the Collector uses the maximum version supported by the Go TLS library. -
esxi.instances[].tls.min_versionType:string. Optional. Minimum TLS protocol version the Collector can use. If omitted, the minimum version is TLS 1.2. -
esxi.instances[].tls.reload_intervalType:duration. Optional. How often the Collector reloads certificate and key files. If omitted, the Collector doesn’t reload the files. -
esxi.instances[].tls.server_name_overrideType:string. Optional. Server name to verify in the vSphere certificate instead of the endpoint hostname. Use this setting when the certificate name differs from the endpoint hostname. -
esxi.instances[].tls.tpmType:object. Optional. Trusted platform module settings for the TLS private key. -
esxi.instances[].tls.tpm.authType:string. Optional. Authorization value for the trusted platform module key. -
esxi.instances[].tls.tpm.enabledType:boolean. Optional. Whether to use a trusted platform module for the TLS private key. If true, the Collector loads the key from the configured device or socket. If false, the Collector uses the configured key file or in-memory key. -
esxi.instances[].tls.tpm.owner_authType:string. Optional. Owner authorization value for the trusted platform module. -
esxi.instances[].tls.tpm.pathType:string. Optional. Path to the trusted platform module device or Unix domain socket, such as/dev/tpm0or/dev/tpmrm0. -
esxi.instances[].usernameType:string. Required. vSphere user for connecting to this endpoint. A read-only role on the vCenter Server or ESXi host is sufficient.