Saturday, March 15, 2014

How to use your own domain with

I've been around the e-mail block a few times. I've used Google apps with Gmail, Office 365, and seems to have a pretty interesting offering I've been happy with so after a lot of going around trying to figure out some of how it works, I decided to share some of my discoveries.

There are some blogs that say use to register a new account with Stop. Don't do it. Why? Because you'll only get to register that one e-mail address, verifying others will be impossible. Plus I've discovered, it's not really the "right" way to do things. is likely only around for legacy reasons.

So what's the right way?

If you want to host your own domain there are a few options. These days Office 365 and Google Apps are your best "business class" options. Both are great. However, your Google Apps account will be a Google account like any other home google account, with access to the same services as any normal Google user. Microsoft decided not to do that, so in the Microsoft world, you have two choices for e-mail:

     * Microsoft accounts: These are evolutions from previous microsoft account types. Such as,, Microsoft has made many attempts at a single sign in (much like Google has) and this is the current term for them. You can also have a domain based account through much like you could with Google. This service isn’t available any longer to non-paying customers with Google. However, Google doesn’t have the dual accounts paradigm that Microsoft does.

     * Office 365 accounts: These are domain based accounts which you’ll use do sign into office 365. It it useful only within the Office365 realm that you create when you have the service. Also, multiple sign on doesn’t work so well so if you have two Office 365 accounts to sign in at once, you’ll need to create a separate browser session.

What does Office 365 have?
With even a basic Office 365 account (NOT counting Home Premium, that is a weird service not really related to Office 365 at all). You get
* Domain based e-mails
* Webmail with mail, calendar, contacts, etc
* Your own web hosting service
* Lync messaging within your business or domain
* Onedrive for Business (which is basically just a Sharepoint filesystem NOT linked to consumer Onedrive at all)
* Internal Sharepoint site
* Powershell integration so you can script creation and reporting commands
* 5 downloads of MS Office per user (with Small Business Premium)
* Office Online (Microsoft's answer to Google Apps...which was Google's answer to Office)
* Mobile integration is just exchange. Though they have a neat iPad/iPhone app: OWA.
* 2 factor authentication only for Midsize plans or higher.
* Supports Exchange, IMAP, and POP
* Real support
* 99.9% uptime guarantee

For e-mails it's pretty much just Hosted Exchange:
* Shared mailboxes
* Distribution lists (external, or forced internal only)
* All the aliases you want for users

So if you're wanting to host your domain there, that's what you get for your money. Unfortunately it's overkill for me in some areas and lacking in others.

What does have?
* mail app for Android
* 2 factor authentication
* Webmail with mail, calendar, contacts, etc
* Supports Activesync, IMAP, and POP
* Chat integration with Skype, Google Chat, and Facebook

It's a lot less, but the important things for me were:
* The android app
* Skype integration
* The webmail for just seems better.

In other words, Outlook seems tailored for the home user, using Office 365 can be an awkward fit.

So how DO you use with your own domain?
Really the best way is to go to your domain registrar and use a forwarding service. If not use one from someone like or Neither require you host the domain there, and they have ok rates. Otherwise you could set up your own, but I'm guessing you're trying to get out of the hosting your own e-mail business if you're reading this. I use which suits my needs.

So create a normal account (Which is really a Microsoft Account) with a name of your choice. The beauty is you can your account name very easily, and if you verify your e-mail, you can actually switch your account to use that e-mail to log in. This is why using isn't really with it.

Once you log into your account.Click on the top right to "Account Settings".
From here you should see an overview page, with the option to create aliases. As long as you can receive e-mail to that address, you can verify it as an alias, and you can start forwarding that e-mail to your address later.

You may have some assumptions about what an alias is...

Fun facts about aliases:
* They allow the user to use that address to log into Microsoft services
* They allow the user to send e-mail from that address
* Your primary alias is use as your default "From:" address.
* You can have 1 primary alias and a limit of 10 other aliases.

If you create an alias on one account and need to transfer it.
* One you let the alias go, it ends up in limbo for 30 days.
* Old Microsoft accounts themselves will lay dormant for 270 days (9 months).

You do NOT need to create an alias to receive forwarded e-mails to that account.

You may find that forwarding your e-mail to from certain forwarders results in bounces from what I'm guessing are SPF restrictions. In my testing so far, doesn't seem to have this issue, but I've had this issue forwarding from Office365 to Some of these include Facebook, Twitter, Linkedin, Living Social, and others. I recommend extensive testing before cutting things over. One workaround of course is just use your Microsoft Account for these periodic spam notifications. It's not like your friends are going to see it.

Tuesday, May 21, 2013

Sensu is an open source monitoring service for the cloud by Sonian the diagram below explains most of how it works quite well, but it has several components in order to make it scalable:

RabbitMQ is really the central "server" in terms of where checks come from, and where the results go. Here's the flow of a rabbitmq check.
  • Server gets a new check that the client needs to execute. It puts that into rabbitmq.
  • Client checks rabbitmq for any checks to execute, it sees a check it should perform, so it gets the data from rabbitmq, and executes the command.
  • Client takes the results of the command, and puts that into rabbitmq
  • Server checks for command results, sees that a client put in a result. It posts it to the dashboard.
Metrics (Graphite):
  • Server sees a metric, as directed by the handler, it puts it into the rabbitmq for Graphite's carbon service.
  • Carbon takes that data from rabbitmq and puts it into graph.
Built for the cloud. Sensu is made to have clients just magically appear. There is no individual client specification in the config files in Sensu. Likewise, Sensu has a REST based API where clients can be just as easily removed.
Scalable. Since the central service uses rabbitmq, which itself is quite scalable and can be run HA if necessary, It also has discrete components which can all also be made redundant. 
Integration with Graphite. Sensu checks by design, integrate with graphing engines like graphite. Also no clients need to be registered in graphite for them to appear.
Server Components:
Sensu server has 4 chief server components:

The server initiates checks on clients, receives the output of the checks feeds them to handlers. (As of version 0.9.2, clients can also execute checks that the server doesn’t know about and the server will still process their results, more on these ‘standalone checks’ in a future article.)

Sensu-server relies on a Redis instance to keep persistent data. It also relies heavily (as do most sensu components) on access to rabbitmq for passing data between itself and sensu-client nodes.

A REST API that provides access to various pieces of data maintained on the sensu-server in Redis. You will typically run this on the same server as your sensu-server or Redis instance. It is mostly used by internal sensu components at this time.

A minimal dashboard providing an overview of the current state of your Sensu infrastructure and the ability to perform actions, such as temporarily silencing alerts.

A better web dashboard providing an overview of the current state of your Sensu infrastructure and the ability to perform actions, such as temporarily silencing alerts.
  • There are two types of plugins that checks run: metrics (handled by graphite), and checks (handled by sensu).
  • Clients get groups of checks called subscriptions. Subscriptions are defined on the server. Clients can get multiple subscriptions.
  • Clients must have the plugin that they are running locally. The plugin must by executable.
  • Clients must be able to reach the rabbitmq server defined in /etc/sensu/config.json
  • Client's definitions are in /etc/conf.d/client.json. Any *json files in this directory will be parsed.
  • Client definitions are ruled by chef.
Sample client.json

   "client": {
"name": "app0",
"address": "",
"subscriptions": [ "linux" ]

When adding server checks you'll need to restart the server. At times this can be painful and you need to kill -9 the process.

Fast facts about checks:
  • Server Check Configurations:
  • Check Format: JSON
Sample metric check (JSON): 

"vmstat_metrics": {
"type": "metric",
"handlers": ["graphite"], 
"command": "/etc/sensu/plugins/vmstat-metrics.rb --scheme stats.:::name:::",
"interval": 60,
"subscribers": [ "linux" ]

Sample alert check:

"mem_check": {
    "handler": "default",
      "command": "/etc/sensu/plugins/ -w 10 -c 5",
      "interval": 60,
      "subscribers": [ "linux" ]

The handler defines what happens with the check output. There are many custom handlers out there. Of course the standard is an e-mail handler:

   "email_techops": {
      "type": "pipe",
      "command": "mail -s 'sensu alert'"


Sunday, December 30, 2012

Web Operations at a startup, the first 30 days...

Hitting the ground running

I'd recently found myself working at a startup fulfilling their needs for Web Operations. I thought I'd document and give advice for anyone else in the same situation.

Most howtos give you advice for the first 100 days. By most conventional wisdom, you need 90 days to really figure out what's going on in an organization. Most medium and large organizations let you do this at a relatively leisurely pace. Being at a startup where things are changing at a blistering place, it's easy to get turned around.

Make Lists, get it out of your head

You'll find new information daily. Information about things you'll need to know. Information about things you don't. You won't really know what's what at this point. What you will want to do is centralize it in a place like Evernote. I'm not saying use a notepad, but you'll want to make it searchable because by the end of a month you'll probably have forgotten much of what you wrote down at first.

I found that I had so much to think about it was actually keeping me up at night. Take a page from David Allen, and write this stuff down. Honestly, I made a list called "All The Things" since we didn't even have a ticket tracking system at the time and wrote down, literally, all the things people wanted, or expected to get done that fell under my purview. You'll get better sleep knowing you don't have to hold anything in your head.

It won't be enough to make a list of All The Things. You'll want to prioritize them as well. You may want assistance from your manager on some of these. Try and figure out what you'll do in 2 weeks, 4 weeks, etc. Don't try and put too much on your plate, don't change the world in a day. You'll want to focus on quick wins when you can just to get some early recognition.


You've probably done this at your former position, don't neglect it now. Figure how how your boss wants status weekly, and take this opportunity to do weekly one on ones with your directs. The longer you wait the less likely you'll do it. Get good habits in place as soon as you can. It's a new job. Make new habits!

Of course, also identify your peers and talk to them whenever possible. It'll be easy in the future to have adverse relationships with them since their goals may not align with yours. However, they'll also be most important allies in helping you and the company achieve goals.

Gather Subject Matter

What do you need to focus on. What's lacking in the company. Do they need better documentation, monitoring, uptime, is there a ton of legacy stuff needing upgrading, are there too many requests being jammed through the hopper, all the above?

You'll want to gather tasks and group them together so you can focus on like tasks at once. See the First Hundred Days Reference below, and don't forget the Limoncelli test.

You'll also want to document everything you find, especially if its lacking. Otherwise, read read read about everything that works there, and definitely use time in your one on ones to find any other bugs under the rug.

The First Hundred Days

Wednesday, July 11, 2012

The best uptime?

I found a box today in a squirreled away hosting provider that I've been paying the bill for mindlessly. I've found I can probably move the thing to s3 since the pages are essentially static. Amazingly enough, this may be one of highest uptime servers ever (maybe the most rooted server ever too but I don't see any evidence yet). This host has amazing uptime. I think my company has experienced about 4 datacenter outages in the time this server has been up.

[root@localhost ~]# cat /etc/issue
Fedora Core release 3 (Heidelberg)
Kernel \r on an \m

[root@localhost ~]# uptime
 22:05:06 up 1595 days,  7:14,  2 users,  load average: 0.00, 0.00, 0.00

[root@localhost logs]# pwd

[root@localhost logs]# ls
archive                                 localhost_log.2006-10-19.txt
catalina.out                            localhost_log.2006-10-20.txt
host_count                              localhost_log.2006-10-21.txt
localhost_access_log.2006-05-12.txt.gz  localhost_log.2006-10-22.txt
localhost_access_log.2006-05-13.txt.gz  localhost_log.2006-10-23.txt

[root@localhost ROOT]# date
Wed Jul 11 22:36:37 PDT 2012

Pretty amazing stuff. Unfortunately it's time to consolidate and put this guy to bed. Of course IP addresses and server names have been deliberately hidden to protect the innocent.

Monday, April 16, 2012

Replacing macbook pro feet

Now for something less business and profound and a little more practical.

Some folks have lamented about the feet on their Macbook Pro falling off. This works on a 15" mid 2010 model. I've seen folks say that you can get these at the Apple store. Unfortunately, the only advice I've seen was to get a brand new bottom plate. This costs about $200. This is fine if you want a perfect bottom, but it's really friggin spendy. Others have used felt bottoms, which doesn't really have the right texture and will slip around.

My method involves scissors, electric tape, and a dime.

You can probably see where I'm going here. A dime is around the same size as the feet on a unibody macbook pro. What I did was cut smaller circles to fill in the hole where the foot was, so that it's sufficiently raised. About 5 layers of electric tape circles will do. To cover it all, put the tape on dime, cut around it, and slap it on top. It'll have about the same texture as the other feet, and will be fairly close to what was there. Enough to let your laptop be grippy enough till the next one you buy.

Saturday, January 28, 2012

You really need a system if you're going to make it work

Sometimes going through not just the day, but the week, I start really to sympathize with Leonard from Memento. If you haven't seen the film I highly recommend it. As many of you know it's about a guy who's wife was killed, and he's searching for the killer, but the catch is his short term memory is around 30 minutes max.

He creates a system to remember things, tattoos, notes, a polaroid camera and a sharpie.

"(For) just for day-to-day stuff, notes are really useful. Sammy Jenkis had the same problem but he really had no system. He wrote himself a ridiculous amount of notes but he'd get them all mixed up. You really do need a system're gonna make it work."

For just managing yourself, it's not hard. For a sysadmin, you've got Getting Things Done, Time Management for System Administrators. These are good systems, but I've always had a hell of a time making them work. This isn't to say don't read these books. If you're looking at ideas for productivity, read them. Just don't expect them to be the end all be all of task and project management. For me with weekly status reports I create, these methods don't quite fit. Though the systems I use are heavily inspired from these systems. 

The systems tend to have days compartmentalized onto separate files. It becomes a pain to transfer tasks from one day to the next, to the next. Eventually it's as if nothing gets done because I get very little done that I planned on that day. Quite demoralizing. Also since each day is separate, context from previous days needs to be transferred daily. That is the flow of the week is on each file, so I'm flipping between different notes for requests and things I did previous days.

Instead I have a list I just keep in Evernote that keeps track of the entire week. What do I want to do that week? What do I want my team to do that week? Then I have below the days of the week what I want to do, and what I did. Hey most of my status is one one page now, I can just format it. Taking the week in chunks, I've found I can get more things done. Realistically tasks will probably get done in a day or two, sometimes three. However a week as a nice even chunk of time to keep track of the stuff I'm doing. I have to report on the week anyhow, so it fits.

Of course you still need some sort of project management. For this I've been using Asana which so far is about the least fuss project management app I've been able to find. It's free to boot. Again I've been able to track which projects are occurring, who's doing them (even if its me). It doesn't do anything fancy like gantt charts, but I've found I've been able to live without them. The hardest part is just following up on missed dates, and getting people to update it with their current projects.

That's really what's necessary for groups that are doing projects. They need to know who's doing what, and who's on point for which task. I've had a very hard time making project management files say MS Project working, because not everyone knows what's going on realtime. You want to communicate to folks realtime with each update you make? You won't get much done.

The last tool is simply for customer requests, Request Tracker. Though I'm careful this is regulated only to customer requests. It's not a wish list, it's not a task list, it's certainly not used to track projects. You can probably make it do these things, but in my experience this is a bad idea, and not very easy. I try and make this very title apropos since its strong point is being a liaison where a documented conversation between customer and fulfiller can exist.

Thursday, December 15, 2011

Monitoring and Uptime

Some fun notes about monitoring and uptime.

I'll be giving some shout-outs to some products which have really helped me out. I'm not getting anything from them, (in fact my company is paying them money). However they're making my life a bit easier.

So in world not so long ago, our monitoring situation was pure Nagios, and a physical pager. The pager was a bit like the hot potato in that it marked that you were on call. May as well have been an albatross for all it was worth. The service was cheap enough, but of course we had to come up with creative ways to create the on call schedule. Distribute it to folks that needed it, etc. Now there are probably cool ways to page with Nagios, and I'm sure people are using them, however we decided to outsource it to PagerDuty. It's one of those companies that makes every sysadmin "Gah, why didn't I think of that?!".

PagerDuty takes care of the oncall schedule, rotations, being able to easily tweak the rotation because your on call guy wants to take vacation that week, or is otherwise unavailable, as well as the alerting you parts. It can call you, SMS you, e-mail you, all three at once. You get to pick. On top of that their rates are very reasonable. If you're using a real pager, take a serious look at PagerDuty. I've got about 35 folks on it, multiple on-call rotations, and it's working quite nicely.

Second shout out is for Keynote. You may be using Nagios (or Icinga) to monitor your uptime, and hey they have nifty performance metrics too! If you're monitoring this stuff from the same datacenter that your website is on, you're doing it wrong if you're trying to figure out what your availability is.

Consider this (real) scenario. You're tasked with providing marketing or sales, or whomever with you how awesome your site uptime is. Maybe it's 100% and you don't even do any outside monitoring, in which case you're lucky or a liar. One day the power goes out in your datacenter, the whole place is dark for a bit, and of course it takes you a while to get your systems back up. Your monitoring system is blissfully unaware that there's any site downtime because it's down too. You go to pull up your reports and you still have 100% (or close to it) uptime.

The biggest issue is that Nagios is great for introspection. Making sure the gears in your machine are operating normally. It's pretty crappy for monitoring what your customers on the internet are experiencing, and that's what Keynote is good at. Other nice thing that Keynote does is dig through multiple clicks of a website with a simulated or real browser. Again emulating the customer experience as close as possible.

Hopefully this helps some folks out there. I know this took me longer than it should have to get right.