生产环境一直使用vCenter管理host主机,因规模小没上vcops。从升级vcenter6.5后个别VM总是莫名其妙的报内存使用率过高的问题,而实际内存使用并不高,资源也够用。vcenter本身没有很好的工具分析和监控vsphere,但vmware有专门的管理软件vcops(现改为vrops)。
  官方帮助文档:http://pubs.vmware.com/vrealizeoperationsmanager-65/index.jsp#com.vmware.vcom.core.doc/GUID-7E6B5805-3D2F-41C4-ADFF-B7248386E7AC.html


安装过程:
1、下载OVA模板文件:vRealize-Operations-Manager-Appliance-6.5.0.5097674_OVF10.ova
2、部署OVF模板

    1>. 登录VCSA控制台,选择部署OVF模板

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第1张图片

    2>. 选择“本地文件”,浏览到下载的模板文件所在位置,选择ova文件,确定。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第2张图片

    3>. 输入OVF名称

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第3张图片

    4>. 选择部署的主机

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第4张图片

    5>. 查看详细信息

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第5张图片

    6>. 接受许可协议

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第6张图片

    7>. 选择部署配置为“小型”

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第7张图片

    8>. 选择存储,硬盘格式为“精简模式”

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第8张图片

    9>. 选择网卡,下一步。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第9张图片

    10>. 配置IP地址、DNS、网关、时区。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第10张图片

    11>. 确认配置后,完成。开始导入OVF模板。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第11张图片

    12>. 导入成功

  wKiom1kKm5niFdMZAABR99kZS-o993.jpg

3、开启虚拟机,初始化vrops

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第12张图片

    1>.输入https://ip/admin,打开vrops初始化界面,选择“快速安装”。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第13张图片

    2>. 首次安装,创建vrops群集。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第14张图片

    3>. 设置管理员密码

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第15张图片

    4>. 完成,开始初始化。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第16张图片

  wKioL1kKokvT59lcAAAYOGu_Bg4001.jpg

    5>. 初始化后,输入管理员账号和密码登录控制台。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第17张图片

    6>. 配置vrops,下一步。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第18张图片

    7>. 接受协议条款,下一步。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第19张图片

    8>. 输入产品许可密钥,下一步。完成。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第20张图片

    9>. 选择vCenter适配器(如上图),点击配置。输入vcenter管理员账号和密码,点击“测试连接”

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第21张图片

    10>. 连接成功后,保存设置。开始数据收集。

  wKioL1kKsu_AIB-lAAA9L9No_0Y408.jpg

4、配置完成,查看VROPS主页的各监控数据。

    1>. 打开vrops主页,可以看到各功能模块

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第22张图片

    2>. 建议模块

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第23张图片

    3>. 诊断,在左侧选择需要诊断的对象(host或vm)即可查看相关数据。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第24张图片

  点击对象详细信息(如上图),就可以看到更详细的性能及各指示分析数据。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第25张图片

    4>. 主机概览,由于主页模块非常多,可以通过“仪表盘列表”来打开相应的模块。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第26张图片

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第27张图片

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第28张图片

    5>. 运维概览

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第29张图片

  VROPS可以从多维度监控vsphere的运行情况。具体的需要花时间慢慢去研究。

5、环境概览,从主页-->环境-->vSphere World-->分析

  可以针对主机或虚拟机进行资源分析

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第30张图片

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第31张图片

  在“报告”界面,可以选择想生成报告的项目,点击运行以生成报告。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第32张图片

  点击已生成的报告,可以选择下载PDF或CSV文件。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第33张图片

  wKioL1kK79CxsH3zAAA7WBp44EY063.jpg

6、在主页-->警示界面,可以查看所有告警信息。针对警示信息再具体分析。

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第34张图片

  上图中状态为活动的警示,说明这些VM存在问题。其中就包含了一直不知道原因的内存报警的虚拟机,警示为“虚拟机具有意外的高内存工作负载”,单击打开

  VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第35张图片

  处理建议:检查客户机应用程序以确定高内存工作负载是否是预期行为。

  其他建议:为此虚拟机增加更多内存。

  在之前有些VM报警时检查过应用程序,有个别程序占用内存较大。但总内存使用量远未达到报警所占的比例。通过增加内存,解决了报警的问题。但不想给每台报警的都增加内存,毕竟实际使用的并没有那么多。

  为什么报警的原因和VM内存管理机制有关,此时可以尝试升级虚拟机兼容性(如硬件版本从8升到10,实测有效)、检查vmtools安装和版本情况、为VM预留足够的内存等在不增加VM内存的情况下解决告警的问题。


7、配置邮件通知

官方文档:创建 vRealize Operations Manager 电子邮件警示通知 

http://pubs.vmware.com/vrealizeoperationsmanager-65/index.jsp#com.vmware.vcom.core.doc/GUID-AE26F747-EBC7-44DE-BACB-6B0B8593546C.html


作为虚拟基础架构管理员,您需要 vRealize Operations Manager 向高级网络工程师发送电子邮件通知,告知系统生成了 mmbhost 对象(用于运行事务性应用程序的诸多虚拟机的主机)的严重警示,无人接管警示。


先决条件

确保至少有一个正为其发送通知的警示定义。有关警示定义的示例,请参见为部门对象创建警示定义。(默认已有很多警示定义)

确保至少一个标准电子邮件插件实例已配置并正在运行。请参见为 vRealize Operations Manager 出站警示添加标准电子邮件插件。

添加出站实例:主页-->系统管理-->出站设置:

VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第36张图片

点击+加号,添加实例:

如下,输入实例名称、SMTP相关信息。点击测试,测试成功,保存即可。

VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第37张图片

步骤

1. 在 vRealize Operations Manager 的左侧窗格中,单击内容图标。

2. 单击通知,然后单击加号以添加通知规则。

3. 在名称文本框中,键入与 Unclaimed Critical Alerts for mmbhost 类似的名称。

4. 在“方法”区域中,从下拉菜单中选择标准电子邮件插件,然后选择配置的电子邮件插件实例。

5. 配置电子邮件选项。

   a. 在收件人文本框中,键入高级工程团队成员的电子邮件地址,并以分号 (;) 分隔这些地址。

   b. 要在指定时间后警示仍处于活动状态的情况下再次发送通知,请在再次通知文本框中键入分钟数。

   c. 在最大通知数文本框中,键入向用户发送的通知数。

6. 配置筛选条件的范围。

   a. 从范围下拉菜单中,选择对象。

   b. 单击单击以选择对象,然后键入对象的名称。

      在此示例中,键入 mmbhost。

   c. 在列表中找到并选择此对象,然后单击选择。

7. 配置通知触发器。

   a. 从通知触发器下拉菜单中,选择影响。

   b. 从相邻下拉菜单中,选择运行状况。

8. 在“严重程度”区域中,单击严重。

9. 展开“高级筛选器”,并从警示状态下拉菜单中选择未解决。

   “未解决”状态表示没有工程师或管理员接管此警示。

10. 单击保存。

   您已创建一条通知规则,指定系统在已生成 mmbhost 对象的严重警示且无工程师接管此警示时向高级网络工程师团队发送电子邮件。此电子邮件可提醒他们查看警示、接管并努力解决触发症状。

VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第38张图片

后续步骤

   响应警示电子邮件通知。请参见用户方案:收件箱中出现警示。


8、关于虚拟机内存报警问题

内存性能问题的解决方案(官方文档)

https://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.vsphere.monitoring.doc%2FGUID-115861E6-810A-43BB-8CDB-EE99CF8F3250.html


主机计算机内存是客户机虚拟内存和客户机物理内存的硬件备份。主机计算机内存必须至少稍大于主机上虚拟机的总活动内存。虚拟机的内存大小必须稍大于客户机内存平均使用情况。增加虚拟机内存大小可导致更多内存使用情况开销。


问题

■  内存使用情况一直很高(94% 或更高)或者一直很低(24% 或更低)。

■  可用内存一直为 6% 或更低,且交换频繁发生。


原因

■  主机可能缺少满足要求所需的内存。如果活动内存与分配的内存大小相同,则会导致用于负载的内存资源不足。如果活动内存一直很低,则分配的内存会过多。

■  主机计算机内存资源不足以满足要求,这会导致内存回收和性能降低。

■  如果活动内存与分配的内存大小相同,则会导致用于负载的内存资源不足。


解决方案

■  验证是否在每个虚拟机上均安装了 VMware Tools。虚拟增长驱动程序与 VMware Tools 一起安装,它对性能而言至关重要。

■  验证是否启用了虚拟增长驱动程序。通过虚拟增长和交换,VMkernel 定期回收没有使用的虚拟机内存。通常,这不影响虚拟机性能。

■  如果内存太大,则在虚拟机上减少内存空间,并更正缓存大小。这将为其他虚拟机释放内存。

■  如果虚拟机的内存预留值设置大大高于活动内存设置,则减少预留设置,以便 VMkernel 可以回收空闲内存供主机上其他虚拟机使用。

■  将一个或多个虚拟机迁移到 DRS 群集中的主机上。

■  将物理内存添加到主机。


如何理解VMware内存资源管理


在虚拟化应用中,内存是最为宝贵的资源。同CPU和存储资源管理相比,虚拟化的内存资源管理更为复杂。 

  • 内存回收vmware ESX hypervisor(管理程序)能够截获虚拟机第一次访问某内存,将物理内存填零后分配给虚拟机,但是hypervisor无法得知虚拟机中哪些内存是空闲的。hypervisor不断的将内存分配给虚拟机,当在内存超配(memory overcommitment)的情况下主机物理内存将可能耗尽,因此hypervisor需要从虚拟机中回收(reclaim)内存,ESX hypervisor使用以下机制回收内存:
    当主机可用内存高于等于6%时,hypervisor仅使用透明页共享回收内存(当没有设置虚拟机内存限制时)。如果虚拟机设定了内存限制,则hypervisor使用ballooning甚至swapping回收内存直到低于限定值。当主机可用内存接近4%时,hypervisor使用ballooning回收内存,一般情况下可以及时的回收内存,让可用内存保持在4%以上。如果ballooning不足以回收内存,主机可用内存接近2%时,hypervisor在ballooning回收内存的基础上增加使用swapping(并激活内存压缩)加速内存回收,让可用内存保持在4%以上。罕见的当主机可用内存只有1%时,hypervisor除了继续使用ballooning和swapping回收内存,还禁止所有虚拟机申请更多内存。

    • 透明页共享(Transparent Page Sharing):当多个虚拟机在一个主机上运行时,可能有些内存页是一样的,比如一样的Guest OS。hypervisor通过周期性的扫描内存页生成hash值在内存hash总表中查找,一旦hash匹配就会进行完整比较,确认内存页完全一样后hypervisor会删除冗余内存页以指针代之,类似于存储中的重复数据删除功能。当某虚拟机对共享内存页试图写时,hypervisor会复制一个这个虚拟机的专有页来修改,保证共享页不被破坏。这种内存回收的速度取决于扫描的速度,在ESX(i)的高级设置中可以设置扫描速度和时间间隔。所以最好将相同或者相近的OS部署在一台host上面,以便更好的使用TPS节省内存。

    • 气球膨胀(Ballooning):由于hypervisor无法得知虚拟机中哪些内存是空闲的,因此依靠VMware Tools在Guest OS中的气球驱动(balloon driver)来回收内存。当需要从该虚拟机回收内存时,气球膨胀从Guest OS中请求内存,分配给气球驱动的内存可被hypervisor安全的回收,Guest OS自行决定将哪些内存swapping交换到硬盘上以保证分配给气球驱动内存。显然需要安装VMware Tools才能实现气球回收内存,通过这种方式回收内存较慢,依赖于Guest OS内存分配的速度。

    • 内存交换(Hypervisor Swapping):当虚拟机启动时就会创建一个内存swap文件,文件大小为最大内存交换量(虚拟机配置内存-内存预留)。当上面两种回收方式不能满足需求时,hypervisor会进行swapping将虚拟机的物理内存交换到硬盘上。hypervisor并不知道将哪些内存交换好,Guest OS也不知道哪些内存被交换了,这将极大的影响虚拟机的性能,当出现这种情况时说明需要加内存了。

    • 内存压缩(Memory Compression):这是4.1版本的新功能,对内存的交换的优化。如果swapping的内存页是可压缩的,则将其压缩后存储在压缩缓存区中,这样再次访问这个被swapping的内存时仅需要解压缩,而不是从硬盘读取,这将快的多。不能压缩或压缩缓冲区满则会与硬盘进行真正的swapping。在ESX(i)的高级设置中可以设置压缩缓存的大小等。

  • 虚拟机内存分配VMware ESX(i)提供了三个参数来控制虚拟机的内存分配。

    • “限制(Limit)”限定了分配给虚拟机物理内存的上限,如果虚拟机使用的内存超过该限定值则hypervisor强制回收内存,默认是无限制,即以虚拟机内存大小为限。虚拟机硬件设置中的内存对于大多数Guest OS是不能热添加的,有的能热添加但是要使用添加的内存还要重启Guest OS,只有少数Guest OS能热添加并使用的,因为这个需要Guest OS识别,因此对Guest OS要求高。但是内存限制可以在虚拟机运行时随意的调整,Guest OS无需感知是透明的。

    • “预留(Reservation)”是保证分配给虚拟机最低物理内存的下限,即hypervisor至多从虚拟机回收内存到预留值为止,不再继续回收,保证一个基本的内存可避免性能降低到无法忍受。

    • “份额(Shares)”是当主机内存过量使用时,虚拟机可获得的物理内存是通过一个公式计算得到的,份额是其中一项。默认份额=虚拟机内存*10。公式:ρ=份额/(活动内存+k*空闲内存),ρ就是该虚拟机可获得物理内存比例的分子,分母是所有虚拟的ρ的和。k是惩罚因子,k=1/(1-IMT),IMT为空闲内存税(Idle Memory Tax),默认IMT=75%,即k=4,IMT值可以在ESX(i)的高级设置中修改。显然份额越大,活动内存比例越高则ρ越大,可获得的物理内存越多。hypervisor从ρ最小的虚拟机开始回收内存。

VM虚拟机内存报警和vRealize Operations Manager 6.5部署_第39张图片


官文文档:Understanding Memory Resource Management in VMware ESX Serve

http://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/perf-vsphere-memory_management.pdf