`

linux下常用分析日志命令(2)

阅读更多

1. grep查找匹配文本

 

【a】在文件中查找

 $grep 'failed to initialize BeanFactory' upp-account.log

 

【b】查找并显示匹配行及以下的200行

 $grep -A 200 'failed to initialize BeanFactory' upp-account.log

 

【c】查找并显示匹配行及以上的200行

 $grep -B 200 'failed to initialize BeanFactory' upp-account.log

 

【d】查找,忽略大小写,并显示匹配行及以上的200行

 $grep -i -A 200 'failed to initialize BeanFactory' upp-account.log

 

 

 

【Linux下日志分析的几个常用命令】

 

有时候我们需要对线上的应用日志做一些分析和简单的统计工作,熟悉一下Linux下文本处理的几个命令,可能会有意想不到的收获:

more   查看文件内容

grep    在文件中查找

awk    文本处理

sort    排序

sed    文本处理

下面举个两个例子,说明一下这几个命令的简单应用

1、统计一下今天支付宝到淘宝、淘宝到支付宝的接口调用情况

第一步,找到日志文件路径,确定日志格式

因为接口调用走是TC,先ssh到一台tc的服务器,到日志目录下,ll 一下,看到有几个命名为alipay的日志文件,感觉是打印接口调用日志的,

more alipay-notify-success.log

输出:
2009-06-29 00:00:00,421 [] INFO  alipay-notify-success -
*********alipay notify callback*********
out_trade_no=T200P2062628786,trade_status=WAIT_BUYER_PAY,notify_action_type=createPartnerTradeAction,
input:

从日志看出,这是支付宝回调淘宝接口的日志,格式包括:时间,订单号、状态、通知类型等等

more alipay.log

输出:
2009-06-29 00:00:00,072 [] INFO  core.SignedTbClientInvoker -
**********Payway Request and Response*********
Service Name:
trade_create
Request URL:
http://aligw.alipay.com

从日志上看,这是淘宝调用支付宝的日志,格式包括:时间,接口类型,请求内容等等

第二步,查找特征文本

需要分类型统计接口的调用次数,所以特征字符串就是接口的类型文本,使用grep 命令

grep ‘,notify_action_type’ alipay-notify-success.log

第二个日志比较特殊,特征文本单独一行,没有固定前缀或者后缀特征,而前一行是固定的”Service Name:“,可以查找前一行,然后grep输出的时候多输出一行:

grep ‘Service Name:’ -A1 alipay.log

grep 命令有很多可选参数,比如忽略大小写,输出前(-B before),后(-A after)行文本等等。

第三步,文本分列

通常,日志文件的一行文本,都由几列组成,中间是分隔字符串,而我们的目标就是找到需要的列,并进行相关的计算,统计,这里就需要用到 awk 命令

对于 alipay-notify-success.log 日志文件,我们使用下面命令:

grep ‘,notify_action_type’ alipay-notify-success.log | awk -F’,’ ‘{a[$3]++}END{for (i in a) print i”,”a[i]}’

grep命令找到符合的行,作为awk命令的输入,-F 后面是指定分隔符号,后面是表达式,首先定义一个数组a(也可以理解为是一个map)用分隔出来的第三列作为下标(key),值每次加一,END 后面是最后执行的语句,循环输出数组

awk命令本身很强大,可以全面地看一下它帮助

第四步,排序

第三步已经完成了计算、统计工作,最后我们根据调用次数进行一下排序,方便查看

这里使用sort 命令

grep ‘,notify_action_type’ alipay-notify-success.log | awk -F’,’ ‘{a[$3]++}END{for (i in a) print i”,”a[i]}’ |sort -t, -k2 -n -r

-t 跟ark的-F功能类似,是把一行文本分成几列,-k指定需要排序的列,-n表示按数字方式排序,-r 表示倒序

最后,我们看到了输出:

notify_action_type=createPartnerTradeAction,52641
notify_action_type=payByAccountAction,44807
notify_action_type=sellerSendGoodsAction,43848
notify_action_type=confirmReceiveAction,40705
notify_action_type=modifyTradeAction,25733
notify_action_type=allowRefundAction,10407
notify_action_type=autoFinishTradeAction,8351
notify_action_type=closeTradeAction,8030
notify_action_type=applyRefundiiiAction,2653
notify_action_type=refundDisburseAction,2330
notify_action_type=confirmDisburseAction,401
notify_action_type=extendTimeoutLimitAction,368
notify_action_type=modifyRefundiiiAction,280
notify_action_type=cancelRefundiiiAction,52
notify_action_type=null,20
notify_action_type=unfreezeTradeAction,1
notify_action_type=refundVoucherCheckPassAction,1
notify_action_type=freezeTradeAction,1

当然这是单台机器的,根据应用的机器数量,可以大致评估一下总的情况。

类似的,对于 日志alipay.log

grep ‘Service Name:’ -A1 alipay.log | sed ‘/Service Name:/’d |sed ‘/–/’d | awk -F’    ‘ ‘{a[$2]++}END{for (i in a) print i”,”a[i]}’ | sort -t, -k2 -n -r

输出:

trade_create,51326
send_goods_confirm_by_platform,40716
confirmReceiveGoods,39351
modifyTradeFee,25261
cae_charge_agent,10074
close_trade,3871
extendTimeout,378
calculate_service_fee,52
union_data_prepare,15
logistic_sign_in,4

接下来,我们再看一个例子

需求:统计一下,denali机器中,我的淘宝首页 这个页面的请求次数和平均响应时间

还是分几步:

1、首先找到日志和日志格式

Apache 的访问日志,/home/admin/cai/logs/cronlog/2009/06/2002009-06-29-taobao-access_log

more 2002009-06-29-taobao-access_log

输出:

58.208.1.15 148452 3251 [29/Jun/2009:00:00:04 +0800] “GET http://my.taobao.com/mytaobao/home/my_taobao.jhtml” 200 14147 “http://my.t
aobao.com/mytaobao/home/my_taobao.jhtml” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; QQDownload 551; User-agent
: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;); SLCC1; .NET CLR 2.0.50727; MDDC; .NET CLR 3.5.30729; .NET CLR 3.0.30618)

2、查找特征文本

grep ‘GET http://my.taobao.com/mytaobao/home/my_taobao.jhtml’ 2009-06-29-taobao-access_log

3、文本分列

grep ‘GET http://my.taobao.com/mytaobao/home/my_taobao.jhtml’ 2009-06-29-taobao-access_log | awk -F’ ‘ ‘{i+=$2}END{print NR “,” i/NR/1000}’

 

摘自:http://globalzhu.iteye.com/blog/624233

分享到:
评论

相关推荐

    linux 查看日志常用命令

    ### Linux查看日志常用命令详解 #### 一、`cat`命令 `cat`命令是Linux中最常用的文本处理工具之一,具有多种用途,包括显示文件内容、从键盘创建文件以及合并多个文件等。 - **主要功能**: - **显示整个文件**: ...

    Linux下db2常用命令总结

    本文将深入探讨Linux下DB2的常用命令,帮助开发者更好地理解和操作DB2数据库。 1. **安装与启动DB2** - `sudo rpm -ivh db2_v11.5_linux_x86_64.rpm`:在Linux上安装DB2的RPM包。 - `db2start`:启动DB2实例。 -...

    Linux系统中查看日志的常用命令

    # free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du -sh <目录名> # 查看指定目录的大小 # grep MemTotal /proc/meminfo # 查看内存总量 # grep MemFree /proc/meminfo # 查看空闲内...

    linux常用命令大全.pdf

    ### Linux常用命令大全 #### 一、文件管理 1. **查看目录与文件** - **ls**: 用于列出当前目录下的文件和子目录。常用选项包括: - `-l`: 以长格式显示文件详细信息,如权限、所有者、大小等。 - `-a`: 显示...

    linux常用命令学习日志

    Linux 命令学习日志 Linux 命令是 Linux 操作系统中的一系列命令,用于管理和维护系统。这些命令可以在 Shell 中执行,以实现各种操作,如文件管理、进程管理、网络管理等。下面是 Linux 命令学习日志中的重要知识...

    Linux常用命令文档和命令大全

    本压缩包文件"Linux常用命令文档和命令大全"包含了两份宝贵的资源,分别是"Linux命令大全(修改版).chm"和"Linux学习笔记.doc",它们都是深入理解和熟练掌握Linux操作系统的宝贵资料。 "Linux命令大全(修改版).chm...

    Linux中常见的日志文件和命令.rar

    在Linux操作系统中,日志文件和相关命令是系统管理和故障排查的重要工具。这些记录着系统运行情况、程序错误以及安全事件的信息,对于诊断问题、优化性能以及确保系统稳定性至关重要。以下将详细介绍一些常见的Linux...

    车载常用linux命令+火车/高铁/公交车行业+车载linux系统测试常用命令,用于测试职位或运维技术支持职位

    本文将详细介绍车载Linux系统中常用的一些命令,这对于测试职位或运维技术支持人员来说至关重要。 1. `ls` 和 `ls -l`: `ls` 命令用于列出目录中的文件和子目录,而`ls -l`则提供更详细的信息,包括文件权限、所有...

    linux常用命令大全

    在深入探讨Linux常用命令之前,我们首先应当理解Linux操作系统的核心理念与优势,它是一个免费、开源的操作系统,因其稳定性和安全性而广泛应用于服务器领域。掌握Linux命令行是每一位IT专业人士的必备技能,以下是...

    Linux常用命令大全

    本资料“Linux常用命令大全”详细汇总了Linux环境中最常用的命令,旨在为用户提供全面的学习参考。 1. 文件和目录管理: - `ls`:列出目录内容,可以使用 `-l` 显示详细信息,`-a` 显示所有文件,包括隐藏文件。 ...

    linux常用的经典命令

    监控日志命令 1. 在当前目录搜索指定文本:`find ./ -type f -name "*.log" | xargs grep "DEBUG"` 该命令用于在当前目录下搜索指定的日志文件,并在其中搜索包含“DEBUG”关键字的行。 2. 监控 Tomcat 日志:`cd...

    Linux最常用命令.pdf

    常见的系统目录如“/root”是系统管理员的主目录,“/bin”存放常用的命令,“/etc”存放系统配置文件,“/home”为用户主目录,“/var”存储日志和系统运行时的数据,“/opt”用于安装额外软件,“/dev”包含系统...

    常用Linux命令.pdf

    标题《常用Linux命令.pdf》指的是该文档是关于Linux操作系统中常见命令的总结指南。Linux系统是类Unix系统中的一种,广泛应用于服务器、桌面计算机、超级计算机等领域。该文档中的内容应当包括基础命令、文件系统...

    linux 常用命令集锦

    了解并熟练掌握Linux的常用命令是每个IT从业者的基本技能。下面将详细介绍Linux的一些核心概念和常见命令。 首先,Linux将所有设备和资源视为文件,包括硬件设备、系统资源等。文件主要分为两种类型:字符型和二...

    Linux常用命令-API手册.zip

    本压缩包"Linux常用命令-API手册.zip"包含了两个重要的参考资料:"Linux基础命令教程豪华版.chm"和"Linux常用命令大全.chm",它们为用户提供详尽的Linux命令学习指南。 "Linux基础命令教程豪华版.chm"可能是对Linux...

    linuxOS6.5安装及常用命令.docx

    Linux OS 6.5 安装及常用命令 Linux OS 6.5 是一种流行的开源操作系统,它提供了强大且灵活的功能,可以应用于各种场景。本文档将指导用户安装 Linux OS 6.5 并介绍常用的命令,使用户能够快速上手使用 Linux OS ...

    linux 查看日志命令操作

    以下是一些常用的Linux查看日志命令及其应用: 1. **`less` 和 `more` 命令** 这两个命令用于查看文件内容,特别是大型日志文件。`less` 提供了向前/向后翻页、搜索和导航功能,而 `more` 只能逐屏显示。 2. **`...

    Linux常用命令集合整理

    在Linux操作系统中,掌握常用命令是日常工作的基础。以下是一些关键的Linux命令及其详细解释: 1. `pwd`:此命令用于显示当前工作目录。在终端中输入`pwd`,它会返回你当前所在的路径。 2. `Ctrl + L`:这个快捷键...

    Linux常用命令使用方法大全

    在Linux操作系统中,掌握常用命令是进行日常...以上是Linux常用命令的基本介绍,熟练掌握这些命令将极大提高你在Linux环境下的工作效率。继续深入学习,理解命令背后的逻辑,你将能够更自如地驾驭这个强大的操作系统。

Global site tag (gtag.js) - Google Analytics