Cowboy in the desert.

RFC: Monitoring and Service Management

As an automated deployment tool, Octopus sits right in the middle of the DevOps continuum. A build server knows about the applications you're building, but not where you are deploying them. A monitoring service might know about the endpoints you've deployed, but not how they logically tie together. Octopus knows quite a bit about both. Assuming you're using the built-in conventions and using Tentacles, Octopus already knows:

  • What environments you have
  • What Windows Services and IIS websites your application is comprised of
  • What machines you deployed those services and IIS applications to

And in addition, it has a smart agent service on each of those machines, capable of doing lots of interesting things.

Given that we have all of this information, shouldn't we put it to use more? The Octopus dashboard shows you whether your last production deployment was successful. What if it also showed you whether what you deployed is still running?

Here's a very rough illustration of what it might look like:

Mockup of monitoring in Octopus

In this example, we've deployed a system that comprises of an IIS web application (running on two servers) and a Windows service (running on four services).

If monitoring is enabled, the Tentacle agent would keep an eye on any services or websites that it configured during the deployment. If the status changed, it would send this information back to Octopus.

It wouldn't just be limited to monitoring status though: you could also start/stop these services. Did the Windows Service that you deployed yesterday to 30 machines suddenly crash on 7 of them? No problem, just click the button, choose the 7 you want to restart, and hit the execute button. Sure beats using remote desktop! Plus, there would be a nice audit trail.

Note that we're not trying to be a Pingdom or Nagios. But if you're deploying a dozen small NServiceBus Windows Services, for example, and you don't have a lot of monitoring or operations systems in place, this might be a handy little tool to have.

This is just one of the many big ticket features we're thinking about for 2014, and I don't even know if it's something we'll actually build or not. I'd like your feedback. Would such a feature be useful to you or your operations team? What else would you monitor with it? How would it help?

Tagged with: RFC