zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    如何规范.net中的js开发(2)
    网站架构之缓存应用(2)
    基于插件式开发的软件项目
    基于NHibernate的UnitOfWork+Repository模式(AutoFac)
    基于NHibernate的UnitOfWork+Repository模式(AutoFac)–P1
    云计算从基础到应用架构系列虚拟化的技术(上)
    Razor试图引擎 语法学习(一)
    ASP.NET页面的字符编码设置
    资源1
    Razor试图引擎 语法学习(二)
  • 原文地址:https://www.cnblogs.com/guoyabin/p/15562090.html
Copyright © 2011-2022 走看看