在linux中使用shell来分析统计日志中的信息

Posted 聚沙成塔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux中使用shell来分析统计日志中的信息相关的知识,希望对你有一定的参考价值。

在运维工作中,要经常分析后台系统的日志,通过抓取日志中的关键字信息,对抓取结果进行统计,从而为监控结果提供基础数据。
下面的shell演示了如何从大量的日志中取得想要的统计结果。其中展示了各种有趣的命令和shell的用法。
具体功能就是统计出某个关键字在不同时段的出现次数。结果格式为“HH 次数”

#!/bin/sh

# 取得YYYYMMDD格式的日期,以确定所要抓取的日志文件范围
current_date=`date "+%Y%m%d"`;

# 拼接组成需要抓取的日志文件名称
file_name=$current_date"*all*";

# 在一批日志文件中查找某个关键字,并将查找结果形成一个临时文件。
# 临时文件的结果格式为:文件名:日志内容
#./pmclog/20171020_all_000000.log:00:00:00.876652|D|38|0327|get|CAccumulate.cpp|delete main
grep ‘delete main‘ ./pmclog/$file_name >> term_del.log;

# 从临时文件中取得时段信息,该信息是原始日志内容的前两个字符,并将结果保存到临时文件中
# 如果需要其他信息,那么就需要修改awk的命令参数了。
awk -F ‘:‘ ‘{print $2}‘ term_del.log >> term_del_hour.log;

rm term_del.log;
rm term_del_hour_times.log;

# 取得当前的时段
hour=`date "+%H"`;

# 使用循环,对今天的每个时段进行统计
for(( i=0; i<= $hour; i++))
do
    # 作为数字的时候,变量i的前面是没有0的,这里要格式化出来一个0来,0点就是“00”,这样可以与临时文件中的信息相匹配
    hour2=$(printf ‘%02d‘ $i);
    
    # 使用 grep -o 和 wc -l的结合操作,就可以统计一个特定字符在文件中出现的次数。
    # 在前面使用echo 可以标记出来每一个次数是哪个时段的数据
    # 最终的term_del_hour_times.log就是最终的结果文件。
    echo $hour2 `grep -o $hour2 term_del_hour.log | wc -l` >> term_del_hour_times.log;
done;

rm term_del_hour.log ;

 





以上是关于在linux中使用shell来分析统计日志中的信息的主要内容,如果未能解决你的问题,请参考以下文章

spark-shell读取.log文件获取日志信息后,怎么进行分析?比如统计包含404的行数

基于firewalld的防爆shell脚本

4-9 Linux 中的日志分析

日志分析_使用shell完整日志分析案例

Linux脚本练习之script080-nginx日志分析之IP统计

Linux脚本练习之script080-nginx日志分析之IP统计