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 ...
随机推荐
- 【Java】枚举类
文章目录 枚举类的使用 如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 方式二:jdk5.0,可以使用enum关键字定义枚举类 Enum类的主要方法 toString() values() v ...
- Git命令中波浪号~与脱字符^的区别
0.前言 波浪号~,英文名叫 tilde.脱字符^,英文名叫caret. 这两种符号常见于git reset的情景,简单的项目结构和操作一般不会涉及到两者之间的区别,似乎用哪个都可以.如果遇到比较繁杂 ...
- 【刷题-LeetCode】222. Count Complete Tree Nodes
Count Complete Tree Nodes Given a complete binary tree, count the number of nodes. Note: Definition ...
- 机器学习-softmax回归 python实现
---恢复内容开始--- Softmax Regression 可以看做是 LR 算法在多分类上的推广,即类标签 y 的取值大于或者等于 2. 假设数据样本集为:$\left \{ \left ( X ...
- 【程序18】求s=a+aa+aaa+aaaa+aa...a的值
求s=a+aa+aaa+aaaa+aa-a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 知识点:在Python 3里,reduce( ...
- 介绍一个golang库:fastcache
学习VictoriaMetrics源码的时候发现,VictoriaMetrics的缓存部分,使用了同一产品下的fastcache.下面分享阅读fastcache源码的的结论: 1.官方介绍 fastc ...
- SAP下载报表速度慢?为啥你不试试python多线程
由于SAP系统自身原因,或者公司内部ABAP代码的算法效率不高,我们经常遇到,手工执行某个事务代码下载某个报表会非常耗时,小爬曾见过公司某个自开发的报表,单家公司的数据下载超过半小时.如果我们刚好接到 ...
- python网络爬虫-解析网页(六)
解析网页 主要使用到3种方法提取网页中的数据,分别是正则表达式.beautifulsoup和lxml. 使用正则表达式解析网页 正则表达式是对字符串操作的逻辑公式 .代替任意字符 . *匹配前0个或多 ...
- 安卓开发常见Bug-数据库未加载
安卓的数据库是本地的,所以在项目启动后也就是在onCreat()进行时就要进行数据库加载操作 将数据库加载的操作放在onCreat()中,根据安卓运行生命周期,就实现了数据库的全局化,也就是始终存在于 ...
- 人工智能与智能系统1->机器人学1 | 位置与姿态描述
寒假有几项学习计划,其中有一些是为了一些任务而学,最主要的任务是我要在2021_v4的基础上编写2022_v1的大援代码,为此顺便学习一下机器人学的知识(下学期也有这方面的老黄的课程),看看能不能在结 ...