elastalert 配置post告警方式(备忘)

摘要:
最近在做把elk告警日志发送到kinesis流,供后续数据分析处理使用。。。。。。。。基于尽量不修改elastalert,把修改工作放到接收端服务的原则。计划把elk的告警数据通过远程api的接口的形式发送到接收端,然后由接收端处理接收到的数据,并传送保存到kinesis中。

最近在做把elk告警日志发送到kinesis 流,供后续数据分析处理使用。。。。。。。。

基于尽量不修改elastalert ,把修改工作放到接收端服务的原则。计划把elk的告警数据通过远程api的接口的形式发送到接收端,然后由接收端处理接收到的数据,并传送保存到kinesis 中。

从网上搜索了下elastalert 相关告警配置,搜到的文章大多以邮件告警为主,从官网扒拉了下资源,简单实现方式如下:

1、elastalert 配置(可以本地测试)

1)启动配置config.yaml

rules_folder: rules
run_every:
  minutes: 1

buffer_time:
  minutes: 5
es_host: es_endpoint
es_port: 9200
es_username: username
es_password: password

use_ssl: False
verify_certs: False
writeback_index: elastalert_status
alert_time_limit:
  hours: 2

2)告警规则kinesis.yaml

name: alertfortest
type: frequency
num_events: 1timeframe:
  minutes: 1
index: debug-*filter:
-terms:
    fields.app: ["app1","app2"]
-query:
    query_string:
      default_field: "message"query: "error NOT INFO"
alert:
  - "email"
  - "post"
http_post_url: "http://localhost:8000/elastalert/"http_post_static_payload:
    rule_name: alertfortest
 
smtp_host: "smtp.163.com"smtp_port: 25from_addr: "elastalert@163.com"smtp_auth_file: /tmp/smtp_auth.yaml
email:
- "youremail@qq.com"

2、数据接收端

defelastalert2kinesis(request):
    if request.method == 'GET':return HttpResponse(status=400)
    elif request.method == 'POST':
        data_dict ={
            "region":"",
            "env":"","service":"",
            "ip":"","endpoint":"",
            "metric":"",
            "value":"",
"timestamp":0,
"dataSource":"",
"status":""} alertbody =json.loads(bytes.decode(request.body)) endpoint_list = alertbody['beat']['hostname'].split('-') data_dict['env'] =endpoint_list[0] data_dict['region'] = endpoint_list[1] data_dict['service'] = "-".join(endpoint_list[2:-1]) data_dict['ip'] = endpoint_list[-1] data_dict['endpoint'] = alertbody['beat']['hostname'] data_dict['dataSource'] = "elk"data_dict['metric'] = alertbody['source'] data_dict['value'] = alertbody['message'] data_dict['timestamp'] = utc_to_local(alertbody['@timestamp'].split('.')[0]+"Z")
Stream().put_to_stream(data_dict[
'service'],**data_dict) print("data_dict.....................:",data_dict) return HttpResponse(status=200)

免责声明:文章转载自《elastalert 配置post告警方式(备忘)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇令牌桶、漏斗、冷启动限流在sentinel的应用Linux命令 grep下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pb相关小技巧或用法

1.动态post window lwlw = w_main lw.dynamic post event ue_all(ls_no,ls_table) 2.打开隐藏窗口 IF NOT IsValid(w_u_weixin) THEN open(w_u_weixin)    w_u_weixin.hide()end if window lw_window I...

C#实现大文件上传

一、 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。 支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同。 支持大文件批量上传(20G)和下载,同时需...

由nginx和spring boot中tomcat配置不当引起的问题

最近接浅橙贷超Api推过来的流量,由于有几个请求头的body体积比较大,最大有30M,到我们这边nginx的error日志就报错了: 2018/11/19 22:33:52 [error] 9791#0: *639124 readv() failed (104: Connection reset by peer) while reading upstrea...

【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法

spring mvc POST方式 接收单个参数,不加任何注解,参数名对应,接收到的值为null spring mvc POST方式 接收单个参数,加上@RequestBody,接收到参数格式:{"uid":"品牌分类大”} spring mvc POST方式 接收单个参数,加上@RequestParam报错: org.springframework....

postman 发送post请求,参数为json

mvc 控制器接收post请求,参数为json PostMan设置 Headers设置key和Value值 key:Content-Type,Value:application/json。 参数设置: 选中Body并进行参数设置,选择raw,格式为json。就酱 控制器代码: //post 请求测试 [HttpPost] //请求方法,...

前端下载文件(GET、POST方法)

GET location.href = 'http://t.zoukankan.com/path/to/download/url' POST axios.post('/path/to/download/url', this.searchParams, { responseType: 'blob'}).then(res => { let blob =...