当前位置:   article > 正文

(实战)搭建EFK+elastalert2进行钉钉告警推送_docker 部署 elastalert 监控 es 日志告警 实现钉钉告警

docker 部署 elastalert 监控 es 日志告警 实现钉钉告警

背景

当搭建完成EFK,(搭建方法参考:(实战)docker-compose部署分布式日志方案EFK(Elasticsearch+Fluentd+Kibana)-CSDN博客

收集到异常日志需要及时通知到人,这时可以推送告警信息到钉钉、企业微信、邮箱、短信等;

本文将通过elastalert2定时检索Elasticsearch中的异常日志数据并推送到钉钉群为例,帮助大家快速上手。

elastalert2介绍

ElastAlert 2 是一个用于实时监控和警报 Elasticsearch 数据的开源工具,旨在帮助您检测和响应于 Elasticsearch 中的日志、指标或事件数据中发生的关键事件。ElastAlert 2 是 ElastAlert 的改进版本,它通过 Python 编写,支持 Elasticsearch 5.0+ 和 Kibana 6.0+。

以下是 ElastAlert 2 的一些主要特点和功能:

  1. 灵活的规则引擎: ElastAlert 2 允许您定义自定义规则,以捕获感兴趣的事件或模式。这些规则可以使用 YAML 或 JSON 格式来定义,使其易于配置和管理。

  2. 多种告警通知方式: 当规则匹配时,ElastAlert 2 支持多种告警通知方式,包括电子邮件、Slack、Webhooks、JIRA 等,以便您能够及时了解事件并采取适当的措施。

  3. 丰富的查询语法: 您可以使用 Elasticsearch 查询语法来定义规则,从而能够更精确地筛选数据并捕获特定的事件。这样,您可以轻松地执行高级数据分析。

  4. 支持多种数据源: ElastAlert 2 可以与不同类型的数据源集成,包括 Elasticsearch、AWS CloudWatch、Prometheus 等,以便监控和警报多种数据源中的事件。

  5. 可扩展性: 您可以编写自定义输出模块和规则类型,以满足特定需求。这使得 ElastAlert 2 可以轻松适应各种监控和警报场景。

  6. 基于时间的窗口: ElastAlert 2 具有内置的时间窗口功能,以确保规则只在指定的时间段内触发,从而避免误报。

  7. 支持自动缩放: 当您的 Elasticsearch 数据存储量不断增加时,ElastAlert 2 可以自动缩放以适应高负载。

  8. 易于部署和配置: ElastAlert 2 的配置文件使用简单的 YAML 或 JSON 语法,使得部署和维护相对简单。

详情参考官方文档:ElastAlert 2 - Automated rule-based alerting for Elasticsearch — ElastAlert 2 0.0.1 documentation

准备部署配置

文件目录

docker-compose.yml

  1. version: "3.8"
  2. #网络配置
  3. networks:
  4. network:
  5. ipam:
  6. config:
  7. - subnet: "10.10.10.0/24"
  8. #服务配置
  9. services:
  10. #elastalert2-EFK框架的告警组件
  11. elastalert2:
  12. image: jertel/elastalert2:2
  13. container_name: elastalert2
  14. restart: always
  15. environment:
  16. TZ: "Asia/Shanghai"
  17. volumes:
  18. - ./elastalert2/elastalert.yaml:/opt/elastalert/config.yaml
  19. - ./elastalert2/rules:/opt/elastalert/rules

elastalert.yaml

  1. rules_folder: /opt/elastalert/rules
  2. run_every:
  3. seconds: 10
  4. buffer_time:
  5. minutes: 15
  6. #es地址
  7. es_host: 192.168.10.109
  8. #es端口
  9. es_port: 9200
  10. #es账号
  11. es_username: elastic
  12. #es密码
  13. es_password: B6P0hW7x
  14. writeback_index: elastalert_status
  15. alert_time_limit:
  16. days: 2
  17. #详细的参数说明参考官方文档:https://elastalert2.readthedocs.io/en/latest/elastalert.html

dingtalk.yaml

  1. name: "dingtalk" #规则的名称。
  2. type: "frequency" # 规则类型为频率,表示要检测的事件是在一定时间范围内出现的次数。
  3. index: "test-*" # 查询日志所在的索引
  4. is_enabled: true
  5. num_events: 1 # 出现几次就告警
  6. timeframe:
  7. minutes: 1 # 1分钟 出现了 num_events次 匹配记录,就告警
  8. realert:
  9. minutes: 1 # 1分钟内忽略重复告警
  10. timestamp_field: "@timestamp"
  11. timestamp_type: "iso"
  12. use_strftime_index: false
  13. alert_text_type: alert_text_only
  14. # 下面是告警模板
  15. alert_text: |
  16. 日志告警
  17. 时间: {0}
  18. 文件: {1}
  19. 触发次数: {2}
  20. 匹配次数: {3}
  21. 日志信息: {4}
  22. alert_text_args: # 告警模板中用到的参数
  23. - "@timestamp"
  24. - "@log_name"
  25. - num_hits
  26. - num_matches
  27. - message
  28. filter:
  29. - query:
  30. query_string:
  31. query: "level: ERROR" # 告警查询语句
  32. alert:
  33. - "dingtalk" # 告警类型
  34. dingtalk_access_token: "xxxxxx" # 在钉钉群添加自定义机器人获取AccessToken,
  35. dingtalk_msgtype: "text" # 消息类型

运行

先启动EFK,再运行docker-compose up -d 启动elastaert2。

这样可以通过elastalert2的告警通知,及时收到日志等级为ERROR的消息。

完结!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/578970
推荐阅读
相关标签
  

闽ICP备14008679号