diff --git a/plugins/inputs/vrops/README.md b/plugins/inputs/vrops/README.md index 6189c187f08d9..53e8402f650cd 100644 --- a/plugins/inputs/vrops/README.md +++ b/plugins/inputs/vrops/README.md @@ -4,6 +4,8 @@ The VMware vROps plugin uses the vROps API to gather metrics. - Projects - VMs +- PaaS Projects +- PaaS VMs ## Configuration @@ -17,8 +19,8 @@ The VMware vROps plugin uses the vROps API to gather metrics. password = "vrops" ## Available services are: - ## "projects", "vms" - enabled_services = ["projects", "vms"] + ## "projects", "vms", "paasProjects", "paasVMs" + enabled_services = ["projects", "vms", "paasProjects", "paasVMs"] ## Projects ## Typical Project Stat metrics (if omitted or empty, all metrics are collected) @@ -49,6 +51,90 @@ The VMware vROps plugin uses the vROps API to gather metrics. "virtualDisk:Aggregate of all instances|totalWriteLatency_average", ] + ## PaaS Projects + ## Typical PaaS Project Stat metrics (if omitted or empty, all metrics are collected) + paas_project_stat_key = [] + + ## PaaS VMs + ## Typical PaaS VMs Stat metrics (if omitted or empty, all metrics are collected) + paas_vm_stat_key = ["sys|poweredOn", + "cpu|usage_average", + "cpu|corecount_provisioned", + "config|hardware|num_Cpu", + "config|hardware|disk_Space", + "mem|usage_average", + "mem|guest_provisioned", + "diskspace|provisionedSpace", + "diskspace|used", + "guestfilesystem|capacity_total", + "guestfilesystem|freespace_total", + "guestfilesystem|usage_total", + "guestfilesystem|percentage_total", + "net|transmitted_average", + "net|received_average", + "net|usage_average", + "virtualDisk|read_average", + "virtualDisk|write_average", + "virtualDisk|peak_vDisk_iops", + "virtualDisk:Aggregate of all instances|totalLatency", + "virtualDisk:Aggregate of all instances|totalReadLatency_average", + "virtualDisk:Aggregate of all instances|totalWriteLatency_average", + ] + + ## PaaS Project - Resource Kind keys + # paas_project_resource_kind = "ResourcePool" + + ## PaaS VM - Resource Kind keys + # paas_vm_resource_kind = "VirtualMachine" + + ## PaaS Project Filter + ## Object used to lookup PaaS Project with various filtering criteria + ## Indicates the conjunction of the filtering criteria + ## Either all of the filtering criteria apply together (AND operation) or any of the filtering criteria could be applied (OR operation) + ## Defaults to OR. + # [inputs.vrops.paas_project_property_conditions] + # conjunctionOperator="AND" + + ## key* string + ## The name of the StatKey or Property to which the condition applies + ## + ## operator* string + ## Comparison operator to use. + ## Default value is EXISTS, i.e. checks the existence of stat or property. + ## Enum: + ## [ EQ, NOT_EQ, LIKE, LT, GT, LT_EQ, GT_EQ, IN, NOT_IN, EXISTS, CONTAINS, STARTS_WITH, ENDS_WITH, NOT_STARTS_WITH, NOT_ENDS_WITH, NOT_CONTAINS, REGEX, NOT_REGEX, ## NOT_EXISTS, EMPTY, NOT_EMPTY ] + ## + ## stringValue string + ## String value to which we need to compare to + # [[inputs.vrops.paas_project_property_conditions.conditions]] + # key = "config|name" + # operator = "CONTAINS" + # stringValue = "pjp" + + ## PaaS VM Filter + ## Object used to lookup PaaS VM with various filtering criteria + ## Indicates the conjunction of the filtering criteria + ## Either all of the filtering criteria apply together (AND operation) or any of the filtering criteria could be applied (OR operation) + ## Defaults to OR. + # [inputs.vrops.paas_vm_property_conditions] + # conjunctionOperator="AND" + + ## key* string + ## The name of the StatKey or Property to which the condition applies + ## + ## operator* string + ## Comparison operator to use. + ## Default value is EXISTS, i.e. checks the existence of stat or property. + ## Enum: + ## [ EQ, NOT_EQ, LIKE, LT, GT, LT_EQ, GT_EQ, IN, NOT_IN, EXISTS, CONTAINS, STARTS_WITH, ENDS_WITH, NOT_STARTS_WITH, NOT_ENDS_WITH, NOT_CONTAINS, REGEX, NOT_REGEX, ## NOT_EXISTS, EMPTY, NOT_EMPTY ] + ## + ## stringValue string + ## String value to which we need to compare to + # [[inputs.vrops.paas_vm_property_conditions.conditions]] + # key = "config|name" + # operator = "NOT_CONTAINS" + # stringValue = "-control-plane-" + ## Statsd data translation templates, more info can be read here: ## https://github.com/influxdata/telegraf/blob/master/docs/TEMPLATE_PATTERN.md metric_separator = "_" @@ -265,6 +351,226 @@ additional details. - diskspace_capacityRemaining - diskspace_recommendedSize - diskspace_timeRemaining +- vrops_paas_project_badge + - compliance + - efficiency + - health + - risk + - workload +- vrops_paas_project_cpu + - capacity_contentionPct + - demandmhz + - dynamic_entitlement + - effective_limit + - estimated_entitlement + - reservation_used + - usagemhz_average + - workload +- vrops_paas_project_mem + - active_average + - consumed_average + - dynamic_entitlement + - effective_limit + - granted_average + - guest_demand + - guest_provisioned + - guest_usage + - host_contentionPct + - overhead_average + - reservation_used + - shared_average + - swapinRate_average + - swapoutRate_average + - usage_average + - workload +- vrops_paas_project_onlinecapacityanalytics + - capacityRemainingPercentage + - cpu_capacityRemaining + - cpu_recommendedSize + - cpu_timeRemaining + - mem_capacityRemaining + - mem_recommendedSize + - mem_timeRemaining + - timeRemaining +- vrops_paas_project_summary + - number_running_vms + - number_vm_templates + - total_number_vms +- vrops_paas_project_systemattributes + - alert_count_critical + - alert_count_immediate + - alert_count_info + - alert_count_warning + - all_metrics + - availability + - child_all_metrics + - health + - self_alert_count + - total_alarms + - total_alert_count +- vrops_paas_vm_badge + - compliance + - efficiency + - health + - risk + - workload +- vrops_paas_vm_config + - hardware_disk_Space + - hardware_num_Cpu +- vrops_paas_vm_cpu + - capacity_contentionPct + - corecount_provisioned + - costopPct + - demandmhz + - demandPct + - effective_limit + - iowaitPct + - overlap_summation + - peak_vcpu_ready + - peak_vcpu_usage + - readyPct + - run_summation + - swapwaitPct + - usage_average + - usagemhz_average + - usagemhz_average_daily + - vcpu_usage_disparity + - vm_capacity_provisioned + - workload +- vrops_paas_vm_diskspace + - perDsUsed + - activeNotShared + - notshared + - provisionedSpace + - snapshot + - snapshot_used + - used + - workload +- vrops_paas_vm_diskspace-total + - workload +- vrops_paas_vm_guest + - contextSwapRate_latest + - cpu_queue + - disk_queue + - mem_free_latest + - mem_needed_latest + - mem_physUsable_latest + - page_inRate_latest + - page_outRate_latest + - page_size_latest + - swap_spaceRemaining_latest + - tools_running_status + - used_memory +- vrops_paas_vm_guestfilesystem + - capacity + - percentage + - usage + - capacity_total + - percentage_total + - usage_total +- vrops_paas_vm_mem + - balloonPct + - compressed_average + - consumed_average + - consumed_average_daily + - consumedPct + - effective_limit + - guest_demand + - guest_provisioned + - guest_usage + - host_contentionPct + - host_demand + - nonzero_active + - overhead_average + - overheadMax_average + - reservation_used + - swapinRate_average + - swapoutRate_average + - swapped_average + - usage_average + - vmMemoryDemand + - workload +- vrops_paas_vm_mem-host + - workload +- vrops_paas_vm_net + - droppedPct + - packetsRxPerSec + - packetsTxPerSec + - broadcastTx_summation + - broadcastTx_summation_sum + - droppedTx_summation + - droppedTx_summation_sum + - multicastTx_summation + - multicastTx_summation_sum + - received_average + - transmitted_average + - usage_average +- vrops_paas_vm_onlinecapacityanalytics + - capacityRemainingPercentage + - cpu_capacityRemaining + - cpu_recommendedSize + - cpu_timeRemaining + - diskspace_capacityRemaining + - diskspace_recommendedSize + - diskspace_timeRemaining + - mem_capacityRemaining + - mem_recommendedSize + - mem_timeRemaining + - timeRemaining +- vrops_paas_vm_performance + - number_of_kpis_breached +- vrops_paas_vm_power + - energy_summation_sum +- vrops_paas_vm_rescpu + - actav1_latest + - actav5_latest +- vrops_paas_vm_storage + - totalReadLatency_average + - totalWriteLatency_average +- vrops_paas_vm_summary + - idle + - oversized + - oversized_memory + - oversized_vcpus + - poweredOff + - running + - snapshotSpace + - undersized + - undersized_memory + - undersized_vcpus +- vrops_paas_vm_sys + - osUptime_latest + - poweredOn +- vrops_paas_vm_systemattributes + - alert_count_critical + - alert_count_immediate + - alert_count_info + - alert_count_warning + - all_metrics + - availability + - child_all_metrics + - health + - self_alert_count + - total_alarms + - total_alert_count +- vrops_paas_vm_virtualdisk + - commandsAveraged_average + - numberReadAveraged_average + - numberWriteAveraged_average + - totalLatency + - totalReadLatency_average + - totalWriteLatency_average + - usage + - vDiskOIO + - numberReadAveraged_average + - numberWriteAveraged_average + - read_average + - totalReadLatency_average + - totalWriteLatency_average + - write_average + - peak_vDisk_iops + - peak_vDisk_readLatency + - peak_vDisk_writeLatency For more information about the metrics, refer to the [documentation][vrops-info]. @@ -356,4 +662,111 @@ vrops_vm_net,deployment_id=27e7d17f-2343-4c9e-9d13-e4e4e1ebb616,deployment_name= vrops_vm_net,deployment_id=27e7d17f-2343-4c9e-9d13-e4e4e1ebb616,deployment_name=kor-uni-03,host=S2100113,net=vmnic1,tenant_id=1a099fbd-379e-4153-83bf-19739de99b69,tenant_name=KOR-RC,vm_id=f2ecbace-9f7b-4a73-a97a-e512c3fe4040,vm_name=korlab.121 transmitted_average=0 1678077893000000000 vrops_vm_net,deployment_id=27e7d17f-2343-4c9e-9d13-e4e4e1ebb616,deployment_name=kor-uni-03,host=S2100113,net=vmnic4,tenant_id=1a099fbd-379e-4153-83bf-19739de99b69,tenant_name=KOR-RC,vm_id=f2ecbace-9f7b-4a73-a97a-e512c3fe4040,vm_name=korlab.121 received_average=0 1678077893000000000 vrops_vm_net,deployment_id=27e7d17f-2343-4c9e-9d13-e4e4e1ebb616,deployment_name=kor-uni-03,host=S2100113,net=vusb0,tenant_id=1a099fbd-379e-4153-83bf-19739de99b69,tenant_name=KOR-RC,vm_id=f2ecbace-9f7b-4a73-a97a-e512c3fe4040,vm_name=korlab.121 transmitted_average=0 1678077893000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 alert_count_warning=0 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 all_metrics=48 1682408481000000000 +vrops_paas_project_summary,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 total_number_vms=3 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 cpu_capacityRemaining=488365.2701706162 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 guest_usage=20951292.8 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 swapinRate_average=0 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 usagemhz_average=2953.8 1682408481000000000 +vrops_paas_project_badge,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 workload=38.253067070874735 1682408481000000000 +vrops_paas_project_supermetric,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 sm_f61a7d58-8309-4921-810b-e13a8a002b5a=254 1682408481000000000 +vrops_paas_project_badge,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 risk=0 1682408481000000000 +vrops_paas_project_summary,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 number_running_vms=3 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 reservation_used=0 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 total_alert_count=0 1682408481000000000 +vrops_paas_project_badge,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 compliance=-1 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 alert_count_info=0 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 capacityRemainingPercentage=47.94168158167578 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 consumed_average=20951292.8 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 timeRemaining=366 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 workload=0.6148372714029757 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 active_average=7253343.466666667 1682408481000000000 +vrops_paas_project_badge,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 health=100 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 health=100 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 usage_average=34.58663686116537 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 guest_demand=7978677.813333333 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 alert_count_immediate=0 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 guest_provisioned=20971520 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 overhead_average=172807.46666666667 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 reservation_used=283648 1682408481000000000 +vrops_paas_project_supermetric,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 sm_d2ef43c1-a365-406a-b871-54e9566916e7=8 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 child_all_metrics=3768 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 effective_limit=497088 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 mem_recommendedSize=10858124.118365692 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 granted_average=20971520 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 mem_timeRemaining=366 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 demandmhz=3034.6666666666665 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 mem_capacityRemaining=9999491.817503063 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 workload=38.253067070874735 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 dynamic_entitlement=20857615.935868755 1682408481000000000 +vrops_paas_project_supermetric,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 sm_c98f08a0-c4af-4301-a2f4-6e97b327831d=16 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 swapoutRate_average=0 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 alert_count_critical=0 1682408481000000000 +vrops_paas_project_summary,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 number_vm_templates=0 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 shared_average=20867.2 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 cpu_timeRemaining=366 1682408481000000000 +vrops_paas_project_badge,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 efficiency=100 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 capacity_contentionPct=0.03773333333333333 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 total_alarms=16 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 self_alert_count=0 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 estimated_entitlement=493572.3333333333 1682408481000000000 +vrops_paas_project_systemattributes,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 availability=1 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 effective_limit=3910576128 1682408481000000000 +vrops_paas_project_supermetric,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 sm_fa9d590d-35ce-4706-8384-d62927554b88=2 1682408481000000000 +vrops_paas_project_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 host_contentionPct=0 1682408481000000000 +vrops_paas_project_onlinecapacityanalytics,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 cpu_recommendedSize=246786.16666666663 1682408481000000000 +vrops_paas_project_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001 dynamic_entitlement=27930 1682408481000000000 +vrops_paas_vm_virtualdisk,device=Aggregateofallinstances,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn totalReadLatency_average=0 1682408481000000000 +vrops_paas_vm_virtualdisk,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn peak_vDisk_iops=60.266666666666666 1682408481000000000 +vrops_paas_vm_guestfilesystem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn capacity_total=689.2849884033203 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_2,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn write_average=0 1682408481000000000 +vrops_paas_vm_diskspace,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn used=126.27726807352155 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_2,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn read_average=0 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_1,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn read_average=0 1682408481000000000 +vrops_paas_vm_config,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn hardware_num_Cpu=4 1682408481000000000 +vrops_paas_vm_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn usage_average=8.253333333333334 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_0,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn read_average=435.06666666666666 1682408481000000000 +vrops_paas_vm_diskspace,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn provisionedSpace=412.35546875 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_0,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn write_average=904.2666666666667 1682408481000000000 +vrops_paas_vm_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn corecount_provisioned=4 1682408481000000000 +vrops_paas_vm_guestfilesystem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn percentage_total=43.00272102919221 1682408481000000000 +vrops_paas_vm_virtualdisk,device=Aggregateofallinstances,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn totalLatency=0.2117994100294985 1682408481000000000 +vrops_paas_vm_sys,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn poweredOn=1 1682408481000000000 +vrops_paas_vm_virtualdisk,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn read_average=435.06666666666666 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_1,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn write_average=15.466666666666667 1682408481000000000 +vrops_paas_vm_config,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn hardware_disk_Space=202 1682408481000000000 +vrops_paas_vm_net,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn transmitted_average=27.533333333333335 1682408481000000000 +vrops_paas_vm_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn usage_average=42.587264378865555 1682408481000000000 +vrops_paas_vm_net,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn usage_average=118 1682408481000000000 +vrops_paas_vm_virtualdisk,device=Aggregateofallinstances,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn totalWriteLatency_average=0.26666666666666666 1682408481000000000 +vrops_paas_vm_virtualdisk,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn write_average=920 1682408481000000000 +vrops_paas_vm_guestfilesystem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn usage_total=296.4113006591797 1682408481000000000 +vrops_paas_vm_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn guest_provisioned=8388608 1682408481000000000 +vrops_paas_vm_net,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=ad6f5c67-6557-4cc1-9d23-fe386fccbf90,vm_name=pjp-dev001-md-0-5bb975b56c-v7bbn received_average=90 1682408481000000000 +vrops_paas_vm_virtualdisk,device=Aggregateofallinstances,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 totalReadLatency_average=0 1682408481000000000 +vrops_paas_vm_virtualdisk,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 peak_vDisk_iops=62.93333333333334 1682408481000000000 +vrops_paas_vm_guestfilesystem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 capacity_total=298.03282928466797 1682408481000000000 +vrops_paas_vm_diskspace,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 used=96.62474834360182 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_1,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 read_average=0 1682408481000000000 +vrops_paas_vm_config,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 hardware_num_Cpu=4 1682408481000000000 +vrops_paas_vm_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 usage_average=7.159333333333333 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_0,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 read_average=9.666666666666666 1682408481000000000 +vrops_paas_vm_diskspace,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 provisionedSpace=112.33203125 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_0,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 write_average=1011.9333333333333 1682408481000000000 +vrops_paas_vm_cpu,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 corecount_provisioned=4 1682408481000000000 +vrops_paas_vm_guestfilesystem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 percentage_total=68.52583490493068 1682408481000000000 +vrops_paas_vm_virtualdisk,device=Aggregateofallinstances,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 totalLatency=0 1682408481000000000 +vrops_paas_vm_sys,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 poweredOn=1 1682408481000000000 +vrops_paas_vm_virtualdisk,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 read_average=9.666666666666666 1682408481000000000 +vrops_paas_vm_virtualdisk,device=scsi0_1,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 write_average=0 1682408481000000000 +vrops_paas_vm_config,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 hardware_disk_Space=52 1682408481000000000 +vrops_paas_vm_net,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 transmitted_average=38 1682408481000000000 +vrops_paas_vm_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 usage_average=30.13167381286621 1682408481000000000 +vrops_paas_vm_net,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 usage_average=70.93333333333334 1682408481000000000 +vrops_paas_vm_virtualdisk,device=Aggregateofallinstances,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 totalWriteLatency_average=0 1682408481000000000 +vrops_paas_vm_virtualdisk,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 write_average=1011.9333333333333 1682408481000000000 +vrops_paas_vm_guestfilesystem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 usage_total=204.22948455810547 1682408481000000000 +vrops_paas_vm_mem,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 guest_provisioned=8388608 1682408481000000000 +vrops_paas_vm_net,host=S2100113,tenant_id=e10d6ccd-6b47-4811-be59-924f9872cf15,tenant_name=PJP-DEV001,vm_id=061fc8b8-e2d6-40cc-834b-d0e3fd4994a0,vm_name=pjp-dev001-md-0-5bb975b56c-fqlh7 received_average=32.46666666666667 1682408481000000000 ``` diff --git a/plugins/inputs/vrops/resource.go b/plugins/inputs/vrops/resource.go index dcb7bb24935a1..f1ed45009c0f4 100644 --- a/plugins/inputs/vrops/resource.go +++ b/plugins/inputs/vrops/resource.go @@ -17,6 +17,13 @@ var ( resourceStats = "/resources/stats/latest/query" ) +var ( + paasProjectResourceKind = "ResourcePool" + paasVMResourceKind = "VirtualMachine" + paasProjectPropertyConditions = map[string]interface{}{"conjunctionOperator": "AND", "conditions": []map[string]string{{"key": "config|name", "operator": "CONTAINS", "stringValue": "pjp"}}} + paasVMPropertyConditions = map[string]interface{}{"conjunctionOperator": "AND", "conditions": []map[string]string{{"key": "config|name", "operator": "NOT_CONTAINS", "stringValue": "-control-plane-"}}} +) + var ( vmStatKey = [...]string{"sys|osUptime_latest", "sys|poweredOn", @@ -107,6 +114,96 @@ var ( } ) +var ( + paasVMStatKey = [...]string{"sys|osUptime_latest", + "sys|poweredOn", + "cpu|usage_average", + "cpu|workload", + "cpu|iowaitPct", + "cpu|peak_vcpu_usage", + "cpu|peak_vcpu_ready", + "cpu|readyPct", + "cpu|costopPct", + "cpu|swapwaitPct", + "cpu|vcpu_usage_disparity", + "cpu|vm_capacity_provisioned", + "cpu|effective_limit", + "cpu|corecount_provisioned", + "cpu|demandPct", + "cpu|demandmhz", + "cpu|capacity_contentionPct", + "cpu|run_summation", + "cpu|overlap_summation", + "config|hardware|num_Cpu", + "config|hardware|disk_Space", + "mem-host|workload", + "mem|usage_average", + "mem|workload", + "mem|guest_demand", + "mem|swapped_average", + "mem|swapoutRate_average", + "mem|swapinRate_average", + "mem|compressed_average", + "mem|guest_provisioned", + "mem|overhead_average", + "mem|reservation_used", + "mem|effective_limit", + "diskspace|provisionedSpace", + "diskspace|used", + "diskspace|snapshot", + "diskspace|snapshot|used", + "diskspace|notshared", + "diskspace|activeNotShared", + "diskspace|workload", + "guest|cpu_queue", + "guest|contextSwapRate_latest", + "guest|disk_queue", + "guest|used_memory", + "guest|mem.free_latest", + "guest|mem.physUsable_latest", + "guest|mem.needed_latest", + "guest|page.outRate_latest", + "guest|page.inRate_latest", + "guest|page.size_latest", + "guest|swap.spaceRemaining_latest", + "guest|tools_running_status", + "guestfilesystem|capacity_total", + "guestfilesystem|freespace_total", + "guestfilesystem|usage_total", + "guestfilesystem|percentage_total", + "net|transmitted_average", + "net|received_average", + "net|usage_average", + "net|droppedTx_summation", + "net|broadcastTx_summation", + "net|multicastTx_summation", + "net|droppedTx_summation_sum", + "net|multicastTx_summation_sum", + "net|broadcastTx_summation_sum", + "storage|totalReadLatency_average", + "storage|totalWriteLatency_average", + "virtualDisk|read_average", + "virtualDisk|write_average", + "virtualDisk|totalLatency", + "virtualDisk|totalReadLatency_average", + "virtualDisk|totalWriteLatency_average", + "virtualDisk|numberReadAveraged_average", + "virtualDisk|numberWriteAveraged_average", + "virtualDisk|commandsAveraged_average", + "OnlineCapacityAnalytics|capacityRemainingPercentage", + "OnlineCapacityAnalytics|timeRemaining", + "OnlineCapacityAnalytics|cpu|capacityRemaining", + "OnlineCapacityAnalytics|cpu|recommendedSize", + "OnlineCapacityAnalytics|cpu|timeRemaining", + "OnlineCapacityAnalytics|mem|capacityRemaining", + "OnlineCapacityAnalytics|mem|recommendedSize", + "OnlineCapacityAnalytics|mem|timeRemaining", + "OnlineCapacityAnalytics|diskspace|capacityRemaining", + "OnlineCapacityAnalytics|diskspace|recommendedSize", + "OnlineCapacityAnalytics|diskspace|timeRemaining", + } +) + type tokenBody struct { Username string `json:"username"` Password string `json:"password"` @@ -120,9 +217,10 @@ type vROpsToken struct { } type resourceBody struct { - ResourceKind []string `json:"resourceKind"` - ResourceState []string `json:"resourceState"` - ResourceStatus []string `json:"resourceStatus"` + ResourceKind []string `json:"resourceKind"` + ResourceState []string `json:"resourceState"` + ResourceStatus []string `json:"resourceStatus"` + PropertyConditions map[string]interface{} `json:"propertyConditions"` } type statBody struct { diff --git a/plugins/inputs/vrops/sample.conf b/plugins/inputs/vrops/sample.conf index 67930c3f0374d..8158d9e1304b3 100644 --- a/plugins/inputs/vrops/sample.conf +++ b/plugins/inputs/vrops/sample.conf @@ -7,8 +7,8 @@ password = "vrops" ## Available services are: - ## "projects", "vms" - enabled_services = ["projects", "vms"] + ## "projects", "vms", "paasProjects", "paasVMs" + enabled_services = ["projects", "vms", "paasProjects", "paasVMs"] ## Projects ## Typical Project Stat metrics (if omitted or empty, all metrics are collected) @@ -39,6 +39,36 @@ "virtualDisk:Aggregate of all instances|totalWriteLatency_average", ] + ## PaaS Projects + ## Typical PaaS Project Stat metrics (if omitted or empty, all metrics are collected) + paas_project_stat_key = [] + + ## PaaS VMs + ## Typical PaaS VMs Stat metrics (if omitted or empty, all metrics are collected) + paas_vm_stat_key = ["sys|poweredOn", + "cpu|usage_average", + "cpu|corecount_provisioned", + "config|hardware|num_Cpu", + "config|hardware|disk_Space", + "mem|usage_average", + "mem|guest_provisioned", + "diskspace|provisionedSpace", + "diskspace|used", + "guestfilesystem|capacity_total", + "guestfilesystem|freespace_total", + "guestfilesystem|usage_total", + "guestfilesystem|percentage_total", + "net|transmitted_average", + "net|received_average", + "net|usage_average", + "virtualDisk|read_average", + "virtualDisk|write_average", + "virtualDisk|peak_vDisk_iops", + "virtualDisk:Aggregate of all instances|totalLatency", + "virtualDisk:Aggregate of all instances|totalReadLatency_average", + "virtualDisk:Aggregate of all instances|totalWriteLatency_average", + ] + ## Statsd data translation templates, more info can be read here: ## https://github.com/influxdata/telegraf/blob/master/docs/TEMPLATE_PATTERN.md metric_separator = "_" @@ -60,4 +90,4 @@ # tls_cert = /path/to/certfile # tls_key = /path/to/keyfile ## Use TLS but skip chain & host verification - # insecure_skip_verify = false + # insecure_skip_verify = false \ No newline at end of file diff --git a/plugins/inputs/vrops/vrops.go b/plugins/inputs/vrops/vrops.go index 4630c1f89fb5f..50f044e69bb30 100644 --- a/plugins/inputs/vrops/vrops.go +++ b/plugins/inputs/vrops/vrops.go @@ -27,12 +27,18 @@ var sampleConfig string // vROps is the main structure associated with a collection instance. type vROps struct { - URL string `toml:"url"` - Username string `toml:"username"` - Password string `toml:"password"` - EnabledServices []string `toml:"enabled_services"` - ProjectStatKey []string `toml:"project_stat_key"` - VMStatKey []string `toml:"vm_stat_key"` + URL string `toml:"url"` + Username string `toml:"username"` + Password string `toml:"password"` + EnabledServices []string `toml:"enabled_services"` + ProjectStatKey []string `toml:"project_stat_key"` + VMStatKey []string `toml:"vm_stat_key"` + PaaSProjectStatKey []string `toml:"paas_project_stat_key"` + PaaSVMStatKey []string `toml:"paas_vm_stat_key"` + PaasProjectResourceKind string `toml:"paas_project_resource_kind"` + PaasProjectPropertyConditions map[string]interface{} `toml:"paas_project_property_conditions"` + PaasVMResourceKind string `toml:"paas_vm_resource_kind"` + PaasVMPropertyConditions map[string]interface{} `toml:"paas_vm_property_conditions"` // bucket -> influx templates Templates []string // MetricSeparator is the separator between parts of the metric name. @@ -84,8 +90,10 @@ func (o *vROps) Gather(acc telegraf.Accumulator) error { // Gather resources. Note service harvesting must come first as the other // gatherers are dependant on this information. gatherers := map[string]func(telegraf.Accumulator) error{ - "projects": o.gatherProject, - "vms": o.gatherVMs, + "projects": o.gatherProject, + "vms": o.gatherVMs, + "paasProjects": o.gatherPaaSProject, + "paasVMs": o.gatherPaaSVMs, } callDuration := map[string]interface{}{} @@ -330,6 +338,202 @@ func (o *vROps) gatherVMs(acc telegraf.Accumulator) error { } } +func (o *vROps) gatherPaaSProject(acc telegraf.Accumulator) error { + for { + projects, err := o.getPaaSProjects() + if err != nil { + return err + } + + projectIds := make([]string, 0, len(projects)) + for project := range projects { + projectIds = append(projectIds, project) + } + + statReqbody := &statBody{ + ResourceID: projectIds, + StatKey: nil, + CurrentOnly: true, + MaxSamples: 1, + } + + statsURL, err := url.Parse(o.URL + apiURL + resourceStats) + if err != nil { + return err + } + + statsReq, err := json.Marshal(statReqbody) + if err != nil { + return nil + } + + reqStats, err := http.NewRequest("POST", statsURL.String(), bytes.NewBuffer(statsReq)) + if err != nil { + return err + } + + o.setRequestHeaders(reqStats) + + resStats, err := o.client.Do(reqStats) + if err != nil { + return err + } + defer resStats.Body.Close() + + if resStats.StatusCode == 401 { + err := o.getvRealizeOpsToken() + if err != nil { + return err + } + continue + } + + resourceStats, err := io.ReadAll(resStats.Body) + if err != nil { + return err + } + + var stats statResource + + if err := json.Unmarshal(resourceStats, &stats); err != nil { + return err + } + + for _, resourceIds := range stats.Values { + for _, stat := range resourceIds.StatList.Stat { + + re := regexp.MustCompile(`[:/|\s]`) + bucket := re.ReplaceAllString(strings.ReplaceAll(stat.StatKey.Key, " ", ""), ".") + + name, field, tags := o.parseName(bucket) + + measurement := strings.ToLower(name) + tags["tenant_id"] = resourceIds.ResourceID + tags["tenant_name"] = strings.ReplaceAll(projects[resourceIds.ResourceID], " ", "_") + + fields := make(map[string]interface{}) + if stat.Data != nil { + fields[field] = stat.Data[0] + } + + if stat.Values != nil { + fields[field] = stat.Values[0] + } + + acc.AddFields(strings.Join([]string{"vrops_paas_project", measurement}, "_"), fields, tags) + + } + } + + return nil + } +} + +func (o *vROps) gatherPaaSVMs(acc telegraf.Accumulator) error { + for { + projects, err := o.getPaaSProjects() + if err != nil { + return err + } + + vms, err := o.getPaaSVMs(projects) + if err != nil { + return err + } + + vmIds := make([]string, 0, len(vms)) + for vm := range vms { + vmIds = append(vmIds, vm) + } + + var statKey []string + if o.PaaSVMStatKey != nil { + statKey = o.PaaSVMStatKey + } else { + statKey = paasVMStatKey[:] + } + + statReqbody := &statBody{ + ResourceID: vmIds, + StatKey: statKey, + CurrentOnly: true, + MaxSamples: 1, + } + + statsURL, err := url.Parse(o.URL + apiURL + resourceStats) + if err != nil { + return err + } + + statsReq, err := json.Marshal(statReqbody) + if err != nil { + return nil + } + + reqStats, err := http.NewRequest("POST", statsURL.String(), bytes.NewBuffer(statsReq)) + if err != nil { + return err + } + + o.setRequestHeaders(reqStats) + + resStats, err := o.client.Do(reqStats) + if err != nil { + return err + } + defer resStats.Body.Close() + + if resStats.StatusCode == 401 { + err := o.getvRealizeOpsToken() + if err != nil { + return err + } + continue + } + + resourceStats, err := io.ReadAll(resStats.Body) + if err != nil { + return err + } + + var stats statResource + + if err := json.Unmarshal(resourceStats, &stats); err != nil { + return err + } + + for _, resourceIds := range stats.Values { + for _, stat := range resourceIds.StatList.Stat { + + re := regexp.MustCompile(`[:/|\s]`) + bucket := re.ReplaceAllString(strings.ReplaceAll(stat.StatKey.Key, " ", ""), ".") + + name, field, tags := o.parseName(bucket) + + measurement := strings.ToLower(name) + tags["tenant_id"] = strings.ReplaceAll(vms[resourceIds.ResourceID]["projectId"], " ", "_") + tags["tenant_name"] = strings.ReplaceAll(vms[resourceIds.ResourceID]["projectName"], " ", "_") + tags["vm_id"] = resourceIds.ResourceID + tags["vm_name"] = strings.ReplaceAll(vms[resourceIds.ResourceID]["name"], " ", "_") + + fields := make(map[string]interface{}) + if stat.Data != nil { + fields[field] = stat.Data[0] + } + + if stat.Values != nil { + fields[field] = stat.Values[0] + } + + acc.AddFields(strings.Join([]string{"vrops_paas_vm", measurement}, "_"), fields, tags) + + } + } + + return nil + } +} + func (o *vROps) getProjects() (map[string]string, error) { for { resourceURL, err := url.Parse(o.URL + apiURL + resourceInfo) @@ -540,6 +744,170 @@ func (o *vROps) getVMs(deployments map[string]map[string]string) (map[string]map } } +func (o *vROps) getPaaSProjects() (map[string]string, error) { + for { + resourceURL, err := url.Parse(o.URL + apiURL + resourceInfo) + if err != nil { + return nil, err + } + + var resourceKind string + if o.PaasProjectResourceKind != "" { + resourceKind = o.PaasProjectResourceKind + } else { + resourceKind = paasProjectResourceKind + } + + propertyConditions := make(map[string]interface{}) + if o.PaasProjectPropertyConditions != nil { + propertyConditions = o.PaasProjectPropertyConditions + } else { + propertyConditions = paasProjectPropertyConditions + } + + requestbody := &resourceBody{ + ResourceKind: []string{resourceKind}, + ResourceState: []string{"STARTED"}, + ResourceStatus: []string{"DATA_RECEIVING"}, + PropertyConditions: propertyConditions, + } + + body, err := json.Marshal(requestbody) + if err != nil { + return nil, err + } + + request, err := http.NewRequest("POST", resourceURL.String(), bytes.NewBuffer(body)) + if err != nil { + return nil, err + } + + o.setRequestHeaders(request) + + response, err := o.client.Do(request) + if err != nil { + return nil, err + } + defer response.Body.Close() + + if response.StatusCode == 401 { + err := o.getvRealizeOpsToken() + if err != nil { + return nil, err + } + continue + } + + resBody, err := io.ReadAll(response.Body) + if err != nil { + return nil, err + } + + var resources resources + + if err := json.Unmarshal(resBody, &resources); err != nil { + return nil, err + } + + projects := make(map[string]string) + + for _, resource := range resources.ResourceList { + projects[resource.Identifier] = resource.ResourceKey.Name + } + + return projects, nil + } +} + +func (o *vROps) getPaaSVMs(projects map[string]string) (map[string]map[string]string, error) { + for { + var resourceKind string + if o.PaasVMResourceKind != "" { + resourceKind = o.PaasVMResourceKind + } else { + resourceKind = paasVMResourceKind + } + + propertyConditions := make(map[string]interface{}) + if o.PaasVMPropertyConditions != nil { + propertyConditions = o.PaasVMPropertyConditions + } else { + propertyConditions = paasVMPropertyConditions + } + + resourceQuery := &resourceBody{ + ResourceKind: []string{resourceKind}, + ResourceState: []string{"STARTED"}, + ResourceStatus: []string{"DATA_RECEIVING"}, + PropertyConditions: propertyConditions, + } + + projectIds := make([]string, 0, len(projects)) + for project := range projects { + projectIds = append(projectIds, project) + } + + requestBody := &relationshipBody{ + RelationshipType: "CHILD", + ResourceIds: projectIds, + ResourceQuery: *resourceQuery, + } + + bulkURL, err := url.Parse(o.URL + apiURL + resourceBulk) + if err != nil { + return nil, err + } + + body, err := json.Marshal(requestBody) + if err != nil { + return nil, err + } + + request, err := http.NewRequest("POST", bulkURL.String(), bytes.NewBuffer(body)) + if err != nil { + return nil, err + } + + o.setRequestHeaders(request) + + response, err := o.client.Do(request) + if err != nil { + return nil, err + } + defer response.Body.Close() + + if response.StatusCode == 401 { + err := o.getvRealizeOpsToken() + if err != nil { + return nil, err + } + continue + } + + resBody, err := io.ReadAll(response.Body) + if err != nil { + return nil, err + } + + var resources bulkResource + + if err := json.Unmarshal(resBody, &resources); err != nil { + return nil, err + } + + vms := make(map[string]map[string]string) + + for _, resource := range resources.ResourcesRelations { + vms[resource.Resource.Identifier] = map[string]string{ + "name": resource.Resource.ResourceKey.Name, + "projectId": resource.Resource.RelatedResources[0], + "projectName": projects[resource.Resource.RelatedResources[0]]} + } + + return vms, nil + } +} + func (o *vROps) getvRealizeOpsToken() error { resourceURL, err := url.Parse(o.URL + apiURL + authToken) if err != nil {