<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nicholas Dille</title>
	<atom:link href="http://blogs.sepago.de/nicholas/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.sepago.de/nicholas</link>
	<description>Nicholas Dille on Terminal Services and related technologies</description>
	<lastBuildDate>Fri, 12 Mar 2010 15:16:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
    <title>Nicholas Dille</title>
    <url>http://blogs.sepago.de/nicholas//wp-content/themes/k2/styles/sepago/nicholas.jpg</url>
    <link>http://blogs.sepago.de/nicholas</link>
    <width>77</width>
    <height>87</height>
    <description>Nicholas Dille - http://blogs.sepago.de/nicholas</description>
    </image>		<item>
		<title>How Many Will Be Affected By The EdgeSight Timebomb?</title>
		<link>http://blogs.sepago.de/nicholas/2010/03/12/how-many-will-be-affected-by-the-edgesight-timebomb/</link>
		<comments>http://blogs.sepago.de/nicholas/2010/03/12/how-many-will-be-affected-by-the-edgesight-timebomb/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 15:13:12 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[System Management]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[EdgeSight]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=716</guid>
		<description><![CDATA[I hope it is commonly known by now that EdgeSight 5.0 and 5.1 will stop working on 25th of March 2010. That&#8217;s merely two weeks away! In my opinion, the warning Citrix has published does not suffice for an issue of such effect.

Code Signing is Important
In the last years, the signing the executables and libraries [...]]]></description>
			<content:encoded><![CDATA[<p>I hope it is commonly known by now that EdgeSight 5.0 and 5.1 will stop working on 25th of March 2010. That&#8217;s merely two weeks away! In my opinion, the warning Citrix has published does not suffice for an issue of such effect.</p>
<p><span id="more-716"></span></p>
<p><strong>Code Signing is Important</strong></p>
<p>In the last years, the signing the executables and libraries in a product has become common practice. This process protects the product from unauthorized tampering as any changes to a signed file can be detected by the signature becoming invalid. Consequently, code signing is an important protection against malware.</p>
<p>But the certificate protecting the signed code has a limited lifetime. As soon as the corresponding certificate expires, the signature cannot be considered to be valid as the vendor lost the credibility represented by the certificate. Usually, a vendor obtains a new certificate with a new lifetime and renews the signatures on the affected binaries. This is implemented by providing a hotfix of some kind for the product.</p>
<p><strong>The Issue at Hand</strong></p>
<p>EdgeSight 5.0 and 5.1 are currently suffering from the case described above &#8211; the certificate used for signing the code expires on the 25th of March 2010 (<a href="http://support.citrix.com/article/ctx124013" target="_blank">see this support article</a>). Therefore, customers are forced to update to the latest versions (5.1.1 or 5.2.x). Unfortunately, this situation is hardly common knowledge so that I expect many angry calls to be logged with Citrix Support at the end of this month.</p>
<p><strong>The Real Issue and my Plea</strong></p>
<p>In my opinion, Citrix can hardly be blamed for the lifetime of a certificate &#8211; that&#8217;s just how they work. But I would have expected a proactive warning for customers. The articles in the Citrix knowledge base are of a rather informational nature and a warning can easily be overlooked. Especially, when the title (<em>EdgeSight 5.0 and 5.1 Error: The archive is not appropriately signed</em>) does not clearly state the effect of this message.</p>
<p>If a components suddenly stops functioning, direct communication is necessary. Publishing an article in the knowledge base does not suffice because many customers do not pay attention to these pages. And even if they did, the title needs to be descriptive in order to grasp the importance.</p>
<p><strong>Side Note</strong></p>
<p>Citrix offers a <a href="http://www.citrix.com/English/SS/supportThird.asp?sID=5107&amp;tID=1861650" target="_blank">product lifecycle information</a> which lists EdgeSight 5.0 and 5.1 to reach end of life on the 25th of March 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2010/03/12/how-many-will-be-affected-by-the-edgesight-timebomb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microsoft Word Image Compression and the Loss of Quality</title>
		<link>http://blogs.sepago.de/nicholas/2010/02/26/microsoft-word-image-compression-and-the-loss-of-quality/</link>
		<comments>http://blogs.sepago.de/nicholas/2010/02/26/microsoft-word-image-compression-and-the-loss-of-quality/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 06:54:00 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[DPI]]></category>
		<category><![CDATA[EPS]]></category>
		<category><![CDATA[Image Compression]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PPI]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[TIFF]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=687</guid>
		<description><![CDATA[My girlfriend is currently writing the thesis for her PhD. This involves creating several graphical representations of the results of her work. All of them are vector-based to scale to the appropriate size without loosing quality in the process. I have offered to help by inserting these graphics in Microsoft Word 2007 &#8211; a repetitious [...]]]></description>
			<content:encoded><![CDATA[<p>My girlfriend is currently writing the thesis for her PhD. This involves creating several graphical representations of the results of her work. All of them are vector-based to scale to the appropriate size without loosing quality in the process. I have offered to help by inserting these graphics in Microsoft Word 2007 &#8211; a repetitious task which can be performed without insight of the content of the actual work ;-)</p>
<p>In the course of this article, I will outline the problem of creating high quality, scalable images and inserting them into documents using Microsoft Word. Some of the issues are caused by the inherent differences between vector-based and pixel-based images as well as the image compression in Word. Fortunately, I am able to offer a solution to these obstacles.</p>
<p><span id="more-687"></span></p>
<p><strong>A Short Introduction to Vector-Based Graphics</strong></p>
<p>Vector-based graphic formats consist of a list of commands what kind of shape to paint at a certain position with pre-defined parameters. The advantage of this approach to drawing is the fact that the description of the image can be expressed in a very compact way and the image can be scaled to fit almost any size. Common formats include Scalable Vector Graphics (SVG) and Encapsulated PostScript (EPS) &#8211; the Portable Document Format (PDF) can even embed such vector-based graphics.</p>
<p>A loss-less compression can be applied to vector-based image to reduce their size without loosing quality. In fact, lossy compression does not make sense with these formats as drawing commands cannot be reduced in quality.</p>
<p>At some point in the process of using these formats, the image has to be converted to a pixel-based format to output it on a printer. This process involves deciding for an image resolution and size usually expressed in dots per inch (DPI). This step can become necessary when inserting the image into the document (as it is the case when using Microsoft Word) or when the document is translated into the printer language (as it is the case for LaTeX). Converting a vector-based to a pixel-based image inherently causes scalability to be lost because shapes are not expressed as drawing commands but as distinct pixels in the resulting image.</p>
<p>The size of pixel-based images can be reduced by using loss-less compression (eg. TIFF with LZW or Huffman) to remove redundancy without affecting quality. In addition, many formats leverage lossy compression to remove (supposedly) unnecessary details (eg. JPEG and PNG).</p>
<p><strong>Why Not Stick To Vector-Based Images?</strong></p>
<p>Although vector-based images obviously allow for greater detail when scaling or zooming, we are often forced to abandon a vector-based representation because applications only accept pixel-based formats &#8211; just like Microsoft Word 2007.</p>
<p><strong>How to Prepare for Pixel-Based Formats</strong></p>
<p>If the quality of an image or drawing is of the essence, carefully planning is required. For the sake of simplicity, the process of producing a document is iterated backwards:</p>
<ol>
<li><strong>Determine the quality of the output format.</strong> Let&#8217;s assume that a 600dpi printout is required.</li>
<li><strong>Calculate the resolution of the image based on the width.</strong> Usually, an image takes 15cm in width to fill an A4 page of paper (portrait orientation). At 600dpi, the image should have at least the same number of dpi corresponding to 3600 pixels in width &#8211; roughly twice the resolution of Full HD ;-)</li>
</ol>
<p>But there&#8217;s more to watch out for: try not to scale you image after converting it. If necessary use multiples of the original resolution.</p>
<p><strong>Microsoft Word Image Compression</strong></p>
<p>Microsoft has been offering a feature called image compression in many past and current versions of Word. It is a feature often looked upon benevolently because the overall size of the document is greatly reduced. This appears to be a pressing advantage but looking closely at the configuration options controlling the behaviour of the image compression, it is apparent that savings in size are tied to a loss of quality. The best quality offered by the image compression of Word is 220dpi.</p>
<p>What if this is not enough? What if an image contains details being lost at this resolution? Up to and including Word 2007, image compression cannot be turned off globally but only per document when &#8220;saving as&#8221;. Beginning with Word 2010, the image compression can be configured globally in the options of Word.</p>
<p>This difference in functionality causes documents without image compression to loose quality accidentally when carelessly using &#8220;save as&#8221;.</p>
<p><strong>Alarming Behaviour of the Word Image Compression</strong></p>
<p>In an article, <a href="http://office.microsoft.com/en-us/help/HP062193651033.aspx">Microsoft describes the behaviour of the image compression function</a>. When image compression is enabled for a document, images are not immediately compressed upon saving. They are reduced in size (and therefore quality) when changes on the same page occur. This results in a document slowly shrinking as changes are incorporated into the document.</p>
<p>This alone is hardly troubling me but when considering that Word 2007 is missing the option to globally disable image compression, it may cause a significant loss in quality when saving a document with a new name and continuing to work on it.</p>
<p><strong>Summary</strong></p>
<p>Microsoft has helped many authors by building an image compression into Word. It reduces the size of images to a quality well-known to produce proper documents. Many articles on the net explain image compression and its blessings. But on the other hand, if you are required to produce high-quality image in your document, the image compression Microsoft Word may well be in your way &#8211; especially, if you are using current (non-beta) versions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2010/02/26/microsoft-word-image-compression-and-the-loss-of-quality/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Performance Monitoring Round-Up</title>
		<link>http://blogs.sepago.de/nicholas/2010/01/19/performance-monitoring-round-up/</link>
		<comments>http://blogs.sepago.de/nicholas/2010/01/19/performance-monitoring-round-up/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 10:14:59 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[Presentation Server / XenApp]]></category>
		<category><![CDATA[System Management]]></category>
		<category><![CDATA[Terminal Services]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[EdgeSight]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Memory Management]]></category>
		<category><![CDATA[Performance Monitor]]></category>
		<category><![CDATA[Physical Disk]]></category>
		<category><![CDATA[Presentation Server]]></category>
		<category><![CDATA[Resource Manager]]></category>
		<category><![CDATA[Sizing]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[x64]]></category>
		<category><![CDATA[XenApp]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=683</guid>
		<description><![CDATA[In the course of the last six months, I have published nine articles about performance monitoring, why it is a crucial task and how the different subsystems of the operating system. To wrap up this series, this article offers an overview of the topics covered in the individual articles as well as a summary of [...]]]></description>
			<content:encoded><![CDATA[<p>In the course of the last six months, I have published nine articles about <a href="http://blogs.sepago.de/nicholas/category/system-management/">performance monitoring</a>, why it is a crucial task and how the different subsystems of the operating system. To wrap up this series, this article offers an overview of the topics covered in the individual articles as well as a summary of my recommendations.</p>
<p><span id="more-683"></span></p>
<p><strong>Performance Monitoring is Crucial</strong></p>
<p>In the <a href="http://blogs.sepago.de/nicholas/2009/07/27/performance-monitoring-part-1-why-and-what/">first part of this series</a>, I have stated that performance monitoring is a crucial task for every administrator to guarantee the continuity of a service. It is always about the sizing of servers providing a specific service:</p>
<ol>
<li>Is the service performing adequately for a known number of users?</li>
<li>Is the effect of peak working hours taken into account?</li>
<li>How many more users can the service take?</li>
<li>When do I have to scale the service to handle additional load?</li>
<li>How much more performance is required to handle additional users or additional requests?</li>
</ol>
<p>There are many products on the market that support administrators in monitoring services. Nevertheless, a basic understanding for the importance as well as the relation between the subsystems of an operating systems is fundamental to successfully operate these products.</p>
<p><strong>Recommended Metrics</strong></p>
<p>In three individual articles, I have explained the most important subsystems (<a href="http://blogs.sepago.de/nicholas/2009/08/06/performance-monitoring-part-3-processor/">processor</a>, <a href="http://blogs.sepago.de/nicholas/2009/09/15/performance-monitoring-part-4-memory-management/">memory</a> and <a href="http://blogs.sepago.de/nicholas/2009/10/08/performance-monitoring-part-5-physical-disk/">physical disk</a>) and listed the crucial metrics to identify bottlenecks. The following table contains these metrics for all subsystems.</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="128" valign="top"><strong>Subsystem</strong></td>
<td width="272" valign="top"><strong>Metric</strong></td>
</tr>
<tr>
<td width="128" valign="top">Processor</td>
<td width="272" valign="top">Processor\% Processor Time</td>
</tr>
<tr>
<td width="128" valign="top">Processor</td>
<td width="272" valign="top">System\Processor Queue Length</td>
</tr>
<tr>
<td width="128" valign="top">Memory</td>
<td width="272" valign="top">Memory\Commit Limit</td>
</tr>
<tr>
<td width="128" valign="top">Memory</td>
<td width="272" valign="top">Memory\Committed Bytes</td>
</tr>
<tr>
<td width="128" valign="top">Memory</td>
<td width="272" valign="top">Memory\Pages/s</td>
</tr>
<tr>
<td width="128" valign="top">Physical Disk</td>
<td width="272" valign="top">PhysicalDisk\% Disk Time</td>
</tr>
<tr>
<td width="128" valign="top">Physical Disk</td>
<td width="272" valign="top">PhysicalDisk\Current Disk Queue Length</td>
</tr>
</tbody>
</table>
<p>In addition to these metrics, <a href="http://blogs.sepago.de/nicholas/2009/10/09/performance-monitoring-part-6-the-link-between-disk-activity-and-swapping/">the memory and the disk subsystem influence one another</a> because of the page file providing virtual memory on the physical disk and, thereby, extending the scarce resource of physical memory built into a system.</p>
<p>In <a href="http://blogs.sepago.de/nicholas/2009/09/15/performance-monitoring-part-4-memory-management/">part 4</a>, I have also mentioned three memory areas in the kernel (Non-Paged Pool, Paged Pool and System Page Table Entries) which are of special importance to the operation of a system.</p>
<p><strong>32-Bit Terminal Servers are Easily Monitored</strong></p>
<p>Currently many companies are using terminal servers and hardly any have migrated them to 64-bit yet. Although this is a logical step in the light of the attempts to save resources in data centers.</p>
<p><a href="http://blogs.sepago.de/nicholas/2009/07/29/performance-monitoring-part-2-terminal-servers/">32-bit terminal servers are a much simpler case to monitor</a> than 64-bit TS or even general purpose servers as they usually require physical memory to accommodate a high number of users.</p>
<p><strong>Using PerfMon with a Database</strong></p>
<p>In <a href="http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-7-using-performance-monitor-with-a-database/">part 7</a> and <a href="http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-8-analyzing-a-performance-monitor-database-using-excel/">part 8</a>, I have moved on to some practical stuff. Performance monitor has become the first choice for performance monitoring as it is included in all Windows operating systems. Unfortunately, it is rather unknown that <a href="http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-7-using-performance-monitor-with-a-database/">PerfMon can be configured to log metric values into a SQL database</a>. This allows for many servers to store performance data in the same database and, thereby, simplifies the process of analyzing the data. <a href="http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-8-analyzing-a-performance-monitor-database-using-excel/">Excel is a well-suited tool to produce graphical representations</a> of the data collected on the individual servers.</p>
<p><strong>Comparing EdgeSight and Resource Manager</strong></p>
<p>Over the years, Citrix has offered a component with XenApp (formerly Presentation Server) for performance monitoring. This was provided free of charge for customers with an enterprise license for XenApp. Right now, we are in the middle of a migration from Resource Manager (included up to Presentation Server 4.5) to EdgeSight (included since Presentation Server 4.5). In the <a href="http://blogs.sepago.de/nicholas/2009/12/02/performance-monitoring-part-9-edgesight-vs-resource-manager-for-xenapp/">last part of the series</a>, I try to shed some light on the differences between these two components.</p>
<p><strong>Call for (Performance Monitoring) Topics</strong></p>
<p>There are several topics concerning performance monitoring left out in this series &#8211; intentionally or carelessly. Is there anything you are missing or anything you are eager to learn about, drop me a line and I&#8217;ll strive to fill the space.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2010/01/19/performance-monitoring-round-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Parra Tech Preview (to be XenApp vNext) Integrates Policies into GPOs &#8211; This Stuff Rocks</title>
		<link>http://blogs.sepago.de/nicholas/2009/12/16/parra-tech-preview-integrates-policies-into-gpos-this-stuff-rocks/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/12/16/parra-tech-preview-integrates-policies-into-gpos-this-stuff-rocks/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 15:39:26 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[Presentation Server / XenApp]]></category>
		<category><![CDATA[Windows Server 2008]]></category>
		<category><![CDATA[AMC]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Client-Side Extension]]></category>
		<category><![CDATA[CMC]]></category>
		<category><![CDATA[CSE]]></category>
		<category><![CDATA[GPMC]]></category>
		<category><![CDATA[Group Policy]]></category>
		<category><![CDATA[Group Policy Preferences]]></category>
		<category><![CDATA[MMC]]></category>
		<category><![CDATA[Policy]]></category>
		<category><![CDATA[Presentation Server]]></category>
		<category><![CDATA[Project Parra]]></category>
		<category><![CDATA[PSC]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=674</guid>
		<description><![CDATA[When I attended BriForum 2007 in Amsterdam, Juliano Maldaner (XenApp product architect) presented features in future versions of XenApp. He also talked about a very impressive change how XenApp handles policies: the plan was to integrate them into Microsoft group policies.
Two and a half years have passed and &#8211; finally &#8211; the project Parra tech [...]]]></description>
			<content:encoded><![CDATA[<p>When I attended <a href="http://briforum.com/" target="_blank">BriForum</a> 2007 in Amsterdam, <a href="http://community.citrix.com/blogs/citrite/julianom" target="_blank">Juliano Maldaner</a> (XenApp product architect) presented features in future versions of XenApp. He also talked about a very impressive <a href="http://blogs.sepago.de/nicholas/2007/12/02/why-policy-management-has-not-been-integrated-into-amc/">change how XenApp handles policies</a>: the plan was to integrate them into Microsoft group policies.</p>
<p>Two and a half years have passed and &#8211; finally &#8211; the project <a href="http://citrix.com/XenApp/techpreview" target="_blank">Parra tech preview</a> offers a first (public) look at the new policy engine. In this article, I&#8217;ll have a closer look at the user interface and the handling of policies.</p>
<p><span id="more-674"></span><strong>The New Design</strong></p>
<p>In the current version of XenApp, the farm and server configuration is defined in the Access Management Console (AMC) whereas session policies are still configured in the Advanced Configuration Tool (ACT). From an administrator&#8217;s perspective, both sets of configuration parameters are very similar. Some are applied to the machine (farm and server settings) and other affect user sessions hosted on the server (session policies). Therefore, it makes sense to migrate all of these settings in Microsoft group policies instead of maintaining a separate engine with a very similar purpose.</p>
<p>But wait … aren&#8217;t session policies more flexible? Group policies cannot be applied to client names or client IPs. How does Citrix manage to migrate session policies without loosing this very important filtering flexibility?</p>
<p>The integration into group policies is not implemented in simple ADM templates but through an extension of the group policy editor. It now shows new nodes called &#8220;Citrix Policies&#8221; under computer and user configuration. The settings configured under this node are processed by a client-side extension (CSE) written for the group policy engine. Client-side extensions are a standardized method for adding custom handlers for group policy processing on the client. For instance, group policy preferences and folder redirection are implemented in CSEs by Microsoft.</p>
<p>Not only session policies have been moved to group policy but farm and server settings as well. The settings have been divided in the following manner:</p>
<ul>
<li><strong>Computer Configuration:</strong> This section of a group policy contains all farm and server settings.</li>
<li><strong>User Configuration:</strong> This is where session policies are created and configured.</li>
</ul>
<p><strong>How Policies are Applied</strong></p>
<p>A single group policy can contain any number of Citrix policies. When a group policy contains farm and server settings in the computer configuration, it is not automatically applied to all servers which the group policy is assigned to. This is caused by filters affecting how Citrix policies are applied. These filters can further narrow down on which servers the settings are enforced.</p>
<p><strong>New Features</strong></p>
<p>The following new features are implemented by leveraging Microsoft group policy:</p>
<ul>
<li>Farm and server settings are moved to Citrix Policies in the computer configuration of group policies.</li>
<li>Filters for Citrix computer policies include the desktop group (used in VM Hosted Apps), the desktop kind (published, shared or private), a custom desktop tag or the organizational unit (which the server belongs to).</li>
<li>Session policies are moved to Citrix Policies in the user configuration of group policies.</li>
<li>Filters for Citrix user policies now include:
<ul>
<li>the desktop group (used in VM Hosted Apps) to which the users connects</li>
<li>the desktop kind (published, shared or private) to which the user connects</li>
<li>a custom desktop tag</li>
<li>the organizational unit (which the user belongs to)</li>
</ul>
</li>
<li>Known filters for Citrix user policies: access control (for connections through Access Gateway), client IP and name and users.</li>
<li>Servers cannot be used for filtering Citrix user policies anymore. There are removed in favour of server group which can be created by administrators using AMC.</li>
</ul>
<p><strong>The User Interface</strong></p>
<p>Finally let&#8217;s have a look at the user interface:</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/12/image.png" rel="lightbox[id674]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb.png" border="0" alt="image" width="244" height="180" /></a></p>
<p>Citrix has extended the group policy editor to include a new node called Citrix Policies under computer and user configuration. Both of these nodes show the same layout in the content pane. The top half shows a list of Citrix policies contained in this group policy and the bottom half displays detailed information (settings and filters) about the policy selected above.</p>
<p>A new policy is created through a wizard in three easy steps:</p>
<ol>
<li>Configure the settings to be contained in the policy:<a href="http://blogs.sepago.de/nicholas/files/2009/12/image1.png"><br />
<img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb1.png" border="0" alt="image" width="244" height="184" /></a></li>
<li>Select how the policy is applied:<br />
<a href="http://blogs.sepago.de/nicholas/files/2009/12/image2.png" rel="lightbox[id674]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb2.png" border="0" alt="image" width="244" height="184" /></a></li>
<li>Choose whether to enable the policy:<br />
<a href="http://blogs.sepago.de/nicholas/files/2009/12/image3.png" rel="lightbox[id674]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb3.png" border="0" alt="image" width="244" height="184" /></a></li>
</ol>
<p>After a policy has been created, it can be configured from the content pane of the group policy editor. The summary tab displays all active settings and filters which can be modified and removed with a single click:</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/12/image4.png" rel="lightbox[id674]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb4.png" border="0" alt="image" width="244" height="175" /></a></p>
<p>On the settings tab, new configuration options can be added to the policy from the full list with or without categories:</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/12/image5.png" rel="lightbox[id674]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb5.png" border="0" alt="image" width="236" height="244" /></a></p>
<p>On the filters tab, configured are displayed and new filters can be configured:</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/12/image6.png" rel="lightbox[id674]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" src="http://blogs.sepago.de/nicholas/files/2009/12/image_thumb6.png" border="0" alt="image" width="236" height="244" /></a></p>
<p><strong>Summary</strong></p>
<p>Let me tell you that the group policy integration in project Parra tech preview really rocks.</p>
<p>Citrix gets rid of the outdated Advanced Configuration Tool. Presentation Server 4.5 and XenApp 5 moved most of the administrative tasks to the Access Management Console so that only policy management remained in the old Java-based console. It became increasingly annoying to open a second console and access separate dialogs to configure settings and filters.</p>
<p>Now, policies (Citrix and Microsoft based) are configured in a single console. Project Parra finally makes policy management fun. Thank you, Citrix!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/12/16/parra-tech-preview-integrates-policies-into-gpos-this-stuff-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Office 2010 Ribbon Customization Does Not Cut It</title>
		<link>http://blogs.sepago.de/nicholas/2009/12/10/why-office-2010-ribbon-customization-does-not-cut-it/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/12/10/why-office-2010-ribbon-customization-does-not-cut-it/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 11:11:00 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[InstantRibbonChanger]]></category>
		<category><![CDATA[Office 2010]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/2009/12/10/why-office-2010-ribbon-customization-does-not-cut-it/</guid>
		<description><![CDATA[In a recent article, I have introduced an extension for Microsoft Office called InstantRibbonChanger. Through a configuration file, this extension is able to modify existing ribbons or add new ribbons to all applications in the suite.
With the dawn of Office 2010, one feature caught my attention: the new version of Microsoft Office (now in beta [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent article, I have introduced an extension for Microsoft Office called <a href="http://blogs.sepago.de/nicholas/?p=544">InstantRibbonChanger</a>. Through a configuration file, this extension is able to modify existing ribbons or add new ribbons to all applications in the suite.</p>
<p>With the dawn of Office 2010, one feature caught my attention: the new version of Microsoft Office (now in beta and available <a href="http://www.microsoft.com/office/2010/de/download-office-professional-plus/default.aspx" target="_blank">here</a>) is announced to allow for ribbons customization through the user interface.</p>
<p>Let&#8217;s have a closer look at this feature and how it compares to the InstantRibbonChanger.</p>
<p> <span id="more-659"></span>
<p><strong>Customizing Ribbons through the UI</strong></p>
<p>In all application in the Microsoft Office 2010 beta suite, ribbons can be customized by right-clicking on a ribbon and selecting &quot;Customize the ribbon&quot;. A new dialog opens which reminds of modifying the quicklaunch bar but now allowes for ribbons to be changed (see <a href="http://blogs.technet.com/office2010/archive/2009/11/09/making-the-ribbon-mine.aspx" target="_blank">here</a> for a detailed description):</p>
<ul>
<li>Add and remove ribbons </li>
<li>Enable and disable ribbons </li>
<li>Add groups of controls </li>
<li>Add controls to ribbons or groups </li>
</ul>
<p>This all seams really cool but I am missing some important features when comparing the options to the InstantRibbonsChanger.</p>
<p><strong>No Control Over Button Size</strong></p>
<p>The size of buttons added to any ribbons is chosen by the application. If you are an experienced user and intend to group buttons from regularly used ribbons into a single custom ribbon, this will be causing you some pains. Only placing many buttons on a ribbons of using a smaller window size will cause the application to downsize buttons.</p>
<p><strong>No Button Groups</strong></p>
<p>There are many buttons with a similar or related function. In pre-defined ribbons, such buttons are grouped like left, centered and right alignment. When customizing a ribbon, only pre-defined elements of existing ribbons can be added.</p>
<p><strong>No Custom Keyboard Shortcuts</strong></p>
<p>When buttons are added to ribbons they are automatically assigned a keyboard shortcut. Unfortunately, there are many collisions as there are merely 26 distinct characters causing keyboard shortcuts like &quot;Y2&quot;. These shortcuts cannot be customized through the user interface.</p>
<p><strong>Continue to Use the InstantRibbonChanger</strong></p>
<p>If you require any of the features presented above, you will have to continue using the InstantRibbonChanger. As it uses RibbonXML &#8211; the markup language for ribbons in Office &#8211; it is able to modify ribbons in Office 2010 as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/12/10/why-office-2010-ribbon-customization-does-not-cut-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Monitoring Part 9 &#8211; EdgeSight vs. Resource Manager for XenApp</title>
		<link>http://blogs.sepago.de/nicholas/2009/12/02/performance-monitoring-part-9-edgesight-vs-resource-manager-for-xenapp/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/12/02/performance-monitoring-part-9-edgesight-vs-resource-manager-for-xenapp/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 09:52:10 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[Presentation Server / XenApp]]></category>
		<category><![CDATA[System Management]]></category>
		<category><![CDATA[EdgeSight]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Presentation Server]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[Resource Manager]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[XenApp]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/2009/12/02/performance-monitoring-part-9-edgesight-vs-resource-manager-for-xenapp/</guid>
		<description><![CDATA[After several articles in this series have covered Windows server in general, I&#8217;d like to return to the topic of Windows-based terminal servers. But instead of talking about the concepts, the theory and technology of performance monitoring, this article compares two competing tools for monitoring terminal server environments: Citrix Presentation Server Resource Manager and Citrix [...]]]></description>
			<content:encoded><![CDATA[<p>After several articles in <a href="http://blogs.sepago.de/nicholas/category/system-management">this series</a> have covered Windows server in general, I&#8217;d like to return to the topic of Windows-based terminal servers. But instead of talking about the concepts, the theory and technology of performance monitoring, this article compares two competing tools for monitoring terminal server environments: Citrix Presentation Server Resource Manager and Citrix EdgeSight.</p>
<p>This article is not meant to compare all available monitoring solutions as both fit in the same niche on the markets. My goal is to urge everybody to drop Resource Manager in favour of EdgeSight.</p>
<p> <span id="more-658"></span>
<p><strong>Introducing both solutions</strong></p>
<p><a href="http://blogs.sepago.de/nicholas/tag/resource-manager">Resource Manager</a> is a component shipping with Presentation Server for a long time. By installing Resource Manager on a XenApp server, an additional component is responsible for collecting performance data on all servers. This data is aggregated on a daily basis and collected by the Farm Metric Server. This role has a primary and a secondary instance to ensure its availability. The Farm Metric Server stores the data inside the configured database through the Database Connection Server represented by a XenApp server.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/12/RM.png" rel="lightbox[id658]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="RM" src="http://blogs.sepago.de/nicholas/files/2009/12/RM_thumb.png" width="244" height="121" /></a></p>
<p><a href="http://blogs.sepago.de/nicholas/tag/edgesight">EdgeSight</a> has a very similar design. Although data is also collected on all servers, this is done by an agent independent of XenApp which allows for additional platforms to be monitored, e.g. endpoints. The XenApp agent is responsible for collecting performance data and uploading the data to the EdgeSight server on a daily basis. The EdgeSight server stores the data provided by the agent inside its database. The web-based console offers a large number of reports rendered by MS SQL Server Reporting Services.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/12/ES.png" rel="lightbox[id658]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="ES" src="http://blogs.sepago.de/nicholas/files/2009/12/ES_thumb.png" width="244" height="124" /></a></p>
<p><strong>Architecture</strong></p>
<p>After introducing the architecture of both solutions, this category presents some important properties of the components involved.</p>
<ul>
<li><strong>Agent.</strong> Both products require some kind of software to collect data and upload it into the database. In the case of EdgeSight, there is an agent running as a separate process. Resource Manager does not operate through a distinct process but rather integrates into XenApp. </li>
<li><strong>Database.</strong> Resource Manager as well as EdgeSight require a database to store the collected data. Both implement a relational database schema to prevent redundant data from bloating the database. </li>
<li><strong>Dependencies.</strong> Resource Manager does not rely on any additional components except for the database. EdgeSight requires Microsoft SQL Server Reporting Services for data visualization (see separate category below) and Internet Information Services for the administration interface (see the category about management below). </li>
<li><strong>Client Monitoring.</strong> Only EdgeSight is able to monitor devices apart from XenApp. A separate endpoint agent is provided for client devices but can also be installed on servers. </li>
<li><strong>Multi-Tenancy.</strong> EdgeSight allows multiple customers to be managed through the same infrastructure. Configuration and reports are separated into companies with independent authentication realms. Resource Manager does not offer multi-tenancy. </li>
</ul>
<p>EdgeSight introduces more prerequisites than Resource Manager and is, therefore, more work to set up. But the architecture allows for additional features like client monitoring and multi-tenancy.</p>
<p><strong>Management</strong></p>
<p>This category regards the administrative features of both monitoring solutions.</p>
<ul>
<li><strong>Centralized Configuration.</strong> Although Resource Manager is managed from a single instance of the console (CMC / PSC / ACT / AMC), new servers do not receive a default configuration automatically but rather through a manual process initiated from the console. EdgeSight allows several sets of configuration data to be bound to departments. Whenever a new agent is added or adds itself to a department, the configuration assigned to the department is applied automatically. This effectively speeds up rollouts as new agents do not require manual intervention. </li>
<li><strong>Management Console.</strong> While the administration of Resource Manager is integrated into one of the consoles shipped with Presentation Server / XenApp, EdgeSight uses a web-based console only requiring a web browser and network access to the EdgeSight server. For obvious reasons, this architecture implies less restrictions for the administrator as EdgeSight does not require a components to be installed on the administrator&#8217;s machine.</li>
<li><strong>Abstraction Layer.</strong> As Resource Manager is integrated into the XenApp console, it abstracts from individual servers by utilizing the server folders offered by XenApp. EdgeSight isolates customers into companies (see multi-tenancy above) and, inside a company, groups servers into departments organized as a tree. For agents monitoring XenApp servers, EdgeSight automatically creates folders for the farm and all server folders when adding the agent.</li>
<li><strong>Automation.</strong> Resource Manager cannot be fully automated. Manuel intervention is required to replicate the configuration of an existing XenApp server to apply it to a new one. Due to the central configuration of EdgeSight, only the installation of the agent needs to be automated. This is fully documented in the administrator&#8217;s guide.</li>
<li><strong>Authentication / Authorization.</strong> To be able to access Resource Manager, a XenApp farm administrator is required. Although this poses a dependency between XenApp and Resource Manager, permissions to access Resource Manager are managed through the same console. The account used for authentication cannot be entered explicitly. EdgeSight allows administrators to authenticate through a built-in user management or through active directory. There is not single sign-on.</li>
<li><strong>Delegation.</strong> Access to real-time performance data collected by Resource Manager is possible through the console and can be delegated based on server folders. EdgeSight allows for custom roles and for them to be assigned based on departments.</li>
<li><strong>Integration with Upstream Monitoring Solution.</strong> Both product allow for alerts to be sent to an upstream monitoring solution using SNMP. In addition, EdgeSight is able to call custom scripts or tools to connect to other products.</li>
<li><strong>Alerting Administrators.</strong> Both solutions implement alerts to be sent to the administrator by email. In addition, Resource Manager allows for text messages.</li>
</ul>
<p>EdgeSight is inherently easier to manage concerning the configuration, the rollout of new agents and the automation of the monitoring infrastructure.</p>
<p><strong>Data Collection</strong></p>
<p>The following bullets discuss how the products collect data and what data is obtained from the monitored systems.</p>
<ul>
<li><strong>Default Range of Collected Metrics.</strong> Both solutions collect a wide range of performance metrics sufficient for most needs in historical as well as real-time analysis.</li>
<li><strong>Collecting Custom Metrics.</strong> In contrast to EdgeSight, Resource Manager can be configured to collect custom performance metrics offered by Windows. Unfortunately, it is also limited to these performance metrics and does not allow other data to be collected. </li>
<li><strong>Analyze Event Log.</strong> Only EdgeSight allows for the Windows Event Log to be parsed for specific items and generate alerts.</li>
<li><strong>Application Crash / Fault / Hang.</strong> Only EdgeSight recognizes misbehaving applications. It reports on applications being unresponsive, having crashed or produced an error dialog. </li>
<li><strong>Asset Management.</strong> Only EdgeSight collects asset information about the underlying system.</li>
</ul>
<p>Concerning data collection, EdgeSight is able to score although it does not collect custom performance metrics. It rather provides a sensible set of aggregated counters by default. In addition, EdgeSight collects and analyzes more important data than Resource Manager.</p>
<p><strong>Data Visualization</strong></p>
<p>Although collecting data from different source on a system is a very useful feature, a performance monitoring solution must be able to visualize the data. Otherwise, humans have trouble taking in the important details.</p>
<ul>
<li><strong>Data Visualization.</strong> Resource Manager offers a very small set of reports to analyze the data collected on the servers. Unfortunately, these reports do not visualize all the data present in the database. EdgeSight incorporates a huge number of historical and real-time reports to span the whole range of the collected data. </li>
<li><strong>Relational Database Schema.</strong> Both solutions implement a relational database and, thereby, avoid storing redundant data. </li>
<li><strong>Custom Reports.</strong> Based on the relational database schema, custom reports can be created for both solutions. EdgeSight is able to integrate additional reports into its console to offer a consistent look and feel. </li>
<li><strong>Dashboard.</strong> Only EdgeSight offers a dashboard for analyzing custom real-time data across several systems. </li>
<li><strong>Real-Time Reports.</strong> Both solutions allow the collected data to be analyzed in real-time by directly connecting to specific systems. Resource Manager even displays an automatically updating graph of the real-time data.</li>
<li><strong>Output Formats.</strong> Resource Manager only allows HTML-based reports to be generated. As EdgeSight is built on top of the SQL Server Reporting Services, reports can be exported to PDF, HTML, CSV, XML or Excel. </li>
<li><strong>Subscriptions.</strong> Only EdgeSight offers report subscriptions. They can be sent via email or stored on a file share.</li>
</ul>
<p>EdgeSight clearly dominates the category about data visualization due to the numerous reports visualizing all the collected data.</p>
<p><strong>Conclusion</strong></p>
<p>Both monitoring solutions are important additions to such a XenApp environment. The fact that EdgeSight offers many reports to visualize the collected data makes it better suited. Administrator need to be able to retrieve the necessary data immediately instead of building a new report every time they require an additional piece of information.</p>
<p>Citrix has been offering Resource Manager as part of XenApp Enterprise Edition for a long time. But early in 2009, a basic edition of EdgeSight was released to offer customers an alternative to Resource Manager. The fully functional edition is only available in XenApp Platinum Edition. Licenses for endpoint agent must be purchased separately for both editions of EdgeSight.</p>
<p>Overall, I recommend that you take a look at EdgeSight if you have already licensed XenApp Enterprise Edition or above as it offers a more advanced solution for monitoring the environment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/12/02/performance-monitoring-part-9-edgesight-vs-resource-manager-for-xenapp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Monitoring Part 8 &#8211; Analyzing a Performance Monitor Database using Excel</title>
		<link>http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-8-analyzing-a-performance-monitor-database-using-excel/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-8-analyzing-a-performance-monitor-database-using-excel/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 14:06:18 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[System Management]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Performance Monitor]]></category>
		<category><![CDATA[Processor]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=627</guid>
		<description><![CDATA[In the last post of this series about performance monitoring, I have described how to use Windows Performance Monitor to log counter values into a SQL database. Now I&#8217;ll show you that Excel is a tremendous tool to quickly analyze the collected data.
Excel offers a feature called pivot tables. It allows some data mining either [...]]]></description>
			<content:encoded><![CDATA[<p>In the last post of this <a href="http://blogs.sepago.de/nicholas/category/system-management/">series about performance monitoring</a>, I have described how to use Windows Performance Monitor to <a href="http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-7-using-performance-monitor-with-a-database/">log counter values into a SQL database</a>. Now I&#8217;ll show you that Excel is a tremendous tool to quickly analyze the collected data.</p>
<p>Excel offers a feature called pivot tables. It allows some data mining either on a local data set contained in an Excel sheet or on a database which Excel is connected to. Therefore, this article describes how to create a connection to the database and create nifty charts using Excel.</p>
<p> <span id="more-627"></span><strong>Creating a Database Connection</strong>
</p>
<p>First, the data needs to be pulled into Excel. Instead of pulling tables or the result of a query into a sheet, we will configure a data connection to display results. Duplicating data into Excel hardly makes sense because it unnecessarily bloats the file.</p>
<p>On the data tab, Excel offers several methods for reading data from different sources. We will use the &quot;From SQL Server&quot; button to create a connection to the Performance Monitor database.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/DataFromSQLServer.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="Data From SQL Server" src="http://blogs.sepago.de/nicholas/files/2009/11/DataFromSQLServer_thumb.png" width="244" height="180" /></a> </p>
<p>In the first dialog, enter the server name and click next. The following step of the wizard select the relevant database (in my case, it is called PerfMonDB) and uncheck the option to &quot;Connect to a specific table&quot; because we do not intend to use one of the tables. Then click &quot;Next&quot; and &quot;Finish&quot;.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/NoSpecificTable.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="No Specific Table" src="http://blogs.sepago.de/nicholas/files/2009/11/NoSpecificTable_thumb1.png" width="244" height="172" /></a> </p>
<p>In the next dialog you will be asked to select a table. At this point, it is the selection you make is insignificant because we will use a SQL statement later on.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/SelectTable.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="Select Table" src="http://blogs.sepago.de/nicholas/files/2009/11/SelectTable_thumb1.png" width="244" height="114" /></a> </p>
<p>Before any data is inserted into your Excel sheet, the following dialog allows the data connection to be customized. Select &quot;PivotChart and PivotTable Report&quot; and click &quot;Properties&quot; to insert a custom SQL statement.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/Properties.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="Properties" src="http://blogs.sepago.de/nicholas/files/2009/11/Properties_thumb1.png" width="244" height="202" /></a> </p>
<p>On the &quot;Definition&quot; tab of the new dialog, select &quot;SQL&quot; to be the &quot;Command type&quot; and page the following SQL statement into &quot;Command text&quot;. Then click &quot;Ok&quot;.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/CommandType.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="Command Type" src="http://blogs.sepago.de/nicholas/files/2009/11/CommandType_thumb1.png" width="203" height="244" /></a> </p>
<p>
<div class="codesnip-container" >SELECT    <br />DisplayString, MachineName,    <br />ObjectName, CounterName, InstanceName,    <br />CounterDateTime, CounterValue    <br />FROM    <br />CounterData JOIN    <br />CounterDetails ON CounterData.CounterID = CounterDetails.CounterID JOIN    <br />DisplayToID ON CounterData.GUID = DisplayToID.GUID    </div>
</p>
<p>After closing the dialog, Excel may ask you to confirm the change of the connection definition. Please confirm this by clicking &quot;Yes&quot;.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/Dialog.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="Dialog" src="http://blogs.sepago.de/nicholas/files/2009/11/Dialog_thumb1.png" width="244" height="37" /></a> </p>
<p><strong>Using the PivotChart</strong></p>
<p>You have now created a blank PivotTable and PivotChart report with a direct connection to your Performance Monitor database. All this is achieved without pulling in the actual data from the database. You Excel sheet should look similar to the following screenshot.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/Components1.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="Components" src="http://blogs.sepago.de/nicholas/files/2009/11/Components_thumb2.png" width="244" height="130" /></a> </p>
<p>The Excel window now contains several new elements: a PivotTable area on the left, a blank PivotChart accompanied with a filter pane in the middle and a PivotTable field list on the right. I will now expand on the PivotTable stuff but rather demonstrate how to use the PivotChart as a dashboard for analyzing the performance data contained in the database.</p>
<p>First, we will move the PivotChart to a separate sheet to have a well-arranged workspace. Right click on the blank PivotChart, select &quot;Move Chart&quot; and choose &quot;New sheet&quot; in the dialog. After attaching the filter pane to the right side of the window, I configured the PivotChart to analyze the performance database:</p>
<ol>
<li>Drag the DisplayString and MachineName fields to report filters </li>
<li>Drag the CounterName to the legend fields </li>
<li>Drag the CounterDataTime to the axis fields </li>
<li>Drag the CounterValue to the values box </li>
</ol>
<p>After some adjustments to the layout, I arrived at the PivotChart displayed in the screenshot below. Without much hassle, I am able to view the counter values from the database and create a nice visual representation.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/PivotChart.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="PivotChart" src="http://blogs.sepago.de/nicholas/files/2009/11/PivotChart_thumb1.png" width="244" height="130" /></a> </p>
<p>Using the filter pane allows you to filter which data is actually displayed in the PivotChart. If your Performance Monitor database contains several series of measurements for different machines, filtering focuses the PivotChart on the exact amount of data you intend to view from the database.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/11/DisplayString.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="DisplayString" src="http://blogs.sepago.de/nicholas/files/2009/11/DisplayString_thumb.png" width="112" height="244" /></a>&#160;<a href="http://blogs.sepago.de/nicholas/files/2009/11/MachineName.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="MachineName" src="http://blogs.sepago.de/nicholas/files/2009/11/MachineName_thumb.png" width="110" height="244" /></a> <a href="http://blogs.sepago.de/nicholas/files/2009/11/CounterName.png" rel="lightbox[id627]"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="CounterName" src="http://blogs.sepago.de/nicholas/files/2009/11/CounterName_thumb.png" width="118" height="244" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-8-analyzing-a-performance-monitor-database-using-excel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Monitoring Part 7 &#8211; Using Performance Monitor with a Database</title>
		<link>http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-7-using-performance-monitor-with-a-database/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-7-using-performance-monitor-with-a-database/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 12:00:14 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[System Management]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Performance Monitor]]></category>
		<category><![CDATA[Processor]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=567</guid>
		<description><![CDATA[After a lot of theory about performance monitoring, this article demonstrates how the Windows Performance Monitor can be used to log to a database &#8211; even from multiple machines.
Most of you have probably used Performance Monitor before. It allows you to monitor performance metrics (local and remote) in real-time and to log performance data from [...]]]></description>
			<content:encoded><![CDATA[<p>After a lot of theory about <a href="http://blogs.sepago.de/nicholas/category/system-management/">performance monitoring</a>, this article demonstrates how the Windows Performance Monitor can be used to log to a database &#8211; even from multiple machines.</p>
<p>Most of you have probably used Performance Monitor before. It allows you to monitor performance metrics (local and remote) in real-time and to log performance data from multiple machines for later analysis. In this article, I will focus on the latter because collecting and analysing performance data from multiple machines is a time consuming task.</p>
<p><span id="more-567"></span></p>
<p>For the sake of this article, I assume that your are familiar with Performance Monitor and that you know how to create a data collector set. The following example was built on Windows Server 2008. But earlier instances of Windows do not differ greatly.</p>
<p><strong>How to Log to a Database</strong></p>
<p>It is not very well-known that Performance Monitor is able to log the collected data to a SQL database. There are several advantages to this method:</p>
<ul>
<li>Several systems log to the same namespace. No more combining dozens of CSV files.</li>
<li>A single database can contain several independent data sets.</li>
<li>A single database can contain data from several machines.</li>
</ul>
<p>Let me quickly outline how to log performance data to a SQL database. First, create a database on the SQL server. In my scenario, this database is called PerfMonDB. Next create a system data source pointing to your database &#8211; I called this PerfMonDSN.</p>
<p>After these preliminary steps, we can finally configure a new data collector set which I called PerfMonDataSet. The DataCollector01 inside PerfMonDataSet requires the following settings to successfully connect to the database. These are displayed in the two screenshots below.</p>
<ul>
<li>On the tab &#8220;Performance Counters&#8221;, you need to add the required performance counters to the data collector and configure the database connection:
<ul>
<li>The log format needs to be set to &#8220;SQL&#8221; for this scenario to work.</li>
<li>The data source name is to be set to PerfMonDSN to connect to the database configured in the preliminary steps.</li>
</ul>
</li>
<li>On the tab &#8220;File&#8221;, you configure the file name saved inside the database. This uniquely identifies a single run of the data collector set:
<ul>
<li>The log file name is a custom name for the data set. I called this PerfMonLog to distinguish this name from the others selected above.</li>
<li>The file name format allows some predefined variables to be appended to the log file name. This helps to identify individual runs of the same data collector set.</li>
<li>By activating the check box the log file name is prefixed with the computer name executing the data collector set.</li>
</ul>
</li>
</ul>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/09/datacollector01counters.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/datacollector01counters-thumb.png" border="0" alt="DataCollector01-Counters" width="220" height="244" /></a> <a href="http://blogs.sepago.de/nicholas/files/2009/09/datacollector01file.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/datacollector01file-thumb.png" border="0" alt="DataCollector01-File" width="220" height="244" /></a></p>
<p>The settings above result in a unique name identifying every single run of the data collector set.</p>
<p><strong>Database Schema</strong></p>
<p>When Performance Monitor writes to a database, three tables are involved in the process: CounterData, CouterDetails and DisplayToID (see screenshot below).</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/09/tables.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/tables-thumb.png" border="0" alt="Tables" width="244" height="156" /></a></p>
<p>The table CounterData contains the collected data for the selected performance counters. It also references the other two tables to identify which counter and which data set the data belongs to. The screenshow below shows the relationships between the three tables.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/09/databaseschema.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/databaseschema-thumb.png" border="0" alt="Database Schema" width="244" height="152" /></a></p>
<p>The following screenshot shows the columns of the table DisplayToID and some example data for two runs of the above data collector set. Expect a new line for every execution of every data collector. It identifies the individual runs by the following (selected) fields:</p>
<ul>
<li>A unique ID called GUID &#8211; this identifier is used to refer to a certain data set from every record in CounterData</li>
<li>The DisplayString corresponding to the example file name above</li>
<li>The time when the log was started and stopped (LogStartTime and LogStopTime)</li>
</ul>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/09/displaytoid.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/displaytoid-thumb.png" border="0" alt="DisplayToID" width="244" height="134" /></a></p>
<p>The table CounterDetails contains a description of the performance counters logged in the database. These records are independent of the data set and can be used from several data sets at once. These details contain the following information:</p>
<ul>
<li>A unique ID called CounterID &#8211; this is used to refer to a certain performance counter from every record in CounterData</li>
<li>The MachineName identifies the machine from which the performance counter is pulled</li>
<li>The ObjectName identifies the display name of the object to which the performance counter belongs to</li>
<li>The CounterName identifies the counter which is collected</li>
<li>The InstanceName identifies the instance of the counter which is collected</li>
<li>(The other fields are not particularly interesting.)</li>
</ul>
<p>If, for example, you have added the counter <strong>Processor(_Total)\% Processor Time</strong> this resolves to the following: ObjectName is Processor, CounterName is % Processor Time and InstanceName is _Total.</p>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/09/counterdetails.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/counterdetails-thumb.png" border="0" alt="CounterDetails" width="244" height="134" /></a></p>
<p>The last table called CounterData contains the data for all counters collected in individual runs of data collector sets. The following fields are relevant for an analysis:</p>
<ul>
<li>The GUID referencing the data set (in DisplayToID) which the counter data belongs to</li>
<li>The CounterID referencing the counter details (in CounterDetails) which the data belongs to</li>
<li>The CounterDateTime represents the time stamp at which the data was collected</li>
<li>The CounterValue contains the value collected at the specified point in time</li>
</ul>
<p><a href="http://blogs.sepago.de/nicholas/files/2009/09/counterdata.png" rel="lightbox[id567]"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://blogs.sepago.de/nicholas/files/2009/09/counterdata-thumb.png" border="0" alt="CounterData" width="244" height="134" /></a></p>
<p><strong>How to Analyze the Data</strong></p>
<p>In the <a href="http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-8-analyzing-a-performance-monitor-database-using-excel/">next part of this series</a>, I will demonstrate how to use Excel to efficiently analyze the contents of the Performance Monitor database.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/11/02/performance-monitoring-part-7-using-performance-monitor-with-a-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webcast Series about Installable Feature in Windows Server 2008 R2</title>
		<link>http://blogs.sepago.de/nicholas/2009/11/02/webcast-series-about-installable-feature-in-windows-server-2008-r2/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/11/02/webcast-series-about-installable-feature-in-windows-server-2008-r2/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 11:49:06 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Network Load Balancing]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/2009/11/02/webcast-series-about-installable-feature-in-windows-server-2008-r2/</guid>
		<description><![CDATA[My colleague Nicki Wruck (@CommunityGuide) has started a huge series of short videos about the features in Windows Server 2008 R2 &#8211; in German.
Windows Server 2008 R2 has more than 80 features available to the administrator to supplement the numerous roles. But many of these features have strange names making them close to impossible to [...]]]></description>
			<content:encoded><![CDATA[<p>My colleague <a href="http://blogs.sepago.de/nicki/">Nicki Wruck</a> (<a href="http://twitter.com/CommunityGuide" target="_blank">@CommunityGuide</a>) has started a huge series of short videos about the features in Windows Server 2008 R2 &#8211; in German.</p>
<p>Windows Server 2008 R2 has more than 80 features available to the administrator to supplement the numerous roles. But many of these features have strange names making them close to impossible to understand.</p>
<p>Nicki has already published 10 videos on a YouTube channel called <a href="http://www.youtube.com/r2featuretalk" target="_blank">R2FeatureTalk</a>. Watch me <a href="http://www.youtube.com/r2featuretalk#p/u/5/Ym3dardUI0c" target="_blank">talking about Network Load Balancing</a> &#8211; and I will be involved in several more.</p>
<p>Kudos for this great idea, useful content and funny introductions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/11/02/webcast-series-about-installable-feature-in-windows-server-2008-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beware of Hosting Web Interface on XenApp Servers</title>
		<link>http://blogs.sepago.de/nicholas/2009/10/21/beware-of-hosting-web-interface-on-xenapp-servers/</link>
		<comments>http://blogs.sepago.de/nicholas/2009/10/21/beware-of-hosting-web-interface-on-xenapp-servers/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 07:12:32 +0000</pubDate>
		<dc:creator>Nicholas Dille</dc:creator>
				<category><![CDATA[Presentation Server / XenApp]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Presentation Server]]></category>
		<category><![CDATA[Web Interface]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[XML Service]]></category>
		<category><![CDATA[XmlServiceDigger]]></category>
		<category><![CDATA[XmlServiceExplorer]]></category>

		<guid isPermaLink="false">http://blogs.sepago.de/nicholas/?p=577</guid>
		<description><![CDATA[Do you host your Web Interface on one or more XenApp servers? Then I recommend you heed this article before changing your setup. You may well loose your XML service when migrating the Web Interface to another server. And loosing your XML service may result in an outage of your application delivery infrastructure!

When XenApp is [...]]]></description>
			<content:encoded><![CDATA[<p>Do you host your Web Interface on one or more XenApp servers? Then I recommend you heed this article before changing your setup. You may well loose your XML service when migrating the Web Interface to another server. And loosing your XML service may result in an outage of your application delivery infrastructure!</p>
<p><span id="more-577"></span></p>
<p>When XenApp is installed on a server running the Internet Information Services (IIS), the installer offers to activate port sharing between the XML service and IIS. What this actually means is that the XML service is not setup as a system service but as a DLL inside IIS.</p>
<p><strong>How the XML service works</strong></p>
<p>The XML service consist of several DLLs responsible for the individual services. The following table describes the files involved with the XML service.</p>
<table border="0" cellspacing="0" cellpadding="2" width="463">
<tbody>
<tr>
<td width="104" valign="top"><strong>File</strong></td>
<td width="357" valign="top"><strong>Description</strong></td>
</tr>
<tr>
<td width="104" valign="top">ctxxmlss.txt</td>
<td width="357" valign="top">Encoding information</td>
</tr>
<tr>
<td width="104" valign="top">ctxsta.dll</td>
<td width="357" valign="top">Secure Ticket Authority (STA)<br />
Incorporated in the XML service since Presentation Server 4.0</td>
</tr>
<tr>
<td width="104" valign="top">ctxsta.config</td>
<td width="357" valign="top">Configuration data for the STA (ctxsta.dll)</td>
</tr>
<tr>
<td width="104" valign="top">WPnBr.dll</td>
<td width="357" valign="top">Connector for Web Interface<br />
(My tools <a href="http://blogs.sepago.de/nicholas/tag/xmlserviceexplorer/">XmlServiceExplorer</a>, <a href="http://blogs.sepago.de/nicholas/tag/xmlservicedigger/">XmlServiceDigger</a> and <a href="http://blogs.sepago.de/nicholas/2009/05/19/health-checking-the-xml-service-with-custom-requests/">XmlServiceReader</a> are based on information offered through this DLL.)</td>
</tr>
<tr>
<td width="104" valign="top">ctxconfproxy.dll</td>
<td width="357" valign="top">Unknown</td>
</tr>
</tbody>
</table>
<p>If a system service is used for the XML service, these files are used from their original location (<span style="font-family: Courier New">%ProgramFiles%\Citrix\system32</span>). But this is not the case when it is provided by a DLL inside IIS, because the files are copied to a separate directory (<span style="font-family: Courier New">%SystemDrive%\Inetpub\Scripts</span>).</p>
<p><strong>Why Using IIS is Dangerous</strong></p>
<p>Don&#8217;t get me wrong &#8211; using IIS is not dangerous in general. But rather having the XML service inside IIS is. There are two major pitfalls:</p>
<ul>
<li>Customizing the configuration of the XML service inside ctxsta.config needs to be performed in the correct location. Many installations require the ID of the STA to be set to a constant value. This only works, if the correct configuration file is used.</li>
<li>When IIS is uninstalled from the system, the XML service can no longer function because IIS was responsible for connections to the designated port. You may well cause an outage of your infrastructure because Web Interface sites may not be able to authenticate users and enumerate applications (which is done through the XML service).</li>
</ul>
<p>Fortunately, there is an easy way out of the second problem. Citrix offers a tool to change the port of the XML service called <span style="font-family: Courier New">ctxxmlss.exe</span>. This tool ships with all versions of XenApp and is located in <span style="font-family: Courier New">%ProgramFiles%\Citrix\system32</span>.</p>
<p>Citrix also provides <a href="http://support.citrix.com/article/ctx104063" target="_blank">an article</a> describing this tool but misses to state explicitly that the following command also creates the system service on port 81 &#8211; in addition to changing the port of an existing XML service:</p>
<div class="codesnip-container" >ctxxmlss.exe /r81</div>
<p>This command makes you independent of IIS with regard to the XML service.</p>
<p><strong>Why XenDesktop is affected as well</strong></p>
<p><span style="font-family: Arial">The issue also occurs on the Desktop Delivery Controller (DDC) of XenDesktop because of the automated installer. It does a wonderful job by taking care of all the gory details of setting up the DDC, e.g. terminal services are installed automatically. But it also installs the XML service with IIS port sharing enabled.</span></p>
<p><span style="font-family: Arial">Unfortunately, this causes the same issue described above &#8211; and is resolved by the same command line executed on the DDC.</span></p>
<p><span style="font-family: Arial"><strong>References</strong></span></p>
<p>Explaining and Changing the Citrix XML Service Port (<a title="http://support.citrix.com/article/ctx104063" href="http://support.citrix.com/article/ctx104063">http://support.citrix.com/article/ctx104063</a>)</p>
<p>How to Configure the XML Service to Share with IIS (<a title="http://support.citrix.com/article/CTX107683" href="http://support.citrix.com/article/CTX107683">http://support.citrix.com/article/CTX107683</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sepago.de/nicholas/2009/10/21/beware-of-hosting-web-interface-on-xenapp-servers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
