Troubleshooting with Process Monitor and Login VSI

12 Dec 2013 by Ryan Ververs-Bijkerk

Category:

    Login VSI

    Process Monitor

    Procmon

    Troubleshooting

Troubleshooting with Process Monitor and Login VSI

Table of Content

  • Using Process Monitor with Login VSI
  • Process Monitor on the VSIshare
  • Conclusion

Troubleshooting with Process Monitor and Login VSI is a powerful combination. When troubleshooting a problem you often want to reproduce the same behavior. This is possible with the workload customization in Login VSI. With tools like Process Monitor you can identify problems which can help you find the root cause. In this blog post I will provide an example how to integrate Process Monitor in Login VSI.

Please note: This is a personal blog and  not an official Login VSI blog post.

Why is this useful with Login VSI?

Login VSI simulates users on a virtual desktop infrastructure (VDI) or remote desktop session host (RDSH/SBC) environment. Because Login VSI has simple workload customization you can quickly create a workload with a specific application that contains a problem. For troubleshooting you can add Process Monitor to get to the bottom of what the application is doing while Login VSI is using the application. By reproducing you can apply changes and rerun the workload to verify if the problem is solved. Because Login VSI can integrate in a production environment you are able to troubleshoot on a single target machine during office hours.

Please note: A Login VSI PRO license is required for workload customization. For more information please visit the Login VSI website  

Using Process Monitor with Login VSI

With Process Monitor you can monitor application behavior on file system- and registry-level. For more information and the download please visit the Microsoft website. Process Monitor can be run by the command line and therefore it is simple to use in a Login VSI workload.

Please note: Process Monitor requires administrative privileges.

Process Monitor on the VSIshare

The first step is to download Process Monitor. After downloading Process Monitor browse to the following location “{VSIshare}_VSI_Binaries\Target\Lib” and create a directory “Procmon”. Copy the downloaded Process Monitor executable to the “Procmon” directory. This way Login VSI will copy Procmon.exe when a Login VSI user logs on.

Procmon-dircreate Procmon-copy

Process Monitor integration in the workload

The next step is to integrate Process Monitor in the workload. First we need to know which parameters we need to use. This can be done by running Process Monitor from the command line with the /? parameter.

Procmon-parameters

To start a trace we can use the following command line:

Procmon.exe /AcceptEula /Quiet /Minimized /BackingFile “C:\Example.pml”

Within the workload we use the VSI_ShellExecute command to start Process Monitor. For all the Login VSI meta language commands please visit the documentation website.

VSI_ShellExecute("Procmon", "%temp%\VSI\Runtime\Lib\Procmon\Procmon.exe", "/AcceptEula /Quiet /Minimized /BackingFile %systemdrive%\%computername%-Procmon.pml")

After we started a trace you need to add the application you want to troubleshoot. To stop the Process Monitor trace we have to add the following command to the workload.

VSI_ShellExecute("Procmon", "%temp%\VSI\Runtime\Lib\Procmon\Procmon.exe", "/Terminate")

With two simple commands in a workload we are able to collect a Process Monitor trace. For a full example I’m using the eDrawings workload created in a previous blog post. Before we start using the application we start a Process Monitor trace. When we are finished with the application we stop the trace.

#WLProp:Version#1.0.1
#WLProp:Date#2013-12-12
#WLProp:Description#The Logitblog eDrawing Procmon Workload
##### Start segment Prepare
Segment("Workload", "Prepare")

# Skip eDrawing registration screen
VSI_RegWrite("Workload", "HKEY_CURRENT_USER\Software\eDrawings\e2014\General", "Activated", "REG_DWORD", "1")

# Random wait before starting workload
Workload_RandomIdle("Workload", 5, %VSI_RandomInitialWait%, "Waiting to start workload")

# Set mouse position
VSI_Mouse_Position("Workload")

##############################################################
##### Start segment 1 - eDrawing + Procmon               #####
##############################################################
Segment("Workload", 1)

# Start Procmon Trace
VSI_ShellExecute("Procmon", "%temp%\VSI\Runtime\Lib\Procmon\Procmon.exe", "/AcceptEula /Quiet /Minimized /BackingFile %systemdrive%\%computername%-Procmon.pml")

VSI_Random_File_Copy("eDraw1", "EASM", "%VSI_Userhome%\EASM1.easm")
App_Start("eDraw1", "", "%VSI_Userhome%\EASM1.easm", "Title", "eDrawings")
App_Focus("eDraw1", "Title", "eDrawings", "", "Maximize")
VSI_Type_Fixed("eDraw1", "{left}{left}{left}{left}{left}{left}")
VSI_Type_Fixed("eDraw1", "{down}{down}{down}{down}{down}{down}")
VSI_Type_Fixed("eDraw1", "{left}{left}{left}{left}{left}{left}")
VSI_Type_Fixed("eDraw1", "{down}{down}{down}{down}{down}{down}")
VSI_Type_Fixed("eDraw1", "e")
VSI_Type_Fixed("eDraw1", "{up}{up}{up}{up}{up}{up}{up}{up}{up}")
VSI_Type_Fixed("eDraw1", "{right}{right}{right}{right}{right}")
VSI_Type_Fixed("eDraw1", "{up}{up}{up}{up}{up}{up}{up}{up}{up}")
VSI_Type_Fixed("eDraw1", "{right}{right}{right}{right}{right}")
VSI_Type_Fixed("eDraw1", "e")
VSI_Type_Fixed("eDraw1", "{up}{up}{up}{up}{up}{up}{up}{up}{up}")
VSI_Type_Fixed("eDraw1", "{right}{right}{right}{right}{right}")
VSI_Type_Fixed("eDraw1", "{up}{up}{up}{up}{up}{up}{up}{up}{up}")
VSI_Type_Fixed("eDraw1", "{right}{right}{right}{right}{right}")
App_Close("eDraw1", "Title", "eDrawings")

# Stop procmon trace
VSI_ShellExecute("Procmon", "%temp%\VSI\Runtime\Lib\Procmon\Procmon.exe", "/Terminate")

Conclusion

With two simple commands we can create a Process Monitor trace which we can use to troubleshoot a specific or more applications on multiple targets. This way you can use Login VSI to reproduce the exact same behavior in an application while Process Monitor captures all the information. It is an efficient way to minimize the trace size and capturing only the duration when the application is used.

If you have any comments or questions leave a message below.

Tags:
Ryan Ververs-Bijkerk
Written by Ryan Ververs-Bijkerk

Ryan is a self-employed technologist at GO-INIT who specializes in the EUC and code area. He primarily focuses on the user experience in centralized desktop environments.

Search

    Follow me

    Community