ESXTOP is one of the most versatile and popular tool in the VI Administrators tool belt when it comes to real time performance analysis and data collection in a vSphere environment. In fact, ESXTOP also came up in the most recent episode of the VirtuallySpeaking Podcast covering the Top 10 Tools for VI Administrators, which Duncan Epping and I had the pleasure to be part of.
To use ESXTOP, you are required to SSH to an ESXi host as it is only available in the ESXi Shell. Traditionally, this has not been a huge issue for on-premises environment, especially as you can enable access when you needed to run ESXTOP. However, when operating on VMware Cloud on AWS (VMC), customers no longer have to worry about managing the underlying infrastructure and can now focus on being a consumer of the VMware SDDC. One side affect of this operational change is that customers do not have direct access to ESXi and would not be able to use ESXTOP.
With that said, the use case for ESXTOP is still very important and with VMC you can still access the exact same ESXTOP data by simply using the "remote" version of the CLI called RESXTOP, which has been shipping with the vSphere CLI for a number of years now. There are a number of benefits with using RESXTOP, the first is that SSH access is not required and in most customers environment, SSH access to ESXi is actually disabled by default, just like it is in VMC. Secondly, you do not have to connect directly to an ESXi host, you can simply connect to a vCenter Server and then specify the ESXi host that you wish to run ESXTOP on and provide your vCenter credentials which can then be controlled through vCenter's Role Based Access Control (RBAC). With vCenter Server support, it also means from a connectivity standpoint, you only need access to port 443, which simplifies network access as this is required for both UI and API connectivity to vCenter Server.
Note: RESXTOP is currently only available for Linux, it is not available on the Windows version. However, you can use my RESXTOP Docker Container if you need to access it on a Windows system.
Here is a screenshot of using RESXTOP on an Ubuntu 16.04 guest to connect to my VMC instance
Once you have authenticated with your vCenter credentials, ESXTOP will launch as if you were running locally in the ESXi Shell, the experience is exactly the same.
RESXTOP can be installed and run on a number of GuestOSes and for detailed instructions, be sure to check out the vSphere CLI Getting Started documentation.
UPDATE (03/28/19) - To help simplify the consumption of RESXTOP for those that may only need it from time to time, I have built a Docker Container which you can use on any system which has Docker installed.
To use the container, simply run the following command:
docker run --rm -it lamw/resxtop
In addition to quickly having access to RESXTOP, with the Docker Container, you can now access RESXTOP on a Windows system as shown in the screenshot below 🙂
Lastly, for those that require programmatic access to ESXTOP data, especially for third party tools who wish to consume a subset of these metrics, there is also vSphere API for ESXTOP, which is what RESXTOP is built on top of. For more details, please take a look at this blog post here.
Hi William! according to this documentation page: https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.monitoring.doc/GUID-194D583E-EFDC-44DF-AF3C-625974815766.html
"resxtop is supported only on Linux."
Is it available on Windows (maybe only not 'supported')?
William Lam says
It is only available in vSphere CLI for Linux. I've updated the article with a note. If you do need access on Windows, one quick way is to simply build a Docker Container with vSphere CLI, then you can spin that up when you need it. Another option is to just have a Linux VM for this purpose
A Linux container in windows? Does that even work?
William Lam says
Yes, it does! That's actually one of the benefits of using Docker 😉 I've just updated my blog post with some more details
Oh, I see. Docker Desktop is using a Linux VM on Hyper-V in the background to run Linux docker containers under Windows. 🙂
Why would I want to use esxtop in the cloud?