十、ELK安装ElastAlert 2插件飞书机器人告警(docker)

实现效果

十、ELK安装ElastAlert 2插件飞书机器人告警(docker)_第1张图片

1.创建相应挂载目录和文件

可任意位置,挂载对上就行,方便直接在宿主机修改配置。

/data/feishu-alert/config.yaml

/data/feishu-alert/rules

2.编写config.yaml配置文件(/data/feishu-alert/config.yaml)

#指定告警文件存放目录
rules_folder: /opt/elastalert/rules

#ElastAlert查询Elasticsearch的频率,这个单位可以是几周到几秒不等
run_every:
  minutes: 1

#ElastAlert将缓冲最近的一段时间的结果,以防某些日志源不是实时的
buffer_time:
  minutes: 1

#Elasticsearch主机
es_host: xxxxxxxxx

#Elasticsearch端口
es_port: xxxx

#es_host上的索引,用于元数据存储。这可以是一个未映射的索引,但建议你运行。设置一个映射。
writeback_index: elastalert_status

#如果一个警报因某种原因而失败,ElastAlert将重试,直到这个时间段过后
alert_time_limit:
  days: 2

3.编写告警规则文件(放至告警文件目录/data/feishu-alert/rules)

文件名称随便自定义,可存创建多个告警文件,放至rules/都会生效

例如:/data/feishu-alert/rules/alert_error.yaml

#rule name 必须是独一的
name: alert_error

#必须设置的值,多种type可上alert官方文档查询
type: frequency

#指定index,支持正则匹配
index: easyspeed-cloud-logs-*

use_strftime_index: true

#时间触发的次数
num_events: 1

#和num_events参数关联,1分钟内出现1次会报警
timeframe:
  minutes: 1

#同一规则的两次警报之间的最短时间。在此时间内发生的任何警报都将被丢弃。默认值为一分钟。
realert:
  minutes: 1

#用来拼配告警规则,elasticsearch 的query语句,支持 AND&OR等
#我这里是根据业务需求,查询level是ERROR并且type是production且排除message里不带有“开始执行批量/更新轨迹维护关键字
#简单匹配查询,可以直接query: “level: ERROR“表示level值是ERROR的触发告警通知。
filter:
- query:
    query_string:
      query: "NOT message: (开始执行批量 OR 更新轨迹维护) AND level: ERROR AND type: production"
#只需要的字段 https://elastalert.readthedocs.io/en/latest/ruletypes.html#include
include: ["spanId", "level", "@timestamp", "_index", "source", "traceId","host","message"]

#飞书告警方式
alert:
- "elastalert_modules.feishu_alert.FeishuAlert"

# 飞书机器人接口地址
feishualert_url: "https://open.feishu.cn/open-apis/bot/v2/hook/"

# 飞书机器人id
feishualert_botid:
  "xxx-xxx-xxx"

# 告警标题
feishualert_title:
  "业务日志ERROR异常"

#00-08点不告警
feishualert_skip:
  start: "00:00:00"
  end: "08:00:00"

#告警内容,使用{}可匹配matches
feishualert_body:
  "
  【告警主题】:  {feishualert_title}\n
  【告警时间】:  {feishualert_time}\n
  【告警环境】: 【production】\n
  【告警模块】:  {source}\n
  【业务索引】:  {_index}\n
  【时间戳】:  {@timestamp}\n
  【日志级别】:  {level}\n
  【spanId】:  {spanId}\n
  【traceId】:  {traceId}\n
  【host】:  {host}\n
  【message】:  {message}
  "

4.docker运行并挂载配置目录

拉取images

docker pull dengchuanfu/feishualert:v0.1

直接运行下面也会先pull镜像
-d:后台运行
–name:取名elastalert
–restart: 开机自启
挂载配置: -v 宿主机配置目录/文件 :容器里面目录/文件
localtime:同步宿主机时间

docker run  -d --name elastalert --restart=always \
-v /data/feishu-alert/config.yaml:/opt/elastalert/config.yaml \
-v /data/feishu-alert/rules:/opt/elastalert/rules \
-v /etc/localtime:/etc/localtime \
dengchuanfu/feishualert:v0.1 --verbose

动态查看告警日志最后50行信息

docker logs -f -t --tail 50 elastalert

你可能感兴趣的:(Elastic,运维,elk,webhook,elastalert2,飞书机器人)