搜尋
首頁後端開發php教程純手工玩 Nginx 日誌
純手工玩 Nginx 日誌Aug 08, 2016 am 09:22 AM
accessbufferlogquotrequest

Nginx 日誌對大部分人來說是個未被發掘的寶藏,總結之前做某日誌分析系統的經驗,和大家分享一下 Nginx 日誌的純手工分析方式。 Nginx 日誌相關配置有 2 個地方:access_log 和 log_format 。 預設的格式:
access_log <span>/</span>data<span>/</span>logs<span>/</span>nginx<span>-</span>access<span>.</span><span>log</span><span>;</span>log_format old <span><em>'$remote_addr [$time_local] $status $request_time $body_bytes_sent '</em></span><span><em>'"$request" "$http_referer" "$http_user_agent"'</em></span><span>;</span>
相信大部分用過 Nginx 的人對預設 Nginx 日誌格式配置都很熟悉,對日誌的內容也很熟悉。但是預設配置和格式雖然可讀,但是難以計算。 Nginx 日誌刷盤相關策略可配置:比如,設定buffer,buffer 滿32k 才刷盤;假如buffer 不滿5s 鐘強制刷盤的配置如下:
access_log <span>/</span>data<span>/</span>logs<span>/</span>nginx<span>-</span>access<span>.</span><span>log</span> buffer<span>=</span><span><em>32k</em></span> flush<span>=</span><span><em>5s</em></span><span>;</span>
這決定瞭是否實時看到日誌以及日誌對磁碟IO 的影響。 Nginx 日誌能夠記錄的變數還有很多沒出現在預設設定中:例如:請求資料大小:$request_length
傳回資料大小:$bytes_sent
請求耗時:$request_time
傳回資料大小:$bytes_sent
請求耗時:$request_time傳回資料大小:$bytes_sent請求耗時:$request_time所用序號connection目前連線發生請求數:$connection_requestsNginx 的預設格式不可計算,需要想辦法轉換成可計算格式,例如用控製字元^A (Mac 下ctrl+v ctrl+a 打出)分割每個欄位。 log_format 的格式可以變成這樣:
  • log_format new <span><em>'$remote_addr^A$http_x_forwarded_for^A$host^A$time_local^A$status^A'</em></span><span><em>'$request_time^A$request_length^A$bytes_sent^A$http_referer^A$request^A$http_user_agent'</em></span><span>;</span>

    這樣之後就透過常見的 Linux 命令列工具進行分析了:

  • 查找訪問頻率最高的 URL 和次數:

    cat access.log | awk -F ‘^A’ ‘{print $10}’ | sort | uniq -c

  • 查找目前日誌檔案 500 錯誤的存取:

    cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’

  • 查找目前日誌檔 500 錯誤的數量:

    cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | wc -l

  • 找出某分鐘內 500 錯誤存取的數量:

    cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | grep ’09:00’ | wc-l

  • 查找耗時超過 1s 的慢請求:

    tail -f access.log | awk -F ‘^A’ ‘{if($6>1) print $0}’

  • 假如只想查看某些位:

    tail -f access.log | awk -F ‘^A’ ‘{if($6>1) print $3″|”$4}’

  • 找 502 錯誤最多的 URL:

    cat access.log | awk -F ‘^A’ ‘{if($5==502) print $11}’ | sort | uniq -c

  • 查找 200 空白頁

    cat access.log | awk -F ‘^A’ ‘{if($5==200 && $8

    查看即時日誌資料流

    tail -f access.log | cat -e

  • tail -f access.log | tr '^A' '|'🎜總結🎜🎜照著這個思路可以做很多其他分析,UA最多的訪問;訪問頻率最高的IP;請求耗時分析;請求返回包大小分析;等等。 🎜這就是一個大型 Web 日誌分析系統的原型,這樣的格式也是非常方便進行後續大規模 batching 和 streaming 計算。

    以上就介紹了純手工玩轉 Nginx 日誌,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    access如何设置验证规则access如何设置验证规则Apr 10, 2024 am 10:59 AM

    Access 验证规则是一种数据验证工具,用于确保数据符合特定条件,防止输入无效数据。设置验证规则的步骤:1. 选择要设置验证规则的字段;2. 打开“字段属性”对话框并切换到“查找”选项卡;3. 在“验证规则”字段中输入验证规则;4. 在“验证文本”字段中输入不符合规则时的错误消息;5. 单击“确定”保存更改。

    microsoft access是什么软件microsoft access是什么软件Mar 03, 2023 am 11:37 AM

    microsoft access是由微软发布的关系数据库管理系统;它结合了MicrosoftJet Database Engine和图形用户界面两项特点,是Microsoft Office的系统程序之一。

    access数据库的扩展名是什么access数据库的扩展名是什么Apr 10, 2024 am 11:10 AM

    Access 数据库文件的扩展名为 .accdb,自 Microsoft Access 2007 起开始使用,用于识别包含结构化数据的容器文件,如表、查询和窗体。

    php request什么意思php request什么意思Jul 07, 2021 pm 01:49 PM

    request的中文意思为“请求”,是php中的一个全局变量,是一个包含了“$_POST”、“$_GET”和“$_COOKIE”的数组。“$_REQUEST”变量可以获取POST或GET方式提交的数据、COOKIE信息。

    access和trunk端口的区别是什么access和trunk端口的区别是什么Oct 31, 2023 pm 05:59 PM

    access和trunk端口的区别:1、Access端口用于连接终端设备,提供单个VLAN的接入,而Trunk端口用于连接交换机之间,提供多个VLAN的传输;2、Access端口只传输属于指定VLAN的数据,而Trunk端口可以传输多个VLAN的数据,并使用VLAN标签进行区分。

    access是什么软件access是什么软件Apr 10, 2024 am 10:55 AM

    Microsoft Access 是一款关系型数据库管理系统 (RDBMS),用于存储、管理和分析数据。它主要用于数据管理、导入/导出、查询/报表生成、用户界面设计和应用程序开发。Access 优势包括易用性、集成数据库管理、强大灵活、与 Office 集成和可扩展性。

    vb中怎么连接access数据库vb中怎么连接access数据库Oct 09, 2023 am 11:38 AM

    vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。详细介绍:1、引用必要的命名空间,在VB项目中,首先需要引用“System.Data`和`Microsoft.Office.Interop.Access”命名空间,以便使用ADO.NET和Access相关的类和方法,可以在VB项目的引用中添加这些命名等等。

    Python 3.x 中如何使用urllib.request.urlopen()函数发送GET请求Python 3.x 中如何使用urllib.request.urlopen()函数发送GET请求Jul 30, 2023 am 11:28 AM

    Python3.x中如何使用urllib.request.urlopen()函数发送GET请求在网络编程中,我们经常需要通过发送HTTP请求来获取远程服务器的数据。在Python中,我们可以使用urllib模块中的urllib.request.urlopen()函数来发送HTTP请求,并获取服务器返回的响应。本文将介绍如何使用

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    3 週前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

    Safe Exam Browser

    Safe Exam Browser

    Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    將Eclipse與SAP NetWeaver應用伺服器整合。

    SublimeText3 英文版

    SublimeText3 英文版

    推薦:為Win版本,支援程式碼提示!

    mPDF

    mPDF

    mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),