| 1 | { |
| 2 | "jsonSchema": { |
| 3 | "$schema": "http://json-schema.org/draft-07/schema#", |
| 4 | "title": "VMware vCenter Server collector configuration.", |
| 5 | "type": "object", |
| 6 | "properties": { |
| 7 | "update_every": { |
| 8 | "title": "Update every", |
| 9 | "description": "Data collection interval, measured in seconds.", |
| 10 | "type": "integer", |
| 11 | "minimum": 1, |
| 12 | "default": 20 |
| 13 | }, |
| 14 | "autodetection_retry": { |
| 15 | "title": "Detection retry", |
| 16 | "description": "Recheck interval in seconds. Zero means no recheck will be scheduled.", |
| 17 | "type": "integer", |
| 18 | "minimum": 0, |
| 19 | "default": 60 |
| 20 | }, |
| 21 | "url": { |
| 22 | "title": "URL", |
| 23 | "description": "The base URL of the VMware vCenter Server.", |
| 24 | "type": "string", |
| 25 | "format": "uri" |
| 26 | }, |
| 27 | "timeout": { |
| 28 | "title": "Timeout", |
| 29 | "description": "The timeout in seconds for the HTTP request.", |
| 30 | "type": "number", |
| 31 | "minimum": 0.5, |
| 32 | "default": 20 |
| 33 | }, |
| 34 | "discovery_interval": { |
| 35 | "title": "Discovery interval", |
| 36 | "description": "Hosts, VMs, datastores, clusters, and resource pools discovery interval in seconds.", |
| 37 | "type": "number", |
| 38 | "minimum": 60, |
| 39 | "default": 300 |
| 40 | }, |
| 41 | "tag_categories": { |
| 42 | "title": "vSphere tag categories", |
| 43 | "description": "Optional glob-pattern allowlist of vSphere tag category names to expose as chart labels. Each list item is one pattern, so names with spaces are supported. Disabled by default because tags are user-defined metadata and can expose internal names. Use \"*\" only when all tag categories are intentional. Label keys are vsphere_tag_<sanitized_category>; multiple tags in the same category are sorted and joined with \"|\".", |
| 44 | "type": [ |
| 45 | "array", |
| 46 | "null" |
| 47 | ], |
| 48 | "uniqueItems": true, |
| 49 | "items": { |
| 50 | "title": "vSphere tag category", |
| 51 | "type": "string", |
| 52 | "default": "Environment" |
| 53 | }, |
| 54 | "default": [] |
| 55 | }, |
| 56 | "custom_attributes": { |
| 57 | "title": "vSphere custom attributes", |
| 58 | "description": "Optional glob-pattern allowlist of vSphere custom attribute names to expose as chart labels. Each list item is one pattern, so names with spaces are supported. Disabled by default because custom attributes are user-defined metadata and can expose internal names, ownership data, or secrets stored by administrators. Custom attribute values are sent verbatim as labels; never enable patterns that can match secret values. Use \"*\" only when all custom attributes are intentional. Label keys are vsphere_custom_attribute_<sanitized_name>.", |
| 59 | "type": [ |
| 60 | "array", |
| 61 | "null" |
| 62 | ], |
| 63 | "uniqueItems": true, |
| 64 | "items": { |
| 65 | "title": "vSphere custom attribute", |
| 66 | "type": "string", |
| 67 | "default": "Owner" |
| 68 | }, |
| 69 | "default": [] |
| 70 | }, |
| 71 | "collect_datastore_clusters": { |
| 72 | "title": "Collect datastore clusters", |
| 73 | "description": "If enabled, collects aggregate capacity and Storage DRS status for datastore clusters (StoragePod objects). Disabled by default because it adds another discovered resource class.", |
| 74 | "type": "boolean", |
| 75 | "default": false |
| 76 | }, |
| 77 | "datastore_cluster_include": { |
| 78 | "title": "Datastore cluster selector", |
| 79 | "description": "Simple-pattern allowlist for discovered datastore clusters when collect_datastore_clusters is enabled. Matching datastore clusters are included in metrics, labels, cached discovery state, and topology. Patterns match /Datacenter/DatastoreCluster, the datastore cluster name, or the vSphere managed object ID.", |
| 80 | "type": [ |
| 81 | "array", |
| 82 | "null" |
| 83 | ], |
| 84 | "uniqueItems": true, |
| 85 | "items": { |
| 86 | "title": "Datastore cluster selector", |
| 87 | "type": "string", |
| 88 | "default": "/*" |
| 89 | }, |
| 90 | "default": [ |
| 91 | "/*" |
| 92 | ] |
| 93 | }, |
| 94 | "collect_vsan": { |
| 95 | "title": "Collect vSAN metrics", |
| 96 | "description": "If enabled, collects vSAN cluster capacity, vSAN cluster health, and vSAN cluster, host, and VM performance metrics through the vSAN Management API. Disabled by default because it requires vSAN APIs and the vSAN Performance Service, and adds additional vCenter queries. Use the vSAN selectors to choose the concrete vSAN performance entity refs queried.", |
| 97 | "type": "boolean", |
| 98 | "default": false |
| 99 | }, |
| 100 | "vsan_cluster_include": { |
| 101 | "title": "vSAN cluster selector", |
| 102 | "description": "Simple-pattern allowlist for vSAN clusters when collect_vsan is enabled. Patterns match /Datacenter/Cluster, the cluster name, the vSphere managed object ID, or vsan_uuid:<uuid>.", |
| 103 | "type": [ |
| 104 | "array", |
| 105 | "null" |
| 106 | ], |
| 107 | "uniqueItems": true, |
| 108 | "items": { |
| 109 | "title": "vSAN cluster selector", |
| 110 | "type": "string", |
| 111 | "default": "/*" |
| 112 | }, |
| 113 | "default": [ |
| 114 | "/*" |
| 115 | ] |
| 116 | }, |
| 117 | "vsan_host_include": { |
| 118 | "title": "vSAN host selector", |
| 119 | "description": "Simple-pattern allowlist for vSAN host performance entities when collect_vsan is enabled. Patterns match /Datacenter/Cluster/Host, the host name, the vSphere managed object ID, or vsan_node_uuid:<uuid>.", |
| 120 | "type": [ |
| 121 | "array", |
| 122 | "null" |
| 123 | ], |
| 124 | "uniqueItems": true, |
| 125 | "items": { |
| 126 | "title": "vSAN host selector", |
| 127 | "type": "string", |
| 128 | "default": "/*" |
| 129 | }, |
| 130 | "default": [ |
| 131 | "/*" |
| 132 | ] |
| 133 | }, |
| 134 | "vsan_vm_include": { |
| 135 | "title": "vSAN VM selector", |
| 136 | "description": "Simple-pattern allowlist for vSAN VM performance entities when collect_vsan is enabled. Patterns match /Datacenter/Cluster/Host/VM, the VM name, the vSphere managed object ID, or instance_uuid:<uuid>.", |
| 137 | "type": [ |
| 138 | "array", |
| 139 | "null" |
| 140 | ], |
| 141 | "uniqueItems": true, |
| 142 | "items": { |
| 143 | "title": "vSAN VM selector", |
| 144 | "type": "string", |
| 145 | "default": "/*" |
| 146 | }, |
| 147 | "default": [ |
| 148 | "/*" |
| 149 | ] |
| 150 | }, |
| 151 | "collect_network_topology": { |
| 152 | "title": "Collect network topology", |
| 153 | "description": "If enabled, discovers vSphere Network and Distributed Virtual Port Group objects for the cached vSphere Topology function. Disabled by default to avoid extra vCenter discovery calls for existing users.", |
| 154 | "type": "boolean", |
| 155 | "default": false |
| 156 | }, |
| 157 | "not_follow_redirects": { |
| 158 | "title": "Not follow redirects", |
| 159 | "description": "If set, the client will not follow HTTP redirects automatically.", |
| 160 | "type": "boolean" |
| 161 | }, |
| 162 | "vnode": { |
| 163 | "title": "Vnode", |
| 164 | "description": "Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes).", |
| 165 | "type": "string" |
| 166 | }, |
| 167 | "host_include": { |
| 168 | "title": "Host selectors", |
| 169 | "description": "Configuration for monitoring specific hosts. The selector format follows the pattern `/Datacenter/Cluster/Host`, where each value can be set using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme).", |
| 170 | "type": [ |
| 171 | "array", |
| 172 | "null" |
| 173 | ], |
| 174 | "uniqueItems": true, |
| 175 | "items": { |
| 176 | "title": "Host selector", |
| 177 | "description": "", |
| 178 | "type": "string", |
| 179 | "default": "/*", |
| 180 | "pattern": "^/" |
| 181 | }, |
| 182 | "default": [ |
| 183 | "/*" |
| 184 | ] |
| 185 | }, |
| 186 | "vm_include": { |
| 187 | "title": "Virtual machine selectors", |
| 188 | "description": "Configuration for monitoring specific virtual machines. The selector format follows the pattern `/Datacenter/Cluster/Host/VM`, where each value can be set using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme).", |
| 189 | "type": [ |
| 190 | "array", |
| 191 | "null" |
| 192 | ], |
| 193 | "uniqueItems": true, |
| 194 | "items": { |
| 195 | "title": "VM selector", |
| 196 | "description": "", |
| 197 | "type": "string", |
| 198 | "default": "/*", |
| 199 | "pattern": "^/" |
| 200 | }, |
| 201 | "default": [ |
| 202 | "/*" |
| 203 | ] |
| 204 | }, |
| 205 | "datastore_include": { |
| 206 | "title": "Datastore selectors", |
| 207 | "description": "Configuration for monitoring specific datastores. The selector format follows the pattern `/Datacenter/Datastore`, where each value can be set using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme).", |
| 208 | "type": [ |
| 209 | "array", |
| 210 | "null" |
| 211 | ], |
| 212 | "uniqueItems": true, |
| 213 | "items": { |
| 214 | "title": "Datastore selector", |
| 215 | "description": "", |
| 216 | "type": "string", |
| 217 | "default": "/*", |
| 218 | "pattern": "^/" |
| 219 | }, |
| 220 | "default": [ |
| 221 | "/*" |
| 222 | ] |
| 223 | }, |
| 224 | "cluster_include": { |
| 225 | "title": "Cluster selectors", |
| 226 | "description": "Configuration for monitoring specific clusters and their resource pools. The selector format follows the pattern `/Datacenter/Cluster`, where each value can be set using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme). Resource pools follow their owning cluster.", |
| 227 | "type": [ |
| 228 | "array", |
| 229 | "null" |
| 230 | ], |
| 231 | "uniqueItems": true, |
| 232 | "items": { |
| 233 | "title": "Cluster selector", |
| 234 | "description": "", |
| 235 | "type": "string", |
| 236 | "default": "/*", |
| 237 | "pattern": "^/" |
| 238 | }, |
| 239 | "default": [ |
| 240 | "/*" |
| 241 | ] |
| 242 | }, |
| 243 | "username": { |
| 244 | "title": "Username", |
| 245 | "description": "The username for basic authentication.", |
| 246 | "type": "string", |
| 247 | "sensitive": true |
| 248 | }, |
| 249 | "password": { |
| 250 | "title": "Password", |
| 251 | "description": "The password for basic authentication.", |
| 252 | "type": "string", |
| 253 | "sensitive": true |
| 254 | }, |
| 255 | "bearer_token_file": { |
| 256 | "title": "Bearer Token File", |
| 257 | "description": "Path to a file containing a bearer token for HTTP authentication.", |
| 258 | "type": "string" |
| 259 | }, |
| 260 | "force_http2": { |
| 261 | "title": "Force HTTP2", |
| 262 | "description": "If set, forces the use of HTTP/2 protocol for all requests, even over plain TCP (h2c).", |
| 263 | "type": "boolean" |
| 264 | }, |
| 265 | "proxy_url": { |
| 266 | "title": "Proxy URL", |
| 267 | "description": "The URL of the proxy server.", |
| 268 | "type": "string" |
| 269 | }, |
| 270 | "proxy_username": { |
| 271 | "title": "Proxy username", |
| 272 | "description": "The username for proxy authentication.", |
| 273 | "type": "string", |
| 274 | "sensitive": true |
| 275 | }, |
| 276 | "proxy_password": { |
| 277 | "title": "Proxy password", |
| 278 | "description": "The password for proxy authentication.", |
| 279 | "type": "string", |
| 280 | "sensitive": true |
| 281 | }, |
| 282 | "headers": { |
| 283 | "title": "Headers", |
| 284 | "description": "Additional HTTP headers to include in the request.", |
| 285 | "type": [ |
| 286 | "object", |
| 287 | "null" |
| 288 | ], |
| 289 | "additionalProperties": { |
| 290 | "type": "string" |
| 291 | } |
| 292 | }, |
| 293 | "tls_skip_verify": { |
| 294 | "title": "Skip TLS verification", |
| 295 | "description": "If set, TLS certificate verification will be skipped.", |
| 296 | "type": "boolean" |
| 297 | }, |
| 298 | "tls_ca": { |
| 299 | "title": "TLS CA", |
| 300 | "description": "The path to the CA certificate file for TLS verification.", |
| 301 | "type": "string", |
| 302 | "pattern": "^$|^/" |
| 303 | }, |
| 304 | "tls_cert": { |
| 305 | "title": "TLS certificate", |
| 306 | "description": "The path to the client certificate file for TLS authentication.", |
| 307 | "type": "string", |
| 308 | "pattern": "^$|^/" |
| 309 | }, |
| 310 | "tls_key": { |
| 311 | "title": "TLS key", |
| 312 | "description": "The path to the client key file for TLS authentication.", |
| 313 | "type": "string", |
| 314 | "pattern": "^$|^/" |
| 315 | }, |
| 316 | "body": { |
| 317 | "title": "Body", |
| 318 | "type": "string" |
| 319 | }, |
| 320 | "method": { |
| 321 | "title": "Method", |
| 322 | "type": "string" |
| 323 | } |
| 324 | }, |
| 325 | "required": [ |
| 326 | "url", |
| 327 | "username", |
| 328 | "password" |
| 329 | ] |
| 330 | }, |
| 331 | "uiSchema": { |
| 332 | "uiOptions": { |
| 333 | "fullPage": true |
| 334 | }, |
| 335 | "ui:flavour": "tabs", |
| 336 | "ui:options": { |
| 337 | "tabs": [ |
| 338 | { |
| 339 | "title": "Base", |
| 340 | "fields": [ |
| 341 | "update_every", |
| 342 | "autodetection_retry", |
| 343 | "url", |
| 344 | "timeout", |
| 345 | "discovery_interval", |
| 346 | "vnode" |
| 347 | ] |
| 348 | }, |
| 349 | { |
| 350 | "title": "Filters", |
| 351 | "fields": [ |
| 352 | "host_include", |
| 353 | "vm_include", |
| 354 | "datastore_include", |
| 355 | "cluster_include" |
| 356 | ] |
| 357 | }, |
| 358 | { |
| 359 | "title": "Labels", |
| 360 | "fields": [ |
| 361 | "tag_categories", |
| 362 | "custom_attributes" |
| 363 | ] |
| 364 | }, |
| 365 | { |
| 366 | "title": "Stores", |
| 367 | "fields": [ |
| 368 | "collect_datastore_clusters", |
| 369 | "datastore_cluster_include" |
| 370 | ] |
| 371 | }, |
| 372 | { |
| 373 | "title": "vSAN", |
| 374 | "fields": [ |
| 375 | "collect_vsan", |
| 376 | "vsan_cluster_include", |
| 377 | "vsan_host_include", |
| 378 | "vsan_vm_include" |
| 379 | ] |
| 380 | }, |
| 381 | { |
| 382 | "title": "Topology", |
| 383 | "fields": [ |
| 384 | "collect_network_topology" |
| 385 | ] |
| 386 | }, |
| 387 | { |
| 388 | "title": "Auth", |
| 389 | "fields": [ |
| 390 | "username", |
| 391 | "password" |
| 392 | ] |
| 393 | }, |
| 394 | { |
| 395 | "title": "TLS", |
| 396 | "fields": [ |
| 397 | "tls_skip_verify", |
| 398 | "tls_ca", |
| 399 | "tls_cert", |
| 400 | "tls_key" |
| 401 | ] |
| 402 | } |
| 403 | ] |
| 404 | }, |
| 405 | "body": { |
| 406 | "ui:widget": "hidden" |
| 407 | }, |
| 408 | "method": { |
| 409 | "ui:widget": "hidden" |
| 410 | }, |
| 411 | "bearer_token_file": { |
| 412 | "ui:help": "The token is sent in the Authorization header as `Bearer <token>`. **Takes priority over basic authentication**.", |
| 413 | "ui:widget": "hidden" |
| 414 | }, |
| 415 | "force_http2": { |
| 416 | "ui:widget": "hidden" |
| 417 | }, |
| 418 | "not_follow_redirects": { |
| 419 | "ui:widget": "hidden" |
| 420 | }, |
| 421 | "proxy_url": { |
| 422 | "ui:widget": "hidden" |
| 423 | }, |
| 424 | "proxy_username": { |
| 425 | "ui:widget": "hidden" |
| 426 | }, |
| 427 | "proxy_password": { |
| 428 | "ui:widget": "hidden" |
| 429 | }, |
| 430 | "headers": { |
| 431 | "ui:widget": "hidden" |
| 432 | }, |
| 433 | "autodetection_retry": { |
| 434 | "ui:help": "This option determines how frequently (in seconds) Netdata will retry data collection jobs that failed initially, with the value of 60 meaning it retries to start data collection jobs every 60 seconds, while setting it to 0 disables this retry mechanism entirely." |
| 435 | }, |
| 436 | "vnode": { |
| 437 | "ui:placeholder": "To use this option, first create a Virtual Node and then reference its name here." |
| 438 | }, |
| 439 | "update_every": { |
| 440 | "ui:help": "**Important**: vSphere generates real-time statistics every 20 seconds. Setting this value lower won't improve data accuracy. For larger vSphere deployments, consider increasing this value to ensure complete data collection during each cycle. To find the optimal value, run the collector in debug mode and see how long it takes to collect metrics." |
| 441 | }, |
| 442 | "url": { |
| 443 | "ui:placeholder": "https://vcenter.local" |
| 444 | }, |
| 445 | "timeout": { |
| 446 | "ui:help": "Accepts decimals for precise control (e.g., type 1.5 for 1.5 seconds)." |
| 447 | }, |
| 448 | "host_include": { |
| 449 | "ui:listFlavour": "list" |
| 450 | }, |
| 451 | "vm_include": { |
| 452 | "ui:listFlavour": "list" |
| 453 | }, |
| 454 | "tag_categories": { |
| 455 | "ui:listFlavour": "list" |
| 456 | }, |
| 457 | "custom_attributes": { |
| 458 | "ui:listFlavour": "list" |
| 459 | }, |
| 460 | "vsan_cluster_include": { |
| 461 | "ui:listFlavour": "list" |
| 462 | }, |
| 463 | "vsan_host_include": { |
| 464 | "ui:listFlavour": "list" |
| 465 | }, |
| 466 | "vsan_vm_include": { |
| 467 | "ui:listFlavour": "list" |
| 468 | }, |
| 469 | "datastore_cluster_include": { |
| 470 | "ui:listFlavour": "list" |
| 471 | }, |
| 472 | "datastore_include": { |
| 473 | "ui:listFlavour": "list" |
| 474 | }, |
| 475 | "cluster_include": { |
| 476 | "ui:listFlavour": "list" |
| 477 | }, |
| 478 | "username": { |
| 479 | "ui:placeholder": "admin@vsphere.local", |
| 480 | "ui:widget": "password" |
| 481 | }, |
| 482 | "password": { |
| 483 | "ui:widget": "password" |
| 484 | } |
| 485 | } |
| 486 | } |