shell分析http日誌

http狀態碼
1字頭----信息,服務器收到請求,須要請求者繼續執行操做
2字頭----成功,操做被成功接收並處理
3字頭----重定向,須要進一步的操做以完成請求
4字頭----客戶端錯誤,請求包含語法錯誤或沒法完成請求
5字頭----服務器錯誤,服務器在處理請求的過程當中發生了錯誤

應用日誌分析腳本

cat /usr/local/nginx/logs/access.log | awk '{print $1}' | sort | uniq -c | sort -rn

sort
選項與參數:
-f  :忽略大小寫的差別,例如 A 與 a 視爲編碼相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『純數字』進行排序(默認是以文字型態來排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的數據中,僅出現一行表明;
-t  :分隔符,默認是用 [tab] 鍵來分隔;
-k  :以那個區間 (field) 來進行排序的意思

uniq
選項與參數:
-i   :忽略大小寫字符的不一樣;
-c  :進行計數
-u  :只顯示惟一的行

提取狀態碼
cat /usr/local/nginx/logs/access.log | awk '{print $9}'

提取想要的信息
cat /usr/local/nginx/logs/access.log | grep -ioE "HTTP\/1\.[1|0]\"[[:blank:]][0-9]{3}"

grep參數詳解
-i  忽略大小寫
-o  只輸出文件中匹配到的部分
-E  進行精確的
特殊符號    表明意義
[:alnum:]    表明英文大小寫字節及數字,亦即 0-9, A-Z, a-z
[:alpha:]    表明任何英文大小寫字節,亦即 A-Z, a-z
[:blank:]    表明空白鍵與 [Tab] 按鍵二者
[:cntrl:]    表明鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:]    表明數字而已,亦即 0-9
[:graph:]    除了空白字節 (空白鍵與 [Tab] 按鍵) 外的其餘全部按鍵
[:lower:]    表明小寫字節,亦即 a-z
[:print:]    表明任何能夠被列印出來的字節
[:punct:]    表明標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:]    表明大寫字節,亦即 A-Z
[:space:]    任何會產生空白的字節,包括空白鍵, [Tab], CR 等等
[:xdigit:]    表明 16 進位的數字類型,所以包括: 0-9, A-F, a-f 的數字與字節nginx

相關文章
相關標籤/搜索