ElastAlert通过飞书机器人发送报警通知
前言
公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~
于是痛定思痛,决定主动出击,查阅了许多资料,发现ElastAlert这个服务能够对elasticsearch的索引按条件进行监控,并在匹配设置的条件时自动触发告警,于是决定采用ElastAlert。
重新build ElastAlert2镜像
由于官方的镜像中不包含飞书通知方式,因此我们需要重新打包镜像;
分别下载ElastAlert2和elastalert-feishu-plugin源码
源码下载地址:
https://github.com/jertel/elastalert2
https://github.com/gpYang/elastalert-feishu-plugin
拷贝elastalert-feishu-plugin中的elastalert_modules目录到ElastAlert2的根目录下,目录结构如图:
切换到ElastAlert2目录下,编写Dockerfile文件
FROM python:3-slim-buster as builderLABEL description="ElastAlert 2 Official Image"
LABEL maintainer="Jason Ertel"COPY . /tmp/elastalertRUN mkdir -p /opt/elastalert && \
cd /tmp/elastalert && \
pip install setuptools wheel && \
python setup.py sdist bdist_wheelFROM python:3-slim-buster
ARG GID=1000
ARG UID=1000
ARG USERNAME=elastalert
COPY --from=builder /tmp/elastalert/dist/*.tar.gz /tmp/RUN apt update && apt -y upgrade && \apt -y install jq curl gcc libffi-dev && \rm -rf /var/lib/apt/lists/* && \pip install /tmp/*.tar.gz && \rm -rf /tmp/* && \apt -y remove gcc libffi-dev && \apt -y autoremove && \mkdir -p /opt/elastalert && \mkdir -p /usr/local/lib/python3.10/site-packages/elastalert/elastalert_modules && \echo "#!/bin/sh" >> /opt/elastalert/run.sh && \echo "set -e" >> /opt/elastalert/run.sh && \echo "elastalert-create-index --config /opt/elastalert/config.yaml" \>> /opt/elastalert/run.sh && \echo "elastalert --config /opt/elastalert/config.yaml \"\$@\"" \>> /opt/elastalert/run.sh && \chmod +x /opt/elastalert/run.sh && \groupadd -g ${GID} ${USERNAME} && \useradd -u ${UID} -g ${GID} -M -b /opt -s /sbin/nologin \-c "ElastAlert 2 User" ${USERNAME}COPY ./elastalert_modules/feishu_alert.py /usr/local/lib/python3.10/site-packages/elastalert/elastalert_modules/COPY ./elastalert_modules/__init__.py /usr/local/lib/python3.10/site-packages/elastalert/elastalert_modules/USER ${USERNAME}ENV TZ ""Asia/Shanghai""WORKDIR /opt/elastalert
ENTRYPOINT ["/opt/elastalert/run.sh"]
构建镜像
docker build -t elastalertfs:1.0 .
我们在物理机上创建/data/elastalertfs目录,存放配置文件和报警规则目录及文件
在/data/elastalertfs下编写elastalert的配置文件config.yaml
#指定告警文件存放目录
rules_folder: /opt/elastalert/rules#ElastAlert查询Elasticsearch的频率,这个单位可以是几周到几秒不等
run_every:minutes: 1#ElastAlert将缓冲最近的一段时间的结果,以防某些日志源不是实时的
buffer_time:minutes: 30#Elasticsearch主机
es_host: 192.168.105.147#Elasticsearch端口
es_port: 9200#es_host上的索引,用于元数据存储。这可以是一个未映射的索引,但建议你运行。设置一个映射
writeback_index: elastalert_status#如果一个警报因某种原因而失败,ElastAlert将重试,直到这个时间段过后
alert_time_limit:days: 2
在/data/elastalertfs下创建rules目录,在目录内创建报警规则文件xxx-xxx_error.yaml,可以在该目录下创建多个报警规则文件,注意修改index名称、过滤条件、飞书机器人botid等;
name: "niu_cloud_rule"
type: "any" // 有多种类型,不同的类型配置项有不同
index: "niu-cloud-logs-*"
is_enabled: true#时间触发的次数
#num_events: 1#和num_events参数关联,1分钟内出现1次会报警
#timeframe:
# minutes: 1#同一规则的两次警报之间的最短时间。在此时间内发生的任何警报都将被丢弃。默认值为一分钟。
#realert:
# minutes: 0#terms_size: 50use_strftime_index: truefilter:
- query:query_string:query: "level.keyword : ERROR AND msg : java*Exception" //错误级别是ERROR并且msg字段包含java开头Exception结尾的内容就匹配成功,elastalert就会推送报警include: ["@timestamp","_index", "module", "level", "msg"] // 这里是es索引中的字段,下边报警模板会使用alert:
- "elastalert_modules.feishu_alert.FeishuAlert"# 飞书机器人接口地址
feishualert_url: "https://open.feishu.cn/open-apis/bot/v2/hook/"# 飞书机器人id
feishualert_botid: "xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxx"# 告警标题
feishualert_title: "niu-cloud业务ERROR异常"# 这个时间段内的匹配将不告警,适用于某些时间段请求低谷避免误报警
#feishualert_skip:
# start: "01:00:00"
# end: "08:00:00"# 告警内容,使用{}可匹配matches
feishualert_body:
"
【告警主题】: {feishualert_title}\n
【告警时间】: {feishualert_time}\n
【告警模块】: {module}\n
【业务索引】: {_index}\n
【时间戳】: {@timestamp}\n
【日志级别】: {level}\n
【错误日志】: {msg}
"
docker方式运行并挂载配置目录
docker run -d --restart=always --name elastalertfs -v /data/elastalertfs/config.yaml:/opt/elastalert/config.yaml -v /data/elastalertfs/rules:/opt/elastalert/rules -v /etc/localtime:/etc/localtime elastalertfs:v1.0
当elastalert监控es匹配到规则中配置的规则是就会自动向飞书推送报警消息
相关文章:

ElastAlert通过飞书机器人发送报警通知
前言 公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~ 于是痛定思痛,决定主动出击,…...

恒温碗语音芯片,具备数码管驱动与温度传感算法,WT2003H-B012
近年来,随着科技的飞速发展,智能家居产品已然成为了现代生活的一部分,为人们的生活带来了更多的便利和舒适。在这个不断演进的领域中,恒温碗多功能语音芯片——WT2003H-B012成为众多厂商的首选,为智能家居领域注入了全…...

新能源汽车需要检测哪些项目
截至2022年底,中国新能源车保有量达1310万辆,其中纯电动汽车保有量1045万辆。为把好新能源汽车安全关,我国新能源汽车除了完善的强制性产品认证型式实验外,还建立了“车企-地方-国家”逐级上报的三级监管体系实行新能源汽车全生命…...

VR内容定制 | VR内容中控管理平台可以带来哪些价值?
随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,其中教育领域也不例外。通过VR技术,学生可以身临其境地参与到各种场景中,获得更加直观、生动的学习体验。为了让教师更好地进行VR教学的设计和管理,提高教…...
篇十八:状态模式:状态驱动的行为
篇十八:"状态模式:状态驱动的行为" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...

【Tomcat】(Tomcat 下载Tomcat 启动Tomcat 简单部署 基于Tomcat进行网站后端开发)
文章目录 Tomcat下载Tomcat启动Tomcat简单部署 基于Tomcat进行网站后端开发 Tomcat Tomcat 是一个 HTTP 服务器.HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. HTTP 服务器我们可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是…...

简单动态字符串 sds
Redis 设计了简单动态字符串(Simple Dynamic String,SDS)的结构,用来表示 字符串。相比于 C 语言中的字符串实现,SDS 这种字符串的实现方式,会提升字符串的操 作效率,并且可以用来保存二进制数据…...
“深入剖析JVM内部原理:解密Java虚拟机的奥秘“
标题:深入剖析JVM内部原理:解密Java虚拟机的奥秘 摘要:本文将深入探讨Java虚拟机(JVM)的内部原理,包括其架构、内存管理、垃圾回收机制、即时编译器等关键组成部分。通过解密JVM的奥秘,我们将更…...

使用QT纯代码创建(查找)对话框详细步骤与代码
一、创建项目文件 打开Qt Creator->文件->新建文件或项目->选择Qt Widgets Application 为项目起名字 输入类的名字 二、 了解每个文件的作用 项目创建完毕之后就会出现以下几个文件,先来分别介绍以下这些文件的作用。 Headers->finddialog.h——很显…...
4945: 二进制转十进制
4945: 二进制转十进制 时间限制: 1.000 Sec 内存限制: 128 MB 提交: 520 解决: 335 [命题人:][下载数据: 30] 提交状态报告 题目描述 将二进制数转成十进制输出 输入 一行,一个二进制数,二进制数的位数小于32位。 输出 一个十进制的整数。…...
java后端技术汇总 + 中间件 + 架构思想
1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…...

《机器学习系统:设计与实现》读书笔记一
最近几年一直在做算法工程的工作,对机器学习系统有所涉猎,也很感兴趣。近期发现一本开源书籍《机器学习系统:设计与实现》。去图书馆找了它的纸质版,发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇,主…...

C语言单链表OJ题(较难)
一、链表分割 牛客网链接 题目描述: 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。 思路:…...
工业巡检ar沉浸式互动培训体验实现更加直观、生动的流程展示
以往的工业手工巡检效率极低,错误率偏高,漏检问题严重,会因为现场人员对机械设备的早期维护、操作不会,而影响正常交付和服务,智慧工业是工业智能化和信息化的重要体现,在巡检方面自然也要同步提升…...
【Spring】核心容器——依赖自动装配
Spring容器根据bean所依赖的资源在容器中自动查找并注入bean的过程叫做自动装配自动装配的方式 1、按类型 2、按名称(耦合性较高) 3、按构造方法 自动装配特点 1、自动装配用于对引用类型进行依赖注入,不能对简单类型进行操作 2、自动装配的…...
TestNG和Junit5测试框架梳理
一、testNG 1. testNG优势 注解驱动: TestNG 使用注解来标识测试方法、测试类和配置方法,使得测试更具可读性。 并行执行: TestNG 支持多线程并行执行测试,可以加速测试套件的执行。 丰富的配置: 可以通过 XML 配置文…...
算法练习Day46|139.单词拆分
LeetCode:139.单词拆分 139. 单词拆分 - 力扣(LeetCode) 1.思路 字符串是否能被字符串列表中的元素拼接出来,显然是一个背包问题,而且需要排列。 将字典转换为HashSet,利用.contains()方法判断是否存在元素与背包中的子串相同…...

Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)
目录 一.下载及安装及环境配置 1.下载及安装 2.环境变量的配置 3.检测是否安装成功 4.配置Maven 1.更换本地仓库 2. 配置镜像 二.集成eclipse完成案例 1.eclipse前期配置Maven 2.创建Maven工程 一.下载及安装及环境配置 1.下载及安装 下载地址:Maven – Down…...
82 | Python可视化篇 —— Plotly数据可视化
文章目录 什么是 Plotly安装 Plotly创建散点图创建线图创建条形图创建饼图创建热力图3D图(3D Plot)直方图(Histogram)3D表面图(3D Surface Plot)箱线图(Box Plot)散点地图(Scatter Map)量级地图(Choropleth Map)在网页中嵌入 Plotly 图表总结什么是 Plotly Plotly…...

Golang 包详解以及go mod
Golang 中包的介绍和定义 包(package)是多个 Go 源码的集合,是一种高级的代码复用方案,Go 语言为我们提供了 很多内置包,如 fmt、strconv、strings、sort、errors、time、encoding/json、os、io 等。 Golang 中的包可以分为三种:1、系统内置包 2、自定义包 3、第三方包…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...