3.1.25 vSphere 监控

优质
小牛编辑
131浏览
2023-12-01

vsphere 监控

在数据采集一节中我们介绍了常见的监控数据源。open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。

vsphere 的运行指标监控,可以通过脚本采集 vsphere 的各项状态,包括 Esxi,datastore,vm 等然后推送给 Open-Falcon 即可。

可以直接使用 vsphere-monitor 来实现对 vsphere 集群的监控指标采集。

工作原理

vsphere-monitor 通过 pyvmomi 采集 vsphere 集群的数据。只需要连接 vcenter 就可以采集集群内的包括 ESXi,datastore,vm 等各种监控数据。数据通过 open-falcon 的数据接口上报给 open-falcon。

版本需求

python 2.7

上报数据字段

metrictagtypenote
datastore.capacitydatacetner=datacenter,datastore=datastore,type=typeGAUGE存储容量
datastore.freedatacetner=datacenter,datastore=datastore,type=typeGAUGE存储剩余容量
datastore.freePercentdatacetner=datacenter,datastore=datastore,type=typeGAUGE存储剩余容量
esxi.alivedatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi 存活,值为 1,可以用来做 Nodata
esxi.net.if.indatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi 网络进流量(所有网卡总和)
esxi.net.if.outdatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi 网络出流量(所有网卡总和)
esxi.memory.freePercentdatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi 剩余内存百分比
esxi.memory.usagedatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi 内存使用量
esxi.memory.capacitydatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi 内存总量
esxi.cpu.usagedatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi CPU 使用率
esxi.uptimedatacetner=datacenter,cluster_name=cluster_name,host=hostGAUGEesxi uptime
vm.powervm=vm_nameGAUGE虚机是否开机,开机 = 1,关机 = 0,可以用来做 nodata
vm.net.if.invm=vm_nameGAUGE虚机网络进流量(所有网卡总和)
vm.net.if.outvm=vm_nameGAUGE虚机网络出流量(所有网卡总和)
vm.datastore.io.write_latencyvm=vm_nameGAUGE虚机存储 io 写延迟
vm.datastore.io.read_latencyvm=vm_nameGAUGE虚机存储 io 读延迟
vm.datastore.io.write_numbersvm=vm_nameGAUGE虚机存储写 IOPS
vm.datastore.io.read_numbersvm=vm_nameGAUGE虚机存储读 IOPS
vm.datastore.io.write_bytesvm=vm_nameGAUGE虚机存储写流量
vm.datastore.io.read_bytesvm=vm_nameGAUGE虚机存储读流量
vm.memory.freePercentvm=vm_nameGAUGE虚机内存剩余百分比
vm.memory.usagevm=vm_nameGAUGE虚机内存量使用量
vm.memory.capacityvm=vm_nameGAUGE虚机内存量总量
vm.cpu.usagevm=vm_nameGAUGE虚机 cpu 使用量
vm.uptimevm=vm_nameGAUGE虚机 uptime

安装

获取代码

git clone https://github.com/freedomkk-qfeng/vsphere-monitor.git

安装依赖

yum install -y python-virtualenv
cd vsphere-monitor
virtualenv ./env
./env/bin/pip install -r requirement.txt

配置

修改配置文件 config.py

# falcon
endpoint = "vcenter" # 上报给 open-falcon 的 endpoint
push_api = "http://127.0.0.1:6060/api/push" # 上报的 http api 接口
interval = 60 # 上报的 step 间隔

# vcenter
host = "vcenter.host" # vcenter 的地址
user = "administrator@vsphere.local" # vcenter 的用户名
pwd = "password" # vcenter 的密码
port = 443 # vcenter 的端口

# esxi
esxi_names = [] # 需要采集的 esxi ,留空则全部采集

# datastore
datastore_names = [] # 需要采集的 datastore ,留空则全部采集 

# vm
vm_enable = True # 是否要采集虚拟机信息
vm_names = [     # 需要采集的虚拟机,留空则全部采集
            "vm1",
            "vm2",
            "vm3"
           ]

运行

先尝试跑一下,假定 vsphere-monitor 放在 /opt

/opt/vsphere-monitor/env/bin/python /opt/vsphere-monitor/vsphere-monitor.py

没有问题的话,将他放入定时任务

crontab -e
0-59/1 * * * * /opt/vsphere-monitor/env/bin/python /opt/vsphere-monitor/vsphere-monitor.py

问题

部分 vm 可能会采集不到 vm.net.if.invm.net.if.out 指标,这是因为网络指标是通过 vspherePerformanceManager 采集的。可以在 vcenter 中查看虚拟机的 性能 图表时,也会发现显示错误 未指定衡量指标 或者 No Metric Specified 。这是 vmware 的 bug,在 vSphere 6.0 Update 1 以上版本被修复

详见官方 Knowledge —— 在 VMware vSphere Client 6.0 中查看虚拟机网络的实时性能图表时显示错误:未指定衡量指标 (2125021)

截图

esxi vm