Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
ElastAlert is a simple framework for alerting on anomalies, spikes, or other patterns of interest from data in Elasticsearch.
At Yelp, we use Elasticsearch, Logstash and Kibana for managing our ever increasing amount of data and logs. Kibana is great for visualizing and querying data, but we quickly realized that it needed a companion tool for alerting on inconsistencies in our data. Out of this need, ElastAlert was created. If you have data being written into Elasticsearch in near real time and want to be alerted when that data matches certain patterns, ElastAlert is the tool for you.
ElastAlert runs as a Docker container within Security Onion, queries ElasticSearch, and provides an alerting mechanism with multiple output types, such as Slack, Email, JIRA, OpsGenie, and many more.
ElastAlert rules are stored in
Security Onion's default ElastAlert rules are configured with an output type of "debug", which simply outputs all matches queries to a log file, found in
To have ElastAlert send alerts to something like Slack, we can simply change the alert type and details for a rule like so:
alert: - "slack": slack_webhook_url: "https://hooks.slack.com/services/YOUR_WEBHOOK_URI"
Email - Internal
To have ElastAlert send to email, we could do something like the following:
alert: - "email" email: - "email@example.com" smtp_host: "your_company_smtp_server" smtp_port: 25 from_addr: "firstname.lastname@example.org"
Email - External
If we need to use an external email provider like Gmail, we can add something like the following:
alert: - "email" email: - "email@example.com" smtp_host: "smtp.gmail.com" smtp_port: 465 smtp_ssl: true from_addr: "firstname.lastname@example.org" smtp_auth_file: '/etc/elastalert/rules/smtp_auth_file.txt'
user: email@example.com password: yourpassword
With Security Onion's example rules, Elastalert is configured by default to only count the number of hits for a particular match, and will not return the actual log entry for which an alert was generated.
This is governed by the use of
use_count_query: true in each rule file.
If you would like to view the data for the match, you can simply remark this line in the rule file(s). Keep in mind, this may impact performance negatively, so testing the change in a single file at a time may be the best approach.
You can learn more about ElastAlert and its output types here: