Sunday, January 20, 2013

Troubleshooting a XenDesktop Issue... What do the Logs Say?

Over the years when working with System Center Configuration Manager you get used to combing logs to resolve issues. ConfigMgr has a log for everything so it was my surprise when I starting working with XenDesktop how limited logging is out of the box. After working through my first major outage, I quickly found out that logging is no good if it is not enabled. It’s not that XenDesktop doesn’t have logging it just doesn’t have enabled by default. I would highly recommend enabling the following logging in XenDesktop – on the VDA, on the DDC and PorrtICA.

Enabling Virtual Desktop Agent (VDA) logging (CTX117452):
  • Change your vDisk to Private mode and boot your template machine
  • Log in with an admin account
  • Navigate to %ProgramFiles%\Citrix\Virtual Desktop Agent
  • Backup WorkstationAgent.exe.config
  • Open the configuration file with a program such as Notepad
  • Locate the following section <appSettings> section  (Near the top of the config file) and update as follows:
    • <add key=”LogToCDF” value =”1”/>
    • <add key="LogFileName" value ="D:\XDLogs\vda_log.log"/>
    • <add key="OverwriteLogFile" value ="1"/>
  • Save and close the file
  • Restart the Citrix Desktop service or reboot your template machine and confirm that the log file gets created
The above configuration will redirect the log file to the D:\ partition (Assuming that you have persistent disk) but you can change the location to whatever works for your environment. If you set to the location to somewhere on the C:\ drive ensure that you set the correct permissions. You can also configure the log to overwrite itself anytime that the Citrix Desktop Service starts. (Shown above) If you don’t set the log file to overwrite just be mindful of your disk space.

Enabling Desktop Delivery Controller (DDC) logging (CTX117452) with XenDesktop 5.6:
  • Log into your DDC with an admin account
  • Navigate to %ProgramFiles%\Citrix\Broker\Service
  • Backup BrokerService.exe.config
  • Open the configuration file with a program such as Notepad
  • Locate the following section <appSettings> section  (Near the top of the config file) and update as follows:
    • <add key="LogToCDF" value ="1"/>
    • <add key="LogFileName" value ="D:\XDLogs\controller_log.log"/>
    • <add key="OverwriteLogFile" value ="1"/>
  • Save and close the file
  • With XenDesktop 5.6 I did not have to enable logging for CdsPoolMgr.exe.config as outlined in CTX117452
  • Restart the Citrix Broker Service (This will cause any virtual desktops connected to the server to re-register with another controller)
The above configuration will create a log file on the D:\ partition assuming that you have one. If you set the log location to be somewhere on your C:\ partition watch that your permissions are set correctly. Since the log file will only overwrite itself when the Citrix Broker service is restarted this log file can grow quite large. Personally I only enable this logging when I’m troubleshooting a specific issue and then I leave it disabled.

Enabling PortICA logging (CTX118837):
  • Change your vDisk to Private mode and boot your template machine
  • Log in with an admin account
  • Navigate to %ProgramFiles%\Citrix\ICAService\XML (If the XML folder does not exist, create one)
  • Create an new XML file called PorticaConfig.XML
  • Paste the following into the file:
  • <?xml version="1.0" encoding="utf-8"?>
    <Config xmlns="Portica.xsd">
            <Portica>
            <LogFile>
                <LogLevel>5</LogLevel>
            </LogFile>
            <CdfTrace>
                <LogLevel>5</LogLevel>
            </CdfTrace>
            <FunctionTrace>
                <LogLevel>5</LogLevel>
            </FunctionTrace>
        </Portica>
    </Config>
  • Save and close the file
  • Restart the Citrix ICA service or reboot your template machine
You can change the level of logging with the following values 0, 1, 5 or 9 with 0 being the least verbose. Unfortunately you can not change the directory where the log file gets created so you if you use a standard vDisk that gets refreshed at every logoff you’ll need a shutdown script to copy the log to either a persistent disk or a file share. By default on Windows XP the log file is located at: C:\Documents and Settings\LocalService\Local Settings\Temp and on Windows 7 it’s located at %WinDir%\ServiceProfiles\LocalService\AppData\Local\Temp

There is also a logging tool that Citrix has published as outlined in CTX127492 that can enable more logging however I have solved most of my issues using VDA, DDC and PortICA logging. Regardless of how you setup logging a great utility to help you read them is Trace32.exe from the ConfigMgr toolkit. Download and install the tools and then open your log files with Trace – your eyes will thank you.