申请企业微信公众号在这里我就不详细说明了,大家可以看看网上的教程去申请
下面主要介绍一下该插件的使用方法
第一步:
首先你要确保你已经安装好了python的报警框架elastalert(https://github.com/Yelp/elastalert.git)
具体的安装方法可以参考官方的文档https://elastalert.readthedocs.io/en/latest/running_elastalert.html
下面我以克隆倉庫安裝為例
git clone https://github.com/Yelp/elastalert.git
pip install -r requirements.txt
pip install -r requirements-dev.txt
python2.7 setup.py install
第二步
修改配置文件
打开config/config.yaml按照里面的说明进行配置,其中es_rules中放置的是我写的一个wechat规则模板大家可以简单修改一下继续使用
第三步
将elastalert_wechat_plugin目录下的所有文件拷贝到elastalert目录下即可
第四步
创建Elasticsearch索引
进入我们的项目目录./elastalert/elastalert/ 执行
python2.7 create_index.py --config ../config/config.yaml --host es_host --port ex_post --username es_username --password es_password --no-ssl --no-verify-certs
這個指令會在elasticsearch建立索引,方便ElastAlert將有關其查詢及其警報的資訊和元資料保存回Elasticsearch。這不是必須的步驟,但是強烈建議創建。因為對於審計,測試很有用,並且重啟elastalert不影響計數和發送alert。預設情況下,建立的索引叫elastalert_status
第五步
启动
python2.7 -m elastalert.elastalert --verbose --config config/config.yaml --rule es_rules/wechart.yaml
config指定配置文件路径 rule指定你的微信报警文件
如果需要更詳細的安裝過程以及說明請參考我的今日頭條呦今日頭條
啟動
docker run -d hellolinux/elastalert_wechat_plugin:latest
镜像自定义配置文件部署
下載git程式碼https://github.com/Hello-Linux/elastalert_wechat_plugin.git 之後裡面有config 以及es_rules檔,將裡面的設定檔以及規則設定檔修改後掛載到你的容器裡面即可
cd elastalert_wechat_plugin
docker run -d -v ` pwd ` /config:/opt/elastalert/config -v ` pwd ` /es_rules:/opt/elastalert/es_rules hellolinux/elastalert_wechat_plugin:latest
自定义elastalert版本
Dockerfile中存在環境變數ENV ELASTALERT_VERSION 預設數值為v0.1.38 修改為其他版本執行
docker -e ELASTALERT_VERSION=版本号
docker镜像地址
Docker映像
1.报警时间显示的是UTC时间
這主要是因為logstash傳遞給Elasticsearch 後使用的是底層UTC時間,解決方法主要是從logstash filter 入手使用date 或grok 自訂timestamp時間戳
date filter插件:
filter {
date {
match = > [ " timestamp " , " dd/MMM/yyyy:HH:mm:ss " ]
target = > " @timestamp "
locale= > " en "
timezone = > " UTC "
}
}
上面timestamp是指你日誌中的時間字段,後面的"dd/MMM/yyyy:HH:mm:ss" 指的是你的日誌格式這個取決於你的日誌呦不一定跟我一樣
date filter插件
filter {
grok {
match = > { " message " = > " (?<logtime>d{4}-d{2}-d{2} d{2}:d{2}:d{2},d{1,3}) " }
}
}
上面這個只是簡單的匹配日誌中的時間,具體還是看自己的情況,這裡是添加了一個logtime字段,由於是換了字段,你的警報插件裡面的
alert_text_args:
- @timestamp
- message
@timestamp也要換成logtime欄位即可
2.如何给企业微信多个部门发送告警
目前這個還沒時間去做,如果折中的實作方案就是在es_rules中編寫多個規則來間接實作多個部門ID的警告發送
3.企业微信收不到报警
這個主要是檢查你的警報規則有沒有觸發,其次就是你的微信公眾號裡面的配置是否都正確
伸出您可爱的双手支持一下作者呗!给他一点继续更新下去的勇气!