一年前写过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日志发送微信报警的更多相关文章

  1. ELK基于ElastAlert实现日志的微信报警

    文章转载自:https://mp.weixin.qq.com/s/W9b28CFBEmxBPz5bGd1-hw 教程pdf文件下载地址 https://files.cnblogs.com/files/ ...

  2. ELK基于ElastAlert实现日志的微信报警 ---docker环境

    参考网址:https://github.com/anjia0532/elastalert-docker 1.拉取镜像: docker pull anjia0532/elastalert-docker: ...

  3. Flume 概述+环境配置+监听Hive日志信息并写入到hdfs

    Flume介绍Flume是Apache基金会组织的一个提供的高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供 ...

  4. 监听当点击微信等app的返回按钮或者浏览器的上一页或后退按钮的事件

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...

  5. 解决Fiddler不能监听Java HttpURLConnection请求的方法

    在默认情况下,Fiddler不能监听Java HttpURLConnection请求.究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是 在应用程 ...

  6. 使用Fiddler监听java HttpURLConnection请求

    使用Fiddler监听java HttpURLConnection请求

  7. ELK之收集Java日志、通过TCP收集日志

    1.Java日志收集 使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并. 语法示例: inpu ...

  8. Windows平台下Oracle 11g R2监听文件日志过大,造成客户端无法连接的问题处理

    近期部署在生产环境的应用突然无法访问,查看应用日志发现无法获取数据库连接. SystemErr R Caused by: oracle.net.ns.NetException: The Network ...

  9. phalcon: plugin 结合Manager事件管理、dispatcher调度控制器 监听sql日志记录或其他拦截出来

    可能用到的类 phalcon\mvc\use\plugin Phalcon\Mvc\Dispatcher as MvcDispatcher Phalcon\Events\Manager as Even ...

随机推荐

  1. java关于for循环的效率优化

    我们知道在实现一个功能的时候是可以使用不同的代码来实现的,那么相应的不同实现方法的性能肯定也是有差别的,所以我们在写一些对性能很敏感的模块的时候,对代码进行优化是很必要的,所以我们说一下for循环(w ...

  2. Python向mysql数据库插入数据

    一.向表tcolor中插入数据的主要流程如下: import datetimeimport pymysql.cursorsconnection = pymysql.connect(host='loca ...

  3. 【刷题-LeetCode】239. Sliding Window Maximum

    Sliding Window Maximum Given an array nums, there is a sliding window of size k which is moving from ...

  4. 数据库DDL、DML、DCL、DQL、DPL、CCL的全称和使用

    数据库DDL.DML.DCL.DQL.DPL.CCL的全称和使用 简介: SQL (Structure Query Language):结构化查询语言,一种特殊目的的编程语言,一种数据库查询和程序设计 ...

  5. WebGPU | 相关知识概述

    首先看下WebGPU的目标: 同时支持实时屏幕渲染和离屏渲染. 使通用计算能够在 GPU 上高效执行. 支持针对各种原生 GPU API 的实现:Microsoft 的 D3D12.Apple 的 M ...

  6. Servlet虚拟路径匹配规则

    当 Servlet 容器接收到请求后,容器会将请求的 URL 减去当前应用的上下文路径,使用剩余的字符串作为映射 URL 与 Servelt 虚拟路径进行匹配,匹配成功后将请求交给相应的 Servle ...

  7. python列表和索引--7

    备注:列表元素索引下限从0开始,列表用[ ]表示

  8. 微服务架构 | 5.4 Sentinel 流控、统计和熔断的源码分析

    目录 前言 1. Sentinel 的自动装配 1.2 依赖引入 1.3 SentinelWebAutoConfiguration 配置类 1.4 CommonFilter 过滤器 1.5 小结 2. ...

  9. TCP Wrappers

    TCP Wrappers 是 RHEL 7 系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序作出允许或拒绝的操作.换句话说,Linux 系统中其实有两个层面的防火墙,第一 ...

  10. ApacheCN 人工智能知识树 v1.0

    贡献者:飞龙 版本:v1.0 最近总是有人问我,把 ApacheCN 这些资料看完一遍要用多长时间,如果你一本书一本书看的话,的确要用很长时间.但我觉得这是非常麻烦的,因为每本书的内容大部分是重复的, ...