vsphere-monitor 通过 pyvmomi 采集 vsphere 集群的数据

发布于 2020-10-04 21:12:37 字数 5575 浏览 1623 评论 0

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

版本需求

python 2.7

上报数据字段

metrictagtypenote
datastore.capacitydatacetner=datacenter,
datastore=datastore,
type=type
GAUGE存储容量
datastore.freedatacetner=datacenter,
datastore=datastore,
type=type
GAUGE存储剩余容量
datastore.freePercentdatacetner=datacenter,
datastore=datastore,
type=type
GAUGE存储剩余容量
esxi.alivedatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 存活,值为 1,可以用来做 Nodata
esxi.net.if.indatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 网络进流量(所有网卡总和)
esxi.net.if.outdatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 网络出流量(所有网卡总和)
esxi.memory.freePercentdatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 剩余内存百分比
esxi.memory.usagedatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 内存使用量
esxi.memory.capacitydatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 内存总量
esxi.cpu.usagedatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi CPU 使用率
esxi.uptimedatacetner=datacenter,
cluster_name=cluster_name,
host=host
GAUGEesxi 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)

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

烙印

文章 0 评论 0

singlesman

文章 0 评论 0

独孤求败

文章 0 评论 0

晨钟暮鼓

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文