elk监听Java日志发送微信报警
一年前写过logstash根据日志关键词报警 ,今年重温一下。并且记录一下遇到的问题解决办法。
Java错误日志一般出现一大坨,如下图:

所以我们的filebeat日志收集器就要改成多行匹配模式,以日期开头的归为一行。
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日志发送微信报警的更多相关文章
- ELK基于ElastAlert实现日志的微信报警
文章转载自:https://mp.weixin.qq.com/s/W9b28CFBEmxBPz5bGd1-hw 教程pdf文件下载地址 https://files.cnblogs.com/files/ ...
- ELK基于ElastAlert实现日志的微信报警 ---docker环境
参考网址:https://github.com/anjia0532/elastalert-docker 1.拉取镜像: docker pull anjia0532/elastalert-docker: ...
- Flume 概述+环境配置+监听Hive日志信息并写入到hdfs
Flume介绍Flume是Apache基金会组织的一个提供的高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供 ...
- 监听当点击微信等app的返回按钮或者浏览器的上一页或后退按钮的事件
在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...
- 解决Fiddler不能监听Java HttpURLConnection请求的方法
在默认情况下,Fiddler不能监听Java HttpURLConnection请求.究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是 在应用程 ...
- 使用Fiddler监听java HttpURLConnection请求
使用Fiddler监听java HttpURLConnection请求
- ELK之收集Java日志、通过TCP收集日志
1.Java日志收集 使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并. 语法示例: inpu ...
- Windows平台下Oracle 11g R2监听文件日志过大,造成客户端无法连接的问题处理
近期部署在生产环境的应用突然无法访问,查看应用日志发现无法获取数据库连接. SystemErr R Caused by: oracle.net.ns.NetException: The Network ...
- phalcon: plugin 结合Manager事件管理、dispatcher调度控制器 监听sql日志记录或其他拦截出来
可能用到的类 phalcon\mvc\use\plugin Phalcon\Mvc\Dispatcher as MvcDispatcher Phalcon\Events\Manager as Even ...
随机推荐
- RocketMQ 原理:消息存储、高可用、消息重试、消息幂等性
目录 消息存储 消息存储方式 非持久化 持久化 消息存储介质 消息存储与读写方式 消息存储结构 刷盘机制 同步刷盘 异步刷盘 小结 高可用 高可用实现 主从复制 负载均衡 消息重试 顺序消息重试 无序 ...
- 分布式一致性协议Raft,以及难搞的Paxos
https://blog.csdn.net/colorant/article/details/73887706
- 关于3G移动通信网络中用户ip的配置过程的研究(中国电信cdma2000)
在RP口对ppp过程进行研究 PPP协商过程,如下图所示: 在建立ppp过程中pdsn需要与FAAA.HAAA交互.同时在分组数据业务进行过程中这种交互更加频繁,介绍如下,分为两种情况,简单ip,移动 ...
- 5种高大上的yml文件读取方式,你知道吗?
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在上一篇文章中,我们从源码角度分析了SpringBoot解析yml配置文件的全流程,那么我们今天就来点实战,总结一下除了烂大街的@Value和@ ...
- POSIX之消息队列
my_semqueue_send.c: #include<stdio.h> #include<errno.h> #include<mqueue.h> #includ ...
- linux信号 SIGINT SIGTERM SIGKILL
三者都是结束/终止进程运行. 1.SIGINT SIGTERM区别 前者与字符ctrl+c关联,后者没有任何控制字符关联. 前者只能结束前台进程,后者则不是. 2.SIGTERM SIGKILL的区别 ...
- IP:网络上的击鼓传花
链接,而不是直达 在之前<听说你很懂 DNS?>中我们分析过用户在浏览器里面输入 www.baidu.com 后,浏览器如何通过 DNS 解析拿到 IP 地址,然后请求该 IP 地址获取网 ...
- python 小兵(10)内置函数
内置函数(下午讲解) 什么是内置函数?就是python帮我们提供的一个工具,拿过直接用就行,比如我们的print,input,type,id等等.截止到python3.6.2版本 中一共提供了68个内 ...
- Lesson3——NumPy 数据类型
NumPy 教程目录 NumPy 数据类型 numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型. 下表 ...
- ForkJoinPool简单使用
简介 ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个"小任务",把多个"小任务"放到多个处理器核心上并行执行, ...