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匹配到规则中配置的规则是就会自动向飞书推送报警消息
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(树) 剑指 Offer 54. 二叉搜索树的第k大节点 ——【Leetcode每日一题】

❓剑指 Offer 54. 二叉搜索树的第k大节点 难度:简单 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例 1: 输入: root [3,1,4,null,2], k 13/ \1 4\2 输出: 4示例 2: 输入: root [5,3,6,2,4,null,null,1], k 35/ \3 6/ \2 4/1 输出…

Nacos安装(centos7)

安装版本2.0.2,下载地址 Release 2.0.2 (Jun 11th, 2021) alibaba/nacos GitHub 安装 启动 到bin目录下 sh startup.sh -m standalone 访问http://192.168.23.130:8848/nacos 输入nacos/nacos登入

opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()

在进行均值滤波和方框滤波时,其邻域内每个像素的权重是相等的。在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重 的和。 基本原理 在高斯滤波中,卷积核中的值不…

研究人员发现特斯拉汽车能被越狱,可免费解锁付费功能

Bleeping Computer 网站披露,柏林工业大学(Technical University of Berlin)的研究人员开发出一种新技术,可以破解特斯拉近期推出所有车型上使用的基于 AMD 的信息娱乐系统,并使其运行包括付费项目在内的任何软件。 实…

【Spring】创建一个Spring项目与Bean对象的存储

目录 一、创建Spring项目 1、创建Maven项目 2、配置maven国内源 3、引入spring依赖 4、添加启动类 二、将Bean对象存储到Spring(IoC容器) 1、创建Bean对象 2、将Bean存储到spring(容器)中 3、获取Bean对象 3.1、Applicatio…

黑马机器学习day1

1.sklearn数据集 sklearn.datasets datasets.load_*() 获取小规模的数据集 datasets.fetch_*(data_homeNone) 获取大规模数据集 函数的第一个参数是data_home,标识数据集下载目录,默认/scikit_learn_data/ 1.1sklearn小数据集 sklearn.da…

3dmax好用插件CG Magic专业版上线,批量渲染,智能优化

CG Magic是一款基于3ds Max深度开发的智能化辅助插件,上千项实用功能,降低渲染时长,节省时间和精力,最大程度简化工作流程,助力高效完成创作。 CG MAGIC是基于3ds Max深度开发的智能化辅助设计插件,目前有两…

JavaWeb 速通Cookie

目录 一、关于base标签 1.引入 : 2.介绍 : 3.实例 : 4.细节 : 二、Cookie的引入 1.会话技术 : 1 什么是会话技术? 2 会话技术用于解决什么问题? 2.Cookie介绍 1 Cookie有什么用? 2 Cookie通讯机制 三、Cookie的基本使用 1.创建Cookie…

Pandas 的Merge函数详解

在日常工作中,我们可能会从多个数据集中获取数据,并且希望合并两个或多个不同的数据集。这时就可以使用Pandas包中的Merge函数。在本文中,我们将介绍用于合并数据的三个函数 merge、 merge_ordered、 merge_asofmerge merge函数是Pandas中…

如何实现对主机的立体监控?

主机监控是保证系统稳定性和性能的重要环节之一,那应该如何实现对主机的立体监控? 本期EasyOps产品使用最佳实践,我们将为您揭晓: 主机应该如何分组和管理? 主机监控应该关注哪些关键性指标? 背 景 通…

MySQL建表和增添改查

1.创建一个名为mydb的数据库 mysql> show database mydb; 查询 mysql> show database mydb; 2.创建一个学生信息表 mysql> create table mydb.student_informtion( -> student_id int UNSIGNED NOT NULL PRIMARY KEY, //非空(不允许为空&#xff0…

FastAPI(七)应用配置

目录 一、在apps下新建文件夹config 二、新建配置文件app_conf.py 一、在apps下新建文件夹config 二、新建配置文件app_conf.py from functools import lru_cachefrom pydantic.v1 import BaseSettingsclass AppConfig(BaseSettings):app_name: str "Windows10 插件&qu…

WGS_1984_UTM、WGS_1984_Mercator坐标转化为经纬度坐标python

1、遥感影像的PROJECTION有哪些 遥感影像常见的投影类型有很多,具体选择哪种投影方式取决于数据的特性和使用需求。以下列举了一些常见的遥感影像投影类型: UTM (Universal Transverse Mercator) 投影:最常见的投影类型之一,将地…

uboot详解

uboot入口 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动…

Unity之ShaderGraph 节点介绍 UV节点

UV节点 Flipbook(翻页或纹理帧动画) Polar Coordinates(将输入 UV 的值转换为极坐标。) Radial Shear(径向剪切变形) Rotate(将UV 的值旋转) Spherize(鱼眼镜头的球形变…

Spring系列三:基于注解配置bean

文章目录 💗通过注解配置bean🍝基本介绍🍝快速入门🍝注意事项和细节 💗自己实现Spring注解配置Bean机制🍝需求说明🍝思路分析🍝注意事项和细节 💗自动装配 Autowired&…

【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】

逻辑回归进行鸢尾花分类的案例 背景说明: 基于IDEA Spark 3.4.1 sbt 1.9.3 Spark MLlib 构建逻辑回归鸢尾花分类预测模型,这是一个分类模型案例,通过该案例,可以快速了解Spark MLlib分类预测模型的使用方法。 依赖 ThisBui…

maven 删除下载失败的包

本文介绍了当Maven包报红时,使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用,以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题,确保项…

Linux 中利用设备树学习Ⅳ

系列文章目录 第一章 Linux 中内核与驱动程序 第二章 Linux 设备驱动编写 (misc) 第三章 Linux 设备驱动编写及设备节点自动生成 (cdev) 第四章 Linux 平台总线platform与设备树 第五章 Linux 设备树中pinctrl与gpio(…

OBD针脚定义参考

OBD定义的一种标准的参考,不同的车场有不同的定义,貌似没有统一。 在某宝上看到的ODB转db9的不同的线序: 1)1/2/3/6几个针脚都是一样的,分别上下针脚对应。 2)其中一种4/5/7/8也是上下对应的;另…