在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

玩轉Nginx日志管理:高效排查問題的終極指南

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2024-12-30 13:50 ? 次閱讀

Nginx日志對于統計、系統服務排錯很有用。Nginx日志主要分為兩種:access_log(訪問日志)和error_log(錯誤日志)。通過訪問日志我們可以得到用戶的IP地址、瀏覽器的信息,請求的處理時間等信息。錯誤日志記錄了訪問出錯的信息,可以幫助我們定位錯誤的原因。

訪問日志主要記錄客戶端的請求。客戶端向Nginx服務器發起的每一次請求都記錄在這里。客戶端IP,瀏覽器信息,referer,請求處理時間,請求URL等都可以在訪問日志中得到。當然具體要記錄哪些信息,你可以通過log_format指令定義。

錯誤日志在Nginx中是通過error_log指令實現的。該指令記錄服務器和請求處理過程中的錯誤信息。

Nginx中通過access_log和error_log指令配置訪問日志和錯誤日志,通過log_format我們可以自定義日志格式。如果日志文件路徑中使用了變量,我們可以通過open_log_file_cache指令來設置緩存,提升性能。

一、訪問日志的配置

1.log_format

log_format用來設置日志格式,也就是日志文件中每條日志的格式,具體如下:
log_format name(格式名稱) type(格式樣式)

log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" '
                '$status $uptream_status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for" '
                '$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';

$server_name:虛擬主機名稱。

$remote_addr:遠程客戶端的IP地址。

-:空白,用一個“-”占位符替代,歷史原因導致還存在。

$remote_user:遠程客戶端用戶名稱,用于記錄瀏覽者進行身份驗證時提供的名字,如登錄百度的用戶名scq2099yt,如果沒有登錄就是空白。

[$time_local]:訪問的時間與時區,比如18/Jul/201200:01 +0800,時間信息最后的"+0800"表示服務器所處時區位于UTC之后的8小時。

$request:請求的URI和HTTP協議,這是整個PV日志記錄中最有用的信息,記錄服務器收到一個什么樣的請求。

$status:記錄請求返回的http狀態碼,比如成功是200。

$uptream_status:upstream狀態,比如成功是200。

$body_bytes_sent:發送給客戶端的文件主體內容的大小,比如899,可以將日志每條記錄中的這個值累加起來以粗略估計服務器吞吐量。

$http_referer:記錄從哪個頁面鏈接訪問過來的。

$http_user_agent:客戶端瀏覽器信息

$http_x_forwarded_for:客戶端的真實ip,通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。

$ssl_protocol:SSL協議版本,比如TLSv1。

$ssl_cipher:交換數據中的算法,比如RC4-SHA。

$upstream_addr:upstream的地址,即真正提供服務的主機地址。

$request_time:整個請求的總時間。

$upstream_response_time:請求過程中,upstream的響應時間。

需要注意的是:log_format配置必須放在http內,否則會出現如下警告信息:

nginx: [warn] the "log_format" directive may be used only on "http" level in /etc/nginx/nginx.conf:9

2.access_log

access_log指令用來指定日志文件的存放路徑(包含日志文件名)、格式和緩存大小,具體如下:

access_log path(存放路徑) [format(自定義日志格式名稱) [buffer=size] [gzip[=level]] [flush=time] [if=condition] ]

#設置訪問日志
#指定日志的寫入路徑為/var/logs/nginx-access.log,日志格式使用默認的combined。
access_log /var/logs/nginx-access.log
access_log logs/access.log main;
#指定日志的寫入路徑為/var/logs/nginx-access.log,日志格式使用默認的combined,指定日志的緩存大小為32k,日志寫入前啟用gzip進行壓縮,壓縮比使用默認值1,緩存數據有效時間為1分鐘。
access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m
#關閉日志
access_log off;
#能夠使用access_log指令的字段包括:http、server、location、limit_except。

path 指定日志的存放位置。

format 指定日志的格式。默認使用預定義的combined。

buffer 用來指定日志寫入時的緩存大小。默認是64k。

gzip 日志寫入前先進行壓縮。壓縮率可以指定,從1到9數值越大壓縮比越高,同時壓縮的速度也越慢。默認是1。

flush 設置緩存的有效時間。如果超過flush指定的時間,緩存中的內容將被清空。

if 條件判斷。如果指定的條件計算為0或空字符串,那么該請求不會寫入日志。

二、錯誤日志的配置

錯誤日志主要記錄客戶端訪問Nginx出錯時的日志,格式不支持自定義。通過錯誤日志,你可以得到系統某個服務或server的性能瓶頸等。因此,將日志好好利用,你可以得到很多有價值的信息。

錯誤日志的語法:

error_log path(存放路徑) level(日志等級)

path含義同access_log,level表示日志等級,日志等級分為[ debug | info | notice | warn | error | crit ],從左至右,日志詳細程度逐級遞減,即debug最詳細,crit最少,默認是error。

error_log  logs/error.log  info;

需要注意的是:error_log off并不能關閉錯誤日志,而是會將錯誤日志記錄到一個文件名為off的文件中。正確的關閉錯誤日志記錄功能的方法如下:

#表示將存儲日志的路徑設置為“垃圾桶”。
error_log /dev/null;

error_log可以配置在main, http, mail, stream, server, location作用域。

三、日志分割

1.編寫nginx日志分割腳本

#!/bin/bash 
LOGS_PATH=/usr/local/nginx/logs 
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) 
cp ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log && >${LOGS_PATH}/access.log
cp ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log && >${LOGS_PATH}/error.log

2.設置定時任務運行腳本

$ crontab -e
0 0 * * *  /usr/local/nginx/logs/NginxLogRotate.sh

定時任務每天00:00執行腳本/usr/local/nginx/logs/NginxLogRotate.sh,實現定時自動分割Nginx日志(包括訪問日志和錯誤日志),這樣Nginx每天都會生成一個新的日志文件。

鏈接:https://www.cnblogs.com/myitnews/p/11536181.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 腳本
    +關注

    關注

    1

    文章

    390

    瀏覽量

    14879
  • nginx
    +關注

    關注

    0

    文章

    150

    瀏覽量

    12185

原文標題:玩轉Nginx日志管理:高效排查問題的終極指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    「服務器」Nginx Proxy Manager申請cloudflare泛域名

    一概述NginxProxyManager是一個基于Nginx的反向代理管理工具,它提供了一個用戶友好的Web界面,方便用戶管理和配置Nginx反向代理。主要功能包括:簡易的用戶界面:通
    的頭像 發表于 12-06 01:03 ?178次閱讀
    「服務器」<b class='flag-5'>Nginx</b> Proxy Manager申請cloudflare泛域名

    Linux高頻命令終極指南

    -f journalctl /usr/bin/bash 4、管理日志 # 空間使用 journalctl --disk-usage # 保留500M journalctl --vacuum-size
    的頭像 發表于 12-05 16:53 ?201次閱讀

    使用lsof實現對linux文件的誤刪除恢復練習

    本文記錄使用lsof實現對linux文件的誤刪除恢復練習。題目如下: 1.確保當前nginx進程運行中 2.刪除日志文件,rm -f /var/log/nginx/access.log 3.以
    的頭像 發表于 11-24 11:14 ?197次閱讀
    使用lsof實現對linux文件的誤刪除恢復練習

    機智云歷史數據導出與排查指南

    機智云歷史數據導出與排查指南在使用機智云平臺進行設備管理和數據監控時,歷史數據的導出和排查是常見的需求。機智云提供了開放的API接口,方便用戶通過編程方式導出設備歷史數據,以便進行分析
    的頭像 發表于 11-21 01:01 ?160次閱讀
    機智云歷史數據導出與<b class='flag-5'>排查</b><b class='flag-5'>指南</b>

    Air201:MQTT實用示例的終極指南

    今天我們學習的是關于Air201的MQTT實用示例的終極指南
    的頭像 發表于 11-07 19:30 ?178次閱讀
    Air201:MQTT實用示例的<b class='flag-5'>終極</b><b class='flag-5'>指南</b>

    errDump錯誤日志上報:開啟高效排查之門

    相信很多朋友都會忽視errDump錯誤日志上報,但不得不說的是技術高手都知道它真的是比較重要的一環。
    的頭像 發表于 11-02 11:52 ?334次閱讀
    errDump錯誤<b class='flag-5'>日志</b>上報:開啟<b class='flag-5'>高效</b><b class='flag-5'>排查</b>之門

    nginx日志配置方法

    access_log用來定義日志級別,日志位置。
    的頭像 發表于 10-24 17:43 ?235次閱讀

    Linux日志管理經驗總結

    日志內容,合理的日志內容(日志錨點,內容格式,等)可以為應用服務的執行記錄、問題排查提供最有力的幫助。
    的頭像 發表于 10-24 17:36 ?221次閱讀

    日志篇:模組日志總體介紹

    ?今天我們學習合宙模組日志總體介紹,以下進入正文。 一、本文討論的邊界 本文是對合宙 4G 模組, 以及 4G+GNSS 模組的日志功能的總體介紹。通過日志,可以對研發過程中,以及模組運行過程中
    的頭像 發表于 10-24 07:16 ?197次閱讀
    <b class='flag-5'>日志</b>篇:模組<b class='flag-5'>日志</b>總體介紹

    nginx中的正則表達式和location路徑匹配指南

    前言,我這里驗證的nginx-v1.23.2單機環境下的nginx中的正則表達式、location路徑匹配規則和優先級。
    的頭像 發表于 09-29 16:02 ?805次閱讀
    <b class='flag-5'>nginx</b>中的正則表達式和location路徑匹配<b class='flag-5'>指南</b>

    linux日志管理之journalctl命令

    journalctl 用來查詢 systemd-journald 服務收集到的日志。systemd-journald 服務是 systemd init 系統提供的收集系統日志的服務。
    的頭像 發表于 08-14 18:18 ?2610次閱讀
    linux<b class='flag-5'>日志</b><b class='flag-5'>管理</b>之journalctl命令

    nginx重啟命令linux步驟是什么?

      1、驗證nginx配置文件是否正確   方法一:進入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx.conf syntax is ok
    發表于 07-11 17:13

    nginx重啟命令linux步驟是什么?

      1、驗證nginx配置文件是否正確   方法一:進入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx.conf syntax is ok
    發表于 07-10 16:40

    玩轉EEPROM——全面指南

    玩轉EEPROM——全面指南 EEPROM(電可擦除可編程只讀存儲器)是一種能夠在斷電后保存數據的存儲器,廣泛應用于存儲配置參數和少量數據的場景。本文將帶您深入了解EEPROM的基礎知識、常見操作
    的頭像 發表于 07-01 09:36 ?2619次閱讀
    <b class='flag-5'>玩轉</b>EEPROM——全面<b class='flag-5'>指南</b>

    功放進入削峰保護模式?教你如何排查問

    功放進入削峰保護模式?教你如何排查問題? 功放進入削峰保護模式可能是由多種原因引起的。在排查問題之前,我們首先需要了解什么是功放的削峰保護模式。 功放的削峰保護模式是一種保護機制,旨在保護功放不受
    的頭像 發表于 02-05 10:32 ?1181次閱讀
    主站蜘蛛池模板: 午夜片在线| 亚洲第8页| 天天操夜夜做| 在线播放你懂| 好黄好硬好爽好刺激| 啪啪伊人网| www.黄色免费| 久久久久免费精品国产小说| 色婷婷资源网| 午夜理伦| 日韩视频高清| 四虎影视色费永久在线观看| 最新天堂网| 亚洲免费一| 欧美成人在线网站| 狠狠干.com| 免费看国产精品久久久久| 天天摸天天碰成人免费视频| aa黄色大片| 岛国大片在线| 国产一级做a爰片久久毛片男| 年轻人影院www你懂的| 日韩一区二区视频| 欧美+日本+国产+在线观看| 国语自产自拍秒拍在线视频 | 6080国产午夜精品| 国产精品视频久久久久| 久久天天干| 久久黄色影片| 成人理伦| 五月丁五月丁开行停停乱| 91精品久久久久含羞草| 国产午夜精品理论片免费观看| 久久精品久久久| 免费在线视频播放| 91精品国产亚洲爽啪在线影院| 黄在线看| 一级毛片视屏| 搜索黄色毛片| 日日噜噜爽爽狠狠视频| 欧美色碰碰碰免费观看长视频|