ElastAlert
是基于python2
开发的一个预设框架,目前部分组件可兼容pyt
hon3
,它主要有以下特点:
版本迭代文档成熟,不易踩坑,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类型)
当字段在一段时