<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description>Hosted log aggregation.Log to the cloud.

Follow @papertrailapp.</description><title>Papertrail</title><generator>Tumblr (3.0; @papertrailapp)</generator><link>http://blog.papertrailapp.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/papertrailapp" /><feedburner:info uri="papertrailapp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item><title>Better log colors thanks to Solarized</title><description>&lt;p&gt;Fellow Seattleite &lt;a href="https://twitter.com/ethanschoonover" target="_blank"&gt;Ethan Schoonover&lt;/a&gt; created a color scheme called &lt;a href="http://ethanschoonover.com/solarized" target="_blank"&gt;Solarized&lt;/a&gt;, and as of today, Papertrail uses its palette when &lt;a href="http://blog.papertrailapp.com/post/49397820256/more-colorful-logging-with-ansi-color-codes" target="_blank"&gt;colorizing&lt;/a&gt; log messages. Solarized logs look like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/b271d045f3843567b9ce1fb3b7a30ca4/tumblr_inline_mmuy80CulZ1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Solarized is &amp;#8220;a sixteen color palette designed for use with terminal and GUI applications.&amp;#8221; Solarized is uniquely well suited to Papertrail&amp;#8217;s needs because its readability comes mostly from differences in hue (rather than from excessive use of contrast) and because the palette works well on different backgrounds.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the result is more readable color text and less eye fatigue. That it&amp;#8217;s also better looking is a nice bonus.&lt;/p&gt;
&lt;p&gt;This is live now and is automatically used when viewing colorized logs in Papertrail. Enjoy!&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/50519346053</link><guid>http://blog.papertrailapp.com/post/50519346053</guid><pubDate>Wed, 15 May 2013 14:00:00 -0700</pubDate><category>logging</category><category>ux</category><category>solarized</category></item><item><title>More colorful logging with ANSI color codes</title><description>&lt;p&gt;Papertrail&amp;#8217;s event viewer now honors ANSI color codes in log messages. Here&amp;#8217;s an example:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/1c5b4bff241502b463695c1c84a61007/tumblr_inline_mm5963KACG1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;The light blue and purple colors were chosen by the application which generated these logs (Ruby on Rails) and are embedded in the log messages. &lt;span&gt;The messages contain ANSI color codes. These escape characters can set the foreground color, background color, and treatment (such as bold) for sections of the message.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This is live now. To use it, simply change your framework or app&amp;#8217;s the logging configuration in your Web framework or custom app logs to generate colorized logs. Colors will be shown in Papertrail automatically. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Papertrail already automatically colorizes the orange sender name and blue program name, since they are links to show related context (see &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href="http://help.papertrailapp.com/kb/how-it-works/event-viewer#context" target="_blank"&gt;Event Viewer Intro&lt;/a&gt;&lt;span&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Finally, a word of caution: it&amp;#8217;s easy to go overboard here. A tiny, tiny bit of color goes a long way.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Please send any comments (or screenshots!) and enjoy.&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/49397820256</link><guid>http://blog.papertrailapp.com/post/49397820256</guid><pubDate>Wed, 01 May 2013 17:11:10 -0700</pubDate><category>logging</category><category>ux</category></item><item><title>Send Ruby AWS SDK logs to remote syslog and Papertrail</title><description>&lt;p&gt;&lt;span&gt;In the &lt;a href="http://ruby.awsblog.com/" target="_blank"&gt;AWS Ruby&lt;/a&gt; blog, &lt;a href="https://github.com/trevorrowe" target="_blank"&gt;Trevor Rowe&lt;/a&gt; covers &lt;a href="http://ruby.awsblog.com/post/Tx3NGT0543C4DOX/Logging-HTTP-Wire-Traces" target="_blank"&gt;Logging HTTP Wire Traces&lt;/a&gt; with the &lt;a href="http://aws.amazon.com/sdkforruby/" target="_blank"&gt;AWS SDK for Ruby&lt;/a&gt; (&lt;code&gt;aws-sdk&lt;/code&gt; gem) and overriding the default &lt;code&gt;Logger&lt;/code&gt; class.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;By default, &lt;code&gt;aws-sdk&lt;/code&gt; logs to &lt;code&gt;$stdout&lt;/code&gt; for Ruby apps or &lt;code&gt;Rails.logger&lt;/code&gt; for Rails apps. Trevor&amp;#8217;s example passes in an alternative &lt;a href="http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html" target="_blank"&gt;Logger&lt;/a&gt; instance that is backed by &lt;code&gt;$stderr&lt;/code&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AWS.config(:logger =&amp;gt; Logger.new($stderr))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s send these logs to a syslog destination like &lt;a href="http://papertrailapp.com/" target="_blank"&gt;Papertrail&lt;/a&gt;, using Papertrail&amp;#8217;s open-source &lt;a href="https://github.com/papertrail/remote_syslog_logger" target="_blank"&gt;remote_syslog_logger&lt;/a&gt; gem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;remote_syslog_logger&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;remote_syslog_logger&lt;/code&gt; provides a Logger-compatible class that&amp;#8217;s backed by a UDP remote syslog destination (rather than an instance of &lt;code&gt;IO&lt;/code&gt;, such as &lt;code&gt;$stderr&lt;/code&gt;). To use it, add &lt;code&gt;remote_syslog_logger&lt;/code&gt; to your &lt;a href="http://gembundler.com/" target="_blank"&gt;Gemfile&lt;/a&gt; (or require it), then instantiate &lt;code&gt;RemoteSyslogLogger&lt;/code&gt; with the syslog destination hostname and optionally, port. For example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AWS.config(:logger =&amp;gt; RemoteSyslogLogger.new('syslog.domain.com', 1234)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;See Papertrail&amp;#8217;s &lt;a href="https://papertrailapp.com/systems/setup" target="_blank"&gt;Add Systems&lt;/a&gt; page for these settings.&lt;/p&gt;
&lt;p&gt;This works without any other system-wide config changes. A &lt;code&gt;RemoteSyslogLogger&lt;/code&gt; instance can be passed to any Ruby class which expects a Logger instance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customize&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By default, &lt;code&gt;RemoteSyslogLogger&lt;/code&gt; will use its running program as the program name in the syslog message. Often this is just &lt;code&gt;rails&lt;/code&gt;. Let&amp;#8217;s set the program to something more descriptive, like &lt;code&gt;myapp-development&lt;/code&gt;. Let&amp;#8217;s also enable the AWS Ruby SDK &lt;code&gt;http_wire_trace&lt;/code&gt; option to output HTTP headers (which one would typically only do in development). Here it is:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AWS.config(:logger =&amp;gt; RemoteSyslogLogger.new('syslog.domain.com', 1234, :program =&amp;gt; "myapp-#{RAILS_ENV}"), :http_wire_trace =&amp;gt; true)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;The&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;a href="https://github.com/papertrail/remote_syslog_logger" target="_blank"&gt;README&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;has more.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extend&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;To use two &lt;/span&gt;&lt;code&gt;Loggers&lt;/code&gt;&lt;span&gt;, one could wrap &lt;/span&gt;&lt;code&gt;RemoteSyslogLogger&lt;/code&gt;&lt;span&gt; within a container class which simply invoked each of them.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Other ways to accomplish a similar result include writing logs to local syslog and configuring it to transmit them, or write to a text log file and use a daemon to watch and send it (see &lt;/span&gt;&lt;a href="http://rsyslog.com/" target="_blank"&gt;rsyslog&lt;/a&gt;&lt;span&gt;, &lt;/span&gt;&lt;a href="http://www.balabit.com/network-security/syslog-ng" target="_blank"&gt;syslog-ng&lt;/a&gt;&lt;span&gt;, or &lt;/span&gt;&lt;a href="https://github.com/papertrail/remote_syslog" target="_blank"&gt;remote_syslog&lt;/a&gt;&lt;span&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Happy debugging!&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/46980868065</link><guid>http://blog.papertrailapp.com/post/46980868065</guid><pubDate>Tue, 02 Apr 2013 17:44:00 -0700</pubDate><category>aws</category><category>logging</category><category>ruby</category></item><item><title>Change groups without leaving the event viewer</title><description>&lt;p&gt;Papertrail&amp;#8217;s log viewer now supports switching groups. We&amp;#8217;re always looking for small tweaks that make a big impact on our own, and hopefully, your workflow. Thanks to &lt;a href="http://www.linkedin.com/pub/ben-fyvie/1/a1a/11a" target="_blank"&gt;Ben Fyvie&lt;/a&gt; for suggesting this.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Here&amp;#8217;s how it works. &lt;/span&gt;&lt;span&gt;In the &lt;/span&gt;&lt;a href="http://help.papertrailapp.com/kb/how-it-works/event-viewer" target="_blank"&gt;event viewer&lt;/a&gt;&lt;span&gt;, the upper left corner has changed to show the current group or sender:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/ac5b18a4313e648251c4281b288306eb/tumblr_inline_mk2r7mfM6n1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Click it to see all groups:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/db7ae69c4a1d15285196d7ac2306a6bb/tumblr_inline_mk2r8igdh31qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Choose the one you want to change to. The active search and seeked-to time are retained.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;Here&amp;#8217;s how this tiny change helped me this morning. I was troubleshooting a problem by looking at Papertrail&amp;#8217;s own Web servers group. I&amp;#8217;d already seeked to a time and then searched to find the HTTP logs I was interested in. They led me squarely to a problem with logs from another part of our stack.&lt;br/&gt;&lt;br/&gt;Instead of reloading the event viewer on another group and going through that again, I just changed to the group I wanted. Papertrail retained my search and time, so the log messages that I cared about were already highlighted. &lt;span&gt;I was able to continue troubleshooting without losing my train of thought.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This is common in my troubleshooting process, whether it&amp;#8217;s changing from production logs to staging ones (to see whether the same error occurred there), or from the server logs of an API request to the client&amp;#8217;s logs. Now context stays with me.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Also, when I need to see both side-by-side, the dropdown lets me open a different group in a new browser tab. Finally,&lt;/span&gt;&lt;span&gt; my saved searches are more useful now that they&amp;#8217;re easy to use with any group.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Ben for this idea. Is there a small tweak that would improve your workflow? We want to know. Enjoy!&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/46007484899</link><guid>http://blog.papertrailapp.com/post/46007484899</guid><pubDate>Fri, 22 Mar 2013 12:25:00 -0700</pubDate><category>logging</category><category>devops</category><category>ux</category></item><item><title>Search Alert: StatHat graphs</title><description>&lt;p&gt;We&amp;#8217;ve just added support to graph the number of log messages matching a search in &lt;a href="http://www.stathat.com/" target="_blank"&gt;StatHat&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;StatHat provides a simple way to graph important metrics and easily measure how it is performing compared to the past. It provides ways to receive alerts based on changes in data or absolute thresholds and automatically lets you know about important changes to the metrics you send.&lt;/p&gt;

&lt;p&gt;To create a &lt;a href="http://help.papertrailapp.com/kb/how-it-works/alerts" target="_blank"&gt;search alert&lt;/a&gt;, select StatHat from the list of search alerts and fill out the details:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://cl.ly/image/1e1Q1Y1E1m2I/stathat-search-alert-settings.png" alt="StatHat search alert settings"/&gt;&lt;/p&gt;

&lt;p&gt;Once you&amp;#8217;ve done that, just sit back and wait for matching messages to arrive and a graph to be created for you. Soon you&amp;#8217;ll have a graph that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://cl.ly/image/2Z1K0u1l1w2M/stathat-worker-graph-2.png" alt="StatHat worker graph"/&gt;&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a href="https://github.com/ejholmes" target="_blank"&gt;ejholmes on GitHub&lt;/a&gt; for the initial work on this search alert integration and for StatHat for adding a &lt;a href="http://www.stathat.com/docs/api#json" target="_blank"&gt;JSON content type for their API&lt;/a&gt; to make it faster and more efficient for us to send the stats.&lt;/p&gt;

&lt;p&gt;To learn how we implemented this alert, check out the source code &lt;a href="https://github.com/papertrail/papertrail-services/blob/master/services/stathat.rb" target="_blank"&gt;on GitHub&lt;/a&gt; or ask me directly in our &lt;a href="https://papertrailapp.com/chat" target="_blank"&gt;chat room&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://twitter.com/lindvall" target="_blank"&gt;Eric&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/45297538521</link><guid>http://blog.papertrailapp.com/post/45297538521</guid><pubDate>Wed, 13 Mar 2013 15:35:51 -0700</pubDate></item><item><title>Papertrail is now brought to you by Papertrail Inc.</title><description>&lt;p class="p2"&gt;When we started &lt;a href="https://papertrailapp.com/" target="_blank"&gt;Papertrail&lt;/a&gt;, it was within a company called Seven Scale (which we&amp;#8217;d used for prior ventures). &lt;span&gt;As Papertrail has grown, it no longer made sense to use the Seven Scale name.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;ver the next few weeks, references to &amp;#8220;Seven Scale&amp;#8221; will change to &amp;#8220;Papertrail Inc.&amp;#8221; Our customers will see zero impact from this change&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you for your support and happy logging.&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/43527063700</link><guid>http://blog.papertrailapp.com/post/43527063700</guid><pubDate>Tue, 19 Feb 2013 17:02:15 -0800</pubDate><category>startups</category><category>bootstrapping</category></item><item><title>Announcing the Dashboard Finder: a better jumping-off point</title><description>&lt;p&gt;We&amp;#8217;re proud to announce the Dashboard Finder, which is now live on Papertrail&amp;#8217;s Dashboard. &lt;a href="https://papertrailapp.com/dashboard" target="_blank"&gt;Try it&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt="image" src="http://media.tumblr.com/52b96dd11f76ed6ef4306ee5548a6483/tumblr_inline_mi85hx0DNf1qz4rgp.jpg"/&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it came to be&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The &lt;a href="https://papertrailapp.com/dashboard" target="_blank"&gt;Dashboard&lt;/a&gt; is where you&amp;#8217;ll land after logging in to Papertrail. It shows groups, saved searches, and a subset of log senders. Until today it had two weaknesses:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;Navigating to resources not shown on the Dashboard took at least a second step. This was common with more than a few senders, when only a few were directly reachable from the Dashboard:&lt;img alt="image" src="http://media.tumblr.com/ab6dc5139b2191476cb7c13186c27ea3/tumblr_inline_mi85wegdqt1qz4rgp.jpg"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;As more groups and saved searches were created, finding the best one required knowing what you want and where it is. For example, two groups and five searches could relate to the &amp;#8220;Acme Anvil&amp;#8221; product, and I may have only created one of them myself: &lt;img alt="image" src="http://media.tumblr.com/055ad08bcc60f9371b03edbacf1ee276/tumblr_inline_mi85wr5ly41qz4rgp.jpg"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Until today, the Dashboard needed a quick way to get anywhere and an easy way to see everything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Announcing the Dashboard Finder&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Over the last few months, we&amp;#8217;ve been trying different ways to fill these gaps, using them ourselves, and iterating. Today we&amp;#8217;re proud to unveil the Dashboard Finder:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/99d9066fe79fa66eb290e1f6de77404c/tumblr_inline_mi84diAFt71qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Small in screen real estate, the Finder hides its power. Have an idea where you&amp;#8217;re going? When you arrive at the Dashboard, hit the &amp;#8220;s&amp;#8221; key (or click in the text box) and type the name or a fragment of a saved search, group, or sender.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/52b96dd11f76ed6ef4306ee5548a6483/tumblr_inline_mi84exfHIB1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s it. The &lt;span&gt;Dashboard Finder stays out of the way until you need it, then makes it&lt;/span&gt;&lt;span&gt; easy to load any view in the &lt;/span&gt;&lt;a href="http://help.papertrailapp.com/kb/how-it-works/event-viewer" target="_blank"&gt;event viewer&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The arrow keys work naturally. I can see and reach everything related to &amp;#8220;Production&amp;#8221; with a few keystrokes:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/80efd43cea77cb961c6a52c69d729541/tumblr_inline_mi84hrknIK1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;My fingers never leave the keyboard.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;We hope the Dashboard Finder saves as much time for you as has for us. &lt;/span&gt;&lt;span&gt;Like everything at Papertrail, we&amp;#8217;re learning as we go, and we want your feedback. If you use the Finder in a way that it&amp;#8217;s not perfect for, tell us. And if it works beautifully for you, tell us that too.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Enjoy!&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/43097891318</link><guid>http://blog.papertrailapp.com/post/43097891318</guid><pubDate>Thu, 14 Feb 2013 13:31:00 -0800</pubDate><category>ux</category><category>devops</category><category>search</category></item><item><title>Announcing search alert minimum thresholds</title><description>&lt;p&gt;&lt;span&gt;As users know, Papertrail has offered painless &lt;a href="http://help.papertrailapp.com/kb/how-it-works/alerts" target="_blank"&gt;log search alerts&lt;/a&gt; for some time. Notify a Campfire chat room, email a team, or kick off a PagerDuty escalation process when something important happens. Get periodic summaries about less-critical issues.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notifications are inherently binary, though: either an alert fires or it doesn&amp;#8217;t. You want to know or you don&amp;#8217;t. There&amp;#8217;s often a gray area in monitoring, though, where two of something is fine, 20 is not.&lt;/p&gt;
&lt;p&gt;Papertrail now lets you decide that gray area. Papertrail search alerts can now include a minimum number of events that must occur (during the alert interval) for the alert to be invoked. The default and existing behavior is a minimum of 1.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s possible with a minimum threshold?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;strong&gt;Allow for endemic problems&lt;/strong&gt;. With some issues, a constant undercurrent occurs all the time. Internet-facing problems like 404s, brute-force attacks, and site scrapers are the obvious examples. I don&amp;#8217;t care that they happen, but I do care when they cross above what I consider noise.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;strong&gt;Allow for known issues&lt;/strong&gt;. If you&amp;#8217;re short on RAM, the fact that Linux&amp;#8217;s &amp;#8220;oom_killer&amp;#8221; killed a process once to save RAM probably isn&amp;#8217;t severe. If it kills 5, it is. &lt;/span&gt;&lt;span&gt;This is particularly handy with code exceptions (known bugs) and services where log output can&amp;#8217;t easily be modified.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;strong&gt;Detect when less-critical issues become trends&lt;/strong&gt;. For example, I&amp;#8217;d like to know when more than 10 slow queries occur across all of my database servers. That&amp;#8217;s not a slow query, that&amp;#8217;s a trend.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;strong&gt;Combine these&lt;/strong&gt;. Take velocity into account when deciding what the alert should do. When 50 of something happen in a 10 minute period, it&amp;#8217;s urgent; tell me in HipChat. Separately, email a summary to my team every day, regardless of volume.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;How to use it&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Use this in combination with &lt;a href="http://help.papertrailapp.com/kb/how-it-works/log-filtering" target="_blank"&gt;log filtering&lt;/a&gt; and &amp;#8220;&lt;a href="http://help.papertrailapp.com/kb/how-it-works/linking-to-logs" target="_blank"&gt;Show related logs&lt;/a&gt;&amp;#8221; links to ignore the events that don&amp;#8217;t matter, react to those that appear to be important, and link directly from your admin dashboard to those that you know are relevant.&lt;/p&gt;
&lt;p&gt;Perhaps the best part of Papertrail&amp;#8217;s search alert threshold is that it comes without a ton more time or effort on your behalf. There&amp;#8217;s not a zillion controls because there doesn&amp;#8217;t need to be; there&amp;#8217;s the one that matters.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;As product designers, we always try find the knobs that solve the most problems - expose the most power - with the least, and least visible, complexity. There&amp;#8217;s not many better examples of it than this.&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/42871704899</link><guid>http://blog.papertrailapp.com/post/42871704899</guid><pubDate>Mon, 11 Feb 2013 14:26:46 -0800</pubDate><category>logging</category><category>devops</category><category>webhooks</category></item><item><title>A fresher home page</title><description>&lt;p&gt;Last week we quietly released a new &lt;a href="https://papertrailapp.com/welcome" target="_blank"&gt;papertrailapp.com&lt;/a&gt; public home page.&lt;/p&gt;
&lt;p&gt;Our goal was simple: &lt;span&gt;incorporate what we&amp;#8217;ve learned from operating Papertrail. &lt;/span&gt;&lt;span&gt;We&amp;#8217;ve actually seen how people interact with the site, which wasn&amp;#8217;t the case when the original site was designed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;While the text hasn&amp;#8217;t changed dramatically, the new site&amp;#8217;s layout highlights the elements that we&amp;#8217;ve seen firsthand are important to visitors. It also does a much better job of demonstrating that we care about stylized design. It feels more modern, which is a more accurate representation of Papertrail&amp;#8217;s product and our view of the world.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The &lt;/span&gt;&lt;a href="https://papertrailapp.com/welcome" target="_blank"&gt;result&lt;/a&gt;&lt;span&gt; speaks for itself. Feel free to send comments.&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/42850189998</link><guid>http://blog.papertrailapp.com/post/42850189998</guid><pubDate>Mon, 11 Feb 2013 09:13:00 -0800</pubDate><category>logging</category><category>design</category><category>ux</category></item><item><title>Help Papertrail make engineers and entrepreneurs happy - we're hiring</title><description>&lt;a href="https://gist.github.com/troy/5066341"&gt;Help Papertrail make engineers and entrepreneurs happy - we're hiring&lt;/a&gt;: &lt;p&gt;We’ve grown to need part-time technical customer support. A few things make this a unique position: work from anywhere, any time, and choose how much. Float between a few hours and 20 hours/week (if not more). Also, do as much beyond tech support as you’re interested in.&lt;/p&gt;
&lt;p&gt;Learn more: &lt;a href="http://careers.stackoverflow.com/jobs/30197/support-developers-and-sysadmins-in-campfire-papertrail" target="_blank"&gt;&lt;a href="https://gist.github.com/troy/5066341" target="_blank"&gt;https://gist.github.com/troy/5066341&lt;/a&gt;&lt;/a&gt;. (Expired StackOverflow Careers &lt;a href="http://careers.stackoverflow.com/jobs/30197/support-developers-and-sysadmins-in-campfire-papertrail" target="_blank"&gt;listing&lt;/a&gt;.)&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/42477343882</link><guid>http://blog.papertrailapp.com/post/42477343882</guid><pubDate>Wed, 06 Feb 2013 19:04:00 -0800</pubDate><category>jobs</category><category>devops</category><category>telecommute</category></item><item><title>More signal, less noise with simple, free log filtering</title><description>&lt;p&gt;&lt;span&gt;Papertrail can now filter log messages on behalf of your apps and systems.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span&gt;Constantly logging a noisy system error that you&amp;#8217;re well aware of? Don&amp;#8217;t care about requests from monitoring probes? Give us a regular expression and we&amp;#8217;ll ignore them. No need to touch your app or system config.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span&gt;&lt;img alt="image" src="http://media.tumblr.com/f4f7a131c1ca4249aa22bda75af977fa/tumblr_inline_mhkdnirFs71qz4rgp.jpg"/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span&gt;Keep reading or dive right in &lt;a href="http://help.papertrailapp.com/kb/how-it-works/log-filtering" title="Log Filtering" target="_blank"&gt;the docs&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;strong&gt;&lt;span&gt;Why is this important?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p2"&gt;Usefulness is in the eye of the beholder. It&amp;#8217;s not our job to tell you what log messages might be useful, and we&amp;#8217;d prefer that it isn&amp;#8217;t left to your application or system&amp;#8217;s default configuration, either. The logs that the author chose to generate may not have any relationship to the ones you care about.&lt;/p&gt;
&lt;p class="p2"&gt;Our job is to expose intelligently-chosen control and configurability. More succinctly: the knobs that matter. This is one of them.&lt;/p&gt;
&lt;p class="p2"&gt;Logging configs are harder to change than they could be, especially with multiple senders and deployment environments. Papertrail&amp;#8217;s log filtering transfers that control from the daemon or framework author to you.&lt;/p&gt;
&lt;p class="p2"&gt;&lt;span&gt;That&amp;#8217;s true for managed services too, where a hosting provider may not be able to modify their logging policies to suit a single customer.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;span&gt;Also, Papertrail is in a unique position to provide infrastructure-wide logging control. In addition to message content, Papertrail can filter by sender, program, or log destination, which means there&amp;#8217;s a single place to silence almost any unnecessary logs.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;span&gt;We hope this saves time which might otherwise be spent fighting with app configs.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;strong&gt;Am I charged for filtered messages?&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p2"&gt;No. Log filtering is included with all Papertrail accounts and filtered messages don&amp;#8217;t consume log data transfer.&lt;/p&gt;
&lt;p class="p2"&gt;&lt;strong&gt;Let&amp;#8217;s see it in action&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p2"&gt;A standard Ruby on Rails app generates these messages for every page fragment (&amp;#8220;partial&amp;#8221;) used in a page:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; Rendered layouts/_head.html.erb&lt;/code&gt;&lt;/p&gt;
&lt;p class="p2"&gt;Although we have easy ways to make Rails &lt;a href="http://help.papertrailapp.com/kb/configuration/configuring-centralized-logging-from-ruby-on-rails-apps#verbosity" target="_blank"&gt;less verbose&lt;/a&gt;, assume &lt;span&gt;I&amp;#8217;m mostly happy with the stock logging except these messages. K&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;nowing the list of page elements that were rendered usually serves no purpose in production, so they&amp;#8217;re basically noise. And changing the log output either means omitting other messages (by decreasing verbosity) or &lt;/span&gt;&lt;span&gt;monkey-patching Rails.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;So, let&amp;#8217;s have Papertrail ignore them. Use the filter:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Rendered &lt;/code&gt;&lt;/p&gt;
&lt;p class="p2"&gt;In your log destination configuration (&lt;a href="https://papertrailapp.com/account" target="_blank"&gt;Account&lt;/a&gt;), it looks like this:&lt;/p&gt;
&lt;p class="p2"&gt;&lt;strong&gt;&lt;img alt="image" src="http://media.tumblr.com/aef6e49fdc3344b44438e525ca0c62d2/tumblr_inline_mhkdd1PrBn1qz4rgp.jpg"/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p2"&gt;Users of Papertrail via hosting services may see a slightly different presentation for clarity.&lt;/p&gt;

&lt;p class="p2"&gt;Next, let&amp;#8217;s just ignore these messages from senders that begin with &amp;#8220;www&amp;#8221; (like www1 and www2), not all senders. Also, we don&amp;#8217;t care about static asset requests (like images and CSS files), either, so let&amp;#8217;s also ignore messages from those senders that contain &amp;#8220;/assets&amp;#8221;. Use the filter&lt;span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;www\d+ \W: (Rendered|\/assets)&lt;/code&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;a href="http://rubular.com/r/HG0piFphwL" target="_blank"&gt;See it in Rubular&lt;/a&gt;. The filter is a regular expression. This regex matches any sender name with &amp;#8220;www&amp;#8221; followed by one or more digits, then any app name from those senders, then either of the messages we want to filter.&lt;/p&gt;
&lt;p class="p2"&gt;&lt;strong&gt;Use it&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p2"&gt;Use Papertrail&amp;#8217;s log filtering to &lt;span&gt;customize where an app should be verbose and where it should be quiet. No need to be limited by the sending service&amp;#8217;s default settings or the implementor&amp;#8217;s preferences. &lt;/span&gt;&lt;span&gt;Just decide what you don&amp;#8217;t want and create a regular expression to match it.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;Head over to &lt;a href="http://help.papertrailapp.com/kb/how-it-works/log-filtering" target="_blank"&gt;Log Filtering&lt;/a&gt; and read more, then configure it in &lt;a href="https://papertrailapp.com/account" target="_blank"&gt;Account&lt;/a&gt; settings.&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/42053486115</link><guid>http://blog.papertrailapp.com/post/42053486115</guid><pubDate>Fri, 01 Feb 2013 15:14:00 -0800</pubDate><category>logging</category><category>devops</category><category>saas</category></item><item><title>A touch more elegance in Heroku add-on interface</title><description>&lt;p&gt;Papertrail provides a Heroku &lt;a href="http://addons.heroku.com/papertrail" target="_blank"&gt;add-on&lt;/a&gt; for aggregating and managing logs from apps, including dyno/app output, router requests, and platform events. This calls for a consistent interface between the Heroku Dashboard and Papertrail (when accessed as an add-on), so Papertrail displays part of the heroku.com site header.&lt;/p&gt;
&lt;p&gt;Until recently, the header was, well, really tall:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/80f76f8655113b234a5918af87d4b575/tumblr_inline_mh7h4cDlQu1qz4rgp.png"/&gt;&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re all about making the most of every pixel on any Papertrail interface. These pixels were not well spent. To that end, we&amp;#8217;ve been exchanging ideas with Heroku about how to make the header shorter.&lt;/p&gt;
&lt;p&gt;On Wednesday, Heroku&amp;#8217;s &lt;a href="http://zeke.sikelianos.com/" target="_blank"&gt;Zeke Sikelianos&lt;/a&gt; released &lt;a href="https://github.com/heroku/boomerang" target="_blank"&gt;boomerang&lt;/a&gt;, which is &amp;#8220;a JavaScript widget that gives users a way back to Heroku from Addon provider sites.&amp;#8221; The header now looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/e79508d4d733400f03e605331db4aec3/tumblr_inline_mh7hobcxTp1qz4rgp.jpg"/&gt;&lt;/p&gt;

&lt;p&gt;Zeke shrunk the header from 148 to 30 pixels. That &lt;span&gt;118 pixel savings is about 10% of the screen real estate on many displays, so it&lt;/span&gt;&lt;span&gt; made a dramatic difference.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;He &lt;/span&gt;&lt;span&gt;took it further and made the header more useful by adding links to the app settings that a visitor might need. Now &lt;/span&gt;&lt;span&gt;Web-centric add-ons feel more like an integrated experience within Heroku&amp;#8217;s Dashboard.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We released this on Thursday and have been basking in its glory for the last day. Enjoy!&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/41479484438</link><guid>http://blog.papertrailapp.com/post/41479484438</guid><pubDate>Fri, 25 Jan 2013 16:29:00 -0800</pubDate><category>heroku</category><category>logging</category><category>ux</category></item><item><title>Ordering saved searches alphabetically</title><description>&lt;p&gt;Aside from the new group-wide log &lt;a href="http://blog.papertrailapp.com/post/32962132254/changing-behavior-of-links-to-surrounding-context" target="_blank"&gt;context link&lt;/a&gt;, we made one much smaller change: saved searches are now alphabetized in Papertrail&amp;#8217;s Dashboard.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_mbfx6uLKgO1qacuw2.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Back Story&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Until today, saved searches were shown in the order that they had been created. This made sense with a relatively small number of searches (and when a relatively small set of people was creating them); at that point, when it was created was meaningful.&lt;/p&gt;
&lt;p&gt;As more saved searches are created (and in many Papertrail groups), name starts to matter more than chronology. Also, saved searches can act as an informal &lt;a href="http://gigaom.com/2011/02/10/retaining-institutional-knowledge-in-distributed-teams/" target="_blank"&gt;institutional knowledge&lt;/a&gt; transfer: a database administrator might create a search that a developer finds useful, and vice versa. In that case, the search&amp;#8217;s name - like &amp;#8220;503 errors&amp;#8221; or &amp;#8220;User-facing slow queries&amp;#8221; - is all that matters, and that&amp;#8217;s how coworkers will discover and use it.&lt;/p&gt;
&lt;p&gt;Enjoy, and send any comments &lt;a href="http://help.papertrailapp.com/" target="_blank"&gt;our way&lt;/a&gt; or to support@.&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/32975838354</link><guid>http://blog.papertrailapp.com/post/32975838354</guid><pubDate>Fri, 05 Oct 2012 18:25:00 -0700</pubDate></item><item><title>Changing behavior of links to surrounding context</title><description>&lt;p&gt;As you&amp;#8217;ve probably seen, Papertrail&amp;#8217;s log viewer shows links to display a specific message in context. Click the name of a log sender or a program to jump to that message within the related messages generated right before and right after it:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_mbfstzY8Sd1qacuw2.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What Changed?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We made a subtle but important change to the program name link, shown in blue (like &amp;#8220;access_log&amp;#8221; and &amp;#8220;sshd&amp;#8221;).&lt;/p&gt;
&lt;p&gt;Until today, clicking the name of a program which generated a message would show that message surrounded by logs from that program on only that log sender. For example, only messages from &amp;#8220;sshd&amp;#8221; running on the system named &amp;#8220;taco.&amp;#8221;&lt;/p&gt;
&lt;p&gt;As of today, clicking a program shows that message surrounded by all messages from that program, from all log senders that you&amp;#8217;re looking at (typically a group). In the past, it only included the specific sender which generated the message.&lt;/p&gt;
&lt;p&gt;The log sender link (shown in orange, like &amp;#8220;taco&amp;#8221;) has not changed. It still shows a message surrounded by all messages from that log sender.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Back Story&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This came about based on how we saw Papertrail used by customers and from using it ourselves. In our own case, we often wanted to see a message in context with related messages from across a multi-server fleet.&lt;/p&gt;
&lt;p&gt;We found that it was more useful than honing in on a specific system+app (which the orange link accomplishes well). One of Papertrail&amp;#8217;s &lt;a href="http://help.papertrailapp.com/kb/how-it-works/usage-and-payment#goals" target="_blank"&gt;goals&lt;/a&gt; is to be users first, so we&amp;#8217;re always looking for tiny improvements that improve workflow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What It&amp;#8217;s For&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you haven&amp;#8217;t tried contextual links, here&amp;#8217;s couple examples how they&amp;#8217;re useful to us:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;History&lt;/strong&gt;: after seeking to a HTTP request that served a user-facing error, click the program name (&amp;#8220;access_log&amp;#8221;) to show the preceding and following requests. With the change above, the context includes requests made to other systems in the group, like on a load-balanced Web server cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long events&lt;/strong&gt;: when a search matches one line in a multi-line traceback or exception, clicking the name of the log sender (&amp;#8220;taco&amp;#8221;) will show the entire traceback.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact&lt;/strong&gt;: spot a kernel problem in a syslog message? Click the log sender to show that message amidst messages from just that system and see the impact on apps.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Enjoy, and please send comments or suggestions.&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/32962132254</link><guid>http://blog.papertrailapp.com/post/32962132254</guid><pubDate>Fri, 05 Oct 2012 14:59:33 -0700</pubDate></item><item><title>Announcing read-only account permissions</title><description>&lt;p&gt;I&amp;#8217;m pleased to announce that Papertrail now supports a read-only account access level. Need to share short-term log visibility with a consultant? Want to spread ops visibility throughout your company, without the risk of someone accidentally changing a setting? This is for you.&lt;/p&gt;
&lt;p&gt;Read-only users have permission to tail and search logs, view groups and saved searches, and download archives. They can&amp;#8217;t edit, change, or delete account assets (like systems, searches, or log messages). Also, they can&amp;#8217;t view or change payment information and are not emailed about plan limits.&lt;/p&gt;
&lt;p&gt;Account administrators can set privileges for all other users on the &lt;a href="https://papertrailapp.com/account/members" target="_blank"&gt;Members&lt;/a&gt; page:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m8oofc3j1R1qacuw2.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Give it a whirl and send us any suggestions.&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/29325712835</link><guid>http://blog.papertrailapp.com/post/29325712835</guid><pubDate>Mon, 13 Aug 2012 00:50:59 -0700</pubDate><category>logging</category></item><item><title>If I could think of anything funny about time zones, it would be here</title><description>&lt;p&gt;&lt;span&gt;Almost everything we touch at Papertrail has a timestamp, which means it also has an expressed or implied time zone. Here&amp;#8217;s more about why and how we work with time zones, then an introduction to new time zone-aware search alerts.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who Cares?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Modern time zones came about in 1884, when a Canadian railroad engineer proposed a &amp;#8220;universal day&amp;#8221; based on a world meridian. At the &lt;a href="http://wwp.greenwichmeantime.com/info/conference.htm" target="_blank"&gt;International Meridian Conference&lt;/a&gt;, the Observatory of Greenwich was chosen as the meridian and zones were created every 15 degrees of longitude (&lt;a href="http://wwp.greenwichmeantime.com/info/conference-finalact.htm" target="_blank"&gt;proceedings&lt;/a&gt;).&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;Papertrail encounters a few issues that 19th century railroads did:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Zones can change.&lt;/strong&gt; The items we care about - log messages, users, servers - can all be mobile. Like trains and passengers, they can start, traverse, and end in different places.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reasonable people expect different things.&lt;/strong&gt; Sysadmin Sally might have servers in 6 countries, set them to GMT, and convert to local time in her head. She probably expects something different than Developer Dan, who logs in once a week to troubleshoot a problem (and shouldn&amp;#8217;t need to care about that conversion). Sally and Dan may be coworkers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Humans aren&amp;#8217;t the only audience.&lt;/strong&gt; Aside from operations, Papertrail needs to present the right zone and level of zone awareness to webhooks, permanent archives, and other targets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The status quo isn&amp;#8217;t great.&lt;/strong&gt; Log aggregation often transfers the burden on to the user, either by &amp;#8220;punting&amp;#8221; and treating timestamps as strings rather than times (so everyone has to do what Sally does) or by converting them to a single zone.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;Our goal is to deliver a service that doesn&amp;#8217;t require knowing any of that.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OK, How?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;As much as possible, our starting point is &lt;a href="http://en.wikipedia.org/wiki/Principle_of_least_astonishment" target="_blank"&gt;the principle of least astonishment&lt;/a&gt;: Papertrail should just work, and then be tweakable where needed. &lt;/span&gt;We&amp;#8217;ve spent effort to:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Let servers and apps live anywhere and configured however the operator wants. Multiple data centers, cloud presences, and PaaS deployments are the norm. They often don&amp;#8217;t - and should&amp;#8217;t need to - use the same time zone.&lt;/li&gt;
&lt;li&gt;Deliver a sequential view of events across all infrastructure, without requiring reliable time sync. Troubleshooting interactions between 2 servers is very difficult when the events are out of order, and if Papertrail blindly trusted local timestamps, they often would be.&lt;/li&gt;
&lt;li&gt;Support distributed teams. Each engineer should be able to view messages in whatever zone is most logical to them. Same for timestamps provided by staff, like when seeking to a time.&lt;/li&gt;
&lt;li&gt;Present a consistent view of inconsistent logs. Some log messages contain explicit timestamps (&lt;a href="http://en.wikipedia.org/wiki/ISO_8601" target="_blank"&gt;ISO 8601&lt;/a&gt;), others have implicit &lt;span class="il"&gt;zones&lt;/span&gt; (known only to the server), and some senders may generate logs in multiple zones concurrently (for example, OS, Web server, and app events). Manually tracking and normalizing these is a particularly demeaning use of humans.&lt;/li&gt;
&lt;li&gt;Make it easier for log consumers (search alerts, API clients) to ignore zones. Transfer the burden of localization on to Papertrail. More below.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Time Zone-Aware Log Alerts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;As of &lt;/span&gt;March 29, 2012, search alerts can now receive event timestamps in any timestamp. Hit the &lt;a href="https://papertrailapp.com/dashboard" target="_blank"&gt;Dashboard&lt;/a&gt;, find the saved search you have an alert for, mouseover it, and click &amp;#8220;Edit.&amp;#8221; Under &amp;#8220;Manage Alerts,&amp;#8221; choose the alert.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You&amp;#8217;ll see a time zone dropdown. Choose the zone that Papertrail should convert the timestamps of matching messages to.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;strong&gt;The Making Of&lt;/strong&gt;&lt;strong&gt; Zone-Aware Alerts&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Here&amp;#8217;s the back story. We tried a few incarnations and found that even teams which are spread across time zones usually have a zone that the team thinks of as standard (what server clocks are set to, a particular office, UTC, etc.).&lt;/p&gt;
&lt;p&gt;We also found that for emails, automatically changing timestamps to each recipient&amp;#8217;s Papertrail account zone sounds ideal, but it&amp;#8217;s actually not very intuitive because other than email, most alert methods inherently present a single time zone to many recipients. For example, a single chat room alert is seen by many viewers.&lt;/p&gt;
&lt;p&gt;(There&amp;#8217;s also an unwritten expectation with team-wide alerts that the whole team received the same thing. When a coworker pastes a log message in IM, converting it from their time zone to yours isn&amp;#8217;t even on your radar.)&lt;/p&gt;
&lt;p&gt;Also, treating email uniquely would mean that for the same issue, the same individual could receive a Campfire alert in one zone and an email in another. Besides violating the principle of least astonishment, that&amp;#8217;s just dumb. There&amp;#8217;s a better way: render each event&amp;#8217;s timestamp as a link directly to that message in the Web viewer (where the time is localized to you). So Papertrail does that.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s why alert timestamps are set once for the alert. It helps that we&amp;#8217;ve actually tried, and lived with, these decisions. &lt;/p&gt;
&lt;p&gt;I hope you enjoyed this introduction to time zones in Papertrail. As always, if something isn&amp;#8217;t working well, doesn&amp;#8217;t seem obvious, or simply can be better, tell us.&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/25237420345</link><guid>http://blog.papertrailapp.com/post/25237420345</guid><pubDate>Sat, 16 Jun 2012 11:14:40 -0700</pubDate><category>logging</category><category>timestamps</category><category>devops</category></item><item><title>Search Alerts: Integration with Boundary</title><description>&lt;p&gt;We&amp;#8217;ve added a new Papertrail search alert to create a &lt;a href="https://boundary.com/" target="_blank"&gt;Boundary&lt;/a&gt; event
based on your application or system log messages.&lt;/p&gt;

&lt;p&gt;Boundary provides network-centric application visibility and they value
realtime data as much as we do. They provide a way to create events,
which show up as red indicators at the bottom of a graph. Events
can include a short description and links.&lt;/p&gt;

&lt;p&gt;For example, a system shutdown could show up as &lt;code&gt;DB rebooted&lt;/code&gt; (tagged with
the name of the system), or a puppet deploy run could add a &lt;code&gt;Code deploy&lt;/code&gt;
marker. Events include a &lt;code&gt;[papertrail]&lt;/code&gt; link right to first related message.&lt;/p&gt;

&lt;p&gt;To create a search alert, just select Boundary from the list of search
alerts and fill in the details:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://f.cl.ly/items/383X2B0A2M3g2P2R1s0m/Boundary%20Kestrel%20Search%20Alert.png" alt="Configuring Boundary Search Alert"/&gt;&lt;/p&gt;

&lt;p&gt;Once you&amp;#8217;ve done that, any new log messages that match the alert will show up
as Boundary events in their Dashboard.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://f.cl.ly/items/0U1R3p3i301v3c2k2O0t/Boundary%20-%20Dashboard-2.png" alt="Boundary with Papertrail Events"/&gt;&lt;/p&gt;

&lt;p&gt;The Boundary event is tagged with any tags provided in the Search Alert as well
as the hostnames of related log messages.&lt;/p&gt;

&lt;p&gt;To learn how we implemented this alert, check out the source code &lt;a href="https://github.com/papertrail/papertrail-services/blob/master/services/boundary.rb" target="_blank"&gt;on GitHub&lt;/a&gt; or
ask me directly in our &lt;a href="https://papertrailapp.com/chat" target="_blank"&gt;chat room&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://twitter.com/lindvall" target="_blank"&gt;Eric&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/25057664551</link><guid>http://blog.papertrailapp.com/post/25057664551</guid><pubDate>Wed, 13 Jun 2012 17:29:18 -0700</pubDate></item><item><title>Improving PagerDuty Alerts</title><description>&lt;p&gt;Our &lt;a href="http://www.pagerduty.com/" target="_blank"&gt;PagerDuty&lt;/a&gt; search alert was one of our first user-contributed alerts. &lt;a href="https://twitter.com/darron" target="_blank"&gt;@darron&lt;/a&gt; 
dropped by our &lt;a href="https://papertrailapp.com/chat" target="_blank"&gt;chat room&lt;/a&gt; and pointed places where small improvements to
the alert could give a lot more information when jumping on a problem.&lt;/p&gt;

&lt;p&gt;Over the past week, I talked with a few customers about how they were using 
PagerDuty alerts. They suggested a few more small improvements and noted that
the parameters could be more clearly explained.&lt;/p&gt;

&lt;p&gt;First, we&amp;#8217;ve added the list of systems that generated messages, so you&amp;#8217;ll 
immediately know which systems are affected (right from the email or text 
message). It&amp;#8217;s in the search alert at the end of the description.&lt;/p&gt;

&lt;p&gt;An important aspect of PagerDuty&amp;#8217;s triggers is the ability to tie multiple
alerts to the same incident, so they can be acted on as one problem. PagerDuty 
does this with the &lt;code&gt;incident_key&lt;/code&gt; option, which
&lt;a href="http://www.pagerduty.com/docs/integration-api/integration-api-documentation" target="_blank"&gt;their documentation&lt;/a&gt;
says it:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&amp;#8230;identifies the incident to which this trigger event should be applied. 
  If there’s no open (i.e. unresolved) incident with this key, a new one 
  will be created. If there’s already an open incident with a matching key, 
  this event will be appended to that incident’s log. The event key provides 
  an easy way to “de-dup” problem reports. If this field isn’t provided, 
  PagerDuty will automatically open a new incident with a unique key.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From reading that and our customers&amp;#8217; feedback, there&amp;#8217;s no right answer about
whether an incident key should be unique to a server or unique to a saved 
search. To deal with this, I introduced a token called &lt;code&gt;%HOST%&lt;/code&gt; that can be used
in the incident key.&lt;/p&gt;

&lt;p&gt;If present, &lt;code&gt;%HOST%&lt;/code&gt; will be replaced with the hostname of the system that 
triggered the alert. This means if you have three hosts that were matched by a saved
search, you can receive three PagerDuty alerts (or just one).&lt;/p&gt;

&lt;p&gt;For instance, imagine a search alert that triggers when the &lt;a href="http://linux-mm.org/OOM_Killer" target="_blank"&gt;Linux OOM Killer&lt;/a&gt; 
is invoked. It&amp;#8217;s likely that each occurrence is a distinct server-specific problem,
and a single Papertrail search alert can create separate host-specific PagerDuty 
incident:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://f.cl.ly/items/3U0X3C3A2Q1q360u1Y40/Saved%20Search%20Alerts%20%E2%80%94%20PagerDuty.png" alt="OOM Killer Screenshot"/&gt;&lt;/p&gt;

&lt;p&gt;Contrast that with a search alert for a Web app error that could occur on dozens 
of Web servers. For that, the error is probably not host-specific and multiple 
occurrences probably are the same issue. The Papertrail search alert can update
a single alert-specific PagerDuty incident.&lt;/p&gt;

&lt;p&gt;To see how we implemented this alert, check out the source code &lt;a href="https://github.com/papertrail/papertrail-services/blob/master/services/pagerduty.rb" target="_blank"&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As always, &lt;a href="mailto:support@papertrailapp.com" target="_blank"&gt;drop us a line&lt;/a&gt; or say hi in our &lt;a href="https://papertrailapp.com/chat" target="_blank"&gt;chat room&lt;/a&gt; if you have any
more suggestions or just want to talk shop.&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://twitter.com/lindvall" target="_blank"&gt;Eric&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/25041818314</link><guid>http://blog.papertrailapp.com/post/25041818314</guid><pubDate>Wed, 13 Jun 2012 13:33:00 -0700</pubDate></item><item><title>Multiple accounts made easy</title><description>&lt;p&gt;&lt;span&gt;Need to manage logs &lt;/span&gt;&lt;span&gt;for multiple organizations, like for a consultancy&amp;#8217;s customers or to keep work and personal logs separate? &lt;/span&gt;&lt;span&gt;This is now easy. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If you already have a Papertrail account and are granted access to another organization&amp;#8217;s logs, you&amp;#8217;ll see a new menu item in the Dashboard header. It shows the entities you have access to (Acme Anvils, Western Widgets, etc.). &lt;/span&gt;&lt;span&gt;Just click to switch contexts:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m3pyqlWiiU1qacuw2.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;An email notification is also sent with each grant. &lt;/span&gt;&lt;span&gt;To see current members or to grant access to a new email address, head over to &lt;/span&gt;&lt;a href="https://papertrailapp.com/account/members" target="_blank"&gt;Members&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="http://help.papertrailapp.com/" title="Papertrail Help" target="_blank"&gt;Let us know&lt;/a&gt; if you have any questions or feedback.&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/22666667851</link><guid>http://blog.papertrailapp.com/post/22666667851</guid><pubDate>Tue, 08 May 2012 13:00:00 -0700</pubDate></item><item><title>Archive file timestamp changes</title><description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt; Monday, May 21: These changes are now active.&lt;/p&gt;
&lt;p&gt;Along with realtime search and tail, Papertrail generates daily or hourly log archive files. They downloadable from Papertrail&amp;#8217;s site and optionally, uploaded to your own S3 bucket.&lt;/p&gt;
&lt;p&gt;The current &lt;a href="http://help.papertrailapp.com/kb/how-it-works/permanent-log-archives" target="_blank"&gt;archive format&lt;/a&gt; has 2 flaws that we want to correct:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Zone&lt;/strong&gt;: The timestamps are in PST8PDT. They should be in UTC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Format&lt;/strong&gt;: Although the current timestamps use a common format, &lt;a href="http://en.wikipedia.org/wiki/ISO_8601" target="_blank"&gt;ISO 8601&lt;/a&gt; is at least as common and is more widely documented (&lt;a href="http://tools.ietf.org/html/rfc3339" target="_blank"&gt;RFC 3339&lt;/a&gt;). Nearly all languages include libraries to parse ISO 8601 timestamps.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;For comparison, a current timestamp (PST): 2011-02-10&amp;#160;00:19:36 -0800&lt;/p&gt;
&lt;p&gt;And the same local time in ISO 8601 (UTC): 2011-02-10&lt;span&gt;T00:19:36Z&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;This change will affect archives created on or after &lt;strong&gt;Monday, May 21, 2012&lt;/strong&gt;. The archive file for Sunday, May 20 may contain 16 hours of logs and Monday, May 21 may contain 32 hours.&lt;/div&gt;
&lt;p&gt;Please open a support request if we can answer any questions or help modify a post-processing script.&lt;/p&gt;</description><link>http://blog.papertrailapp.com/post/22633369458</link><guid>http://blog.papertrailapp.com/post/22633369458</guid><pubDate>Mon, 07 May 2012 20:14:00 -0700</pubDate></item></channel></rss>
