login vsi company logo login vsi company logo 250x40
  • Home
  • Blog
  • Login VSI
  • Cleaning up esxtop log files using PowerShell - Login VSI Tips and Tricks

Cleaning up esxtop log files using PowerShell - Login VSI Tips and Tricks

Cleaning up esxtop log files using PowerShell - Login VSI Tips and Tricks

Every now and then when doing large scale tests using Login VSI or collecting live performance data I use VMware's esxtop tool to give me a detailed insight to what’s going on at the host. While esxtop provides great insights, sometimes it’s just a little bit too much information. This got me thinking, how can I quickly sanitize the log file so it only contains information that is actually relevant for me at this moment?

And, of course, the first thing that comes to mind is a few lines of PowerShell. I simply import the csv file collected using esxtop and export it again containing only the columns of information I like. So let’s import the esxtop logfile using the Import-CSV command, select the data I like using select-object and throw it out again using export-csv.

cleaning up esxtop log files using powershell error

Hmmm, what’s happening here? This should have been a fairly straight forward. Analyzing it a bit further, I found out that this is because there is a comma ending every line.

cleaning up esxtop log files using powershell error comma

Luckily PowerShell allows me to fix that before I feed the content to import-csv. While experimenting, I figure at this point it’s probably best to create a simple script that does the following:

  • Point to the esxtop log that I would like to filter
  • Import the “broken” csv file
  • Remove the last character from every line
  • Import the “fixed” CSV file
  • Select the counters of my choice
    • *\Physical Cpu(_Total)\% Util Time
    • *\Physical Disk Adapter(vmhba0)\Commands/sec
    • *\Physical Disk Adapter(vmhba0)\Reads/sec
    • *\Physical Disk Adapter(vmhba0)\Writes/sec
  • Write it to a new file (export.csv)
  • Clean up
Write-Host Select file
$fd = New-Object system.windows.forms.openfiledialog
$fd.MultiSelect = $false
Write-Host Read file
$text = Get-Content -Path $fd.filenames
$text | %{ $lines += $_.SubString(0,$_.Length-1) }
$FixedFilename = $fd.filenames -replace ".csv", ".fixed"
$FilteredFilename = $fd.filenames -replace ".csv", ".filtered"
Write-Host Write fixed logfile
Set-Content -Path $FixedFilename -Value $Lines
Write-Host Read fixed logfile
$csv = import-csv -path $FixedFilename
Write-Host Write filtered logfile
$csv | select-object "*\Physical Cpu(_Total)\% Util Time", "*\Physical Disk Adapter(vmhba0)\Commands/sec", "*\Physical Disk Adapter(vmhba0)\Reads/sec", "*\Physical Disk Adapter(vmhba0)\Writes/sec" | export-csv  export.csv -notypeinformation
Write-Host Delete temp files
remove-item $FixedFilename 

For those of you who have their regional settings setup in a way that Excel does not require the comma fix, that’s great! Otherwise you can now live knowing that your log files will be a lot smaller :-).

Also, make sure to read this blog about PowerShell.

About the author

Mark Plettenberg (@markplettenberg) is a product manager of Login VSI and has played a critical role in the development and growth of Login VSI. Ask Mark about motorcycle mechanics and breaking/repairing anything and everything that has a power plug.

Tags: How-to, Login VSI, VMware, Load Testing, Best Practices, Support, Scripts

Login VSI Named Industry Leader

Research Firm Cites Login VSI as Key Vendor
for Changing IT Environments

Read the Report