赞
踩
当搭建完成EFK,(搭建方法参考:(实战)docker-compose部署分布式日志方案EFK(Elasticsearch+Fluentd+Kibana)-CSDN博客)
收集到异常日志需要及时通知到人,这时可以推送告警信息到钉钉、企业微信、邮箱、短信等;
本文将通过elastalert2定时检索Elasticsearch中的异常日志数据并推送到钉钉群为例,帮助大家快速上手。
ElastAlert 2 是一个用于实时监控和警报 Elasticsearch 数据的开源工具,旨在帮助您检测和响应于 Elasticsearch 中的日志、指标或事件数据中发生的关键事件。ElastAlert 2 是 ElastAlert 的改进版本,它通过 Python 编写,支持 Elasticsearch 5.0+ 和 Kibana 6.0+。
以下是 ElastAlert 2 的一些主要特点和功能:
灵活的规则引擎: ElastAlert 2 允许您定义自定义规则,以捕获感兴趣的事件或模式。这些规则可以使用 YAML 或 JSON 格式来定义,使其易于配置和管理。
多种告警通知方式: 当规则匹配时,ElastAlert 2 支持多种告警通知方式,包括电子邮件、Slack、Webhooks、JIRA 等,以便您能够及时了解事件并采取适当的措施。
丰富的查询语法: 您可以使用 Elasticsearch 查询语法来定义规则,从而能够更精确地筛选数据并捕获特定的事件。这样,您可以轻松地执行高级数据分析。
支持多种数据源: ElastAlert 2 可以与不同类型的数据源集成,包括 Elasticsearch、AWS CloudWatch、Prometheus 等,以便监控和警报多种数据源中的事件。
可扩展性: 您可以编写自定义输出模块和规则类型,以满足特定需求。这使得 ElastAlert 2 可以轻松适应各种监控和警报场景。
基于时间的窗口: ElastAlert 2 具有内置的时间窗口功能,以确保规则只在指定的时间段内触发,从而避免误报。
支持自动缩放: 当您的 Elasticsearch 数据存储量不断增加时,ElastAlert 2 可以自动缩放以适应高负载。
易于部署和配置: ElastAlert 2 的配置文件使用简单的 YAML 或 JSON 语法,使得部署和维护相对简单。
详情参考官方文档:ElastAlert 2 - Automated rule-based alerting for Elasticsearch — ElastAlert 2 0.0.1 documentation
- version: "3.8"
-
- #网络配置
- networks:
- network:
- ipam:
- config:
- - subnet: "10.10.10.0/24"
-
- #服务配置
- services:
- #elastalert2-EFK框架的告警组件
- elastalert2:
- image: jertel/elastalert2:2
- container_name: elastalert2
- restart: always
- environment:
- TZ: "Asia/Shanghai"
- volumes:
- - ./elastalert2/elastalert.yaml:/opt/elastalert/config.yaml
- - ./elastalert2/rules:/opt/elastalert/rules
-
-
-
- rules_folder: /opt/elastalert/rules
- run_every:
- seconds: 10
-
- buffer_time:
- minutes: 15
-
- #es地址
- es_host: 192.168.10.109
- #es端口
- es_port: 9200
- #es账号
- es_username: elastic
- #es密码
- es_password: B6P0hW7x
-
- writeback_index: elastalert_status
-
- alert_time_limit:
- days: 2
-
- #详细的参数说明参考官方文档:https://elastalert2.readthedocs.io/en/latest/elastalert.html
- name: "dingtalk" #规则的名称。
- type: "frequency" # 规则类型为频率,表示要检测的事件是在一定时间范围内出现的次数。
- index: "test-*" # 查询日志所在的索引
- is_enabled: true
- num_events: 1 # 出现几次就告警
- timeframe:
- minutes: 1 # 1分钟 出现了 num_events次 匹配记录,就告警
- realert:
- minutes: 1 # 1分钟内忽略重复告警
- timestamp_field: "@timestamp"
- timestamp_type: "iso"
- use_strftime_index: false
- alert_text_type: alert_text_only
- # 下面是告警模板
- alert_text: |
- 日志告警
- 时间: {0}
- 文件: {1}
- 触发次数: {2}
- 匹配次数: {3}
- 日志信息: {4}
- alert_text_args: # 告警模板中用到的参数
- - "@timestamp"
- - "@log_name"
- - num_hits
- - num_matches
- - message
- filter:
- - query:
- query_string:
- query: "level: ERROR" # 告警查询语句
- alert:
- - "dingtalk" # 告警类型
- dingtalk_access_token: "xxxxxx" # 在钉钉群添加自定义机器人获取AccessToken,
- dingtalk_msgtype: "text" # 消息类型
先启动EFK,再运行docker-compose up -d 启动elastaert2。
这样可以通过elastalert2的告警通知,及时收到日志等级为ERROR的消息。
完结!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。