Tycho Blog
专注于信息、技术分享

Elasticsearch7.7告警模块Elastalert

一、简介

Elastalert是通过查询ElasticSearch中的记录进行比对,对服务报警规则对日志发送报警邮件

支持报警规则有:

  • blacklist类型:黑名单规则将检查黑名单中的某个字段,如果它在黑名单中则匹配。
  • whitelist类型:与黑名单类似,此规则将某个字段与白名单进行比较,如果列表中不包含该字词,则匹配。
  • change类型:此规则将监视某个字段,并在该字段更改时进行匹配,该领域必须相对于最后一个事件发生相同的变化。
  • frequency类型:当给定时间范围内至少有一定数量的事件时,此规则匹配。 这可以按照每个query_key来计数。
  • spike类型:当某个时间段内的事件量比上一个时间段的spike_height时间大或小时,这个规则是匹配的。它使用两个滑动窗口来比较事件的当前和参考频率。 我们将这两个窗口称为“参考”和“当前”。
  • flatline类型:当一个时间段内的事件总数低于一个给定的阈值时,匹配规则。
  • cardinality类型:当一个时间范围内的特定字段的唯一值的总数高于或低于阈值时,该规则匹配。
  • percentage match类型:当计算窗口内的匹配桶中的文档的百分比高于或低于阈值时,此规则匹配。计算窗口默认为buffer_time。

支持对报警方式有:

  • Email
  • JIRA
  • OpsGenie
  • Commands
  • HipChat
  • MS Teams
  • Slack
  • Telegram
  • AWS SNS
  • VictorOps
  • PagerDuty
  • Exotel
  • Twilio
  • Gitter

二、软件环境

  1. CentOS Linux release 7.8.
  2. Elasticsearch 7.7.1
  3. Kibana 7.7.1

三、服务部署

1、ElastAlert配置文件

点击下载elastalert.tar.gz

2、拷贝到/opt/目录下并解压elastalert.tar.gz

cp elastalert.tar.gz /opt/
tar -zxvf elastalert.tar.gz

3、配置文件说明:

主要配置文件是:config.yaml

  • es_host: elasticsearch地址(可以用容器名,用容器名的时候各个服务的--network efk要一致)
  • es_port: elasticsearch端口
  • dingtalk_access_token: 钉钉机器人的token
  • dingtalk_secret: 钉钉机器人的加签值
  • dingtalk_security_type: 这个钉钉机器人安全设置有sign/keyword/whitelist(对应加签,关键字,IP地址白名单)

该配置文件:smtp_auth.yaml为邮箱账户密码

  • user: "admin@163.com"
  • password: "sdfaHAKNQ"

4、ElastAlert 镜像启动:

docker run -d -p 3030:3030 -p 3333:3333 -e"ELASTICSEARCH_HOST=elasticsearch771" \
           -v /opt/elastalert/config/config.yaml:/opt/elastalert/config.yaml \
           -v /opt/elastalert/config/smtp_auth.yaml:/opt/elastalert/smtp_auth.yaml \
           -v /opt/elastalert/rules:/opt/elastalert/rules \
           -v /opt/elastalert/rule_templates:/opt/elastalert/rule_templates \
           -v /etc/localtime:/etc/localtime:ro \
           -e "CONTAINER_TIMEZONE=Asia/Shanghai" \
           -e "TZ=Asia/Shanghai" \
           -e "ELASTALERT_DINGTALK_ACCESS_TOKEN=80d0034ef56a3988d0073e66900f713c92bf54ed5ae2563976b41c014776f981" \
           -e "ELASTALERT_DINGTALK_SECURITY_TYPE=sign" \
           -e "ELASTALERT_DINGTALK_SECRET=SEC203b230a30790e352741008e49ef160ae0a4b836fc85d2cf9ae6b2dfe1acc0e4" \
           --network efk --name elastalert3 anjia0532/elastalert-docker:v0.2.4

5、告警模板

       rules目录下的yaml都是告警模板,根据自己需求修改

6、钉钉告警效果

赞(3) 打赏
未经允许不得转载:fleyun » Elasticsearch7.7告警模块Elastalert
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏