标签:elk Java 9200 删除 index 微信 savedays curl day
一年前写过logstash根据日志关键词报警 ,今年重温一下。并且记录一下遇到的问题解决办法。
Java错误日志一般出现一大坨,如下图:
所以我们的filebeat日志收集器就要改成多行匹配模式,以日期开头的归为一行。
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' multiline.negate: true multiline.match: after
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' multiline.negate: true multiline.match: after
然后我们查看kibana时候就成一行了
请注意上图,我们的kibana里数据变精简了,有我们想要的hostip来源,tags标签,去掉了一些version,agent信息。
是通过filebeat的配置来操作的,新增hostip,新增tags标签
fields_under_root: true fields: hostip: 10.0.2.241 tags: ["merchant_info"]
去掉version,agent等没用的信息
- drop_fields: fields: ["log","input.type","host","agent","ecs"]
然后我们通过logstash-output-exec去发送通知
if [message] =~ /(AGENT_PROFIT_ERROR|fail)/ and "_info" not in [tags][0] { exec { command => "/usr/bin/python3 weixin3_news.py %{hostip} %{[tags][0]} \"%{message}\"" } }
这时候我们的\"%{message}\"参数是不能被正常识别的,发出来的报警如下
这时候就要修改logstash.yml,启用特殊符号转译,添加多行匹配。
config.support_escapes: true
ps:蛋疼的问题一直以为是我shell脚本写的太烂,改成Python后依然如此。最后不得不请出百度搜索了,搜到此文章。
报警成功:
最后贴一个自己写的清理elasticsearch数据脚本,脚本中三个方法分别应对不同的数据格式。
#!/bin/bash #此脚本用于删除es历史数据 delrange(){ #删除的索引项目 index_name=("auditbeat-hxtpayment" "auditbeat-hxtpay" "go-mobileposp") #根据哪一列查找关键词 daycolumn="@timestamp" #删除几条之前的数据 savedays=5 #日期格式 format_day="%Y-%m-%d" #计算savedays之前的日期 sevendayago=`date -d "-${savedays} day " +${format_day}` for index in ${index_name[@]} do curl --user elastic:你的密码 -X POST "http://192.168.80.11:9200/${index}/_delete_by_query" -H 'Content-Type: application/json' -d' { "query": { "range": { "'"$daycolumn"'": { "lt": "'"$sevendayago"'" } } } } ' done } #删除es几天前的数据 delday(){ #日期格式 format_day="%Y.%m.%d" #删除几天之前的数据 savedays=15 #计算savedays之前的日期 sevendayago=`date -d "-${savedays} day " +${format_day}` for index in `curl -XGET "http://10.0.2.245:9200/_cat/indices" |awk '{print $3}'|grep "$sevendayago" |grep -v '.monitoring'|sort` do #echo "开始删除 ${index%-*}-${sevendayago} 索引" #curl -XDELETE http://10.0.2.245:9200/${index%-*}-${sevendayago} echo "开始删除 ${index} 索引" curl -XDELETE http://10.0.2.245:9200/${index} done } delmonth(){ #日期格式 format_day="%Y.%m" #删除几天之前的数据 savedays=90 #计算savedays之前的日期 sevenmonago=`date -d "-${savedays} day " +${format_day}` index_month=("centos" "cisco") #删除几个月前 for index in ${index_month[@]} do curl --user elastic:你的密码 -XDELETE http://192.168.80.11:9200/${index}-${sevenmonago} done } #删除单个 #curl -XDELETE 'http://192.169.1.666:9200/index #删除多个 #curl -XDELETE 'http://192.169.1.666:9200/index_one,index_two delday
标签:elk,Java,9200,删除,index,微信,savedays,curl,day 来源: https://www.cnblogs.com/guoyabin/p/15562090.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。