Bootstrap

ElastAlert-Elasticsearch轻松灵活的警报

ElastAlert是基于python2开发的一个预设框架,目前部分组件可兼容python3,它主要有以下特点:

  • 版本迭代文档成熟,不易踩坑,Github上已有7k+ star

  • 对比kibana基于x-pack的alert,ElastAlert完全开源免费

  • 开发语言为python 且文档详细,研究和扩展相对容易

  • 告警规则详细且全面,且提供结构化的数据库存储

  • 告警方式多样丰富,包括常用的邮件微信通知钉钉

  • 提供第三方组件elastalert-kibana-plugin可实现告警在kibana上的可视化。

一.ElastAlert 工作原理

周期性的查询Elastsearch并且将数据传递给规则类型,规则类型定义了需要查询哪些数据。

当一个规则匹配触发,就会给到一个或者多个的告警,这些告警具体会根据规则的配置来选择告警途径,就是告警行为,比如邮件、企业微信等

二.ElastAlert 安装配置

1.Python3以及相关依赖安装
yum -y install wget openssl openssl-devel gcc gcc-c++


wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz


tar xf Python-3.6.9.tgz


cd Python-3.6.9 && ./configure --prefix=/usr/local/python --with-openssl


make && make install


mv /usr/bin/python /usr/bin/python_old


ln -s /usr/local/python/bin/python3 /usr/bin/python


ln -s /usr/local/python/bin/pip3 /usr/bin/pip


pip3 install --upgrade pip


sed -i '1s/python/python2.7/g' /usr/bin/yum


sed -i '1s/python/python2.7/g' /usr/libexec/urlgrabber-ext-down
2.elastalert相关安装
pip3 install elastalert


或者,您可以克隆ElastAlert存储库以获取最新更改:


git clone https://github.com/Yelp/elastalert.git


安装模块:


pip3 install "setuptools>=11.3"


python3 setup.py install
3.配置使用
修改相关配置
cp config.yaml.example config.yaml
es_host: xxx.xx.xxx.xx
es_port: 9200
es_username: elastic
es_password: xxxxxxx


配置rules规则
mkdir rules
 新增配置文件xxx.yaml
可参考
[example_rules]# tree
├── example_cardinality.yaml
├── example_change.yaml
├── example_frequency.yaml
├── example_new_term.yaml
├── example_opsgenie_frequency.yaml
├── example_percentage_match.yaml
├── example_single_metric_agg.yaml
├── example_spike.yaml
└── jira_acct.txt
elastalert-create-index 【创建初始化索引】

三.告警规则配置

1.ElastAlert包含几种具有通用监视范例的规则类型
  • 匹配Y时间中至少有X个事件的地方”(frequency类型)

  • 当事件发生率增加或减少时匹配”(spike类型

  • 在Y时间内少于X个事件时进行匹配”(flatline类型)

  • 当某个字段与黑名单/白名单匹配时匹配”(blacklist并whitelist输入)

  • 匹配任何与给定过滤器匹配的事件”(any类型)

  • 当字段在一段时