Linux下日志分析的几个常用命令
生活随笔
收集整理的這篇文章主要介紹了
Linux下日志分析的几个常用命令
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
有時(shí)候我們需要對(duì)線上的應(yīng)用日志做一些分析和簡(jiǎn)單的統(tǒng)計(jì)工作,熟悉一下Linux下文本處理的幾個(gè)命令,可能會(huì)有意想不到的收獲: more?/less ? 查看文件內(nèi)容 head/tail???? 查看文件中頭或尾的行內(nèi)容 grep??? 在文件中查找 awk??? 文本處理 sort??? 排序 sed??? 文本處理 下面舉個(gè)兩個(gè)例子,說明一下這幾個(gè)命令的簡(jiǎn)單應(yīng)用 1、統(tǒng)計(jì)一下今天支付寶到淘寶、淘寶到支付寶的接口調(diào)用情況 第一步,找到日志文件路徑,確定日志格式 因?yàn)榻涌谡{(diào)用走是TC,先ssh到一臺(tái)tc的服務(wù)器,到日志目錄下,ll 一下,看到有幾個(gè)命名為alipay的日志文件,感覺是打印接口調(diào)用日志的, 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: 從日志看出,這是支付寶回調(diào)淘寶接口的日志,格式包括:時(shí)間,訂單號(hào)、狀態(tài)、通知類型等等 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 從日志上看,這是淘寶調(diào)用支付寶的日志,格式包括:時(shí)間,接口類型,請(qǐng)求內(nèi)容等等 第二步,查找特征文本 需要分類型統(tǒng)計(jì)接口的調(diào)用次數(shù),所以特征字符串就是接口的類型文本,使用grep 命令 grep ‘,notify_action_type’ alipay-notify-success.log 第二個(gè)日志比較特殊,特征文本單獨(dú)一行,沒有固定前綴或者后綴特征,而前一行是固定的”Service Name:“,可以查找前一行,然后grep輸出的時(shí)候多輸出一行: grep ‘Service Name:’ -A1 alipay.log grep 命令有很多可選參數(shù),比如忽略大小寫,輸出前(-B before),后(-A after)行文本等等。 第三步,文本分列 通常,日志文件的一行文本,都由幾列組成,中間是分隔字符串,而我們的目標(biāo)就是找到需要的列,并進(jìn)行相關(guān)的計(jì)算,統(tǒng)計(jì),這里就需要用到 awk 命令 對(duì)于 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 后面是指定分隔符號(hào),后面是表達(dá)式,首先定義一個(gè)數(shù)組a(也可以理解為是一個(gè)map)用分隔出來的第三列作為下標(biāo)(key),值每次加一,END 后面是最后執(zhí)行的語(yǔ)句,循環(huán)輸出數(shù)組 awk命令本身很強(qiáng)大,可以全面地看一下它幫助 第四步,排序 第三步已經(jīng)完成了計(jì)算、統(tǒng)計(jì)工作,最后我們根據(jù)調(diào)用次數(shù)進(jìn)行一下排序,方便查看 這里使用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表示按數(shù)字方式排序,-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 當(dāng)然這是單臺(tái)機(jī)器的,根據(jù)應(yīng)用的機(jī)器數(shù)量,可以大致評(píng)估一下總的情況。 類似的,對(duì)于 日志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 接下來,我們?cè)倏匆粋€(gè)例子 需求:統(tǒng)計(jì)一下,denali機(jī)器中,我的淘寶首頁(yè) 這個(gè)頁(yè)面的請(qǐng)求次數(shù)和平均響應(yīng)時(shí)間 還是分幾步: 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}’
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: 從日志看出,這是支付寶回調(diào)淘寶接口的日志,格式包括:時(shí)間,訂單號(hào)、狀態(tài)、通知類型等等 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 從日志上看,這是淘寶調(diào)用支付寶的日志,格式包括:時(shí)間,接口類型,請(qǐng)求內(nèi)容等等 第二步,查找特征文本 需要分類型統(tǒng)計(jì)接口的調(diào)用次數(shù),所以特征字符串就是接口的類型文本,使用grep 命令 grep ‘,notify_action_type’ alipay-notify-success.log 第二個(gè)日志比較特殊,特征文本單獨(dú)一行,沒有固定前綴或者后綴特征,而前一行是固定的”Service Name:“,可以查找前一行,然后grep輸出的時(shí)候多輸出一行: grep ‘Service Name:’ -A1 alipay.log grep 命令有很多可選參數(shù),比如忽略大小寫,輸出前(-B before),后(-A after)行文本等等。 第三步,文本分列 通常,日志文件的一行文本,都由幾列組成,中間是分隔字符串,而我們的目標(biāo)就是找到需要的列,并進(jìn)行相關(guān)的計(jì)算,統(tǒng)計(jì),這里就需要用到 awk 命令 對(duì)于 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 后面是指定分隔符號(hào),后面是表達(dá)式,首先定義一個(gè)數(shù)組a(也可以理解為是一個(gè)map)用分隔出來的第三列作為下標(biāo)(key),值每次加一,END 后面是最后執(zhí)行的語(yǔ)句,循環(huán)輸出數(shù)組 awk命令本身很強(qiáng)大,可以全面地看一下它幫助 第四步,排序 第三步已經(jīng)完成了計(jì)算、統(tǒng)計(jì)工作,最后我們根據(jù)調(diào)用次數(shù)進(jìn)行一下排序,方便查看 這里使用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表示按數(shù)字方式排序,-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 當(dāng)然這是單臺(tái)機(jī)器的,根據(jù)應(yīng)用的機(jī)器數(shù)量,可以大致評(píng)估一下總的情況。 類似的,對(duì)于 日志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 接下來,我們?cè)倏匆粋€(gè)例子 需求:統(tǒng)計(jì)一下,denali機(jī)器中,我的淘寶首頁(yè) 這個(gè)頁(yè)面的請(qǐng)求次數(shù)和平均響應(yīng)時(shí)間 還是分幾步: 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}’
總結(jié)
以上是生活随笔為你收集整理的Linux下日志分析的几个常用命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA环境配置 ECLIPSE配置(转
- 下一篇: $('tr',grid) 是什么选择器?