• 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

    参考:

  • 相关阅读:
    c# 获取某个对象的[公有属性]的名称,类型,值
    iis10 HTTP 错误 500.19
    MVC 使用EF Code First数据迁移之添加字段
    emeditor 配置教程
    独立程序员如何赚钱致富
    win7/win8通过媒体流(DLNA技术)共享音乐照片和视频
    sails中文文档地址
    游戏碰撞的原理
    Android图片圆角效果
    Android 系统 root 破解原理分析 (续)
  • 原文地址:https://www.cnblogs.com/linyufeng/p/13212349.html
Copyright © 2020-2023  润新知