bitprophet/fullerene — Issue #9: Statically defined groups of hosts
Author: bitprophet
Created: 2011-10-22 00:11:24+00:00
State: open

I.e. allow navigational elements not derived from the dynamic host list that comes out of introspecting Graphite.

Perhaps a top level page that is just nav links to the automatic index and then some top level set of collections, where (in the same all-in-one YAML we've been using so far) one might have this:

```
collections:
by-project:
giantbomb:
- web6.giantbomb.com
- web7.giantbomb.com
- redis10.whiskeymedia.com
- lb2.whiskeymedia.com
comicvine:
- web5.comicvine.com
- redis10.whiskeymedia.com
- lb2.whiskeymedia.com
by-class:
db:
- db.giantbomb.com
- db.comicvine.com
web:
- web6.giantbomb.com
- ...
```

So the top level page would have 3 links: `automatic`, `by-project`, `by-class`, with `by-project` and `by-class` generated by one's config management or by hand.

----

Strongly related: allow globbing/patterns in these definitions, which would then expand based upon the automatic host list. This turns it from being "static" into just another way of organizing the known hosts. Probably not a problem -- it makes no sense to define a host which...doesn't actually exist in the metrics system.

E.g.:

```
collections:
by-project:
giantbomb:
- web*.giantbomb.com
- db.giantbomb.com
- lb[23].whiskeymedia.com
```

Except of course that we'd really just compress that down to this:

```
collections:
by-project:
giantbomb:
- *.giantbomb.com
- lb[23].whiskeymedia.com
```

And it might be useful to use "aliasing" here too, so we end up with:

```
collections:
shared-systems:
- lb[23].whiskeymedia.com
- cache1[01].whiskeymedia.com
- mongo2.whiskeymedia.com
by-project:
giantbomb:
- shared-systems
- *.giantbomb.com
```

However, that's extra work to implement (and more crap for users to deal with), and only truly useful if you are *hand*-generating these configs -- assuming config management templating, it's just as easy to do the refactoring of truly shared systems in your config management DB.