Nginx web日志分析

在企业服务器运维中,当 Nginx服务器正常运行后,SA会经常密切关注 Nginx的即时日志,发现有异常的日志信息需要进行及时处理。
Nginx默认日志路径/usr/local/nginx/logs/,其中包含访问日志accesss.log和错误记录日志error. log,查看 Nginx请访同目志cat/usr/local/nginx/logs/access. log,由于我们配置了两个虚拟主机,这两个虚拟主机的日志文件分别为yunwei1.log以及yunwei2.log,查看yunwei1.log日志如下。
Nginx web日志分析_第1张图片

由于记录每一个对第一个虚拟主机的访问,内容会比较多
查看error.log,内容如下
Nginx web日志分析_第2张图片

Nginx访问日志打印的格式可以自定义,例如 Nginx日志打印格式配置, log_format用来设置日志格式,name为模块名,type为日志类型,可以配置多个日志模块,分别供不同的虚拟主机日志记录所调用,代码如下:
log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “KaTeX parse error: Double superscript at position 33: … '̲status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer” ’
‘“ h t t p u s e r a g e n t " " http_user_agent"" httpuseragent""http_x_forwarded_for”’;
Nginx日志格式内部变量及函数参数说明如下
$remote_addr:记录客户端IP地址
$server_name:虚拟主机名称
$http_x_forward_for : Http请求端真实的IP
$remote_user:记录客户端用户名称
$request:记录请求的URL和HTTP协议
$status:记录返回HTTP请求的状态。
$uptream_status: upstream的状态
$ssl_protocol:SSL协议版本。
$body_bytes_sent: 发送给客户端的字节数,不包括响应头的大小
$bytes_sent:发送给客户端的总字节数
$connection_requests:当前通过一个连接获得的请求数量
$http_referer:记录从哪个页面链接访问过来的,
$http_user_agent:记录客户端浏览器相关信息
$msec;日志写入时间
$request_length请求的长度,包括请求行、请求头和请求正文
$request_time:请求处理时间,单位为s,精度为ms, Nginx接受用户请求的第一个字节到发送完响应数据的时间,包括接收请求数据时间、程序响应时间,输出、响应数据时间
$upstream_response_time:应用程序响应时间, Nginx向后端服务建立连接开始到接受完数据然后关闭连接为止的总时间。
通过 Nginx日志,可以简单分析Web网站的运行状态、数据报表,IP,UV( uniquePV(page view)访问量等需求,以下为常用需求分析
通过 Nginx日志,可以简单分析Web网站的运行状态、数据报表,IP,UV( unique
PV(page view)访问量等需求,以下为常用需求分析
(1)统计Nginx服务器独立IP数,代码如下:
awk ‘{print $1}’ access.log | sort -r | uniq -c | wc -l
(2)统计 Nginx服务器总PV量,代码如下:
awk ‘{print $7}’ access.log | wc -l
3)Nginx服务器UV统计,代码如下

(4)分析 Nginx访问日志截至目前为止访问量前20的IP列表,代码如下:
awk‘{print s1}’ access.log | sort luniq-c | sort -nr | head-20
(5)分析 Nginx访问日志早上9点至中午12点的总请求量,代码如下
sed -n “/09:00/,/12:00/”p access.log
awk ‘/09:00/,/12:00/’ yunwei1.log | wc -l
(6)分析 Nginx访问日志总的独立IP数,代码如下:
awk ‘{print $1}’ access.log | sort | uniq -c | wc -1
(7)分析 Nginx访问日志截至目前为止访问量前20的IP列表,代码如下:
awk ‘{print $1}’ access. log | sort | uniq -c | sort -nr | head -20
(9)分析 Nginx访问日志状态码404、502、503、500、499等错误信息页面,打印错误出现次数大于20的IP地址,代码如下:
awk ’ {if ($9~/502|499|500|503|404/) print $1, $9)’ , access.log | sort | uniq -c | sort -nr | awk ‘{if($1>20) print $2}’
(10)分析 Nginx访问日志访问最多的页面,代码如下:
awk ‘{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 7}̲' yunwei1.log…NF> 5) print $NF, $7, $1}’ access.log | sort -nr | more

你可能感兴趣的:(Nginx web日志分析)