Home Backend Development PHP Tutorial Play with Nginx logs purely manually

Play with Nginx logs purely manually

Aug 08, 2016 am 09:22 AM
access buffer log quot request

Nginx logs are an undiscovered treasure for most people. Summarizing my previous experience in building a log analysis system, I would like to share with you the purely manual analysis method of Nginx logs. There are two places for Nginx log related configuration: access_log and log_format. Default 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>
Copy after login
I believe that most people who have used Nginx are familiar with the default Nginx log format configuration and the content of the log. But the default configuration and format, while readable, is difficult to compute. Nginx log flush related strategies can be configured: For example, set the buffer and flush the disk only when the buffer is full 32k; if the buffer is less than 5 seconds, the forced flush configuration is as follows:
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>
Copy after login
This determines whether to see logs and logs in real time Impact on disk IO. There are many variables that Nginx logs can record that do not appear in the default configuration: For example: Request data size: $request_length
Return data size: $bytes_sent
Request time: $request_time
Connection number used: $ connection
Number of requests for the current connection: $connection_requestsThe default format of Nginx is not calculable. You need to find a way to convert it into a calculable format, such as using the control character ^A (ctrl+v ctrl+a under Mac) to split each field. The format of log_format can become like this:
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>
Copy after login
After that, it can be analyzed through common Linux command line tools:
  • Find the URL with the highest access frequency and the number of times:

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

  • Find the current log file for 500 bad access:

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

  • Find the number of 500 errors in the current log file:

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

  • Find the number of 500 error accesses in a certain minute:

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

  • Find slow requests that take more than 1s:

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

  • If you only want to view certain bits:

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

  • Find the URL with the most 502 errors:

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

  • Find 200 blank pages

    cat access.log | awk -F '^A' '{if($5==200 && $8 < 100) print $3″|”$4″|”$11″|”$6}'

  • View real-time log data flow

    tail -f access.log | cat -e

    or

    tail -f access.log | tr '^A' '|'

  • SummaryFollowing this idea, many other analyzes can be done, such as UA The most accessed; the IP with the highest access frequency; request time-consuming analysis; request return packet size analysis; etc. This is the prototype of a large-scale web log analysis system. This format is also very convenient for subsequent large-scale batching and streaming calculations.

    The above is an introduction to manually playing with Nginx logs, including various aspects. I hope it will be helpful to friends who are interested in PHP tutorials.

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    What are the benefits of multithreading in c#? What are the benefits of multithreading in c#? Apr 03, 2025 pm 02:51 PM

    The advantage of multithreading is that it can improve performance and resource utilization, especially for processing large amounts of data or performing time-consuming operations. It allows multiple tasks to be performed simultaneously, improving efficiency. However, too many threads can lead to performance degradation, so you need to carefully select the number of threads based on the number of CPU cores and task characteristics. In addition, multi-threaded programming involves challenges such as deadlock and race conditions, which need to be solved using synchronization mechanisms, and requires solid knowledge of concurrent programming, weighing the pros and cons and using them with caution.

    How to avoid third-party interfaces returning 403 errors in Node environment? How to avoid third-party interfaces returning 403 errors in Node environment? Apr 01, 2025 pm 02:03 PM

    How to avoid the third-party interface returning 403 error in the Node environment. When calling the third-party website interface using Node.js, you sometimes encounter the problem of returning 403 error. �...

    How to use sql if statement How to use sql if statement Apr 09, 2025 pm 06:12 PM

    SQL IF statements are used to conditionally execute SQL statements, with the syntax as: IF (condition) THEN {statement} ELSE {statement} END IF;. The condition can be any valid SQL expression, and if the condition is true, execute the THEN clause; if the condition is false, execute the ELSE clause. IF statements can be nested, allowing for more complex conditional checks.

    Unable to log in to mysql as root Unable to log in to mysql as root Apr 08, 2025 pm 04:54 PM

    The main reasons why you cannot log in to MySQL as root are permission problems, configuration file errors, password inconsistent, socket file problems, or firewall interception. The solution includes: check whether the bind-address parameter in the configuration file is configured correctly. Check whether the root user permissions have been modified or deleted and reset. Verify that the password is accurate, including case and special characters. Check socket file permission settings and paths. Check that the firewall blocks connections to the MySQL server.

    How to solve the 'Network Error' caused by Vue Axios across domains How to solve the 'Network Error' caused by Vue Axios across domains Apr 07, 2025 pm 10:27 PM

    Methods to solve the cross-domain problem of Vue Axios include: Configuring the CORS header on the server side using the Axios proxy using JSONP using WebSocket using the CORS plug-in

    How to efficiently obtain component_verify_ticket in EasyWechat 5.5? How to efficiently obtain component_verify_ticket in EasyWechat 5.5? Apr 01, 2025 pm 12:42 PM

    Get ComponentVerify in EasyWechat5.5...

    How to use Debian Apache logs to improve website performance How to use Debian Apache logs to improve website performance Apr 12, 2025 pm 11:36 PM

    This article will explain how to improve website performance by analyzing Apache logs under the Debian system. 1. Log Analysis Basics Apache log records the detailed information of all HTTP requests, including IP address, timestamp, request URL, HTTP method and response code. In Debian systems, these logs are usually located in the /var/log/apache2/access.log and /var/log/apache2/error.log directories. Understanding the log structure is the first step in effective analysis. 2. Log analysis tool You can use a variety of tools to analyze Apache logs: Command line tools: grep, awk, sed and other command line tools.

    Navicat connects to database error code and solution Navicat connects to database error code and solution Apr 08, 2025 pm 11:06 PM

    Common errors and solutions when connecting to databases: Username or password (Error 1045) Firewall blocks connection (Error 2003) Connection timeout (Error 10060) Unable to use socket connection (Error 1042) SSL connection error (Error 10055) Too many connection attempts result in the host being blocked (Error 1129) Database does not exist (Error 1049) No permission to connect to database (Error 1000)

    See all articles