nginx日誌管理簡析

1、nginx訪問日誌放在logs/host.access.log下,並且使用main格式(還可以自定義格式)
對於main(配置在nginx.conf)格式如下定義:

#日誌文件輸出格式 這個位置相當於全局設置

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

2、查看日誌內容命令

tail -n 100 -f nginx/logs/access.log
logs目錄下的文件說明:
access.log:表示的是訪問日誌;
error.log:錯誤日誌

nginx.pid:nginx主進程id文件

3、配置nginx自定義日誌

放開1中註釋的內容:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
放開該段註釋,下面引用main日誌的配置在顯示日誌時就會顯示成對應的日誌格式信息。

新增虛擬主機:

server {
	listen 1234;
	server_name bhz.com;
	location / {
		root bhz.com;
		index index.html;
        }
access_log  logs/host.access.log  main;
}

啓動nginx服務,訪問nginx80端口默認的頁面即可,上面的代碼是自己配置的實例。注意在測試日誌時,可以不用上面的例子,同時注意瀏覽器緩存。nginx日誌分割採用的是定義日誌顯示格式,再在每個Server中分別定義自己的日誌的方式去實現的。

4、nginx日誌分割策略

我們在日常工作中,對nginx日誌的分析非常的重要,通常需要運維去對nginx的日誌進行切割和分析處理。比如實現一個定時任務,去處理nginx日誌等。
第一步:分析如何去實現日誌切分,編寫shell腳本。

第二步:定時任務對腳本進行調度:crontab -e

基本的策略是採用定時器在某個時間點執行下面的腳本。

log.sh中的內容如下:

#!/bin/sh

BASE_DIR=/usr/local/nginx
BASE_FILE_NAME=sunft.com.access.log

CURRENT_PATH=$BASE_DIR/logs
BAK_PATH=$BASE_DIR/datalogs

CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
#備份時間,時間只精確到年月日
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
#查看備份文件
echo $BAK_FILE

#備份前停掉nginx
$BASE_DIR/sbin/nginx -s stop

#移動日誌文件
mv $CURRENT_FILE $BAK_FILE

#重啓nginx
$BASE_DIR/sbin/ngin






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章