在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 ;
------------------------------------------------
另外一种简洁的用法
通过一个关键字对日志进行分析统计
在所有的文件中找“send ok”
grep 'send ok' 20171022*all* | more
输出的结果为:
20171022_130.76.0.145.31151_all_000000.log:00:02:16.989944|D|GGSN7.ocs1;1508598098;38971070;09566300|15537090456|34|0525|Send|Session.cpp|send ok
通过对上面的查询结果进行分析,得到一些有意义的次数统计。
命令的意思就是,首先以“|”分割,取得查询结果中的第三列,然后,再以“.”分割,取得结果中的第一列,最后,通过排序,统计每个字符的次数。
grep 'send ok' 20171022*all* | awk -F "|" '{print $3}' | awk -F '.' '{print $1}' | sort | uniq -c | more
100 GGSN7
99 GGSN8
在linux中使用shell来分析统计日志中的信息的更多相关文章
- 使用shell命令分析统计日志
用户需要登录统计信息,当分析用户行为,使用shell通常可以很容易地取出了大量的数据.删除,然后放入excel统计. 例如:统计日志含有loadCustomProcess这个地址的訪问,按訪问耗时排序 ...
- [linux] shell脚本编程-统计日志文件中的设备号发通知邮件
1.日志文件列表 比如:/data1/logs/2019/08/15/ 10.1.1.1.log.gz 10.1.1.2.log.gz 2.统计日志中的某关键字shell脚本 zcat *.gz|gr ...
- shell 在手分析服务器日志【转】
自己的小网站跑在阿里云的 ECS 上面, 偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! awk '{print $1 ...
- shell脚本分析nginx日志
shell脚本分析nginx日志: name=`awk -F ',' '{print $13":"$32}' $file | awk -F ':' '{print $4}'`ech ...
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...
- Python统计日志中每个IP出现次数
介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下 本脚本可用于多种日志类型 #-*- coding:utf-8 -* ...
- 转载:Linux命令经典面试题:统计文件中出现次数最多的前10个单词
1.使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词 主要考察对sort.uniq命令的使用,相关解释 ...
- 利用shell命令分析服务器日志
在没有专业日志分析系统的情况下,我们有时需要对日志进行简单的分析,下面列出一些常用的shell命令分析日志的方法,一定要收藏 1.查看有多少个ip访问 awk '{print $1}' log_f ...
- 统计日志中ip出现的次数
grep -r 'GET /weixin/weixin_izp/index.html' ./chunyun.access.log > ~/access.log cat access.log |a ...
随机推荐
- Sublime : python环境
1.安装python.注意区分32位和64位版本,勾选下图红框实现自动将python安装位置添加到环境变量 2.键盘win+r,输入cmd调出命令行,输入python回车,根据结果查看时候安装成功 3 ...
- 关于div可编辑的复制粘贴问题
todoFilter(e) { e.preventDefault(); if (!e.target.getAttribute('contenteditable')) { return; } const ...
- java.lang.ClassNotFoundException: org.apache.commons.discovery.tools.DiscoverSingleton
java.lang.ClassNotFoundException: org.apache.commons.discovery.tools.DiscoverSingleton org.apache.ax ...
- 《Maven实战》第5章 坐标和依赖
5.1 Maven坐标——项目唯一标识 groupId(必须定义):定义Mavan项目隶属的实际项目,如SpringFramework,一个实际项目可包含多个Maven项目 artifactId(必须 ...
- 获取微信公众号用户的基本信息(UnionID机制)
获取用户基本信息(UnionID机制) 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的open ...
- Java 多线程 - 转载
下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编 ...
- Reverse Nodes In K Group,将链表每k个元素为一组进行反转---特例Swap Nodes in Pairs,成对儿反转
问题描述:1->2->3->4,假设k=2进行反转,得到2->1->4->3:k=3进行反转,得到3->2->1->4 算法思想:基本操作就是链表 ...
- FZU 1759 Super A^B mod C 指数循环节
Problem 1759 Super A^B mod C Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description G ...
- TimeSpan 结构(struct)
TimeSpan 是结构类型(struct),即值类型,可以通过两个DateTime(struct)之差来获得,如下例子: DateTime departure = new DateTime(2010 ...
- Hadoop2.9下运行JAR包时System.out.println的输出日志
根据博文——Hadoop日志存放路径详解中所述,Container日志包含ApplicationMaster日志和普通Task日志(关于其他类型的日志的详细说明请参考该博文,本文不再赘述) 所以可知, ...