settings: log_level: "info" log_output: "text" database_driver: "sqlite" # PostgreSQL remains experimental and is disabled by default. enable_experimental_postgres: false database_url: "/var/lib/vctp/db.sqlite3" reports_dir: /var/lib/vctp/reports bind_ip: bind_port: 9443 bind_disable_tls: false tls_cert_filename: "/var/lib/vctp/vctp.crt" tls_key_filename: "/var/lib/vctp/vctp.key" # Optional explicit key source for credential encryption/decryption. # Leave empty to use host-derived key material. encryption_key: "" vcenter_username: "" vcenter_password: "" vcenter_insecure: false # Legacy API endpoints are disabled by default. enable_legacy_api: false auth_enabled: false auth_mode: "disabled" # disabled | optional | required auth_jwt_signing_key: "" # base64-encoded key, required when auth_enabled=true auth_token_lifespan_minutes: 120 auth_jwt_issuer: "vctp" auth_jwt_audience: "vctp-api" auth_clock_skew_seconds: 60 auth_group_role_mappings: {} ldap_groups: [] ldap_bind_address: "" ldap_base_dn: "" ldap_trust_cert_file: "" ldap_disable_validation: false ldap_insecure: false enable_pprof: false # Deprecated (ignored): legacy event poller vcenter_event_polling_seconds: 0 # Deprecated (ignored): legacy inventory poller vcenter_inventory_polling_seconds: 0 vcenter_inventory_snapshot_seconds: 3600 vcenter_inventory_aggregate_seconds: 86400 hourly_snapshot_concurrency: 0 hourly_snapshot_max_age_days: 60 daily_snapshot_max_age_months: 12 # Retain hourly-table indexes only for recent data. # -1 disables index cleanup; 0 trims indexes from all hourly tables. hourly_index_max_age_days: 7 snapshot_cleanup_cron: "30 2 * * *" hourly_snapshot_retry_seconds: 300 hourly_snapshot_max_retries: 3 capture_write_batch_size: 1000 snapshot_table_compat_mode: true async_report_generation: true # Postgres-only: when true, vm_hourly_stats is migrated/managed as monthly range partitions. postgres_vm_hourly_partitioning_enabled: false # Scheduled aggregation engine: go (default) or sql (canonical Postgres SQL path rollout flag). scheduled_aggregation_engine: "go" hourly_job_timeout_seconds: 1200 hourly_snapshot_timeout_seconds: 600 daily_job_timeout_seconds: 900 monthly_job_timeout_seconds: 1200 monthly_aggregation_granularity: "daily" monthly_aggregation_cron: "10 3 1 * *" # Optional: override Summary worksheet pivot layout in daily/monthly XLSX reports. # metric values: avg_vcpu, avg_ram, prorated_vm_count, vm_name_count report_summary_pivots: - metric: avg_vcpu title: "Sum of Avg vCPUs" pivot_name: "PivotAvgVcpu" pivot_range: "Summary!A3:H60" - metric: avg_ram title: "Sum of Avg RAM" pivot_name: "PivotAvgRam" pivot_range: "Summary!J3:P60" - metric: prorated_vm_count title: "Sum of prorated VM count" pivot_name: "PivotProratedVmCount" pivot_range: "Summary!A63:H82" title_cell: "A61" - metric: vm_name_count title: "Count of VM Name" pivot_name: "PivotVmNameCount" pivot_range: "Summary!J63:P82" title_cell: "J61" cleanup_job_timeout_seconds: 600 tenants_to_filter: node_charge_clusters: srm_activeactive_vms: vcenter_addresses: