If you’re using metrics only to debug and diagnose bugs and system issues, then you’re doing it wrong. You should be looking at metrics related to your code or infrastructure after each production change with the goal of identifying opportunities for optimizations and improvements. By doing this, you’ll often find issues before they compound into more critical problems.
I just updated ec2-clusterssh
It’s a gem that provides a command to open a distributed/shared shell into any number of AWS instances by matching/filtering by instance tags.
Say you want to log into all your webservers for debugging, it’s as easy as…
$cluster -v webservers
I just wanted to do a quick writeup on this since it took me about a day to figure out the issues and workarounds. Hopefully it will save someone else some time.
I’ve been interviewing candidates for a DevOps opening that Interactive Intelligence has available and I keep getting asked by candidates, ‘What does DevOps mean to you?’
If you were to google ‘What is devops?’ you’ll find pages and pages of blogs and articles answering just that. I’ve read a few of them but I still find myself struggling to give a clear answer.
I think the… [more]
The primary purpose of this post is to facilitate a discussion I was am having on twitter with stuartleeks.
I wrote it fairly quickly and primarily wanted to use this post as a venue for discussion (via comments) rather than to provide consumable content. So don’t judge for the quality/depth of the content. Hopefully the discussion will be pretty interesting though.
ASPMVC centralizes the interaction… [more]
One characteristic that I take pride in myself with is being thorough. I really don’t like to miss things. I really take it to heart when I write code and overlook something that someone else catches (whether it be a performance issue, bug, etc.). I don’t like my work to cause additional work for someone else. Of course, you’re going to miss something every now and then. They key is to internalize it. How did you miss this? What general… [more]
I’m about a year into a migration to puppet and have learned quite a bit along the way. In this post I’m going to talk about what I’ve learned about managing environment specific configurations. I’ll briefly go through some of the different ways that we’ve managed these configurations along the way and then talk about where we are now. If you just want to know the end results feel free to skip to the end, but I think it’s valuable to… [more]
I read a really “interesting blog on Chef vs. Puppet”: today. A friend of mine pointed me to it because he really enjoyed the following quote from the article, “This zealous hunting of unquantifiable elegance feels, to me, to be endemic in the ruby world.”
I will agree, there is some truth in that. I find that ruby developers tend to spend a bit more time trying to perfect their code base. Perhaps they do over-value ‘elegance’ a bit, but perhaps the value of… [more]
Our puppet setup has slightly different configs depending on what environments (test, staging, and production) we are provisioning a server in. We key our config settings for each environment off the puppet ‘environment’ config in puppet.conf.
An example puppet.conf
The issue is that we want our vagrant box to be able to assume the configs for any environment. For example, during development, we may want to… [more]
vagrant-hiera is a plugin for vagrant that enables simple configuration of puppet-hiera on a vagrant box.
Creating a vagrant plugin is simple once you get your head around how the config and middleware stack work and tie together. Mitchelleh has put together some great documentation to help get you started.
The purpose of this post is to… [more]
I ran into an interesting selenium bug that prevented me from deleting authentication cookies.
The use case I was attempting to recreate was logging into my application (with oath against google), logging out, then logging in as a different user.
With open auth, as long as you are logged… [more]
I ran into an issue today where I could not connect to a database. Googling led me down the wrong path. The actual solution turned out to be pretty simple.
When attempting a connection I would get the following exception:
could not find driver
I really haven’t been able to find any documented methodology or best practices around how to organize puppet manifests. After several discussions on th’is topic with my colleagues we’ve identified a list of principles that should be considered when defining the directory structure. I’ll outline what these are and then propose an implementation that follows the principles.
The directory… [more]
I just finished the newest addition to the site. You probably noticed the new ‘Poker’ tab. What is this? Well, I host a weekly poker game and thought that it would be nice to be able to have a tool that the players could use to track their stats. This new tab allows me to create tournaments and at that point people can RSVP to the tournament and track their buy-ins and winnings.
I knew I wanted to be able to do some graphing for statistics. I’ll probably add more later,… [more]
I spent the better part of an evening trying to figure out how to install the ruby-libvirt gem (libvirt bindings for Ruby) on my machine. Finally, I decided to try a different version.
The newest version of the ruby-libvirt gem (v4) seems to be much more difficult to install on Debian Lenny.
To install ruby-libvirt
- ruby-libvirt (v3)
noip is a tool to set up a DNS entry that routes to your dynamic IP provided by your ISP. It works by providing you a client that runs on your machine that updates the service on with you IP on a regular interval.
I spent awhile figuring out how to set this up to start automatically on my server and I thought I’d share. The README that comes with the client is helpful, but a… [more]
I stumbled across this extremely
long interesting video from DevOps Days Mountain View 2011. Jordan Sissel (Loggly), Joshua Timberman (Opscode), Phil Hollenback (Yahoo Mail), and Noah Campbell (DTO Solutions) discuss how they manage configs in their deploys.
There were three options discussed:
- Config management tool (i.e. Chef).
- Creating config packages and having application package dependencies push… [more]
Every time I started my computer to do some programming, I would stare at the Eclipse splash screen and watch that progress bar slowly move from left to right as the application booted up. The conveniences that came with such an IDE made this all worth while.
About a year ago I took my first dip into VI. I was hoping to find a light weight IDE and thought that I might be able to get what I needed with Vim and a few plugins. I really found it refreshing. … [more]
I ran into an issue setting up a service to start mongrel_cluster on boot. I followed an excellent set of instructions that I found here, but I ran into a couple problems.
Problem 1: service mongrel_cluster start gives no output and does not start the cluster
I looked through the init script and found that the… [more]
1) Install the package
sudo aptitude install x11vnc
2) Run the following command
ps wwaux | grep auth
This command should output something like this:
root 3838 10.1 1.7 13308 8840 tty7 Ss+ 15:35 2:14 /usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-LliKdB erik 5156 0.0 0.1 2800 752 pts/0 R+ 15:57 0:00 grep auth
Note the path after… [more]
I just finished with a pretty major update to the site. Most of the new stuff is under the covers. The update was prompted by me wanting to play around with the new features in Rails 3, but I found a lot of other things to improve once I got into the code.
I don’t have to maintain and manage an email list of people who want to know when I’m having a poker game. User’s can now subscribe to the mailing list and when I… [more]