<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The PerfMon Blog</title>
	<atom:link href="http://perfmonblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://perfmonblog.wordpress.com</link>
	<description>Conversations on availability and performance of web resources.</description>
	<lastBuildDate>Mon, 14 Jun 2010 19:35:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='perfmonblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The PerfMon Blog</title>
		<link>http://perfmonblog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://perfmonblog.wordpress.com/osd.xml" title="The PerfMon Blog" />
	<atom:link rel='hub' href='http://perfmonblog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Webmetrics API plug-in for Nagios</title>
		<link>http://perfmonblog.wordpress.com/2010/06/14/webmetrics-api-plug-in-for-nagios/</link>
		<comments>http://perfmonblog.wordpress.com/2010/06/14/webmetrics-api-plug-in-for-nagios/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 19:35:21 +0000</pubDate>
		<dc:creator>Jason Paddock</dc:creator>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=189</guid>
		<description><![CDATA[Nagios is a great program that allows you to check uptime and performance metrics from multiple services in your network.  Webmetrics has been asked by many customers to create a plug-in for Nagios to display the Webmetrics service data.  This allows you to have a single location to monitor both the internal and external performance [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=189&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Nagios is a great program that allows you to check uptime and performance metrics from multiple services in your network.  Webmetrics has been asked by many customers to create a plug-in for Nagios to display the Webmetrics service data.  This allows you to have a single location to monitor both the internal and external performance of your network and applications. The Professional Services team at Webmetrics has done just that and this article will give you the basic info on how to setup the plug-in for both the free and paid versions of Nagios.  I  hope you find this example and prototype useful.</p>
<p>The Webmetrics API plug-in for Nagios is a Perl script that will access the realtime.getdata API from Webmetrics.  The script requires 3 parameters be passed to it; the API Key, Username, and Service ID.  The API Key can be found by logging into your Webmetrics account and then clicking on “My Account” in the top right hand corner.  You will then see an API tab.  This API Key should be kept secret as it will allow full access to your account.  The Service ID is able to be found by clicking on any service in your account.  The URL in the address bar will show <strong>account=XXXXXX</strong>.  These numbers are your Service ID.</p>
<p>Here are some examples of the integration with  Nagios XI:</p>
<p>Service in OK status:<a href="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-ok.png"><img class="aligncenter size-full wp-image-196" title="NagiosXI OK" src="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-ok.png?w=905&#038;h=188" alt="" width="905" height="188" /></a></p>
<p>To see a service in Warning or Error status please click on the following links:<a href="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-warning.png"><br />
</a><a href="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-warning.png">Warning</a><br />
<a href="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-error.png">Error</a></p>
<p>Service Performance Metrics:<a href="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-graph.png"><img class="aligncenter size-full wp-image-195" title="NagiosXI Graph" src="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-graph.png?w=695&#038;h=242" alt="" width="695" height="242" /></a></p>
<p>Webmetrics Graph:<a href="http://perfmonblog.files.wordpress.com/2010/06/webmetrics-graph.png"><img class="aligncenter size-full wp-image-193" title="Webmetrics Graph" src="http://perfmonblog.files.wordpress.com/2010/06/webmetrics-graph.png?w=784&#038;h=218" alt="" width="784" height="218" /></a></p>
<p>Below are some examples of the integration with Nagios:<a href="http://perfmonblog.files.wordpress.com/2010/06/nagios3.jpg"><br />
</a></p>
<p><a href="http://perfmonblog.files.wordpress.com/2010/06/nagios2.jpg"><img class="aligncenter size-full wp-image-198" title="nagios2" src="http://perfmonblog.files.wordpress.com/2010/06/nagios2.jpg?w=808&#038;h=383" alt="" width="808" height="383" /></a></p>
<p><a href="http://perfmonblog.files.wordpress.com/2010/06/nagios2.jpg"></a><a href="http://perfmonblog.files.wordpress.com/2010/06/nagios3.jpg"><img class="aligncenter size-full wp-image-199" title="nagios3" src="http://perfmonblog.files.wordpress.com/2010/06/nagios3.jpg?w=795&#038;h=559" alt="" width="795" height="559" /></a></p>
<p>There are 5 possible outputs from this script.</p>
<ol>
<li>OK status showing the load time as well as the time the sample was  taken.   Exit code = 0.</li>
<li>Warning status showing the time the sample was taken.  Exit code = 1.</li>
<li>Error status showing the time the sample was taken.  Exit code = 2.</li>
<li>Unknown sample status is shown for any unexpected results.  Exit code = 3.</li>
<li>Error message returned from the Webmetrics API.  Exit code = 3.</li>
</ol>
<p>You will need to download the Nagios Perl script located at: <a href="http://download.webmetrics.com/nagios/nagios.pl">http://download.webmetrics.com/nagios/nagios.pl</a>.  The following Perl modules are also needed to ensure the script works properly:</p>
<p><em>LWP::Simple<br />
LWP::UserAgent</em><em><br />
HTTP::Request<br />
HTTP::Response<br />
XML::Simple<br />
Getopt::Long<br />
Digest::SHA1 qw(sha1_base64)<br />
DateTime<br />
DateTime::Format::Strptime</em></p>
<p>Once this is done, ensure you can run the Perl script without any errors:</p>
<p><strong><em>/usr/bin/perl /usr/local/Nagios/libexec/nagios.pl –api_key=1234567890abcdefg –username=sample –serviceID=123456</em></strong>.  After running the command, you should see output like the following:</p>
<p><em>“<strong>SiteMonitor Load Time = 1.24, Sample Taken At: 15:37:46.01 US/Pacific | load_time=1.24</strong>”</em></p>
<p>If you see this type of output, the script is ready to be inputted as a plug-in into Nagios.</p>
<p>Setup Nagios XI:</p>
<p>First, log into the web interface.  <strong>Click Configure -&gt; Enter Nagios Core Configuration Manager -&gt; Enter Credentials -&gt; Click the arrow for Commands -&gt; Click Commands -&gt; Click Add New</strong>.  You can give your command any name, but for the purposes of this article, we will call it <strong>Webmetrics-API</strong>.  For the Command Line option, you will want to give the full path to Perl and the full path to the Perl Script.  In this example, I used: <strong><em>/usr/bin/perl /usr/local/nagios/libexec/nagios.pl -api_key $ARG1$ -username $ARG2$ -serviceID $ARG3$</em></strong>.  Click <strong>Save</strong>.  Then click <strong>Apply Configuration</strong>.  Then under <strong>Monitoring</strong>, click <strong>Hosts</strong> <strong>-&gt; Add New</strong>.  Provide a <strong>Host Name</strong>, an <strong>Address (127.0.0.1)</strong>, and a <strong>Description</strong>.  Click on the <strong>Check </strong>Settings tab and fill out all fields with a <strong>*</strong>.  Click <strong>Save</strong>.  Under <strong>Monitoring</strong>, click <strong>Services -&gt; Add New</strong>.  Type in the Webmetrics Service Name as the <strong>Config Name</strong>.  Select the <strong>Host Name</strong> that you just created in the previous step and provide a <strong>Service Description</strong>.  Under <strong>Check command</strong>, choose <strong>Webmetrics-API</strong>.  Under <strong>$ARG1$</strong> enter the <strong>API Key</strong>.  Under <strong>$ARG2$</strong> enter the <strong>Webmetrics</strong> <strong>Username</strong>.  Under <strong>$ARG3$</strong> enter the <strong>Service ID</strong>.  Click on the <strong>Check </strong>Settings tab and fill out all items with a <strong>*</strong>.  Click <strong>Save</strong>.  Repeat this step for all services that you want to monitor.  Click<strong> Apply Configuration</strong>.</p>
<p>Now that the host and services are setup, click on the <strong>Views</strong> tab and then <strong>Service Detail</strong>.  Note: It may take a couple of minutes for the services to show up.</p>
<p>Setup Nagios:</p>
<p>The free version of Nagios is a little more complex to setup as you have to manually edit the configuration files on the server that you have it on.  If you are running the free version, I’m going to assume that you are aware of how to edit the configuration files and how to verify the configuration file has no errors, and how to restart the service.  If you are unaware, please refer to the Nagios help documentation.  You will need to create a Host Name, Service Name, and a Check Command for the Webmetrics API.  I wasn’t able to find a way to utilize the $ARG#$ variables, so I just created a check command for each service name and that worked as expected.  The command will be the same command that you tried earlier to verify the Perl script was working as expected.  Just change the Service ID for each service you want to monitor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=189&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2010/06/14/webmetrics-api-plug-in-for-nagios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/65f63d451343f5f3e81244763f641d06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jason Paddock</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-ok.png" medium="image">
			<media:title type="html">NagiosXI OK</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/06/nagiosxi-graph.png" medium="image">
			<media:title type="html">NagiosXI Graph</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/06/webmetrics-graph.png" medium="image">
			<media:title type="html">Webmetrics Graph</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/06/nagios2.jpg" medium="image">
			<media:title type="html">nagios2</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/06/nagios3.jpg" medium="image">
			<media:title type="html">nagios3</media:title>
		</media:content>
	</item>
		<item>
		<title>Importance of Site Speed in Google’s own words</title>
		<link>http://perfmonblog.wordpress.com/2010/05/19/importance-of-site-speed-in-google%e2%80%99s-own-words/</link>
		<comments>http://perfmonblog.wordpress.com/2010/05/19/importance-of-site-speed-in-google%e2%80%99s-own-words/#comments</comments>
		<pubDate>Wed, 19 May 2010 14:02:13 +0000</pubDate>
		<dc:creator>asandhan</dc:creator>
				<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[speed]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=165</guid>
		<description><![CDATA[I recently came across a video by Google, stressing the importance of site speed. Google has sent strong signals that the download speed of web pages matters, not only for the best conversion rates but perhaps as a factor for ranking in the SERPs in the future. In addition, speed can have an impact on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=165&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I recently came across a video by Google, stressing the importance of site speed. Google has sent strong signals that the download speed of web pages matters, not only for the best conversion rates but perhaps as a factor for ranking in the SERPs in the future. In addition, speed can have an impact on how many of your pages get indexed.</p>
<p><strong>So why does Google think speed is of importance?</strong> Through the following tests:</p>
<p><strong><em>Side by side testing of optimized vs Original versions of the sites:</em></strong></p>
<p>Only difference is that the optimized version was faster but the content remained the same in both. Firefox and Shopzilla had some interesting findings.<br />
Shopzilla had 7 – 12% increase in conversions and a 50% decrease in operating costs.<br />
Firefox reported a 15.4% increase in downloads. Firefox estimates that this is about 60 million extra downloads.</p>
<p><em><strong>User satisfaction test:</strong></em></p>
<p>Google and MicroSoft conducted a user satisfaction test by returning delayed results to some users. Results showed that just about half a second delay caused 1% of the users to feel dissatisfied. As the delay increased to one second, the dissatisfaction rose to 4%. As the test continued, users were feeling so dissatisfied that Microsoft ended the test fairly quickly.</p>
<p style="text-align:center;"><a href="http://perfmonblog.files.wordpress.com/2010/05/speed1.png"><img class="size-medium wp-image-174 aligncenter" title="speed" src="http://perfmonblog.files.wordpress.com/2010/05/speed1.png?w=300&#038;h=130" alt="" width="300" height="130" /></a></p>
<p>Google &amp; Microsoft conducted another experiment. They found that a 400 ms delay in the rendering the search results reduced the query volume drastically and this trend continued for 7 weeks. In fact the query volume didn’t get back to normal until 11 weeks after the experiment was discontinued. So this speaks for itself how much a site’s speed plays a role in determining its conversions.</p>
<p>While content and relevance are still primary in determining a site’s rankings in SERPS, site speed plays a major role too now.</p>
<p>According to Steve Souders, a Google Employee and the author of ‘<a href="http://www.stevesouders.com/blog/">High performance Web sites blog</a>’, the Performance Golden rule is that “<em>80 &#8211; 90% of the end-user response time is spent on the front-end. Start there</em>”.</p>
<p>How is that? Look at a Waterfall chart from webpagetest.org’s performance analysis of a web page.</p>
<p><a href="http://perfmonblog.files.wordpress.com/2010/05/tilte.png"><img class="aligncenter size-full wp-image-180" title="tilte" src="http://perfmonblog.files.wordpress.com/2010/05/tilte.png?w=869&#038;h=85" alt="" width="869" height="85" /></a><br />
<a href="http://perfmonblog.files.wordpress.com/2010/05/waterfall11.png"><img class="aligncenter size-full wp-image-181" title="waterfall1" src="http://perfmonblog.files.wordpress.com/2010/05/waterfall11.png?w=863&#038;h=343" alt="" width="863" height="343" /></a></p>
<p>It took under one second for the content to be returned by the web server. Close to one second, the browser started to render the content. But then it had to make all these requests to all the associated page components like the javascript, css, images. So the final page didn&#8217;t load until after 7 seconds. This proves conclusively that the front-end of a page needs a lot of attention and optimization.</p>
<p><strong>Google’s webmaster tools</strong>’ site performance dashboard not only gives the average load time of a site’s pages but also provides a comprehensive comparison of the speed with other web sites on the web. So if your site performs better than 95% of the sites on the web, then turn your attention to the content. If not, make speed your priority.</p>
<p>‘<strong>Page Speed</strong>’ is yet another powerful tool to analyze a page’s bottlenecks.<strong> </strong>Page Speed is a firefox plugin that provides a score for each page based on its analysis and also provides its recommendations. People have found to decrease their load times by 5 seconds on an average following these recommendations.</p>
<p><a href="http://perfmonblog.files.wordpress.com/2010/05/page_speed.png"><img class="aligncenter size-full wp-image-177" title="page_speed" src="http://perfmonblog.files.wordpress.com/2010/05/page_speed.png?w=944&#038;h=219" alt="" width="944" height="219" /></a></p>
<p><strong>What is a good response time to aim for?</strong><br />
According to Google, Following your competition is the best answer to this question. If your competition provides a better user experience then you would want to aim for a better and a reliable user experience for your audience. Akamais’ own case studies show that 2 seconds is the threshold for e-commerce acceptability. Google’s aim is however under half a second.</p>
<p><strong>What other tips did Google provide?</strong><br />
Implement Progressive Rendering &#8211; Progressive rendering is when a browser can display content as it’s available incrementally rather than waiting for all the content to display at once. This provides users faster visual feedback and helps them feel more in control.<br />
Bing found a 0.7% increase in customer satisfaction with progressive rendering.</p>
<p><strong>How to implement it?</strong> Simple. Put stylesheets at the top of the page. This allows a browser to start displaying content ASAP.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=165&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2010/05/19/importance-of-site-speed-in-google%e2%80%99s-own-words/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/983d950e69cc29a3c158260e38b21c87?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">asandhan</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/05/speed1.png?w=300" medium="image">
			<media:title type="html">speed</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/05/tilte.png" medium="image">
			<media:title type="html">tilte</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/05/waterfall11.png" medium="image">
			<media:title type="html">waterfall1</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2010/05/page_speed.png" medium="image">
			<media:title type="html">page_speed</media:title>
		</media:content>
	</item>
		<item>
		<title>The Cost of Poor Performance</title>
		<link>http://perfmonblog.wordpress.com/2009/07/23/the-cost-of-poor-performance/</link>
		<comments>http://perfmonblog.wordpress.com/2009/07/23/the-cost-of-poor-performance/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 14:24:58 +0000</pubDate>
		<dc:creator>jweierman</dc:creator>
				<category><![CDATA[Business Considerations]]></category>
		<category><![CDATA[Monitoring Best Practices]]></category>
		<category><![CDATA[cost of performance]]></category>
		<category><![CDATA[monetization]]></category>
		<category><![CDATA[Performance Monitoring]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=151</guid>
		<description><![CDATA[Phil Dixon recently gave a great talk at Velocity 2009 talking about the cost of poor performance. Through a series of rigorous tests, measurements and reports, Shopzilla was able to quantify the cost of performance to the bottom line of the business. Performance monitoring is often thought of as insurance, you pay a small premium [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=151&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Phil Dixon recently gave a <a href="http://assets.en.oreilly.com/1/event/29/Shopzilla%27s%20Site%20Redo%20-%20You%20Get%20What%20You%20Measure%20Presentation.ppt" target="_blank">great talk</a> at Velocity 2009 talking about the cost of poor performance. Through a series of rigorous tests, measurements and reports, Shopzilla was able to quantify the cost of performance to the bottom line of the business. Performance monitoring is often thought of as insurance, you pay a small premium every month so that you are notified when the site down. But it is increasingly becoming much more than this. With the variety of tools and APIs available now on multiple platforms, it&#8217;s possible (though this does require a good amount of effort) to tie performance and profitability directly together. There was another talk at Velocity that discussed the future of performance monitoring is really about being able to translate the performance and scalability costs into the direct impact to the business. In this model, the idea is to create a curve that plots costs of scalability and performance (hardware, engineering, etc.) against the impact to the bottom line (revenue, direct sales, etc.). Allistar Croll and Sean Power&#8217;s<a href="http://press.oreilly.com/pub/pr/2341" target="_blank"> book</a> talks a lot more about these topics in depth.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=151&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2009/07/23/the-cost-of-poor-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/27ae7301ee97a42169f02acbfd824426?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jweierman</media:title>
		</media:content>
	</item>
		<item>
		<title>Evolution of the Monitoring Client</title>
		<link>http://perfmonblog.wordpress.com/2009/07/06/evolution-of-the-monitoring-client/</link>
		<comments>http://perfmonblog.wordpress.com/2009/07/06/evolution-of-the-monitoring-client/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 17:55:31 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=147</guid>
		<description><![CDATA[I&#8217;ve been exposed to the monitoring industry for almost 5 years now.  In that time the industry has actually made some pretty major changes to how monitoring is performed.  The ultimate goal of monitoring is to provide the most accurate availability and performance metrics.  For now availability metrics are only made more accurate by monitoring [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=147&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been exposed to the monitoring industry for almost 5 years now.  In that time the industry has actually made some pretty major changes to how monitoring is performed.  The ultimate goal of monitoring is to provide the most accurate availability and performance metrics.  For now availability metrics are only made more accurate by monitoring more frequently.  Frequency of monitoring is not a major hurdle and availability really only has one consistent definition (either you&#8217;re up or you&#8217;re down) so the collection/reporting of availability isn&#8217;t very dynamic and will not be subject to a series of evolutionary steps (though you could argue that availability could be different depending on the browser type you use &#8211; an argument I make below).  However, performance metrics will evolve as the industry strives to provide more accurate performance metrics and also, provide those metrics for any number of browsers currently on the market.  Here&#8217;s the evolution so far:</p>
<ol>
<li>Internal web monitoring &#8211; Provides monitoring of systems applications, and network connections.  Because there are no major players out there the resources do not exist to allow for monitoring from an end users perspective.  Performance monitoring is a very subjective process where an end user has to describe how the perceive the performance of a website/application.</li>
<li>External web monitoring &#8211; Starts to provide information about the performance of a website/application but it is rudimentary and usually the performance data is based off of a program that only hopes to emulate the performance of a browser against the site.  No actual browser is used for monitoring.</li>
<li>External RIA monitoring &#8211; Applications are becoming more dynamic and rely on the capabilities of the browser to display the page more like a desktop application.  This requires that external monitoring take these pieces of behavior into account when considering the performance of a web application.</li>
</ol>
<p>That&#8217;s where we&#8217;re at right now.  I think a logical next step would be:</p>
<ul>
<li><em>Generic </em>External RIA monitoring &#8211; This would be monitoring that would consider any (and every) platform possible for viewing the web application.  For simplicity just assume that it&#8217;s every browser on the market (Chrome, Safari, IE6, IE7, IEX, Firefox 2, etc.).</li>
</ul>
<p>The browsers mentioned seem to be diverging and are trying to grab more market share by adding new functionality to their offerings.  So how does having performance data based on Chrome help you determine what your performance would be in IE7?    For the time being there really is no need for such distinctions&#8230;the important factor is that you have an actual browser that is generating your performance metrics.  Because of price and implementation I would suspect that monitoring solutions are going to become more decentralized.  Also, with all this new functionality there is going to be an increase in the different methods that are used for delivering functionality.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=147&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2009/07/06/evolution-of-the-monitoring-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>
	</item>
		<item>
		<title>Script Recorder Best Practices</title>
		<link>http://perfmonblog.wordpress.com/2009/06/30/script-recorder-best-practices/</link>
		<comments>http://perfmonblog.wordpress.com/2009/06/30/script-recorder-best-practices/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 18:39:03 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Monitoring Best Practices]]></category>
		<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Script Recorder]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=143</guid>
		<description><![CDATA[Not a major component of performance monitoring but an important one none the less is the Script Recorder.  The Script Recorder is a utility that generates the script that will be used to perform the automation of a transaction on a monitoring platform. Generally this is a downloaded application that has two modes, record and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=143&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Not a major component of performance monitoring but an important one none the less is the Script Recorder.  The Script Recorder is a utility that generates the script that will be used to perform the automation of a transaction on a monitoring platform.</p>
<p>Generally this is a downloaded application that has two modes, record and playback (A co-worker of mine often compares it to the macro recording functionality in the Microsoft Office suite of products).  You essentially interact with the Script Recorder as though it is a browser and your actions are recorded in the background.  The playback mode will take the recorded script (or a previously recorded script) and process it, allowing the Script Recorder to playback the steps that were taken in a browser.  Playback is intended for verification.</p>
<p>Very rarely does the Script Recorder become a crucial need with performance monitoring.  The goal is to generate scripts, and if there is an easier way to do it without a Script Recorder then it&#8217;s irrelevant if a Script Recorder even exists.  Though some power users prefer to have a Script Recorder available if their scripts need constant updating, if they want to perform some low level QA, or if they just want to have more control over the process of the scripting.</p>
<p>To help in the process of researching Script Recorders I have identified some requirements that are based off of monitoring best practices.  Remember though, the Script Recorder is only a byproduct of the monitoring platform and should not be the primary deciding factor when looking for a monitoring solution.  Here are some desirable requirements of a Script Recorder:</p>
<ol>
<li>Flexibility &#8211; Script Recorder should be easy to use and allow for the ability to enter custom code/steps/instructions by hand if necessary.  The creators of a Script Recorder generally do not account for all the problems that someone may encounter when scripting, therefore it is beneficial to not limit script generation to just what the browser itself can do.  Allowing the user to enter in custom instructions can be helpful particularly when trying to clean-up before or after a script is run.</li>
<li>Fidelity &#8211; Record functionality should be capable of recording asynchronous (and non-interactive) events such as Ajax/JavaScript.  This events are usually invisible to a user and therefore to monitoring.  If a Script Recorder is worth its salt then it should be able to track these events.</li>
<li>Completeness &#8211; Playback functionality should be capable of playing everything back.  The monitoring platform will have to play it back so if there is a major discrepancy in playback between the Script Recorder and the actual monitoring platform then that is a sign that things are all copacetic.</li>
<li>Openness &#8211; Ideally an open source platform is available.  The script generated by the Script Recorder should be easily portable (open-source) and easy to understand.  Immediately you have the support of an open source development community.  If your script is open source then you&#8217;re not tied down to the implementation of the Script Recorder vendor.  This will make it easier for you to up and leave if your needs change (or if you just don&#8217;t like your vendor!).</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=143&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2009/06/30/script-recorder-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>
	</item>
		<item>
		<title>Mashing up data</title>
		<link>http://perfmonblog.wordpress.com/2009/05/27/mashing-up-data/</link>
		<comments>http://perfmonblog.wordpress.com/2009/05/27/mashing-up-data/#comments</comments>
		<pubDate>Wed, 27 May 2009 21:49:04 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Monitoring Best Practices]]></category>
		<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[Monitoring data]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=138</guid>
		<description><![CDATA[As I was digging through some old documents I came across some screenshots from a mashup application that a co-worker of mine had created.  The mashup combined analytics data from Google Analytics with performance monitoring data from Webmetrics.  Here is a screenshot from the application: The graph shows the performance of the application (the dark [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=138&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As I was digging through some old documents I came across some screenshots from a mashup application that a co-worker of mine had created.  The mashup combined analytics data from Google Analytics with performance monitoring data from Webmetrics.  Here is a screenshot from the application:</p>
<div id="attachment_139" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-139" title="perf-a-lytics mashup" src="http://perfmonblog.files.wordpress.com/2009/05/mashup.png?w=600&#038;h=250" alt="perf-a-lytics mashup" width="600" height="250" /><p class="wp-caption-text">perf-a-lytics mashup</p></div>
<p>The graph shows the performance of the application (the dark blue line) graphed against the number of page views (the light green bars).  Normally, either of these data sets would be good data in their own right.  But each set of data alone leaves certain questions unanswered.</p>
<p>For example, if we consider only the analytics data we have answered the question <em>How many users are on my site at any given time? </em>But a very important follow up question that remains unanswered is <em>What impact does that have on my site&#8217;s performance?</em> The addition of the performance data answers that second question.  The performance data shows us that there is a considerable increase in page load time (roughly 4x more time to load the same page).</p>
<p>What about if we consider the performance monitoring data alone?  In this case we answer the question <em>What is the performance of my application at any given time?</em> We can tell what our performance is but there the question that goes unanswered is; <em>What impact does that have on how people use/access my site? </em>The answer that we get by adding the analytics data is that people tend to leave the site when the performance degrades, that&#8217;s exactly what we see in this graph, as the users leave the site (most likely upset) the site calms down because of fewer requests.  One other thing to note is that we also see what is the cause of a performance degradation.  We see that the increase in users has resulted in an increase in page load time (because the server has to use the same amount of resources to fulfill more requests).</p>
<p>This is just a small example of what can be done by combining data sets.  I would recommend that whenever you look at gathering data with a tool (whether it be analytics, performance data, etc.) you should make sure that an API for accessing the data is available.  This will allow you to get more value out of your tool and also will open new doors to you as you add tools in the future.</p>
<p>Sample mashup courtesy of <a title="Transparent Uptime" href="http://http://www.transparentuptime.com/" target="_blank">Lenny</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=138&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2009/05/27/mashing-up-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2009/05/mashup.png" medium="image">
			<media:title type="html">perf-a-lytics mashup</media:title>
		</media:content>
	</item>
		<item>
		<title>The Value of Monitoring</title>
		<link>http://perfmonblog.wordpress.com/2009/05/12/the-value-of-monitoring/</link>
		<comments>http://perfmonblog.wordpress.com/2009/05/12/the-value-of-monitoring/#comments</comments>
		<pubDate>Tue, 12 May 2009 14:35:13 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Monitoring Best Practices]]></category>
		<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Alerts]]></category>
		<category><![CDATA[Monitoring Client]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Value]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=136</guid>
		<description><![CDATA[As I was sitting at my desk this morning processing email I was amazed at the number of questions I was getting about basic value propositions of external performance monitoring.  I thought maybe it&#8217;s not as clear as I suspect it is. So I took off my Engineering hat (which often causes me to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=136&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As I was sitting at my desk this morning processing email I was amazed at the number of questions I was getting about basic value propositions of external performance monitoring.  I thought <em>maybe it&#8217;s not as clear as I suspect it is. </em>So I took off my Engineering hat (which often causes me to be derisive and not understanding of the lack of knowledge) and instead put on my Sales hat (which makes me excited to share information).  So here it is, a quick summary of the value of external performance monitoring:</p>
<ul>
<li><strong>Alerting</strong> &#8211; This should always be first.  A good portion of the value in performance monitoring comes from being able to evaluate the data collected.  But, the most valuable functionality comes from being able to proactively alert yourself as problems are occurring.  This allows you to reduce downtime, meet SLAs, and investigate problems as they&#8217;re occurring.  Central to this is a monitoring frequency that will help accomplish this.  If you only monitor once an hour then there is going to be some noticable lag in how quickly you can respond to a problem.  If you monitor more frequently (ex: every 5 minutes) then you can react relatively quickly.  And even though every 5 minutes is the industry standard, monitoring once every 1 minute can of even more value for your mission critical applications.</li>
<li><strong>Reporting</strong> &#8211; This is key.  Outside of alerting, all that you have at the end of the data is a set of data and being able to draw conclusions from this data and make educated decisions about the performance of you site/application is key.  Your data set needs to be robust because you cannot go back after the fact and collect more data if you feel your data set is too sparse (you can adjust your settings to give you more data in the future but as for the past, that opportunity to collect data has come and gone).  Just like alerting, reporting requires a certain interval.  For example, you would not want to collect data once an hour and then use that data set to make adjustments to your site.</li>
<li><strong>Monitoring Client capabilities</strong> &#8211; This one is a bit more abstract but can be summarized fairly easily.  The monitoring client is what performs the monitoring, collects the data, and perceives.  Normally such a client is implemented as either an emulation of a browser (a program that makes HTTP requests) or is an actual browser that has a framework around it to automate interactions.  The actual browser implementation of this client is the most desired solution because it&#8217;s the closest representation of what your end users are experiencing (thus it indirectly makes your data set all the more accurate).  The emulated browser is generally better fit for the cost conscious monitoring consumer as it&#8217;s only an approximation of what your end user experiences (of the deficiencies of an emulated browser, lack of JavaScript support is probably the most egregious).</li>
</ul>
<p>So there it is&#8230;.when you&#8217;re shopping around for a monitoring solution you should consider the above three values.  You can then take those and sort them in order of importance for the objectives you plan to achieve with monitoring.  I generally consider the monitoring client to be the most important factor because it generates the data that is going to be by all other monitoring components (the data collected is more accurate and representative of your users which in turn makes your reports more valuable and makes your alerts more accurate).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=136&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2009/05/12/the-value-of-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>
	</item>
		<item>
		<title>Monitoring Browser Perspective</title>
		<link>http://perfmonblog.wordpress.com/2008/12/12/monitoring-browser-perspective/</link>
		<comments>http://perfmonblog.wordpress.com/2008/12/12/monitoring-browser-perspective/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 21:32:37 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Browser Fidelity]]></category>
		<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Objective]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=116</guid>
		<description><![CDATA[I&#8217;m alive!!  Sorry for being away so long&#8230;it&#8217;s been over a month since I&#8217;ve posted anything.  What with Christmas and Thanksgiving book ending a very busy month it&#8217;s no wonder I haven&#8217;t posted anything.  But I apologize, I will get back on track with blogging. Recently I had a conversation with a co-worker of mine [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=116&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m alive!!  Sorry for being away so long&#8230;it&#8217;s been over a month since I&#8217;ve posted anything.  What with Christmas and Thanksgiving book ending a very busy month it&#8217;s no wonder I haven&#8217;t posted anything.  But I apologize, I will get back on track with blogging.</p>
<p>Recently I had a conversation with a co-worker of mine and he asked about the importance of monitoring from an actual browser (that is, automating a transaction for the purposes of performance and availability measurements from an actual browser vs. an emulated browser), whether it was necessary, and if necessary, what type of browser should be used.</p>
<p>Well, the answer is that it depends.  It all depends on what your goals are.  I&#8217;ve talked about this before and the reality is that you only need to test from an actual browser <strong>if </strong>your goal is to get very accurate metrics on your end users experience.  Furthermore you want to match that end user perspective with your actual end users&#8230;therefore, if the majority of your users are accessing your application with IE then you you should consider a monitoring solution that uses IE.  If they access the site with FF more frequently then a solution using FF should be considered.  That&#8217;s not a hard and fast rule (unless you&#8217;ve developed your site for a specific type of browser &#8211; which happens quite often with IE) the important thing is that when you&#8217;re trying to get accurate user representation you should use an actual browser.  If you&#8217;re not trying to get actual user representations with your monitoring then don&#8217;t stay up at night worrying about the browser type used (in fact you&#8217;ll probably want to use an emulated browser solution which will be cheaper).</p>
<p>So why the blog post?  The conversation progressed on into a debate about browser neutrality.  In other words, what if someone wanted an accurate end user perspective that doesn&#8217;t favor one type of browser over the other?  Ultimately this is not a good situation to be in because you&#8217;re going to make so many trade offs that your initial objective will not be met.  Here are your objectives:</p>
<ol>
<li>Primary: Get an accurate end user perspective.</li>
<li>Secondary: Use a browser independent monitoring solution.</li>
</ol>
<p>The primary objective is easy to accomplish by using a monitoring platform that utilizes an actual browser (you&#8217;ll need to consider what type of browser is important to you: IE, FF, Safari, etc.).  The secondary objective is self defeating and undermines the primary objective.  There is no way to take the standard parts of FF, the standard parts of IE, the standard parts of Safari, and every other browser on the market and somehow create a super browser that will provide you with an accurate end user perspective.  In order to provide such a solution the browser would have to be re-built by hand and incorporate different (which would in turn move you further away from any real world user experience).  In other words<em>, as the neutrality of the browser increases the accuracy of the end user perspective decreases</em>.</p>
<p>It&#8217;s just one of those things, the two previously mentioned objectives are inversely correlated&#8230;addressing one of them will negatively impact the other.  It&#8217;s an important lesson, if you&#8217;re going to go after accurate end user perspectives with monitoring then you&#8217;ll have to abandon any notion of a browser neutral environment.  When monitoring, always define your objectives and give them weight, be ready to analyze dependencies between them and be willing to make concessions (or at least know what concessions you&#8217;re comfortable with).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=116&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2008/12/12/monitoring-browser-perspective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>
	</item>
		<item>
		<title>How to define a monitoring transaction</title>
		<link>http://perfmonblog.wordpress.com/2008/11/12/define-transaction/</link>
		<comments>http://perfmonblog.wordpress.com/2008/11/12/define-transaction/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 17:58:00 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Business Considerations]]></category>
		<category><![CDATA[Monitoring Best Practices]]></category>
		<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Definition]]></category>
		<category><![CDATA[Transaction]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=107</guid>
		<description><![CDATA[The first step in monitoring the performance of an on line asset is to determine what really needs to be monitored.  This is usually pretty easy if you&#8217;re just looking to monitor the availability and performance of a website.  In this case you just need to monitor a single URL (or a subset of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=107&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The first step in monitoring the performance of an on line asset is to determine what really needs to be monitored.  This is usually pretty easy if you&#8217;re just looking to monitor the availability and performance of a website.  In this case you just need to monitor a single URL (or a subset of the most important URLs) and not every URL on the site (since all web pages are most likely hosted on the same infrastructure).  The example above shows that focusing your attention on the essentials can help reduce costs.  For example, if it costs $10 to monitor a single URL and you 1000 pages on your site, that&#8217;s $10,000 you have to cough up to monitor every page.  But the return on each page over a certain threshold is less and less (i.e. The core value you&#8217;re getting from the monitoring is that the site is up and running and if 10 pages are not available it&#8217;s more than likely that all pages are not available).  What about in the case where you want to monitor a complex web application?</p>
<p>It requires a similar concern because the more you monitor the more it costs.  However, in this case there is a bit more up front analysis that you have to do in order to determine the scope of what is to be monitored.  In order to monitor a web based application a <em>script </em>is required to tell the monitoring platform what steps to perform and how to interact with the application.  <strong>The steps that make up that script constitutes a Transaction</strong><em> </em>and directly impact the cost of monitoring (most monitoring solutions will use a metered billing approach which uses a single credit per step of a transaction).  Now we can see that there is a direct correlation between how much a monitoring solution costs and the scope of that monitoring (number of steps goes up, so does the price).  It&#8217;s important to note that even if metered billing isn&#8217;t used, most monitoring platforms have a concept of increasing the price of the solution as the number of steps increases (ex: $100 for 1 to 3 steps, $200 for 4 to 6 steps, etc.).  It&#8217;s just a fact of life, those cost increases are sometimes to recoup processing power of performing the steps but mostly the increase is to offset the costs of storing, backing up, and reporting data.  So, how does one save money?  One defines a transaction as only the steps necessary to test functionality.  Often the following mistakes are made:</p>
<ul>
<li>Monitoring the mundane (or for the wrong reasons).</li>
<li>Monitor duplicate functionality (too much).</li>
<li>Monitor too little (taking these recommendations too far).</li>
</ul>
<p>Let&#8217;s look at each of these situations and see how they impact costs as well as how they affect the bottom line (collecting actionable monitoring data).  In each case we will consider only monitoring of transactions:</p>
<p><strong>Monitoring the mundane</strong> &#8211; This is generally the product of an organization that hasn&#8217;t thoroughly thought out the goals of monitoring.  A transaction that I would consider mundane is one that doesn&#8217;t really have an end goal and just meanders around the website.  For example, a transaction that clicks through each menu item in the left nav bar is probably mundane.  Sure there&#8217;s an argument for why to do that, maybe lots of revenue is generated from the left nav bar, or maybe that&#8217;s the only navigation available for the site.  But in actuality this is really a QA problem and should be addressed as such.  It&#8217;s common in the field of computer science that the later a problem is discovered the more it&#8217;s going to cost to fix it.  Which is definitely the case here: A QA process that occurs right after development could have caught any broken links or JavaScript funkyness more efficiently then a costly monitoring solution after code has been deployed.</p>
<p><strong>Monitor duplicate functionality</strong> &#8211; Sometimes this is a hard one to get around.  But basically you need to make sure that your monitoring transactions are mutually exclusive.  Don&#8217;t monitor the updating of a web based calendar in two separate transactions when one will do.  Another case is when similar methods are invoked in a single transaction.  For example, if you have a tool that configures a product and does so in 20 steps it&#8217;s probably overkill to perform all configurations (since they all probably access the same front-end and back-end functionality).  Have the transaction perform a couple of configurations and then complete the transaction (i.e. purchase, or whatever the result of the transaction is).  In this last case the duplicate functionality is a bit obscure&#8230;on the front-end the functionality looks different (configure a tire vs configure a stereo) but on the back-end the functionality is more than likely the same (accessing the same database through the same web service) and therefore all you&#8217;re really doing is testing more client side code execution (which probably should have been done during the QA process again).</p>
<p><strong>Monitor too little</strong> &#8211; If you start to get too carried away with the recommendations I&#8217;ve made you could end up shooting yourself in the foot.  For example, in the last section I gave the example of an application that configures a product, furthermore that application uses the same back-end technology for each step of the configuration.  But it very well could be the case that third party functionality is embedded in the configuration tool (one step could be hosted by you while another step makes a request to a third party).  In that case maybe it does make more sense to monitor additional steps (though it could probably be monitored more efficiently by breaking out that third party contents monitoring into it&#8217;s own monitoring service).  The end result is that you&#8217;re looking for efficiencies in monitoring that will help reduce cost while <strong>NOT</strong> altering the data set you expect to get from the monitoring.</p>
<p>To summarize, you want to focus your monitoring so that you can achive your goals in improving performance without creating convoluted and expensive data sets.  Also, you want to be aware of not getting to zealous with efficiency and stripping your dataset of all its value.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=107&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2008/11/12/define-transaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>
	</item>
		<item>
		<title>Blog Performance</title>
		<link>http://perfmonblog.wordpress.com/2008/11/05/blog-performance/</link>
		<comments>http://perfmonblog.wordpress.com/2008/11/05/blog-performance/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 23:22:35 +0000</pubDate>
		<dc:creator>Tyler Fullerton</dc:creator>
				<category><![CDATA[Business Considerations]]></category>
		<category><![CDATA[Monitoring Best Practices]]></category>
		<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Performance Problems]]></category>
		<category><![CDATA[SLA]]></category>
		<category><![CDATA[Technology Impact of Election]]></category>
		<category><![CDATA[Timeout Errors]]></category>

		<guid isPermaLink="false">http://perfmonblog.wordpress.com/?p=103</guid>
		<description><![CDATA[I&#8217;ve been receiving a lot of alerts from my monitoring system for this blog so I thought I&#8217;d do a bit of investigation.  I checked my monitoring data to see if there was a trend in performance degradation and sure enough I found it in a graph that lays out the page load time and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=103&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been receiving a lot of alerts from my monitoring system for this blog so I thought I&#8217;d do a bit of investigation.  I checked my monitoring data to see if there was a trend in performance degradation and sure enough I found it in a graph that lays out the page load time and errors.  Here&#8217;s what it looks like:</p>
<div id="attachment_104" class="wp-caption aligncenter" style="width: 310px"><a href="http://perfmonblog.files.wordpress.com/2008/11/performance1.png"><img class="size-medium wp-image-104" title="performance1" src="http://perfmonblog.files.wordpress.com/2008/11/performance1.png?w=300&#038;h=125" alt="Performance Metrics" width="300" height="125" /></a><p class="wp-caption-text">Performance Metrics</p></div>
<p>It doesn&#8217;t show any major overall performance increase (that is a left to right increase in the value of the dark green line) but I do notice that errors have started to increase with a culmination of 31 errors on Tuesday (11/4).  Though I don&#8217;t have any analytics data to prove this I&#8217;m pretty sure it had to do with all the blogging (and blog reading) that was going on nationwide with the presidential election.  All that traffic on WordPress certainly would have affected my blogs performance (or at least mine and every other blog that is on the same hardware).  It&#8217;s not just WordPress but other sites containing news about the election were hammered with users looking for election results (here&#8217;s an <a title="Elections affect on news sites." href="http://www.mashget.com/2008/11/05/election-spurs-record-traffic-to-news-sites/" target="_blank">article</a> on Akamai&#8217;s traffic for yesterday).</p>
<p>When I drilled down into the monitoring results I found that the errors I was experiencing were due to timeout errors.  In my monitoring software i&#8217;ve established a threshold for performance of 3 seconds.  That means that my page and all its content must be completely downloaded by the browser (IE7) within 3 seconds.  When I established this threshold I had been monitoring the performance of the page for a week and saw that the average performance was around 1.8 seconds.  Two factors are making me reconsider that threshold and these are two factors that everyone providing a web service should think about and adapt to:</p>
<ol>
<li>Content (particularly in the world of blogging) will be added to a web page/application overtime.  For example, this blog has nearly doubled in size (when I first started blogging the page download was 177951 bytes, now it&#8217;s 366514 bytes).  This is going to affect the performance of the resource (another example, adding Ajax to a website will require more JavaScript that will need to be downloaded).  <strong>Future growth needs to be considered when setting expectations for performance</strong>.</li>
<li>Outside factors will always influence your performance, that&#8217;s why external monitoring is a must for web resources.  I should have seen it coming a mile away, this is a classic example of current events or major news events drawing hordes of web users to servers that can barely contain them (ok, ok&#8230;too dramatic, in all reality it doesn&#8217;t look like the WordPress servers were in any danger of failing).  Ultimately it brings up a very important issue.  <strong>Know what shared resources in your application can make you vulnerable to other tenant&#8217;s traffic</strong>.</li>
</ol>
<p>These considerations will make your SLA (or any agreement you may have with users of your application) stronger and more robust.  It&#8217;s is definitely not recommended to continually adjust your SLA.  The SLA is a pact with your users and it&#8217;s best to have it remain a strong/unchangeable core.  Changing your SLA every week to keep up with performance degradations is counterproductive and at that point it doesn&#8217;t really make sense to even provide an SLA.  So I have two options: first I could change my SLA/Timeout value from 3 seconds to 4 or 5 seconds, this would definitely reduce the number of alerts I&#8217;m receiving (it would also weaken my stance on what I promise to my readers).  Second, I can keep my Timeout value at 3 seconds and see what happens with the performance of the site (and even proactively improve the performance of the site).  At this point I&#8217;m not too concerned about the alerts and I think that as the election hype dies down I will see a reduction in alerting (which is the case over the last 24 hours).  It may not even be necessary at this point to make any improvements to the site.  Though it&#8217;s certainly something that will need to be considered in the future as I continue to post content.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/perfmonblog.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/perfmonblog.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=perfmonblog.wordpress.com&#038;blog=4193029&#038;post=103&#038;subd=perfmonblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://perfmonblog.wordpress.com/2008/11/05/blog-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2c6c3111e2d72d9a50711633c3f53e95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tyler Fullerton</media:title>
		</media:content>

		<media:content url="http://perfmonblog.files.wordpress.com/2008/11/performance1.png?w=300" medium="image">
			<media:title type="html">performance1</media:title>
		</media:content>
	</item>
	</channel>
</rss>
