Shell典型應用Nginx之應用日誌分析

2021-07-11 13:52:43 字數 4099 閱讀 7570

nginx 日誌相關指令主要有兩條,一條是log_format,用來設定日誌格式,另外一條是access_log,用來指定日誌檔案的存放路徑、格式和快取大小,通俗的理解就是先用log_format來定義自己想用的日誌格式,然後在用access_log定義虛擬主機時或全域性日誌時 在把定義的log_format 跟在後面;

1、log_format 格式

log_format       name( 格式名字)  格式樣式(即想要得到什麼樣的日誌內容)
預設的示例:

與 http_x_forwarded_for 用以記錄客戶端的ip位址;

$remote_user :用來記錄客戶端使用者名稱;

$time_local : 用來記錄當前的訪問時間與請求的日誌時間;

$request : 用來記錄請求的url與http協議;

$status : 用來記錄請求狀態;成功是200,

$body_bytes_s ent :記錄傳送給客戶端檔案主體內容大小位元組數;

通常web伺服器放在反向**的後面,這樣就不能獲取到客戶的ip位址了,通過$remote_add拿到的ip位址是反向**伺服器的ip位址。反向**伺服器在**請求的http頭資訊中,可以增加x_forwarded_for資訊,用以記錄原有客戶端的ip位址和原來客戶端的請求的伺服器位址;

上面這個是漲宴老師的日誌例子;

2、用access_log指令日誌檔案存放路徑;

用了log_format 指令設定了日誌格式之後,需要用access_log指令指定日誌檔案的存放路徑;

access_log        path(存放路徑)                   format (自定義日誌名稱)
示例:

#access_log             logs/access.log              main;
我們用log_format 定義了乙個mylogformat的日誌 我們可以寫成這樣

access_log logs/access.log mylogformat ;

如果不想啟用日誌 :

access_log off ;

在定義日誌目錄中要注意的是,nginx程序設定的使用者和組必須有對該路徑 建立檔案的許可權,假設nginx的usr指令設定的使用者名稱 和使用者組都是www,而logs 目錄的使用者名稱和組是root,那麼日誌檔案將無法被建立;

3、nginx日誌檔案的切割:

[root@mgmserver logs]# ll

總計 48

-rw-r--r-- 1 root root 1891

09-02

14:59

192.168

.0.28

.access

.log

-rw-r--r-- 1 root root 531

09-02

13:52

192.168

.0.37

.access

.log

-rw-r--r-- 1 root root 531

09-02

13:52

192.168

.0.38

.access

.log

[root@mgmserver logs]# mv 192.168.0.28.access.log /tmp/nginx.28.log

[root@mgmserver logs]# kill -usr1 `cat /usr/local/nginx/logs/nginx.pid `

[root@mgmserver logs]# ll

總計 36

-rw-r--r-- 1 nginx root 0

09-02

15:05

192.168

.0.28

.access

.log

-rw-r--r-- 1 nginx root 531

09-02

13:52

192.168

.0.37

.access

.log

-rw-r--r-- 1 nginx root 531

09-02

13:52

192.168

.0.38

.access

.log

先把日誌拷貝出來,然後想nginx傳送訊號 ,讓nginx重新生成乙個日誌檔案;

4、nginx的壓縮輸出配置

nginx的壓縮輸出由一組壓縮指令來實現,gzip的壓縮輸出位於http 兩個大括號之間;

5、nginx自動列目錄配置;

可以在 某一虛擬主機的location /

目錄中配置自動列目錄,加上下面**:

autoindex on

; autoindex_exact_size [on

|off] #設定索引時檔案大小的單位

autoindex_localtime [on

|off ] #開啟以本地時間來顯示檔案時間的功能,預設為關

cat /opt/logs/nginx/access.log | awk ''  輸出所有ip 

cat /opt/logs/nginx/access.log | awk ''|sort | uniq -c 排序並把相同的ip取出來

cat /opt/logs/nginx/access.log | awk ''|sort | uniq -c | sort -rn |more 由大到小排列所有的ip

取出所有的狀態碼

cat /opt/logs/nginx/access.log | grep -ioe "http\/1\.[1|0]\"[[:blank:]][0-9]"
下面介紹乙個分析http狀態碼在不同區間的請求條數的指令碼:

分析日誌中http狀態碼為404,500的請求條數

46行忘記閉合了。注意

Shell指令碼典型應用

一 指令碼場景 二 實現指令碼 1 主控指令碼實現 2 系統資訊及系統狀態分析 3 nginx和mysql應用狀態分析 4 應用日誌分析 三 場景指令碼演示 四 該指令碼學習意義 1 明白shell使用用途 不懂shell能在我們的op工作中起到什麼作用,能做什麼?2 明白shell使用特性 只是侷...

shell的典型應用 shell的高亮顯示

基本格式 echo e 終端顏色 顯示的內容 結束後的顏色 例項 1 echo e e 1 66m i am handsome e 1 0m 其中 e 1 66m中的1表示設定終端顏色,如果為0則不設定終端顏色 2 echo e e 1 66m i am handsome tput sgr0 tpu...

shell 十 case的幾個典型應用

一 說明 case語句專門寫服務的 啟動指令碼的 二 案例 多種方式 rhel7的systemed的管理方式和rhel6的 etc init.d的管理方式 注意 對於既沒有通過systemd管理的,並且也沒有提供可以放到 etc init.d 下的啟動指令碼,就需要自己手動完成了!1 開發nginx...