Work in progress; New version of vAudit with support for VMware View 5.x

I finally got around working on a new version of vAudit. If you do not know what vAudit it, it is a monitoring / auditing tool for VMware View/Horizon environments. The standard logs from VMware View are useless as it logs actions, but not really sessions. For each session there is somewhere a log entry of connecting and later, at some point, a seperate log entry of a disconnect or logoff.

Also VMware View does not log any information about the client that users are using. This information is only available inside the desktop VMs.

So what does the new vAudit do?

Well it monitors the VMware view event log. When it sees when a new connection to a desktop is made, it will use WMI to remotely read out the view client information like client IP, protocol used and Device type (mac, win, ios, etc). As the program uses remote WMI, no extra client software is needed inside the desktop VMs. This information is then stored in a new sessionlog table (automatically created in the view event server database).

When a session disconnect/logoff is detected, vAudit finds the matching record of the login and will update this with the logoff/disconnect information (time and the way the session ended, status 2 is disconnect and status 3 is logoff).

The result… A very simple and easy readable log file, where each entry is all the information of the session; login time, logoff time, client information, pool id, desktop id, etc

Now having this information you can easily create charts and much more.

The charting is not finished yet, but I am releasing the log monitoring engine. It does not run as a windows service yet (the final version will), but if you want to test it out (and provide me with feedback) you can now download the vAudit test enigine in the download section.

Important to know: vAudit does NOT edit any of the official view database tables, it only creates an extra table (sessionlog). it only communicates to the event server (mssql) and using VMI the desktop VMs. It does not touch the actual connection servers.


Extensive VDI Anti Virtus report released by Project VRC

Today the VRC Team released a new report in a long list of reports regarding Desktop Virtualization. This report goes into detail about how Anti Virus solutions impact you performance for VDI environments. It does not only investigate the traditional methods of doing anti-virus, but also looks at the various offloading (via network and via vSphere vShield API) methods.

Interesting to see is that the vShield offloading method does improve well on Disk i/o, but CPU is not being reduced.

The most important thing is that the document does not just describe the perfomance result with the default behaviour of the most common anti virus solutions, but discusses what kind of optimisations  can be made and what their impact are. So a very useful document for anyone running or building a VDI environment.

The 80 Page report can be downloaded here: http://www.projectvrc.com/white-papers


New Client Side Performance Testing for your VDI environment

Yesterday, Login Consultants announced their new Client Side performance testing module for Login VSI. If you are evaluating a VDI solution like VMware PCoIP, Citrix HDX or Oracle VDI based on RDP you might care about the performance of the display protocol, especially if you are not going to do VDI on a local lan but use a WAN or the Internet.

This is not a stand-alone tool, but an optional module for Login VSI Pro 3.6. The beta version will be available at no additional cost for existing users of VSI Pro (which you would expect from a beta product), but it seems like there likely will be an extra charge when the module will go GA.

The main new type of testings that can be done are:

  • Character response – How long does it take to press a key on the keyboard and return it onscreen via protocol?
  • Large text response – How long does it take to show a large block of text onscreen via protocol?
  • Mouse click feedback – How long does it take to register and handle a mouse click within the remoting session?
  • Image quality and loading times – How long does it take to show a complex image onscreen via protocol? This image has been specifically designed to measure quality and speed of different protocols in an independent way.

All testing is done based on client-side screen scraping technologies, so the module is completely protocol independent and can test anything that is out there.

Image Response Testing

Benchmark overview

Image Quality testing


More information: VSI Press release

VMware takes big lead on Citrix and Microsoft with VDI

A new, somewhat independent, survey report is released by VIBriefing today. The survey is sponsored by Virsto Software, who makes storage and VDI solutions for VMware vSphere and Microsoft Hyper-V (not yet supporting Citrix, but this is announced that they will).

According to the survey, 65% of respondents use VMware as their hypervisor for their VDI projects, versus 12% using Citrix and 8% using Hyper-V. That seems like a huge lead for VMware, which somewhat surprises me as Citrix originally was/is the leader in the Desktop space.

According to the survey, 46% of VDI projects are stalled due to cost and performance issues. I guess after so many years of VDI software development, no solution on the market offers an easy answer 🙁

Read the full findings on Virsto’s website


VMware View – Getting data out of the Events Database

Well I started work in my new version of vAudit, making more functionality and most important support for View 5. In case you do not know what vAudit is, it is mainly a tool to understand who and when is using your View environment. This can help you see how well the adoption of your VDI systems is going, when not to plan maintenance, etc.

In the old version of vAudit I used WMI to query the event logs of the brokers to see who was logging in and out. Since View 4 the products comes with the option to store all events in an events database (Microsoft SQL or Oracle). So for this new version this is what I want to use. Unfortunately VMware’s View engineers are not easily storing the event data (and this is an understatement!). So it took me a while to even get some basic information out of the system. As my vAudit is not ready for release yet, I thought I would at least share some SQL statements with you, in case you want to start cracking 🙂

Checking daily max concurrent users.
Well this is the easiest (and the only easy thing) to do. As the broker service daily writes an event 5 minutes to midnight in the events database on that days max concurrent user. You can easily get this using a query like this: (MS SQL)

select Count, Time from(select top 30 dbo.view_event_data_historical.IntValue as 'Count', dbo.view_event_historical.Time as 'Time' from dbo.view_event_historical,dbo.view_event_data_historical where dbo.view_event_historical.EventID = dbo.view_event_data_historical.EventID and  dbo.view_event_data_historical.Name = 'UserCount' and dbo.view_event_historical.EventType='BROKER_DAILY_MAX_USERS' order by dbo.view_event_historical.Time DESC) A Order by Time

This might seem like an extensive way of doing this, but it will allow you to control the last so many days to query. Just change the ‘top 30’ to any amount of days.

With this data you can chart a nice daily max concurrent user overview. See my screenshot of the new vAudit release. (I did alter the data in the database to make it look like I have a lot of sessions).

NOTE: also on the name of the tables. When you install view, it asks for a table prefix. In my case I supplied “view” as prefix. So make sure to check your prefix and modify the table names based on that.


Session overview

If you want to make more sense of the sessions used by your users, it becomes more of a challenge. Each time a users logins to the broker an events is written. The same for when they session is broken/loggedout. In the event table these events are not easily connected 🙁 so you would have to query for each the event_data table as well to get the broker session ID and match them all up. The super irritating thing is that the time stamp is NOT in the event_data table but just in the events table. This would else have made it into a very easy query. So after a lot of googling, cursing and wishing I wan an SQL expert, here is what I came up with.

drop table #sessions
drop table #logoffs
drop table #users

create table #sessions (SessionID varChar(32), StartSession datetime, EventID int)

insert into #sessions (SessionID, StartSession, EventID) select view_event_data_historical.StrValue, view_event_historical.Time, view_event_data_historical.EventID  from view_event_historical, view_event_data_historical  where view_event_historical.EventID = view_event_data_historical.EventID and view_event_historical.EventType = 'BROKER_USERLOGGEDIN' and view_event_data_historical.Name = 'BrokerSessionId'

create table #users (EventID int, username VarChar(512))

insert into #users (EventID, username) select view_event_data_historical.EventID, view_event_data_historical.StrValue from view_event_data_historical, view_event_historical  where view_event_historical.EventID = view_event_data_historical.EventID and view_event_historical.EventType = 'BROKER_USERLOGGEDIN' and view_event_data_historical.Name = 'UserDisplayName'

create table #logoffs (SessionID varChar(32), EventID int, EndSession datetime)

insert into #logoffs (SessionID, EventID, EndSession)select view_event_data_historical.StrValue, view_event_historical.EventID, view_event_historical.Time from view_event_historical, view_event_data_historical  where view_event_historical.EventID = view_event_data_historical.EventID and view_event_historical.EventType = 'BROKER_USERLOGGEDOUT' and view_event_data_historical.Name = 'BrokerSessionId'  

 select #sessions.SessionID, #sessions.StartSession, #logoffs.EndSession, #users.username from #logoffs, #users, #sessions where #logoffs.SessionID = #sessions.SessionID and #users.EventID = #sessions.EventID

The query uses some temporary tables to help match the session ID’s, get the Start time from one event, the end time of an other event and get the displayname of the user. See the picture of my result.

Next step would be to use this data to make daily charts on when most uses are logged in and out, users stats like average session time, etc. So more to come 🙂

Just to extra clarify what this query does, it check sessions to the Broker! not to the actual VMs. You can do this as well, but even more complicated (as those do not have unique IDs like BrokerSessionID). The the list shows people logging into the broker, but you will NOT know if they started one, two or more virtual machine sessions.


If you have any SQL work for View you want to share, please do! If you can optimize my lame-ass sql queries, please do 🙂


I will hopefully soon be posting a beta of the next vAudit that does all this and translates it into nice charts.




Are you running a VMware View environment in production?


I was planning to update my vAudit program in the coming days. This util allows you to see which people have been using your view environment. I need to make it support View 5, but was wondering if anyone out there is running view 5 in the real world and could tell me what he/she was missing, to see if I could include that in the next release of vAudit.

So any feedback, please drop it in the comments field or send me an email.


HTML5 client for VMware View!!!

ok… do not get to excited yet.. it just came in beta today, but Ericom has developed (or still is) a html5 client for VMware View that will work from a windows, linux, mac and Chrome OS device! Unfortunately the solution is not based on PCoIP but on RDP, but does even further open up the possibilities to connect back into your VMware View environment without having any local clients installed.

As the technology is pure HTML5 based, it does not require any Java, flash, silverlight or other client installs 🙂

You can signup for the beta here.

Windows XP and Windows 7 on ‘Red Bull’

Yep, this is the new title of the 3rd fase/release of the Virtual Reality Check. A program run by Jeroen van de Kamp, Sven Huisman en Ruben Spruijt. This extensive document focus on how to optimize VDI environments with Windows XP and Windows 7. All the test and benchmarks where done using vSphere 4.0 U2 and the latest release vSphere 4.1

The document entails information about:
– Which performance optimization on the host and guest virtualization level can be configured, and what is the impact of these settings on user density?
– How do various Microsoft Windows Client OS’s scale as a virtual desktop?
– What is the best way to partition (memory and vCPU) the Virtual Machines the hypervisor host, to achieve the highest possible user density?
– and much more!!!

If you are doing or planning a VDI environment, this document is a must read. And I would say, send a nice bunch of flowers to the VRC team as they probably just saved you 100s of hours of research.

Why the Red Bull?
The funny pick of the document’s title with “red bull” in it, refers to their research about the HaltingIdleMsecPenalty setting on ESX. Using this parameter correctly it allowed them to get an insane boast on their servers allowing for much more Virtual Machines to run.

You can find the full document here: http://www.virtualrealitycheck.net/

Unofficial PowerShell SDK for VMware View (part 1)

Welcome to this first part of the ‘unofficial SDK for VMware View”. You might wonder, why “unofficial”? Well, simple, VMware View is one of the few products from VMware that does not have an SDK 🙁 So if you want to script/program/automate anything against VMware View, you are out of luck. That is, officially you can not.

VMware View uses Microsoft ADAM (Active Directory Application Mode) to store its data. After a day of googling and puzzling, I was finally able to figure out how to do some of these ADAM calls myself using visual basic and powershell. In this part 1, I want to share 2 beginning powershell scripts with you.

Script 1 – Show Desktop Pool Properties

$poolname = "type_here_your_pool_Unique ID name"
$connectionbroker = "type_here_your_IP_of_your_connection_broker"
$userName = "type_your_username"
$userPassword = "type_your_password""

$ldaproot = "LDAP://$connectionbroker/CN=$poolname,OU=Applications,DC=vdi,DC=vmware,DC=int"

$directoryEntry = New-Object System.DirectoryServices.DirectoryEntry($ldapRoot)


Script2 – Disable/Enable a desktop pool

$poolname = "type_here_your_pool_Unique ID name"
$connectionbroker = "type_here_your_IP_of_your_connection_broker"
$userName = "type_your_username"
$userPassword = "type_your_password"

$ldaproot = "LDAP://$connectionbroker/CN=$poolname,OU=Applications,DC=vdi,DC=vmware,DC=int"

$directoryEntry = New-Object System.DirectoryServices.DirectoryEntry($ldapRoot)

# 0 = enabled 1 = disabled

Script 2 can be used to make any changes. If you for instance did not want to change the pool state, but it’s displayname, you can just replace the 2nd last line with:


The next thing I want to find out is how to query which desktops are actively being used and the state of each desktop, but I have not been able to figure this our yet. If anyone would like to help out on this project, please contact me!

Howto run a large desktop on a small iPhone screen with your big finger :-)

Wyse released this week their PocketCloud iPhone app. You might wonder how can I run a large desktop on just a small iPhone screen, with no styles but just your big finger, well Wyse really did solve this challange with their application. During VMworld the app is on sale for $19.99 on the iTunes App store, after september 6th it will go back to $29.99.

Some of the features:
– RDP 6.0
– VMware View 3.1 support, including SSL and experimental RSA authentication
– Advanced high-accuracy mouse cursor
– Thin Browser (server side browser with iPhone GUI)