<?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>Mike&#039;s Place &#187; automation</title>
	<atom:link href="http://blog.gurski.org/index.php/tag/automation/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gurski.org</link>
	<description>Inarticulate ramblings on whatever strikes my fancy</description>
	<lastBuildDate>Thu, 13 May 2010 14:32:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Automatic Monitoring with Puppet and Nagios</title>
		<link>http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/</link>
		<comments>http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 00:30:03 +0000</pubDate>
		<dc:creator>emag</dc:creator>
				<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://blog.gurski.org/?p=41</guid>
		<description><![CDATA[Part of my current push at work right now is trying to get some sort of configuration management system in place, and in a usable state. Part of the reason for wanting to do this is consistency of common configuration among the many systems and virtual machines I manage, especially when several serve essentially the [...]]]></description>
			<content:encoded><![CDATA[<p>Part of my current push at work right now is trying to get some sort of configuration management system in place, and in a usable state.  Part of the reason for wanting to do this is consistency of common configuration among the many systems and virtual machines I manage, especially when several serve essentially the same function (such as webserver <acronym title="virtual machines">VMs</acronym>).  Since I&#8217;m a fallible human being, it&#8217;s easier for me to get <strong>one</strong> webserver configured so that the non-content part of the setup always passes our security scans, and then replicated <strong>that</strong> to all the other webservers.  This not only saves me time, and makes me more efficient, but helps when we do system audits, as I can easily prove that all <em>N</em> systems I manage that serve the same role have identical configurations.</p>
<p><span id="more-41"></span></p>
<p>Another push I&#8217;ve been working on for a few years now is comprehensive monitoring of our systems.  When I started at my job, monitoring was being done through a home-grown script, that would run once an hour.  While not particularly bad, it had some major shortcomings.  Primarily, the hour lag time meant that, if a problem occurred shortly after the script ran, you wouldn&#8217;t know about it for nearly an hour.  Another problem was that, while the script would make note of system problems, the <em>only</em> notification mechanism was &#8220;someone needs to visit the web page it generates&#8221;.  During a normal workday, that might be OK, but evenings and weekends?  So, at least for my benefit, I set up a monitoring system that could not only monitor systems more frequently, but monitor more systems, and send out alerts via email, cell phones, etc.</p>
<p>For reasons I won&#8217;t get into here, what I chose to use for configuration management was <a href="http://reductivelabs.com/trac/puppet/">Puppet</a>, and I&#8217;d already chosen <a href="http://www.nagios.org">Nagios</a> as my monitoring system.  So far, my biggest problem with Nagios has been finding the time to add new systems to it, figuring out what services to check, etc.  It&#8217;s not a particularly <em>difficult</em> thing to do, but in the grand scheme of things, it was just something that always fell by the wayside in the drive to get more systems set up, deal with user problems, and put out the inevitable fires.  That is, until recently.</p>
<p>My original Nagios install was done on an aging box that has been serving as a development web server for our group.  I did the install shortly after I&#8217;d started, so had I been around longer, I might have either waited, put in a request for new hardware, or found a way to get virtualization into our environment sooner.  Overall, it worked, but it was in general a pain dealing with the box, a RHEL3 server, since it was so far out of date.  Recently, I&#8217;ve set up a <acronym title="virtual machine">VM</acronym> on our XenServer cluster to be our new Nagios box.  Since I&#8217;ve also been playing with Puppet, I wanted to automate things as much as possible, since every new system created <em>should</em> be managed by Puppet (though reality slightly differs from that).</p>
<p>Fortunately, the groundwork for automating Nagios monitoring with Puppet is already <a href="http://reductivelabs.com/trac/puppet/wiki/NagiosReference">built in</a> to Puppet.  It took me a little bit to wrap my head around the concepts, but the <a href="http://reductivelabs.com/trac/puppet/wiki/ExportedResources">example</a> helped and served as a base.</p>
<p>Now, even though I&#8217;m still in the process of setting things up, I&#8217;ve gotten to the point where my <em>new</em> Nagios server is already monitoring about 30% <em>more</em> information about hosts (422 services vs 308 on the old server), even though the number of hosts is currently about half (48 hosts vs 99 on the old).  All of it done automatically, and here&#8217;s how.</p>
<p>First, set up <a href="http://reductivelabs.com/trac/puppet/wiki/UsingStoredConfiguration">stored configurations</a> on your <code>puppetmaster</code>.  You&#8217;ll need to specify a database in which to store your puppet-collected facts and resources.  While the default is <a href="http://www.sqlite.org/">SQLite</a>, I ran into problems with concurrent access.  Since I&#8217;m also currently responsible for the handful of <a href="http://mysql.com/">MySQL</a> servers we have, I decided to just use one of those.  Create a database and user for puppet to use, then tell the puppetmaster about it.  Your <code>[puppetmasterd]</code> section of <code>puppet.conf</code> should look something like this when you&#8217;re done:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="re0"><span class="br0">&#91;</span>puppetmasterd<span class="br0">&#93;</span></span><br />
<span class="re1">templatedir </span>=<span class="re2"> /var/lib/puppet/templates</span><br />
<span class="re1">storeconfigs </span>=<span class="re2"> true</span><br />
<span class="re1">dbadapter </span>=<span class="re2"> mysql</span><br />
<span class="re1">dbuser </span>=<span class="re2"> the_user_you_set_up</span><br />
<span class="re1">dbpassword </span>=<span class="re2"> the_password_for_dbuser</span><br />
<span class="re1">dbserver </span>=<span class="re2"> the_database_server</span><br />
#<span class="re1">dbsocket </span>=<span class="re2"> /var/run/mysqld/mysqld.sock</span><br />
<span class="re1">downcasefacts </span>=<span class="re2"> true</span><br />
&nbsp;</div>
<p>Your paths may likely be different than mine.  If your DB server is running on the same host as the puppetmasterd process, <code>dbserver</code> should be &#8220;localhost&#8221;, and you&#8217;d uncomment and adjust the path of the <code>dbsocket</code> line.  The <code>downcasefacts</code> line is set to &#8220;true&#8221; so that I can make use of the <code>$operatingsystem</code> fact later on without having to muck with changing the case later.</p>
<p>Next, you&#8217;ll want to create a <code>nagios</code> module in Puppet.  The Exported Resource example linked above served as my template, but I&#8217;ve made a few changes to it. My <code>puppet/modules/nagios/manifests/init.pp</code> file currently looks like this:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">class</span> nagios <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp;package <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="st0">&#8216;nagios3&#8242;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> &nbsp;=&gt; installed,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">alias</span> &nbsp; =&gt; <span class="st0">&#8216;nagios&#8217;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;<br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;service <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="st0">&#8216;nagios3&#8242;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> &nbsp;=&gt; running,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">alias</span> &nbsp; =&gt; <span class="st0">&#8216;nagios&#8217;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hasstatus &nbsp; &nbsp; &nbsp; =&gt; <span class="kw2">true</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hasrestart &nbsp; &nbsp; &nbsp;=&gt; <span class="kw2">true</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">require</span> =&gt; Package<span class="br0">&#91;</span>nagios<span class="br0">&#93;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;<span class="co1"># collect resources and populate /etc/nagios/nagios_*.cfg</span><br />
&nbsp; &nbsp;Nagios_host &lt;&lt;||&gt;&gt;<br />
&nbsp; &nbsp;Nagios_service &lt;&lt;||&gt;&gt;<br />
&nbsp; &nbsp;Nagios_hostextinfo &lt;&lt;||&gt;&gt;</p>
<p>&nbsp; &nbsp;<span class="kw1">class</span> target <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; @@nagios_host <span class="br0">&#123;</span> <span class="re0">$fqdn</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> =&gt; present,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">alias</span> =&gt; <span class="re0">$hostname</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;address =&gt; <span class="re0">$ipaddress</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;generic-host&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_hostextinfo <span class="br0">&#123;</span> <span class="re0">$fqdn</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> =&gt; present,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;icon_image_alt =&gt; <span class="re0">$operatingsystem</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;icon_image =&gt; <span class="st0">&quot;base/$operatingsystem.png&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;statusmap_image =&gt; <span class="st0">&quot;base/$operatingsystem.gd2&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_ping_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;check_ping&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_users_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-users&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_load_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-load&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_zombie_procs_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-zombie-procs&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_total_procs_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-total-procs&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_swap_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-swap&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_all_disks_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-all-disks&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>To use it, I simply do an <tt>include nagios</tt> in the node definition for my Nagios server in puppet, and in my <code>basenode</code> node definition, I&#8217;ve done an <tt>include nagios::target</tt>.  Each of the <code>@@</code> lines will collect information for each machine managed by puppet that inherits from <code>basenode</code>.  The &#8220;collect resources and populate /etc/nagios/nagios_*.cfg&#8221; portion is the real magic, however.  Each of those lines will cause puppet to collect all the matching resources, and output them to files in <code>/etc/nagios</code>.  The only real caveat, which I also noticed in the example I built upon, is that I&#8217;m having trouble convincing puppet to reload nagios when the files are updated, which I just brute-force solved with a periodic cronjob to run nagios&#8217; init script with &#8220;reload&#8221;.</p>
<p>I&#8217;m also slowly adding nagios entries for each service that puppet manages in some form.  Currently, that means things like apache and ssh.  For example, in my <code>apache2</code> module&#8217;s <code>init.pp</code>, I have the following in my class:</p>
<div class="dean_ch" style="white-space: wrap;">
&nbsp; &nbsp;@@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_http_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; use =&gt; <span class="st0">&quot;check-http&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;@@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_http_processes_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; use =&gt; <span class="st0">&quot;remote-nrpe-httpd-procs&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>This both monitors over-the-wire connections to port 80 on webservers, via the <code>check-http</code> command, but also monitors the number of httpd processes running on each host, via <code>remote-nrpe-httpd-procs</code>.</p>
<p>Similarly, for ssh, I have:</p>
<div class="dean_ch" style="white-space: wrap;">
&nbsp; &nbsp;@@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_ssh_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; use =&gt; <span class="st0">&quot;check-ssh&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>to monitor whether <code>sshd</code> is accepting connections on my systems.</p>
<p>And that, basically, is how I&#8217;m automatically monitoring all puppet-managed hosts in my environment.  Whenever I set up a new host, I activate puppet on the host to ensure configurations I care about are synced to my master templates, and now as a bonus, puppet automatically tells nagios to start monitoring the services it knows about on the host.  By expending a little extra effort once now, I&#8217;ve managed to be lazy later on multiple times over, truly something a Systems Administrator should be doing!</p>


Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;bodytext=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Digg"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;notes=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="del.icio.us"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="DZone"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Reddit"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;t=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Facebook"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Fark"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;annotation=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Google Bookmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;source=Mike%26%23039%3Bs+Place+Inarticulate+ramblings+on+whatever+strikes+my+fancy&amp;summary=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="LinkedIn"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://blog.gurski.org/index.php/feed/" title="RSS"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Slashdot"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="StumbleUpon"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Technorati"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;t=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;s=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Tumblr"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios%20-%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;body=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="email"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="FriendFeed"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Identi.ca"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Live"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;body=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Ping.fm"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a>


<br/><br/><img src="http://blog.gurski.org/?ak_action=api_record_view&id=41&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
