opstree_devops.elastalert

Ansible Role: ElastAlert

======================== This role installs and configures ElastAlert with the user's specified alert settings.

Version History

Date Version Description Changed By
27 June 2020 v0.0.1 Initial Draft Ashutosh Mishra
11 January 2021 v0.0.2 Rule management update Paul Belloc @NanoPish from https://perfmaker.com/

Key Features

  • Automates the alert setup with ElastAlert.
  • Allows attaching ElastAlert rules files.

Supported Operating Systems

  • Ubuntu bionic
  • Ubuntu xenial

Requirements

  • python3
  • python-pip3
  • PyYAML
  • setuptools

Dependencies

  • Elasticsearch

Directory Structure

├── README.md
├── defaults
│   └── main.yml
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   ├── install.yml
│   ├── main.yml
│   └── service.yml
├── templates
│   ├── config.yaml.j2
│   └── elastalert-systemd.service.j2
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

7 directories, 12 files

Role Variables

Variables Default Values Description Type
host_name localhost Elasticsearch host Required
es_port 9200 Elasticsearch port Required
elastalert_rules_dir /opt/elastalert/rules Directory for ElastAlert rules Required
elastalert_upload_local_rules_dir files/elastalert/rules Where Ansible uploads rules. Set to False for manual upload Required for auto upload
elastalert_delete_rules_not_in_elastalert_upload_local_rules_dir yes Deletes rules not in the upload directory Required if you want to delete extra rules
elastalert_service_user_name elastalert User name for ElastAlert Required
elastalert_service_group_name elastalert Group name for ElastAlert Required
elastalert_data_dir /opt Data storage directory Required
installation_dir /opt ElastAlert installation path Required
elastalert_version 0.2.1 Version of ElastAlert Required
es_user elastic Elasticsearch username Required for secured ES
es_pass password Elasticsearch password Required for secured ES
use_ssl False Use SSL Optional (if you need SSL)
verify_certs False Verify SSL certificates Optional (if using SSL)
client_cert /opt/elastalert/clientcert.cer SSL certificate Optional (if using SSL)
client_key /opt/elastalert/clientcert.key SSL certificate key Optional (if using SSL)

Example Playbook

Basic setup example

---
- name: Automate ElastAlert setup
  hosts: elastalert
  roles:
    - role: osm_elastalert
      es_pass: password
      host_name: "your Elasticsearch IP or domain"
...

Setup with HTTP Elasticsearch authentication + SSL + local ElastAlert rules directory + Slack webhook

---
- name: Automate ElastAlert setup
  hosts: elastalert
  roles:
    - role: osm_elastalert
      es_pass: password
      use_ssl: True
      client_cert: /opt/elastalert/clientcert.cer
      client_key: /opt/elastalert/clientcert.key
      slack_webhook_url: "https://hooks.slack.com/services/your_webhook_url"
      host_name: "your Elasticsearch IP or domain"
      elastalert_upload_local_rules_dir: files/elastalert/cluster_one_elastalert_rules/
...

To run all tasks:

$ ansible-playbook site.yml -i inventory

To only upload and delete rules, synchronizing local rules with ElastAlert rules directory:

$ ansible-playbook site.yml --tags elastalert,elastalert-rules

Inventory Example

Example inventory file:

[server]                 
192.xxx.x.xxx    ansible_user=ubuntu 

Future Improvements

  • Add support for CentOS 6 and 7.

References

Author Information

Name: Ashutosh Mishra
Email: [email protected]
Informazioni sul progetto

Elastalert ansible role

Installa
ansible-galaxy install opstree_devops.elastalert
Licenza
Unknown
Download
77
Proprietario