写一个查看当天nginx的错误日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个查看当天nginx的错误日志相关的知识,希望对你有一定的参考价值。

参考技术A 首先要查看nginx错误日志,我们可以用 

cat /usr/local/nginx/logs/error.log 

一查你就会发现有一大堆数据,看的眼睛都疼,那这时候呢,可以加一个管道命令,然后添加一个查询条件

cat /usr/local/nginx/logs/error.log | grep "$(date +"%Y/%m/%d")"

其中 | 就是一个管道命令,那这个命令里面我们要加的条件是什么呢?那就是查找当天的日志

于是:grep "$(date +"%Y/%m/%d")"

grep 就是查找的意思,然后date指的是当天时间,后面加上一个 +"%Y/%m/%d" 意思就是显示今天的时间有年/月/日的格式,$()这个作用就是,先将括号里面的内容完成,然后在生成一个新的命令行,比如今天日期是 2019/03/04 那执行完那一句的结果就是grep "2019/03/04"

这句执行以后,数据就显示是今天的日志了

今天的错误日志就出现了,但是如果每天都要查看一次,那每次都要打一遍那就很累了,因此就有了shell脚本这个东西。

新建一个文件,就叫做 nginx_error.sh

然后第一行输入 #!/bin/bash   (执行bash)

第二行就是注释了

第三行就是获取当天ng的错误日志,并且重定向到root目录里面的nginx.txt

保存文件,然后设置权限,chmod +x nginx.sh (给该脚本设置一个执行权限)

然后 ./nginx.sh   接着就会多出一个nginx.txt。你直接cat nginx.txt。就可以查看当天的错误日志拉

Nginx/Apache日志分析脚本

1,查看apache进程: 
ps aux | grep httpd | grep -v grep | wc -l 
2,查看80端口的tcp连接: 
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l 
3,通过日志查看当天ip连接数,过滤重复: 
cat access_log | grep "20/Oct/2008" | awk ‘{print $2}‘ | sort | uniq -c | sort -nr 
4,当天ip连接数最高的ip都在干些什么(原来是蜘蛛): 
cat access_log | grep "20/Oct/2008:00" | grep "122.102.7.212" | awk ‘{print $8}‘ | sort | uniq -c | sort -nr | head -n 10 
5,当天访问页面排前10的url: 
cat access_log | grep "20/Oct/2008:00" | awk ‘{print $8}‘ | sort | uniq -c | sort -nr | head -n 10 
6,用tcpdump嗅探80端口的访问看看谁最高 
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}‘ | sort | uniq -c | sort -nr 
<pre> 
接着从日志里查看该ip在干嘛: 
<pre lang="php"> 
cat access_log | grep 122.102.7.212| awk ‘{print $1"\t"$8}‘ | sort | uniq -c | sort -nr | less 
7,查看某一时间段的ip连接数: 
grep "2006:0[7-8]" www20060723.log | awk ‘{print $2}‘ | sort | uniq -c| sort -nr | wc -l 
==============================nginx 
log_format main ‘[$time_local] $remote_addr $status $request_time $body_bytes_sent "$request" "$http_referer"‘; 
access_log /data0/logs/access.log main; 
格式如下: 
[21/Mar/2011:11:52:15 +0800] 58.60.188.61 200 0.265 28 "POST /event/time HTTP/1.1" "http://host/loupan/207846/feature" 
通过日志查看当天ip连接数,过滤重复 
cat access.log | grep "20/Mar/2011" | awk ‘{print $3}‘ | sort | uniq -c | sort -nr 
38 112.97.192.16 
20 117.136.31.145 
19 112.97.192.31 
3 61.156.31.20 
2 209.213.40.6 
1 222.76.85.28 
当天访问页面排前10的url: 
cat access.log | grep "20/Mar/2011" | awk ‘{print $8}‘ | sort | uniq -c | sort -nr | head -n 10 
找出访问次数最多的10个IP 
awk ‘{print $3}‘ access.log |sort |uniq -c|sort -nr|head 
10680 10.0.21.17 
1702 10.0.20.167 
823 10.0.20.51 
504 10.0.20.255 
215 58.60.188.61 
192 183.17.161.216 
38 112.97.192.16 
20 117.136.31.145 
19 112.97.192.31 
6 113.106.88.10 
找出某天访问次数最多的10个IP 
cat /tmp/access.log | grep "20/Mar/2011" |awk ‘{print $3}‘|sort |uniq -c|sort -nr|head 
38 112.97.192.16 
20 117.136.31.145 
19 112.97.192.31 
3 61.156.31.20 
2 209.213.40.6 
1 222.76.85.28 
当天ip连接数最高的ip都在干些什么: 
cat access.log | grep "10.0.21.17" | awk ‘{print $8}‘ | sort | uniq -c | sort -nr | head -n 10 
224 /test/themes/default/img/logo_index.gif 
224 /test/themes/default/img/bg_index_head.jpg 
224 /test/themes/default/img/bg_index.gif 
219 /test/vc.php 
219 / 
213 /misc/js/global.js 
211 /misc/jsext/popup.ext.js 
211 /misc/js/common.js 
210 /sladmin/home 
197 /misc/js/flib.js 
找出访问次数最多的几个分钟 
awk ‘{print $1}‘ access.log | grep "20/Mar/2011" |cut -c 14-18|sort|uniq -c|sort -nr|head 
24 16:49 
19 16:17 
16 16:51 
11 16:48 
4 16:50 
3 16:52 
1 20:09 
1 20:05 
1 20:03 
1 19:55

以上是关于写一个查看当天nginx的错误日志的主要内容,如果未能解决你的问题,请参考以下文章

千峰逆战技术分享第一天 nginx错误日志文件Error.log常见错误详细说明

如何让nginx显示错误日志?

Nginx日志

502 Bad Gateway深究

Logstash整合zabbix 过滤Nginx 错误日志并进行报警

Nginx/Apache日志分析脚本