master
md 218 lines 26 KB
Rendered Raw
1 # vSphere Collector Parity Matrix
2
3 Status: draft baseline from the vSphere V2 migration in PR #22458 /
4 commit `18991fd4e`.
5
6 Purpose: normalize LogicMonitor, Datadog, and mirrored open-source vSphere
7 coverage into Netdata implementation groups. Every row is classified; there are
8 no `unknown` rows.
9
10 Classification values:
11
12 - `existing-default`: current Netdata vSphere collector already collects it by
13 default.
14 - `new-default`: safe additive object-level metric group planned for default
15 collection in this SOW.
16 - `opt-in`: implement only behind explicit config selectors/limits because of
17 cardinality, cost, sensitivity, or reviewer scope.
18 - `covered-elsewhere`: Netdata already has another collector/surface for it.
19 - `follow-up`: valid requirement, but belongs to another ingestion path or SOW.
20 - `non-metric-surface`: valid parity surface, but must be implemented through
21 topology output or Functions, not as metric labels.
22 - `out-of-scope-pr`: valid parity surface intentionally excluded from this PR by
23 user decision.
24 - `excluded`: intentionally not supported by default because it conflicts with
25 product direction or would duplicate a better Netdata source.
26
27 ## Source Evidence
28
29 Official docs checked on 2026-05-08:
30
31 - LogicMonitor VMware vSphere Monitoring:
32 `https://www.logicmonitor.com/support/vmware-vsphere-monitoring`
33 - Datadog vSphere integration:
34 `https://docs.datadoghq.com/integrations/vsphere/`
35 - Broadcom vSphere Web Services API:
36 - `VirtualMachineSnapshotInfo`
37 - `VirtualMachineSnapshotTree`
38 - `DatastoreSummary`
39 - `PerformanceManager`
40 - `VirtualDisk`
41 - `VirtualEthernetCard`
42 - `StoragePod`
43 - `Network`
44 - `NetworkSummary`
45 - `DistributedVirtualPortgroup`
46 - `HostHostBusAdapter`
47 - `HostScsiDisk`
48 - `HostMultipathInfo`
49 - CPU, network, disk, virtual disk, storage adapter, storage path, and power
50 performance-counter pages
51 - Broadcom vSphere Automation API:
52 - `Cis Tagging Tag Association`
53 - Broadcom vSAN Management API:
54 - API overview, managed objects, endpoints, and `VsanPerformanceManager`
55
56 Mirrored repository evidence:
57
58 Note: local mirrored repositories are shallow clones. Evidence below is
59 snapshot-only evidence from the checked HEAD commit; it supports current-source
60 parity comparisons, not history/blame/timeline conclusions.
61
62 - `DataDog/integrations-core @ 1befb9012c44152b0aedfb17142041bcc9c1dc61`
63 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:91`
64 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:115`
65 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:175`
66 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:262`
67 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:326`
68 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:375`
69 - `vsphere/datadog_checks/vsphere/data/conf.yaml.example:386`
70 - `vsphere/datadog_checks/vsphere/metrics.py:74`
71 - `vsphere/datadog_checks/vsphere/metrics.py:211`
72 - `vsphere/datadog_checks/vsphere/metrics.py:413`
73 - `vsphere/datadog_checks/vsphere/metrics.py:497`
74 - `influxdata/telegraf @ 5a1147f1bb725ff8fd483ea55045506aa70db191`
75 - `plugins/inputs/vsphere/README.md:43`
76 - `plugins/inputs/vsphere/README.md:86`
77 - `plugins/inputs/vsphere/README.md:145`
78 - `plugins/inputs/vsphere/README.md:173`
79 - `plugins/inputs/vsphere/README.md:187`
80 - `plugins/inputs/vsphere/README.md:213`
81 - `plugins/inputs/vsphere/vsphere.go:23`
82 - `plugins/inputs/vsphere/vsphere.go:153`
83 - `plugins/inputs/vsphere/vsan.go:41`
84 - `plugins/inputs/vsphere/vsan.go:115`
85 - `plugins/inputs/vsphere/vsan.go:201`
86 - `grafana/vmware_exporter @ 3edc42190c6709567c0465304525f42ead2ac550`
87 - `vsphere/test_metrics.txt:1`
88 - `vsphere/test_metrics.txt:72`
89 - `vsphere/test_metrics.txt:80`
90 - `elastic/beats @ 7bbe8ee6dcfbf416c53ceb7725909d37a499846c`
91 - `metricbeat/module/vsphere/virtualmachine/virtualmachine.go:79`
92 - `metricbeat/module/vsphere/virtualmachine/virtualmachine.go:169`
93 - `metricbeat/module/vsphere/virtualmachine/data.go:75`
94 - `metricbeat/module/vsphere/datastorecluster/datastorecluster.go:46`
95 - `metricbeat/module/vsphere/network/network.go`
96 - `zabbix/zabbix @ bbf78e24c09c90ed9d18f1570b4fd2618981d72f`
97 - `templates/app/vmware/template_app_vmware.yaml:1132`
98 - `templates/app/vmware/template_app_vmware.yaml:1498`
99 - `templates/app/vmware/template_app_vmware.yaml:1532`
100 - `templates/app/vmware/template_app_vmware.yaml:1600`
101 - `templates/app/vmware/template_app_vmware.yaml:1633`
102 - `templates/app/vmware/template_app_vmware.yaml:1703`
103 - `templates/app/vmware/template_app_vmware.yaml:1778`
104 - `templates/app/vmware/template_app_vmware.yaml:4162`
105 - `templates/app/vmware/template_app_vmware.yaml:4418`
106 - `newrelic/nri-vsphere @ 9366fcd3d597ae0712c94882331042d74fe38e22`
107 - `README.md:8`
108 - `README.md:26`
109 - `README.md:30`
110 - `README.md:42`
111 - `internal/collect/vms.go:21`
112 - `internal/collect/vms.go:22`
113 - `internal/collect/networks.go:14`
114 - `internal/collect/networks.go:37`
115 - `internal/process/datacenter.go:104`
116 - `internal/process/hosts.go:95`
117 - `internal/process/vms.go:113`
118 - `vsphere-performance.metrics:22`
119 - `vsphere-performance.metrics:140`
120 - `test-data/README.md:1`
121 - `open-telemetry/opentelemetry-collector-contrib @ 34ed18e037dc63e41c4b4a8356d2a13d55c768f4`
122 - `receiver/vcenterreceiver/metadata.yaml:25`
123 - `receiver/vcenterreceiver/metadata.yaml:75`
124 - `receiver/vcenterreceiver/metadata.yaml:276`
125 - `receiver/vcenterreceiver/metadata.yaml:434`
126 - `receiver/vcenterreceiver/metadata.yaml:491`
127 - `receiver/vcenterreceiver/metadata.yaml:689`
128 - `receiver/vcenterreceiver/metadata.yaml:791`
129 - `receiver/vcenterreceiver/resources.go:102`
130 - `receiver/vcenterreceiver/internal/mockserver/README.md:1`
131 - `receiver/vcenterreceiver/internal/mockserver/responses/cluster-vsan.xml`
132 - `grafana/alloy @ c1b740cd7fc7d2b521304ee15c9c9f61d0d5ceb0`
133 - `internal/component/otelcol/receiver/vcenter`
134
135 ## Matrix
136
137 | ID | Surface | Main sources | Netdata target | Classification | Default policy and implementation requirements |
138 |---|---|---|---|---|---|
139 | P01 | VM aggregate CPU, memory, swap, disk IO, disk max latency, network traffic, packets, drops, overall alarm status, uptime | Current Netdata; LogicMonitor VM performance; Datadog VM metrics; Telegraf VM metrics | Existing contexts `vsphere.vm_*` in `vsphere-v1-compatibility-manifest.md` | `existing-default` | Preserve contexts, dimensions, labels, units, and sample keys exactly. Chart IDs intentionally change under framework V2 by user decision on 2026-05-08. Empty VM performance scrape results warn and continue with VM property/status metrics and later resource surfaces. |
140 | P02 | ESXi host aggregate CPU, memory, swap, disk IO, disk max latency, network traffic, packets, drops, errors, overall alarm status, uptime | Current Netdata; LogicMonitor host performance; Datadog host metrics; Telegraf host metrics | Existing contexts `vsphere.host_*` | `existing-default` | Preserve current default collection. Empty host performance scrape results warn and continue with host property/status metrics and later resource surfaces. |
141 | P03 | Datastore aggregate capacity/free/used/used percent, overall status, IO throughput, IOPS, latency | Current Netdata; LogicMonitor datastore usage/status/throughput; Datadog datastore metrics; Telegraf datastore metrics | Existing contexts `vsphere.datastore_*` | `existing-default` | Preserve datastore accessibility guard: capacity/free/used are trusted only when accessible. |
142 | P04 | Cluster host count, CPU/memory capacity, CPU topology, DRS/HA enabled, overall status, vMotions, DRS score/balance, VM count, DRS usage summary, aggregate performance, VM operation counters | Current Netdata; LogicMonitor clusters; Datadog cluster metrics; Telegraf cluster metrics; Grafana exporter cluster metrics | Existing contexts `vsphere.cluster_*` | `existing-default` | Preserve property-vs-perf two-phase lifecycle. |
143 | P05 | Resource pool CPU/memory usage, entitlement, allocation, memory breakdown, config, overall status | Current Netdata; LogicMonitor resource pools; Telegraf resource pools | Existing contexts `vsphere.resource_pool_*` | `existing-default` | Preserve current resource-pool property refresh behavior and labels. |
144 | P06 | VM snapshot aggregate count, maximum snapshot age, maximum chain depth | User requirement; LogicMonitor VM snapshots; Zabbix snapshot count/latest date; Elastic snapshot info; New Relic optional snapshots; Broadcom snapshot API | Implemented contexts: `vsphere.vm_snapshot_count`, `vsphere.vm_snapshot_max_age`, `vsphere.vm_snapshot_max_chain_depth` with labels `id`, `datacenter`, `cluster`, `host`, `vm` | `new-default` | Object-level per VM. Emits zero for VMs with no snapshots. Does not emit snapshot name/description/ID labels by default. Unit: snapshots, seconds, snapshots. Tests: empty, sibling, nested, zero create time, old create time. |
145 | P07 | VM snapshot health alerts | User requirement; LogicMonitor/Zabbix snapshot alerting surfaces | Implemented health templates on `vsphere.vm_snapshot_max_chain_depth` and `vsphere.vm_snapshot_max_age` | `new-default` | Warn when chain depth > 3. Critical when max age > 24h. Alert docs and metadata added with the metrics. |
146 | P08 | Datastore `accessible`, `maintenanceMode`, `uncommitted`, `multipleHostAccess` | Broadcom `DatastoreSummary`; Datadog datastore properties; LogicMonitor datastore status/usage | Implemented contexts: `vsphere.datastore_accessibility_status`, `vsphere.datastore_maintenance_status`, `vsphere.datastore_multiple_host_access`; existing `vsphere.datastore_space_usage` adds `uncommitted` | `new-default` | Object-level per datastore. Preserves capacity/free/uncommitted guard: values are emitted as zero when inaccessible. Maintenance and multi-host access are state-set charts with `unknown` for omitted API values. Initial discovery now keeps inaccessible datastores as status-only resources and datastore perf scraping skips inaccessible datastores. |
147 | P09 | VM power state, connection state, VMware tools running/version status, disk consolidation-needed status, configured CPU/memory/disk/NIC counts, aggregate storage usage, guest OS name | LogicMonitor VM status; Datadog property metrics; Zabbix tools/status; Elastic VM summary | Implemented contexts: `vsphere.vm_power_state`, `vsphere.vm_connection_state`, `vsphere.vm_tools_running_status`, `vsphere.vm_tools_version_status`, `vsphere.vm_consolidation_needed`, `vsphere.vm_config_cpu`, `vsphere.vm_config_memory`, `vsphere.vm_config_devices`, `vsphere.vm_storage_usage` | `new-default` | Object-level per VM. VMs returned by vSphere and kept by include selectors are discovered regardless of power state. Non-powered-on VMs are property/status/snapshot-only; real-time performance scraping skips them. No guest hostname/IP labels by default. Tools and connection values are bounded state-set dimensions. Guest OS name remains a non-default label/property candidate because it is a free-form string. |
148 | P10 | Host connection state, power state, maintenance mode | LogicMonitor host status; Datadog property metrics | Implemented contexts: `vsphere.host_power_state`, `vsphere.host_connection_state`, `vsphere.host_maintenance_status` | `new-default` | Object-level per host. Hosts returned by vSphere and kept by include selectors are discovered regardless of power state. Non-powered-on hosts are property/status-only; real-time performance scraping skips them. Collector-generated ESXi vnode routing is excluded from this PR. |
149 | P11 | Cluster DRS mode/vMotion rate and HA details beyond current enabled/admission-control booleans | Datadog property metrics; LogicMonitor HA/admission control | Implemented contexts: existing `vsphere.cluster_drs_config`, `vsphere.cluster_ha_config`; additive `vsphere.cluster_drs_mode`, `vsphere.cluster_drs_vmotion_rate`, `vsphere.cluster_ha_host_monitoring`, `vsphere.cluster_ha_vm_monitoring`, `vsphere.cluster_ha_vm_component_protection` | `new-default` | Object-level per cluster. Uses bounded state-set dimensions plus a numeric vMotion recommendation threshold. Does not expose free-form cluster config strings as labels. |
150 | P12 | Datacenter object counts and inventory counts | LogicMonitor object count/info; Datadog datacenter metrics; Telegraf datacenter controls | Implemented context: `vsphere.inventory_objects` with datacenters, folders, clusters, hosts, VMs, datastores, and resource-pool dimensions after include filters are applied | `new-default` | Job-level aggregate metric, not a mandatory vCenter vnode. V2 uses only the static `id=inventory` instance label. |
151 | P13 | Datastore clusters / storage pods capacity and usage | LogicMonitor datastore clusters; Broadcom `StoragePod`; Elastic datastorecluster module | Implemented optional contexts: `vsphere.datastore_cluster_space_utilization`, `vsphere.datastore_cluster_space_usage`, `vsphere.datastore_cluster_storage_drs_status` | `opt-in` | Default off. Enable with `collect_datastore_clusters`. `datastore_cluster_include` matches `/Datacenter/DatastoreCluster`, name, or managed object ID. Labels: `id`, `datacenter`, `datastore_cluster`. |
152 | P14 | VM virtual disk capacity by disk/device | LogicMonitor VM disk capacity; Broadcom `VirtualDisk`; Zabbix VM storage; Datadog property/perf metrics; 2026-05-22 user decision | No per-virtual-disk capacity metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision. Existing aggregate VM disk I/O and max-latency contexts remain default-on. Reintroduce per-disk capacity only through a focused PR with a clear need and config contract. |
153 | P15 | VM virtual disk performance by disk/device | Broadcom disk I/O counter docs; Datadog per-instance `virtualDisk.*`; Telegraf `virtualDisk.*`; OTel VM disk metrics; New Relic performance levels; 2026-05-22 user decision | No per-virtual-disk performance metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision. Existing aggregate VM disk I/O and max-latency contexts remain default-on. Reintroduce per-disk performance only through a focused PR with a clear need and config contract. |
154 | P16 | VM network interface throughput/packets/errors/drops by NIC | Broadcom latest network counters; Datadog per-instance VM `net.*`; Telegraf VM instance metrics; OTel VM vNIC metrics; LogicMonitor VM interface; 2026-05-22 user decision | No per-VM-network-interface metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision. Existing aggregate VM network traffic, packets, and drops contexts remain default-on. Reintroduce per-vNIC performance only through a focused PR with a clear need and config contract. |
155 | P17 | Host physical NIC metrics by NIC | Broadcom latest network counters; LogicMonitor ESXi network interfaces; Telegraf host instances; Datadog per-instance host metrics; OTel host pNIC metrics; 2026-05-22 user decision | No per-host-physical-NIC metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision because it is a high-cardinality host child-instance surface. Existing aggregate ESXi host network metrics remain default-on. Reintroduce per-pNIC performance only through a focused PR with a clear need and config contract. |
156 | P18 | Host disk/LUN/device metrics by disk/device | Broadcom disk counters and `HostScsiDisk`; LogicMonitor ESXi disks; Datadog per-instance disk metrics; Telegraf host disk metrics; OTel host disk metrics; 2026-05-22 user decision | No per-host-disk/LUN/device metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision because it is a high-cardinality host child-instance surface. Existing aggregate ESXi host disk metrics remain default-on. Reintroduce per-device performance only through a focused PR with a clear need and config contract. |
157 | P19 | Host storage adapter metrics | Broadcom storage adapter counters and `HostHostBusAdapter`; Datadog/Telegraf/New Relic storageAdapter metrics; 2026-05-22 user decision | No per-host-storage-adapter metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision because it is a high-cardinality host child-instance surface. Reintroduce storage-adapter performance only through a focused PR with a clear need and config contract. |
158 | P20 | Host storage path metrics | Broadcom storage path counters and `HostMultipathInfo`; Datadog/Telegraf/New Relic storagePath metrics; 2026-05-22 user decision | No per-host-storage-path metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision because it is a high-cardinality host child-instance surface. Reintroduce storage-path performance only through a focused PR with a clear need and config contract. |
159 | P21 | Host CPU core/thread/logical processor metrics | Broadcom CPU counters; LogicMonitor logical processors; Telegraf host CPU instances; New Relic host CPU instance counters; OTel idle CPU metric; 2026-05-22 user decision | No per-host-CPU-instance metrics in this PR | `out-of-scope-pr` | Hard-removed before merge by user decision because it is a high-cardinality host child-instance surface. Existing aggregate ESXi host CPU metrics remain default-on. Reintroduce per-CPU-instance performance only through a focused PR with a clear need and config contract. |
160 | P22 | Host and VM power/energy counters | Broadcom power counters; LogicMonitor ESXi power; Datadog/Telegraf/New Relic power counters; 2026-05-22 user decision | Implemented contexts: `vsphere.host_power_usage`, `vsphere.host_power_capacity_usage`, `vsphere.host_power_capacity_utilization`, `vsphere.host_energy_usage`, `vsphere.vm_power_usage`, `vsphere.vm_energy_usage` | `implemented` | `collect_power_metrics` was removed before merge by user decision. The collector requests aggregate vSphere `power.*` counters with empty instance for discovered powered-on hosts and VMs when vSphere exposes those counters. No child selector is added because this emits one aggregate set per included host/VM. Host labels: `id`, `datacenter`, `cluster`, `host`, plus opt-in enrichment labels. VM labels: `id`, `datacenter`, `cluster`, `host`, `vm`, plus opt-in enrichment labels. |
161 | P23 | Hardware health sensors: fans, power, storage, memory, processor, system sensors | LogicMonitor ESXi hardware/system sensors; SNMP `vmware-esx` profile | SNMP profile `vmware-esx`; optional future direct vSphere/CIM metrics | `covered-elsewhere` | Do not duplicate by default. vSphere docs point users to `snmp` with `vmware-esx`; if direct API sensors are added later, make opt-in and map against SNMP coverage. |
162 | P24 | ESXi HBA/environment/hardware health via SNMP | Netdata SNMP `vmware-esx` overlap | SNMP `vmware-esx` profile | `covered-elsewhere` | vSphere docs mention this as complementary per-host monitoring. |
163 | P25 | vCenter Server Appliance CPU, memory, disk, filesystem, services, health, VCHA, backup | LogicMonitor VCSA modules | Netdata `vcsa` collector | `covered-elsewhere` | Keep out of this vSphere collector. vSphere docs point users to `vcsa` for appliance health. |
164 | P26 | vSAN cluster, host, and VM capacity/performance/health/events | Broadcom vSAN Management API; Datadog vSAN metrics/events; Telegraf vSAN controls; OTel vSAN metrics/fixtures | Implemented opt-in contexts: `vsphere.vsan_cluster_space_usage`, `vsphere.vsan_cluster_space_utilization`, `vsphere.vsan_cluster_health_status`, `vsphere.vsan_cluster_operations`, `vsphere.vsan_cluster_throughput`, `vsphere.vsan_cluster_latency`, `vsphere.vsan_cluster_congestions`, `vsphere.vsan_host_operations`, `vsphere.vsan_host_throughput`, `vsphere.vsan_host_latency`, `vsphere.vsan_host_congestions`, `vsphere.vsan_host_cache_hit_rate`, `vsphere.vsan_vm_operations`, `vsphere.vsan_vm_throughput`, `vsphere.vsan_vm_latency` | `opt-in` | Default off. Enable with `collect_vsan`. Uses vSAN Management API only for vSAN-enabled clusters that pass `vsan_cluster_include`; host and VM vSAN performance entities pass `vsan_host_include` and `vsan_vm_include`. Emits cluster space/health and the OTel/Datadog common cluster/host/VM vSAN performance subset. vSAN events are excluded with P27. Deeper vSAN disk-group, disk, component, CMMDS, and all Telegraf entity-type metrics remain a residual parity gap because they need explicit Netdata NIDL/context mapping and bounded config policy before implementation. |
165 | P27 | vCenter and ESXi events, alarms, event filters | Datadog events; LogicMonitor LogSources; New Relic optional events | Future logs/events ingestion, likely OTEL/log path | `out-of-scope-pr` | User decision 2026-05-08: do not implement events in this PR. Do not overload metric collector. |
166 | P28 | vSphere tags and custom attributes as labels | Broadcom Tag Association API and CustomFieldsManager; Datadog tags/attributes; Telegraf custom attributes; Elastic custom fields; New Relic tags | Implemented opt-in labels `vsphere_tag_<sanitized_category>` and `vsphere_custom_attribute_<sanitized_name>` | `opt-in` | Default off. `tag_categories` allowlists vSphere tag categories with one glob pattern per YAML list item; multiple tags in one category are sorted and joined with the pipe character. `custom_attributes` allowlists custom attributes with one glob pattern per YAML list item. Discovery fails open with warnings if tag/custom-attribute APIs are unavailable. |
167 | P29 | Inventory paths, folder lineage, guest hostnames, guest IPs, MAC/IQN/WWN ERI-like identity | LogicMonitor topology/ERI/netscan; Datadog filters; Telegraf IP addresses; OTel inventory-path resource attributes; Broadcom guest/device/storage objects | No metric labels implemented in this PR | `out-of-scope-pr` | User decision 2026-05-20: remove inventory-path and VM guest hostname/IP/OS labels before merge. Remaining MAC/IQN/WWN/device identity also remains out of scope because these are sensitive multi-value identity surfaces that need a separate product decision and bounded policy. |
168 | P30 | Topology edges: cluster, datastore, network, VM topology | LogicMonitor topology sources; Elastic network/datastorecluster modules; OTel resource model; New Relic object fixtures; Netdata Function topology schema and SNMP topology pattern | Implemented public `topology:vsphere` cached Function alias with required job selector | `non-metric-surface` | Uses cached discovery state and emits topology actors/links, not metric labels. Default inventory topology includes datacenters, clusters, hosts, VMs, datastores, datastore clusters, and resource pools. Network actors and host/VM network links are included only when `collect_network_topology` is enabled. Canonical framework registration is also available as `vsphere:topology:vsphere`; topology consumers should use `topology:vsphere`. |
169 | P31 | Network and distributed virtual port group status | LogicMonitor network state; Elastic network module; New Relic network object fixtures; Broadcom `NetworkSummary.accessible`; Broadcom `DistributedVirtualPortgroup` | Implemented opt-in cached topology actors through `collect_network_topology` | `non-metric-surface` | Default off to avoid extra vCenter discovery calls for existing users. When enabled, discovers vSphere `Network` objects, including distributed virtual port groups returned by the Network view, and exposes cached `accessible`, `overall_status`, type, host count, VM count, and host/VM links in the topology Function. Does not create charts, metrics, or free-form network path labels. |
170 | P32 | Troubleshooter and permission/readiness checks | LogicMonitor troubleshooter; Datadog service checks; Netdata Function table schema | Implemented `vsphere:readiness` cached Function with required job selector | `non-metric-surface` | Read-only cached Function reporting target/credential presence, initialized client/discovery/performance-counter state, inventory counts, optional metric/label gates, network topology gate, and cached vSAN counts. It does not expose configured URL/credentials and does not issue extra vCenter API calls. Live permission probes remain intentionally absent from this PR. |
171 | P33 | VM vnodes | User discussion; Netdata agent-on-VM duplication risk; V2 host-scope spec; 2026-05-20 review decision | No collector-generated VM vnodes in this PR | `out-of-scope-pr` | Hard-removed before merge. Reintroduce only through a focused PR with stable VM identity, lifecycle, docs, and duplicate-node policy. |
172 | P34 | ESXi vnodes | User decision; V2 host-scope spec; 2026-05-20 review decision | No collector-generated ESXi vnodes in this PR | `out-of-scope-pr` | Hard-removed before merge. Reintroduce only through a focused PR with stable ESXi identity and lifecycle policy. |
173 | P35 | Datastore vnodes | User decision and cardinality/identity review | No datastore vnodes in this SOW | `excluded` | Keep datastores as metric instances, not nodes. Revisit only with product decision. |
174 | P36 | TKG/Kubernetes workload metrics inside vSphere VMs | Datadog TKG note; Netdata Kubernetes collectors/agents | Netdata Agent and Kubernetes collectors inside guest/cluster | `covered-elsewhere` | Do not collect container/pod/node workload metrics through vSphere. |
175
176 ## Implementation Gates Derived From Matrix
177
178 Before framework v2 migration:
179
180 - Preserve all `existing-default` rows through the compatibility manifest.
181 - Add no `new-default` row until the v2 migration passes the manifest.
182
183 For `new-default` rows:
184
185 - Add one resource type per context.
186 - Use only stable state dimensions and numeric dimensions.
187 - Do not add sensitive labels by default.
188 - Add docs, metadata, config schema, stock config, and health alert updates in
189 the same commit group.
190
191 For `opt-in` rows:
192
193 - Each row needs a config knob and selector/allowlist when the surface can
194 emit child-instance or user-defined labels. User decision on 2026-05-20
195 removed all `max_*` knobs from this collector; selectors and allowlists are
196 the controls for optional resource instances and user-defined labels.
197 - Default must be off.
198 - Tests must cover both disabled and enabled behavior.
199
200 For `covered-elsewhere` rows:
201
202 - Update vSphere docs to explain the complementary collector.
203 - Do not duplicate default data unless a later SOW records a product decision.
204
205 For `follow-up` rows:
206
207 - No remaining row should use `follow-up` in this PR unless the user explicitly
208 asks to split it again.
209
210 For `non-metric-surface` rows:
211
212 - Implement through topology output or Functions only.
213 - Do not add topology/resource identity as metric labels unless that label is
214 separately covered by an opt-in label-enrichment row.
215
216 For `out-of-scope-pr` rows:
217
218 - Record the user decision and do not implement in this PR.