zoukankan      html  css  js  c++  java
  • grep和sed拉取线上日志,nc导入elk

    创建文件pull复制下面脚本(日志路径自己修改),然后更改权限chmod 777 pull

    #!/bin/bash
    
    # 需要读取的文件
    source=/opt/logs/catalina.out
    # 生成文件
    dist=log
    
    # 快速截取,有冒号根据时间匹配截取,没有截取行数
    if [[ $1 != *:* ]]
    then
    	tail -n $1 $source > $dist
    else
    	# 日期 0当天 -1昨天 1明天,依次类推
    	d=0
    	if [ -n "$3" ]; then
    	d=$3
    	fi
    	pre="`date -d ''$d' days' +%Y-%m-%d` "
    	echo -e "日期: 33[32m$pre33[0m"
    
    	# 开始时间
    	a=$1
    	# 结束时间,默认当前时间
    	b=`date +%H:%M`
    
    	if [ -n "$2" ]; then
    		b=$2
    	fi
    
    	echo 时间: "$a ~ $b"
    	echo ==============
    
    	start=`grep "${pre}${a}" $source -n | head -n 1 | awk -F: '{print $1}'`
    	end=`grep "${pre}${b}" $source -n | tail -n 1 | awk -F: '{print $1}'`
    	
    	# 如果结束行为空,默认最后
    	if [[ $start == "" ]]
    	then
    		echo 该时间节点无数据
    		exit 1
    	fi
    	# 如果结束行为空,默认最后
    	if [[ $end == "" ]]
    	then
    		end=`wc -l $source | awk '{print $1}'`
    	fi
    	
    	echo 起始行: $start
    	echo 结束行: $end
    
    	sed -n ''$start','$end'p' $source > $dist
    fi
    
    # 删除数据
    curl -XDELETE "http://127.0.0.1:9200/de*"
    # 导入elk
    nc 127.0.0.1 8081 < $dist
    echo
    echo -e "33[31m>>-完成->33[0m"
    
    • date -d '0 days' 0当天 -1昨天 1明天,依次类推
    • head -n 1 取第一行
    • awk -F: '{print $1}' 取出行号
    • sed切割日志,用单引号使用变量时,变量要再次使用单引号,格式:'hello'$start'world'

    最后两行酌情使用


    使用示例:

    快速拉取最近100行: 100
    ./pull 100

    拉取今天12点至今: 12:00 ~
    ./pull 12:00

    拉取今天: 00:00 ~ 00:15
    ./pull 00:00 00:15

    拉取昨天: 00:00 ~ 00:15
    ./pull 00:00 00:15 -1


    拉取日志直接导入elk进行分析,使用nc命令. 在最后添加logstash服务ip和端口,代码做了拉取之前先清空(看清楚再用!!!)
    nc 127.0.0.1 8080 < $dist

    参考:

  • 相关阅读:
    弹出新窗口
    网页布局之二 二列和三列
    JavaScript prototype
    window和linux开启动顺序
    ASP.net和javascript结合产生乱码的问题
    网页布局之一:XHTML CSS基础知识
    Study Android Chapter 1 Reading
    C++文件的读取
    心智模式
    各种排序算法的稳定性和时间复杂度小结
  • 原文地址:https://www.cnblogs.com/linyufeng/p/13212349.html
Copyright © 2011-2022 走看看