{"id":1998,"date":"2011-04-04T22:32:35","date_gmt":"2011-04-04T21:32:35","guid":{"rendered":"http:\/\/www.devco.net\/?p=1998"},"modified":"2011-04-05T00:26:26","modified_gmt":"2011-04-04T23:26:26","slug":"monitoring_framework_composable_architectures","status":"publish","type":"post","link":"https:\/\/www.devco.net\/archives\/2011\/04\/04\/monitoring_framework_composable_architectures.php","title":{"rendered":"Monitoring Framework: Composable Architectures"},"content":{"rendered":"

I’ve been working on rewriting my proof of concept code into actual code I might not feel ashamed to show people, this is quite a slow process so hang in there.<\/p>\n

If you’ve been reading my previous posts<\/a> you’ll know I aim to write a framework for monitoring and event correlation. This is a surprisingly difficult problem space mostly due to the fact that we all have our own ideas of how this should work. I will need to cater literally for all kind of crazy to really be able to call this a framework.<\/p>\n

In the most basic form it just take events, archive them, process metrics, process status and raise alerts. Most people will recognize these big parts in their monitoring systems but will also agree there is a lot more to it than this. What describes the extra bits will almost never be answered in a single description as we all have unique needs and ideas.<\/p>\n

The challenge I face is how to make an architecture that can be changed, be malleable to all needs and in effect be composable<\/a> rather than a prescribed design. These are mostly solved problems in computer science however I do not wish to build a system only usable by comp sci majors. I want to build something that infrastructure developers (read: DevOps) can use to create solutions they need at a speed reaching proof-of-concept velocity while realizing a robust result. These are similar to the goals I had when designing MCollective.<\/p>\n

In building the rewrite of the code I opted for this pattern and realized it using middleware and a simple routing system. Routing in middleware is very capable like this post about RabbitMQ<\/a> describes but this is only part of the problem. <\/p>\n

Given the diagram above and given that events can be as simple as a metric for load and as complex as a GitHub commit notify containing sub documents for 100s of commits and can be a mix of metrics, status and archive data we’d want to at least be able to configure these behaviors and 100s like them:<\/p>\n

<\/p>\n