some use cases:
anthracite-compose-submit.sh
CLI scriptanthracite-submit-github.sh
goes into a code checkout, generates a nice message with the commits/author info from a given
commit range, and submits it, along with a given list of tagsSee the integration-examples directory for shell scripts (which also demonstrate how to use curl) and a python function.
standard event has:
this works fine in a lot of cases, but many environments require enhancements. You can enhance quite a bunch via config.py options. The forms adapt as needed, and the extra fields will be stored like regular fields.
recommended_tags
: promote the use of specific tags in forms (they still get stored with other tags)
extra_attributes
: extend on the default schema by specifying attributes, with these properties:
helptext
: override/add help messages for specific fields in forms
plugins
: enable plugins by filename (should match with what's in the plugins
folder)
The default config.py demonstrates how to use them.
plugins expose new functionality by providing functions and decorating them with routes to bind them to a http path/method.
They can also add handler functions to handle incoming events (i.e. to validate according to a custom schema)
They provide add_urls
to specify which urls should get added to the menu,
remove_urls
to denote which existing urls they replace/deprecate.
plugins can have their own template files.
All options mentioned above (except plugins
) can be specified by plugins, i.e. you can have plugins
that promote certain tags, change the schema in a certain way, make certain fields mandatory, etc.
Anthracite comes with 2 plugins that we use at Vimeo, and that serve as examples for you:
empty database/start from scratch (requires anthracite-web restart)
curl -X DELETE "http://localhost:9200/anthracite"
Install dependencies, and just get a code checkout and initialize all git submodules, like so:
git clone --recursive https://github.com/Dieterbe/anthracite.git
super easy, see elasticsearch docs
just set a unique cluster name, like <company>-anthracite
.
This avoids ES accidentally joining other running ES instances on the same network and forming an undesired replicating cluster.
No need for any further configuration, schema setup, etc, anthracite-web takes care of that.
Start the web application and point your browser to http://0.0.0.0:8081/
<path_to_anthracite>/anthracite-web.py
<path_to_elasticsearch>/bin/elasticsearch
I recommend you submit any event that has or might have a relevant effect on:
The format is very loose. I recommend to use tags for categorisation, and ultimately there'll be full-text search so you don't have to worry too much about formatting or additional tags, as long as the info is within the event.
However, I recommend to try to use some "standardized" nomenclature, such as 'deploy', 'manual' (for manual changes), 'outage', ...
You can use tags like author=<person>
but this usually doesn't give any benefit over just tagging <person>
.
new: use the optional outage field for a key (in default config) + start/detected/recovered tag
The event format and its tags are very loose. However, you can use specific tags to enable the ops reporting:
20130225_switch_broke
) and tag outage related events like outage=<key>
.start
, detected
(issue noticed) and resolved
to mark resolution (actual service restoration). TODO metric for 'cause identified'.impact=50
: scale of 0 to 100 to denote the extent to which users are affected during the outage. (100 being full outage for all)
this helps in assessing the severity of the event but don't obsess over it, it doesn't need to be too accurate.
note: nothing stops you from using a value like 1000 to mark an unrecoverable loss (i.e. dataloss)The report will look for these tags and give you a report of your operational metrics: (note that the metrics are not weighted for impact yet)
per event, mean, and total:
average (TODO per-year)
The ops metametrics slidedeck give you more information.