日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux resin 查看日志命令,【转】linux:访问日志分析

發布時間:2024/7/23 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux resin 查看日志命令,【转】linux:访问日志分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作為一個程序員或項目負責人,甚至運營人員,很多人都想知道:

* 我們的項目訪問量怎么樣

* 用戶訪問高峰在什么時候

* 系統變慢的時候用戶做了哪些操作

* 用戶對哪些功能比較感興趣

* 真實用戶在服務器上的操作軌跡是什么樣的

* 系統的瓶頸在哪

* 哪些地方應該優化

* 對什么地方優化可以收益最大化

* 系統是否存在異常訪問

卻苦于無從獲得這些信息。

其實,只要合理記錄并仔細分析服務器的訪問日志,上面問題都可以找到答案。

===== 日志格式定義 =====

為了更好的復用分析工具,另外我們也需要記錄一些標準日志中沒有的信息,因此需要定義用于分析的日志格式。

如果在項目中使用了多種web服務器,只需要根據具體情況定義一種即可。

從性能方便考慮,在apache或nginx上記錄日志較好;

從分析的方便程度來說,tomcat或resin更方便一些(因為一般來說,只有動態請求會到達應用服務器,而這些請求也是我們最感興趣的)。請大家根據自身項目的情況來選擇.

==== 基本格式 ====

我們分析的access log格式如下:

執行時間 用戶標識(非必需,可以從cookie或session中獲得) 遠程主機 請求時間 請求url(是否帶參數均可)

http響應狀態 返回字節數

:!:

各種服務器記錄執行時間的單位有所不同,tomcat和nginx為毫秒,resin和apache為微秒,這個需要特別注意。

==== apache日志配置 ====

LogFormat "%D %{xxx}C %h %t \"%r\" %>s %b \"%{Referer}i\""

simple

CustomLog logs/access_log simple

%D為服務器處理該請求的時間,單位為微秒。

%{xxx}C,從cookie中取名為xxx的cookie值

==== nginx日志配置 ====

log_format simple '$request_time $cookie_xxx $remote_addr

[$time_local]'

'"$request" $status $body_bytes_sent '

'"$http_referer"';

$request_time為服務器處理該請求的時間,單位為毫秒。

$cookie_xxx,從cookie中取名為xxx的cookie值

==== tomcat日志配置 ====

prefix="localhost_access_log." suffix=".txt" pattern='%D %{xxx}s %h

%t "%r" %s %b %{Referer}i' resolveHosts="false"/>

%D為服務器處理該請求的時間,單位為毫秒。

%{xxx}s 從session中取得變量xxx的值

%{xxx}c 從cookie 中取得變量xxx的值

==== resin日志配置 ====

format='%D %{xxx}c %h %t "%r" %s %b

"%{Referer}i"'?rollover-period="1D"/>

%D為服務器處理該請求的時間,單位為微秒。

%{xxx}c,從cookie中取名為xxx的cookie值

resin日志默認的寫法在某些特定情況下會存在嚴重性能問題,導致所有線程被鎖,服務器失去響應。因此請用上面配置完全替換原有配置。resin日志格式的詳細說明,請參考http://caucho.com/resin-4.0/admin/logging.xtp#Access

logging?。

==== 獲得多次轉發的客戶端IP ====

在生產環境中,一般到應用服務器的時候,已經經過了多次轉發,如array-->apache(nginx)-->tomcat(resin),這個時候,如果我們想要在access

log中獲得用戶客戶端的原始IP,就需要做一些特殊配置。

nginx在進行轉發時,一般會設置

proxy_set_header?X-Real-IP?$remote_addr;

此時,nginx后面的服務器在配置access log時,需要將%h改為%{X-Real-IP}i

array,apache,squid在轉發時,一般都會將客戶端真實ip放到header中X-Forwarded-For,那么,他們后面的服務器在配置access

log時,需要將%h改為%{X-Forwarded-For}i

nginx作為backend server時,跟上面情形有所不同,需要做一些特殊配置:

首先,編譯時需要添加一個參數 --with-http_realip_module

然后,需要做如下設置:

設置信任ip列表,也就是負載均衡設備的ip,可以是一個或多個。然后設置保存客戶端真實IP的header變量名,一般是X-Real-IP或X-Forwarded-For,如下

set_real_ip_from?192.168.1.0/24;

set_real_ip_from?192.168.2.1;

real_ip_header?X-Real-IP;

===== 概要分析腳本 timeout.awk =====

#對于請求超時的記錄進行標記,并打印出來

#!/bin/sh

BEGIN{

#基礎單位,tomcat/apache為1設為1,resin/nginx/設為1000.

base=1

#超時閥值,建議設為300-500,單位為毫秒

valve=500

}

#剔除靜態文件請求

$7 ~ /\.[jd][hsw][ptr][m]?[l]?[\b\?]?|^\/dwr/ {

#總體統計

costTime=$1/base

sumTime+=costTime

totalCount++

if(min>costTime) min=costTime

if(max

#分布區間

if(costTime>=0 && costTime<1000)

{area01+=1}

if(costTime>=1000 && costTime<2000)

{area12+=1}

if(costTime>=2000 && costTime<3000)

{area23+=1}

if(costTime>=3000 && costTime<4000)

{area34+=1}

if(costTime>=4000 && costTime<5000)

{area45+=1}

if(costTime>=5000) {area50+=1}

#超時統計

pos=index($7,"?")

if(pos>0) {url=substr($7,0,pos-1)}

else { url=$7 }

urlCount[url]++

urlsumTime[url]+=costTime

if(costTime>valve)

{ urlTimeout[url]++ }

}

END{

printf("\n當前正在分析文件%s,共處理%s個請求,響應時間最小為-ms,最大為�ms,平均Mms\n",FILENAME,totalCount,min,max,sumTime/totalCount)

printf("\n所有請求的分布區間如下:\n")

printf("小于1秒的請求�個,占%.2f%\n",area01,area01/totalCount*100)

printf("1--2秒的請求�個,占%.2f%\n",area12,area12/totalCount*100)

printf("2--3秒的請求�個,占%.2f%\n",area23,area23/totalCount*100)

printf("3--4秒的請求�個,占%.2f%\n",area34,area34/totalCount*100)

printf("4--5秒的請求�個,占%.2f%\n",area45,area45/totalCount*100)

printf("大于5秒的請求�個,占%.2f%\n",area50,area50/totalCount*100)

printf("\n下面是請求超時嚴重的url列表,需要重點優化,當前超時設定為]ms\n",valve)

for(url in urlTimeout)?{

#超時小于等于3次,或者超時比例20%以下的不輸出

if(urlTimeout[url]>3 &&

(urlTimeout[url]/urlCount[url]>0.2)) {

printf("%-80s共處理]次,超時]次,占%3.2f%,平均耗時mms\n",url,urlCount[url],urlTimeout[url],urlTimeout[url]/urlCount[url]*100,urlsumTime[url]/urlCount[url])

}

}

}

===== 概要分析腳本 timeout.awk =====

用于生成一個日志分析概覽,可以對當前系統的性能有個大概了解,分析結果樣式如下:

執行命令

awk -f timeout.awk valve=200 base=1 datafile

其中,valve為超時的閥值,默認500ms,base根據服務器類型,tomcat/apache為1,resin/nginx為1000;

這個腳本僅分析jsp/jhtml/dwr請求,不統計對靜態資源的請求。

===== 分析命令 =====

下面在分析核心爆破英語項目時,一些我常用的分析命令,等有時間了再整理為一個工具,也歡迎大家貢獻自己的想法。

下面命令僅適用于tomcat和nginx日志,如果是apache或resin日志,請將$1>10替換為$1>10000,這個條件主要用于過濾靜態請求。

cost time 10 大 url

awk '$1>10 {print $0}' localhost_access_log.2010-05-21.txt |awk

'{print $7}'|awk -F? '{print $1}'|sort|uniq -c|sort -rbg|sed

10q

訪問量10大時間點(分鐘)

awk '$1>10 {print $0}' localhost_access_log.2010-05-21.txt |awk

'{print $4}'|awk -F: '{print $2":"$3}'|sort|uniq -c|sort -rbg|sed

10q

10大ip (訪問量最大)

awk '$1>10 {print $0}' localhost_access_log.2010-05-21.txt|awk

'{print $3}'|sort|uniq -c|sort -rbg|sed 10q

url時間點分布 (指定URL 訪問量 按分鐘)

awk '$7~"startLinker.jhtml" {print $0}'

localhost_access_log.2010-05-21.txt |awk '{print $4}'|awk -F:

'{print $2":"$3}'|uniq -c

指定ip時間點分布 (指定IP 訪問量 按分鐘)

awk '$1>10 {print $0}' localhost_access_log.2010-05-21.txt |grep

'192.168.30.21\b' |awk '{print $4}'|awk -F: '{print $2":"$3}'|uniq

-c

指定時間點url分布 (具體某一分鐘)

awk '$1>10 {print $0}' localhost_access_log.2010-05-21.txt|grep

'12:45'|awk '{print $7}'|awk -F? '{print $1}'|sort|uniq -c|sort

-bg

根據用戶名查找登錄過的ip

awk '{print $2" "$3}' localhost_access_log.2010-05-21.txt |grep

's01o050'|awk '{print $2}'|sort|uniq

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的linux resin 查看日志命令,【转】linux:访问日志分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。