[ElastAlert]介绍和安装-1

ELK告警插件-elastalert2 实践,支持elk8.0版本,企微机器人告警实现 最近刚把生产的ELK搭建完成,前面文章也有介绍,然后就在思考把日志监控告警也做起来,因为人力问题,既要处理生产问题,又要做一些日常运维工作,所以日志监控的调研和完成就放在周末来做了。简单说下,目前的运维现状,运维部门是新建立的,之前都是研发自管的,各自玩各自的,所以有蛮多的问题,有很多非标的建设,其实这种是很痛苦,最近在做的话,就是梳理不同的系统。基本就是从0到1的建设吧,之前在建设elk的时候,其实也有考虑过,后续的日志监控要怎么做,本来最初的想法是自己去写,但是时间来不及,也没有那么多的精力去做这些事。 阅读详情

写在前面的话

最近干起了运维的活;代码改造,搭建elk,搭建告警,此处做些个总结。


环境介绍

Ubuntu14
Elasticsearch 5.1.2
Kibana 5.1.2


安装

官网网址:

https://elastalert.readthedocs.io/en/latest/running_elastalert.html#tutorial

执行:

git clone https://github.com/Yelp/elastalert.git 
cd elastalert
python setup.py install            //可能需要sudo
Pip install -r requirements.txt    //可能需要sudo
cp config.yaml.example config.yaml

注意如果你用的是elk5.0, elastalert master还不支持,你需要自己切换分支到 support_es5


结构介绍

安装完成后会自带三个命令:

elastalert-create-index ElastAlert 会把执行记录存放到一个 ES 索引中,该命令就是用来创建这个索引的,默认情况下,索引名叫 elastalert_status。其中有 4 个 _type,都有自己的 @timestamp 字段,所以同样也可以用 kibana 来查看这个索引的日志记录情况。

注意:实际上,kibana5.0上并不能打开此索引,可能是兼容性问题,日后在想办法。

elastalert-rule-from-kibana 从 Kibana3 已保存的仪表盘中读取 Filtering 设置,帮助生成 config.yaml 里的配置。不过注意,它只会读取 filtering,不包括 queries。
没使用过

elastalert-test-rule 测试自定义配置中的 rule 设置。
注意:es5的话还不支持 test 功能


基本使用

运行命令,加载所有rules:

python -m elastalert.elastalert --config ./config.yaml

或者单独执行 rules_folder 里的某个 rule:

python -m elastalert.elastalert --config ./config.yaml --rule ./examele_rules/one_rule.yaml

Elastalert支持的警告类型

  • Command
  • Email
  • JIRA
  • OpsGenie
  • SNS
  • HipChat
  • Slack
  • Telegram
  • Debug

详见:http://elastalert.readthedocs.io/en/latest/ruletypes.html#alert-content


配制结构

和 Watcher 类似(或者说也只有这种方式),ElastAlert 配置结构也分几个部分,但是它有自己的命名。(Watcher快出个官方工具吧,纯接口太累了)


config.ymal中的配置项

  • Rules_folder:用来加载下一阶段rule的设置,默认是example_rules
  • Run_every:用来设置定时向elasticsearch发送请求
  • Buffer_time:用来设置请求里时间字段的范围,默认是45分钟
  • Es_host:elasticsearch的host地址
  • Es_port:elasticsearch 对应的端口号
  • Use_ssl:可选的,选择是否用SSL连接es,true或者false
  • Verify_certs:可选的,是否验证TLS证书,设置为true或者false,默认为- true
  • Es_username:es认证的username
  • Es_password:es认证的password
  • Es_url_prefix:可选的,es的url前缀(我的理解是https或者http)
  • Es_send_get_body_as:可选的,查询es的方式,默认的是GET
  • Writeback_index:elastalert产生的日志在elasticsearch中的创建的索引
    Alert_time_limit:失败重试的时间限制

详见:http://elastalert.readthedocs.io/en/latest/ruletypes.html#rule-configuration-cheat-sheet


Elastalert的rule规则

  • name:配置,每个rule需要有自己独立的name,一旦重复,进程将无法启动。
  • type:配置,选择某一种数据验证方式。
  • index:配置,从某类索引里读取数据,目前已经支持Ymd格式,需要先设置 use_strftime_index:true,然后匹配索引,配置形如:index: logstash-es-test%Y.%m.%d,表示匹配logstash-es-test名称开头,以年月日作为索引后缀的index。
  • filter:配置,设置向ES请求的过滤条件。
  • timeframe:配置,累积触发报警的时长。
  • alert:配置,设置触发报警时执行哪些报警手段。不同的type还有自己独特的配置选项。目前ElastAlert 有以下几种自带ruletype:
    • any:只要有匹配就报警;
    • blacklist:compare_key字段的内容匹配上 blacklist数组里任意内容;
    • whitelist:compare_key字段的内容一个都没能匹配上whitelist数组里内容;
    • change:在相同query_key条件下,compare_key字段的内容,在 timeframe范围内 发送变化;
    • frequency:在相同 query_key条件下,timeframe 范围内有num_events个被过滤出 来的异常;
    • spike:在相同query_key条件下,前后两个timeframe范围内数据量相差比例超过spike_height。其中可以通过spike_type设置具体涨跌方向是- up,down,both 。还可以通过threshold_ref设置要求上一个周期数据量的下限,threshold_cur设置要求当前周期数据量的下限,如果数据量不到下限,也不触发;
    • flatline:timeframe 范围内,数据量小于threshold 阈值;
    • new_term:fields字段新出现之前terms_window_size(默认30天)范围内最多的terms_size (默认50)个结果以外的数据;
    • cardinality:在相同 query_key条件下,timeframe范围内cardinality_field的值超过 max_cardinality 或者低于min_cardinality

测试 demo

背景:我已尽用docker 搭建好了elk,日志已经接入,就差告警了。
按优先级,有个需求,就是日志 status > 500 时候就行告警。

先在kibana 上把查询语句调试好了,比较简单

status: >=500

编辑elastalert下的config.yaml文件

rules_folder: example_rules
run_every:
  seconds: 5  #代表每5秒钟轮询query es。

# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 5  #因为日志进入elk会有延迟,可以配制query 的向前的时间范围,这是5分钟,即查询 time[now-5m, now], 这样包括了相对多的日志数了。

# The elasticsearch hostname for metadata writeback
# Note that every rule can have it's own elasticsearch host
es_host: 192.168.1.100
es_port: 9200

#邮箱告警必配
smtp_host: smtp.sina.com
smtp_port: 465
#保存了邮箱验证的账号密码信息
smtp_auth_file: example_rules/smtp_auth_file.yaml
from_addr: xxxx@sina.com

use_ssl: False

# Option basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

#elastalert 需要在 es保存数据,这是实用的索引名称,可默认
writeback_index: elastalert_status

# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 2

编辑example_rules/example_test.yaml 文件内容如下:

# Alert when the rate of events exceeds a threshold

# (Optional)
# Elasticsearch host
#es_host: 192.168.1.100

# (Optional)
# Elasticsearch port
#es_port: 9200

# (OptionaL) Connect with SSL to Elasticsearch
#use_ssl: false

# (Optional) basic-auth username and password for Elasticsearch
#es_username: someusername
#es_password: somepassword

# (Required)
# Rule name, must be unique
name: name_alert_qycloud_status_error

# (Required)
# Type of alert.
# the frequency rule type alerts when num_events events occur with timeframe time
type: frequency

# (Required)
# Index to search, wildcard supported
#此规则查询所使用的索引
index: monitor-*

# (Required, frequency specific)
# Alert when this many documents matching the query occur within a timeframe
num_events: 5

# (Required, frequency specific)
# num_events must occur within this amount of time to trigger an alert
timeframe:
  minutes: 5

# (Required)
# A list of Elasticsearch filters used for find events
# These filters are joined with AND and nested in a filtered query
# For more info: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html

#此处是es5 的写法
filter:
- query_string:
    query: "status: >=500"

# (Required)
# The alert is use when a match is found
alert:
#- "email"
- "debug"
- "command"

#我这是用告警使用命令行,自定义更好
pipe_match_json: true
command: ["/home/df/elastalert/php_alert.php"]

# (required, email specific)
# a list of email addresses to send alerts to
email:
- "xxxxx@qq.com"

上面的规则,说明在5分钟的时间窗口中,如果status: >=500 达到5次,就就行告警。

启动elastalert服务,监听elasticsearch

python -m elastalert.elastalert --verbose --rule example_rules/example_test.yaml

看下运行情况:

INFO:elastalert:Sleeping for 4 seconds
INFO:elastalert:Queried rule name_alert_qycloud_status_error from 2017-01-29 20:05 CST to 2017-01-29 20:10 CST: 6 / 6 hits
INFO:elastalert:Alert for name_alert_qycloud_status_error at 2017-01-29T12:10:21.651Z:
INFO:elastalert:name_alert_qycloud_status_error

At least 5 events occurred between 2017-01-29 20:05 CST and 2017-01-29 20:10 CST

@read_timestamp: 2017-01-29T12:10:24.043Z
@timestamp: 2017-01-29T12:10:21.651Z
@version: 1
_id: AVnqGcU6GEG-kKWj4PKc
_index: monitor-2017.01.29
_type: json_php_monitor
app: AYSaaS-master
beat: {
    "hostname": "dfdeMacBook-Air.local", 
    "name": "dfdeMacBook-Air.local", 
    "version": "5.1.1"
}
client: 127.0.0.1
elapsed: 0
ent_id: 
error: 
......
.......

在看下告警使用的php脚本内容,只是保存告警的第一条log信息:

$fp = fopen('php://stdin', 'r');
$result = '';

while(!feof($fp)) {
    $result .= fgets($fp, 128);
}
fclose($fp);

file_put_contents('/tmp/alert_test', $result . "\r\n");

关于邮件报警配制

还没有配制成功。。
主要关注的配制参数:

#邮箱告警必配
smtp_host: smtp.sina.com
smtp_port: 465
#保存了邮箱验证的账号密码信息
smtp_auth_file: example_rules/smtp_auth_file.yaml
from_addr: xxxx@sina.com

smtp_auth_file.yaml 内容:

user:xxx
password: xxx

参考网址

http://kibana.logstash.es/content/elasticsearch/other/elastalert.html
http://blog.youkuaiyun.com/pujiaolin/article/details/52252950?locationNum=3
http://www.chinacloud.cn/show.aspx?cid=16&id=20922

ELK日志监控实战:elastalert2+企微机器人告警配置全流程(附避坑指南) 本文详细介绍了如何通过elastalert2与企微机器人告警系统实现ELK日志监控的全流程配置,包括环境准备、告警规则配置、企微机器人对接及生产环境调优。特别针对elk8.0版本提供了避坑指南,帮助中小团队快速搭建高效的日志监控告警系统。 阅读详情

相关推荐

ELK日志监控实战:elastalert2集成企微机器人告警,适配ELK8.0高效运维

本文详细介绍了如何将elastalert2与ELK 8.0集成,并配置企业微信机器人实现高效日志监控告警。内容涵盖从环境部署、核心配置到告警规则编写的完整实战流程,帮助运维团队自动化日志监控,实现从被动响应到主动预警的转变,提升运维效率。

weixin_28568819的博客 278

efk-elastalert-alerta集中日志自动告警

组成 1、efk: 日志收集框架 2、estalert: 是基于 Elasticsearch 的报警工具 3、elastalert-kibana-plugin : kibana中elastalert插件,可以实现在kibana界面上编辑elastalert的告警规则配置。 4、alerta: 告警集中收集平台,elastalert告警规则可以配置alerta为接收平台。之前npgstack中alerta作为监控指标信息告警接收平台,日志信息告警配置为同一个alerta作为告警接收平台,实现一个界面管理和观察

wenwenxiong的专栏 2528

Elastalert安装及使用

Elastalert安装及使用简介前置条件安装创建Elasticsearch索引测试Demo配置SMTP配置规则补充:测试规则运行 简介 Elastalert是用python2写的一个报警框架(目前支持python2.6和2.7,不支持3.x),github地址为 https://github.com/Yelp/elastalert。他提供不同场景的规则配置,若觉得规则、告警不满足需求时,可以用python编写插件Adding a New Rule Type、Adding a New Alerter。 El

徐小慧_Blog的博客 2027

【亲测免费】 ElastAlert2 安装与使用指南

ElastAlert2 是一个基于 Elasticsearch 的告警系统,它允许用户从 Elasticsearch 中的数据创建复杂的告警规则。下面是对项目主要目录结构的概述: - **elastalert** - **client**: 包含与 Elasticsearch 交互的客户端代码。 - **config**: 存放配置模板和示例配置文件。 - **elastaler

gitblog_01090的博客 1630

ElastAlert 错误日志告警

ElastAlert 是 Yelp 公司基于 python 开发的 ELK 日志告警插件,Elastalert 通过查询 Elasticsearch 中的记录与定于的告警规则进行对比,判断是否满足告警条件。发生匹配时将为该告警触发一个或多个告警动作。告警规则由 Elastalert 的 rules 定义,每个规则定义一个查询。

m0_49692893的博客 2907

ELK之elastalert告警篇

Elastalert是Yelp公司基于python开发的ELK日志告警插件,Elastalert通过查询Elasticsearch中的记录与定于的告警规则进行对比,判断是否满足告警条件。发生匹配时,将为该告警触发一个或多个告警动作。告警规则由Elastalert的rules定义,每个规则定义一个查询。1.1 ElastAlert 工作原理周期性的查询Elastsearch并且将数据传递给规则类型,规则类型定义了需要查询哪些数据。

派大星的不眠博客 5755

ElastAlert2部署

ElastAlert2部署

yae的博客 930

2. ElastAlert安装部署

githup 安装手册 git clone https://github.com/Yelp/elastalert.git https://elastalert.readthedocs.io/en/latest/running_elastalert.html 环境需求 Elasticsearch ISO8601 or Unix timestamped data Python 2.7...

木棍先生的博客 661

elastalert 安装

https://elastalert.readthedocs.io/en/latest/ruletypes.html#alerts 下载并安装pip wgethttps://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz t...

蘑菇丁的专栏 1567

Logisim实战:手把手教你设计硬布线版MIPS CPU(多周期/8指令/附电路图)

本文是一份详细的Logisim实战指南,手把手教你设计一个采用硬布线控制的多周期MIPS CPU。文章深入剖析了硬布线控制与微程序控制的核心理念差异,并逐步讲解了从定义执行状态、构建状态跳转逻辑到生成控制信号、集成测试的完整流程,最终实现一个支持8条指令、可运行简单程序的处理器模型。

g9h0i1的博客 592

微信小程序通过MQTT协议实现智能家居远程控制——基于阿里云物联网平台

本文详细介绍了如何利用微信小程序与MQTT协议,结合阿里云物联网平台,构建一套完整的智能家居远程控制系统。文章从平台配置、MQTT协议核心概念、小程序开发实战到单片机端对接,提供了全链路实践指南,并重点阐述了通过规则引擎实现消息路由与设备绑定的关键步骤,帮助开发者快速实现安全、稳定的自定义智能家居解决方案。

1206

ELK详解(二十一)——elastalert介绍与安装

今天继续给大家介绍Linux运维相关知识,本文主要内容是elastalert的介绍与安装 一、elastalert简介 二、elastalert安装 三、elastalert命令介绍

永远是少年 3416

基于51单片机的简易计算器设计(原理图+仿真+源代码+参考论文)

本设计以51单片机为核心,矩阵键盘输入数字,通过1602显示屏显示计算结果,能够实现整数的加、减、乘、除四则运算,具备清除功能。

u012759563的博客 7696

elastalert的安装配置

这两天在公司接触了一下elasticsearch和elastAlert,搭建过程遇到一些 问题,这里记录一下。 首先安装elasticsearch,elasticsearch 是一个实时的分布式搜索分析引擎。 我这边是安装在linux下的,版本是6.2.4。安装elasticsearch 需要java环境,我这边是1.8。elasticsearch 后来的版本是不能以root用户运行的,所以我...

fan0703的博客 1372

从VASP数据到LAMMPS模拟:手把手教你用DeePMD-kit搭建Cr-Si-Fe合金势函数

本文详细介绍了使用DeePMD-kit从VASP数据构建Cr-Si-Fe合金深度势能模型的全流程,包括数据准备、模型训练、优化及LAMMPS集成。通过实战教程,帮助研究者掌握DeePMD-kit训练技巧,实现高精度分子动力学模拟,提升材料计算效率。

weixin_33737134的博客 521

OSNet代码解析(普通卷积,分组卷积,深度可分离卷积,OSblock组成)

文章目录普通卷积和分组卷积普通卷积和深度可分离卷积用深度可分离卷积(LightConv3x3)代替普通卷积(Conv3x3)减少参数OSBlock (bottleneck)OSNet OSNet之所以轻量(2.2M)在于网络浅,使用深度可分离卷积代替传统卷积,但是很有效 普通卷积和分组卷积 所谓分组卷积,就是右图的input features分成一组一组,如上图groups=3,那么输入的特征分成3组,每组有12/3=4的通道的特征参与输出。然后根据输出通道的维度,得到每组的输入特征要计算两次(6/3=2

Mr_DaYang的博客 9801

Elastalert 报警框架安装使用

Elastalert是Yelp公司用python2.6写的一个报警框架,github地址为   代码:https://github.com/Yelp/elastaler 文档:http://elastalert.readthedocs.io/en/latest/ 参考:http://blog.youkuaiyun.com/gamer_gyt/article/details/52917116 ...

禅鸣之时 1234

SAP MM ME21N保存前检查增强

想在ME21N保存前做一些数据检查, 可以做一个增强功能,  运行 CMOD 新增,   增强接口 输入 MM06E005  (  EXIT_SAPMM06E_012 ) ,在 NCLUDE ZXM06U43 .  里写代码功能。  例子如下: *&---------------------------------------------------------------------*

heng0757的专栏 1万+

ElastAlert安装与使用

安装 官方文档:elastalert.readthedocs.io/en/latest/r… 我简单总结一下附带我遇到的坑: 环境 Elasticsearch Python 2.7 坑:一定要2.7,2.6和3.*都有问题 Ubuntu : python-pip python-dev libffi-dev libssl-dev centos: gcc libffi-devel python-d...

weixin_34221332的博客 577

PointNet++改进策略目录

后续我将如何使用文章中创新点加入的PointNet++中代码实现部分进行更新。

u012901740的博客 2195

MIC:最大信息系数

目录 1. 概念 1.1 MIC 1.2 互信息 2.MIC的优点 3. 算法原理 3.1 MIC公式原理 3.2MIC计算步骤 (1)计算最大互信息值 (2)对最大的互信息值进行归一化 (3)选择不同尺度下互信息的最大值作为MIC值 4. 代码实现 6. 其他方法 1. 概念 1.1 MIC MIC,即(Maximal Information...

满腹的小不甘 5万+

elastalert docker安装

基于对elasticsearch中数据监控需要,我尝试了sentinl和elastalert两款工具。虽然elastalert是纯文本,但易配置管理。elk自带的watch需要付费才可使用。 6.2x版本以上,需要先运行elastalert server服务(docker),然后在能使用kibana plugin elastalert插件 docker 安装 elastalert 注:dock...

weixin_30411997的博客 1134

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Elastic:使用 ElastAlert 发送邮件通知

ElastAlert是一个简单的框架,用于从Elasticsearch中的数据中发出异常,尖峰或其他感兴趣模式的警报。我们可以在地址https://elastalert.readthedocs.io/en/latest/elastalert.html找到它的使用说明。在今天的教程中,我将一步一步地介绍如何搭配环境,并从Elasticsearch发送通知给电子邮件。在我之前的教程“Elastic:使......

Elastic 中国社区官方博客 8085

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Elastic:使用 ElastAlert 发送 Slack 通知

ElastAlert是一个简单的框架,用于从Elasticsearch中的数据中发出异常,尖峰或其他感兴趣模式的警报。我们可以在地址https://elastalert.readthedocs.io/en/latest/elastalert.html找到它的使用说明。在今天的教程中,我将一步一步地介绍如何搭配环境,并从Elasticsearch发送通知给Slack。 为了说明问题的方便,我的环境...

Elastic 中国社区官方博客 5796

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

filebeat7.5.1+elasticsearch7.5.1+elastAlert0.2.1+elastalert-dingtalk-plugin实现日志监控钉钉告警

环境 CentOS7.5 jdk1.8 python3.6 1、首先先理清版本问题 elastAlert0.2.1 支持elasticsearch7+版本 elastAlert0.2.1 需要python3.6 版本 elastalert-dingtalk-plugin 插件需要修改elastalert依赖信息以及elasticsearch依赖信息 下载 Elastic下载 file...

a807719447的专栏 2495
上一篇: The Jenkinsfile
下一篇: ubuntu下 docekr,compose 的安装,免sudo 运行
df007df
博客等级 码龄18年 833粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

df007df

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值