环境部署
安装其它的必需包
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
 
1,下载、编译和安装 Python 2.7.13
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar zxf Python-2.7.13.tgz
cd Python-2.7.13
./configure
make && make install
2,为新版 Python 安装 setuptools
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
setuptools 正确安装完成后,easy_install 命令就会被安装在 /usr/local/bin 目录下了。
为新版 Python 安装 pip
easy_install pip
pip list --format=legacy
pip (9.0.1)
setuptools (33.1.1)
 
创建软连接
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
 
更新python导致yum源无法使用就解办法:
vim /usr/bin/yum
#!/usr/bin/python
改为:
#!/usr/bin/python2.6
 
3,下载最新elastalert并安装模块
git clone https://github.com/Yelp/elastalert.git
yum -y install libffi-devel
 
cd  elastalert
python setup.py install
PS:报错
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py 
pip install setuptools==34.3.3
 
pip install -r requirements.txt
pip install "elasticsearch==5.0.0" 选择自己的版本
查看pip list
pip list --format=legacy
 
安装完后,会在 /usr/local/bin/ 下生成4个elastalert命令
ls /usr/local/bin/elastalert*
/usr/local/bin/elastalert               
/usr/local/bin/elastalert-rule-from-kibana
/usr/local/bin/elastalert-create-index  
/usr/local/bin/elastalert-test-rule
 
###创建索引
elastalert-create-index
New index name (Default elastalert_status)
Name of existing index to copy (Default None)
New index elastalert_status created
Done!
 
 
################下边是测试的配置############################
#####修改配置文件
cd /opt/soft/elastalert
cp config.yaml.example config.yaml
vim config.yaml
rules_folder: example_rules #这是包含规则yaml文件的文件夹,(.yaml都作为规则加载)
run_every:
minutes: 1 #elastalert查询es的频率
buffer_time:
minutes: 15 #elastalert缓存时间段
es_host: 172.25.0.77 #es主机
es_port: 9200 #es端口
writeback_index: elastalert_status #elastalert设置的索引
alert_time_limit:
days: 1 #报警失败,最晚1天之内会再次报警,直到这个时间段过去
 
###配置邮箱用户名密码
vim /home/elastalert/elastalert/example_rules/smtp_auth_file.yaml
 
user: zhaishaominceshi@cm-inv.com
password: 1zxpfqBF-ibTw#gG ##这里的密码不是web页面登录的密码。而是机器码
 
cd example_rules
vim example_frequency.yaml
es_host: zmt-elk01
es_host: zmt-elk02
es_host: zmt-elk03
es_port: 9200
 
name: Example frequency rule
type: frequency
index: eas-172.25.0.112-server1-apusic.log.0-*
num_events: 1
 
timeframe:
minutes: 1 #出现的时间段
 
filter: #规则
- query:
query_string:
query: "field: value"
 
filter:
- query_string:
    query: "message: 测试一下下"
 
######配置报警信息##########
alert_text: "jira服务出现问题"
#alert_text_type: alert_text_only
include: ["type", "ua", "log_time"] ###允许字段
#alert_text_type: exclude_fields
exclude: ["@timestamp", "_id", "_index", "_type"] ###排除字段
#attach_related: true
#top_count_keys: ["client_ip", "status"]
 
#############配置友好别名######
alert_text_type: alert_text_only (exclude_fields ##这个参数会显示默认报警注释)
alert_text: |
jira服务出现问题
主机: {}
请求URL: {}
HTTP状态码: {}
远程IP地址: {}
日志时间戳: {}
总查询次数: {}
总异常次数: {}
原始日志信息: {}
alert_text_args:
- client_ip
- ua
- status
- host
- log_time
- num_hits
- num_matches
- source
 
########配置邮件报警###############
smtp_host: cm-inv.com #SMTP协议的邮件服务器相关配置
smtp_port: 25
 
#邮箱用户认证
smtp_auth_file: /home/elastalert/elastalert/example_rules/smtp_auth_file.yaml
#回复给哪个邮箱
email_reply_to: zhaishaominceshi@cm-inv.com
#从哪个邮箱发送
 
alert:
- "email"
 
#接收报警的邮箱
- "1178091006@qq.com"
 
 
测试:
cd /opt/soft/elastalert/
python -m elastalert.elastalert --verbose --rule example_frequency.yaml
 
curl -X POST "http://172.25.0.79:9200/eas-172.25.0.112-server1-apusic.log.0-2017-07-25/test" -d '{ "@timestamp": "2017-07-25T11:43:30.000Z", "field": "value" }'
 
#############以下是服务的配置#################################
mkdir /etc/elastalert
cd /etc/elastalert
复制配置文件
cp /opt/soft/elastalert/config.yaml ./
 
mkdir rules
复制规则文件
cp /opt/soft/elastalert/example_rules/example_frequency.yaml rules/
 
####修改配置文件 
修改 config.yaml 中
vim config.yaml
rules_folder: /etc/elastalert/rules
 
##################配置微信报警#################################
cd /opt/soft/elastalert
wget -P elastalert_modules/ https://raw.githubusercontent.com/anjia0532/elastalert-wechat-plugin/master/wechat_qiye_alert.py
touch elastalert_modules/__init__.py
cd example_rules/
vim example_frequency.yaml
####配置微信报警######
alert:
- "elastalert_modules.wechat_qiye_alert.WeChatAlerter"
 
#设置微信企业号的appid
corp_id: wxc27a725d91b135ab
#设置微信企业号的Secret
secret: MQp6r1DYJ0wPCF-xRPYVvDWuHKWBJddgAnFBzHwJyVM
#后台登陆后【应用中心】->【选择应用】->【应用id】
##设置微信企业号应用id
agent_id: 1000002
##部门id
party_id: 1
##用户微信号
user_id: z1051542180
## 标签id
tag_id: admin
 
 
######测试#######
python -m elastalert.elastalert
curl -X POST 'http://172.25.0.77:9200/eas-172.25.0.112-server1-apusic.log.0-'$(date +%Y.%m.%d)'/test' -d '{"@timestamp": "'$(date +%Y-%m-%d'T'%T%z)'","field": "value"}'
 
######报错#######
ERROR:root:Error while running alert WeChatAlerter: send message has error: ("bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)",)
 
pip uninstall -y certifi && sudo pip install certifi==2015.04.28
pip install certifi==2015.04.28
 
 
 
启动服务
python -m elastalert.elastalert &
python -m elastalert.elastalert --config ./config.yaml
 python elastalert/elastalert.py
 
 
安装完成,可以借鉴的文档
ElastAlert 基于Elasticsearch的监控告警 | 家的博客
 
ELK中利用elastalert监控日志中的异常,发送邮件警告 - pujiaolin的专栏 - CSDN博客 http://blog.csdn.net/pujiaolin/article/details/52252950?locationNum=3
 
Elasticsearch+ElastAlert微信报警 - 简书

elastalert基于微信公众号报警的更多相关文章

  1. CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号、小程序实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、等各种业务需求。

    **可以快速二次开发的开源小程序商城系统源码**源码开源地址:https://github.crmeb.net/u/LXT 项目介绍: CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业 ...

  2. zabbix 报警方式之 微信公众号报警(5)

    一.条件 首先你得有一个微信公众号,并且是可以有发送消息的接口.然后你得有个脚本去调用微信的api. 这里感谢一下微信.使我们运维人员的报警方式多了一种... (同事们不要怪我哈.) 之后可以参考下z ...

  3. Azure 项目构建 - 用 Azure 认知服务在微信公众号上搭建智能会务系统

    通过完整流程详细介绍了如何在Azure平台上快速搭建基于微信公众号的智慧云会务管理系统. 此系列的全部课程 https://school.azure.cn/curriculums/11 立即访问htt ...

  4. PHP应用如何对接微信公众号JSAPI支付

    微信支付的产品有很多,1. JSAPI支付  2. APP支付  3. Native支付  4.付款码支付  5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...

  5. 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a1786223749/article/ ...

  6. 基于搜狗搜索的微信公众号爬虫实现(C#版本)

    Author: Hoyho Luo Email: luohaihao@gmail.com Source Url:http://here2say.me/11/ 转载请保留此出处 本文介绍基于搜狗的微信公 ...

  7. 基于IdentityServer的系统对接微信公众号

    业务需求 公司有两个业务系统,A和B,AB用户之间属于多对一的关系,数据库里面也就是两张表,A表有个外键指向B.现在需要实现以下几个功能. A用户扫描B的二维码,填写相关的注册信息,注册完成之后自动属 ...

  8. 带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)

    微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服 ...

  9. 基于APPIUM测试微信公众号的UI自动化测试框架(结合Allure2测试报告框架)

    框架初衷 前两周组内的小伙伴跟我说她现在测试的微信公众号项目(保险)每次上新产品时测试起来很费时,存在大量的重复操作(点点点),手工测试每个产品可能需要半天到一天的时间,复杂的产品需要两天. 由于保险 ...

随机推荐

  1. .NET 跨平台界面框架和为什么你首先要考虑再三

    ​​​原文地址 现在用 C# 来开发​跨平台应用已经有很成熟的方案,即共用非界面代码,而每个操作系统搭配特定的用户界面代码.这个方案的好处是可以直接使用操作系统原生的控件和第三方控件,还能够和操作系统 ...

  2. 奇舞js笔记——第0课——如何写好原生js代码

    摘要 1.好的代码职责要清晰,javscript不要用来操作样式: 2.API要设计的合理:通用性,适度的抽象(数据抽象,过程抽象),可扩展性: 3.效率问题:用好的.合适的算法(前端程序员要把自己当 ...

  3. POWERSHELL将域中的计算机移动到指定OU

    POWERSHELL处理域中计算机的过程 由于集团公司规模较大,存在几个分公司并处在不同地理位置.采用域集中管理,各分公司都有自己的域控制器,分别负责各分公司的DNS解析,DHCP地址分配,及客户端登 ...

  4. MySQL学习笔记(三)

    --回顾 字段类型(列类型):数值型,时间日期型和字符串类型 数值型:整型和小数型(浮点型和定点型) 时间日期型:datetime,date,time,timestamp,year 字符串类型:定长, ...

  5. 如何在一个Eclipse同时启动两个Tomcat

    比如:有两个版本的tomcat,一个5.*,一个6.*,此时由于两个工程分别部署在两个版本的tomcat下,需要同时启动两个tomcat,以下是方法: 1.特别要注意: 不要设置CATALINA_HO ...

  6. iOS多线程开发之NSThread

    一.NSThread基本概念 NSThread是基于线程使用,轻量级的多线程编程方法(相对GCD和NSOperation),一个NSThread对象代表一个线程,需要手动管理线程的生命周期,处理线程同 ...

  7. FreeRTOS源代码的编程标准与命名约定

    编程标准 (Coding Standard) FreeRTOS 源代码遵守 MISRA (Motor Industry Software Reliability Association) 规范. 与 ...

  8. 文本三剑客---gawk基础

    gawk程序是Unix中原始awk程序的GNU版本.gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令.在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数 ...

  9. Spring mybatis源码篇章-sql mapper配置文件绑定mapper class类

    前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(二) 背景知识 MappedStatement是mybatis操作sql ...

  10. JavaScript系统学习小结——Object类型、Array类型

    今天学习JavaSript中引用变量中的Object类型和Array类型: 1. Js中大多数引用类型值都是Object类型的实例,Object类型在应用程序中存储和传输数据时,是非常理想的选择: 创 ...