This chef cookbook installs and configures Yelp's elastalert.
In more details:
- checks out elastalert github repo using given commit hash or tag
- create elastalert user and group
- installs elastalert in python virtual environment
- creates elastalert index in Elasticsearch
- starts elastalert service with supervisor
- manages elastalert rules
- Debian 8
- poise-python
- git
- managed_directory
- supervisor
- access to Elasticsearch cluster in version needed by particular version of elastalert (default 2.*)
Create wrapper around this cookbook and adjust attributes to your needs.
node['elastalert']['repository']- git repository of elastalert, defaulthttps://github.com/Yelp/elastalert.gitnode['elastalert']['version']- commit hash or tag to checkout from elastalert git repo, defaultv0.1.3node['elastalert']['elasticsearch']['hostname']- hostname of elasticsearch to use, defaultlocalhostnode['elastalert']['elasticsearch']['port']- port of elasticsearch to use, default9200node['elastalert']['elasticsearch']['index']- name of index to be created by elastalert, defaultelastalert_statusnode['elastalert']['elasticsearch']['index_old']- old / previous elastalert index, default emptynode['elastalert']['elasticsearch']['url_prefix']- prefix for Elasticsearch URl (see Elastalert docs), default emptynode['elastalert']['elasticsearch']['create_index_opts']- additional options for creating elastalert index (see Elastalert docs), default--no-auth --no-sslnode['elastalert']['group']- name of group for user running elastalert, defaultelastalertnode['elastalert']['user']- name of user running elastalert, defaultelastalertnode['elastalert']['user_home']- home directory for user running elastalert, default/home/elastalertnode['elastalert']['directory']- installation directory of elastalert, default/opt/elastalertnode['elastalert']['rules_directory']- directory containing elastalert rules, default/opt/elastalert/rulesnode['elastalert']['virtualenv']['directory']- directory for python virtual environment running elastalert, default/opt/elastalert/.envnode['elastalert']['log_dir']- logging directory for elastalert, default/var/log/elastalertnode['elastalert']['supervisor']['logfile']- stdout log file path for supervisor, default/var/log/elastalert/elastalert_supervisord.lognode['elastalert']['supervisor']['logfile_maxbytes']- max size of supervisor stdout log file, default1MBnode['elastalert']['supervisor']['logfile_backups']- no. of stdout log file backups, default2node['elastalert']['supervisor']['err_logfile']- stderr log file path for supervisor, default/var/log/elastalert/elastalert_stderr.lognode['elastalert']['supervisor']['err_logfile_maxbytes']- max size of supervisor stderr log file, default5MBnode['elastalert']['supervisor']['run_command']- supervisor run command starting elastalert (see Elastalert docs), default/opt/elastalert/.env/bin/elastalert --config /opt/elastalert/config.yml --verbose
recipes/default.rb - does everything.
Tested with cookstyle, foodcritic, chefspec and kitchen tests using docker driver, build automatically on snap ci -> https://snap-ci.com/zbigniewz/elastalert-cookbook/branch/master
Fork repo and create pull request, all comments and feedback are welcome!