当前位置:首页 > 技术文章 > 正文内容

Nginx日志分析&EFK案例实战之Awk、Sed、Grep分析Nginx日志

arlanguage3个月前 (01-31)技术文章27

1)在Linux服务器系统上日志种类很多:内核日志、安全日志、审计日志、邮件日志、应用程序(Nginx、MYSQL、Redis、MQ、ZK)日志等。日志内容通常是用于去定位软件服务、操作系统故障的,还可以对日志内容进行分析、统计,进而可以评估网站的访问量、IP、UV、PV、用户行为分析等。

2)基于SHELL编程三剑客awk、sed、grep分析Nginx日志,首先通过find工具去查找Nginx日志文件的位置。操作的方法和指令如下:

#查找Linux系统上以.log结尾的日志文件位置;

find / -name "*.log"

#查找Linux系统上以.log结尾的日志文件位置,以access开头的;

find / -name "*.log" -a -name "access*"

#查找Linux系统上以.log结尾的日志文件位置,以access开头的,排除access.log文件;

find / -name "*.log" -a -name "access*" -a ! -name access.log

#查找Linux系统上以.log结尾的日志文件位置,以access开头的,排除access.log文件,文件修改时间是60天之前的;

find / -name "*.log" -a -name "access*" -a ! -name access.log -a -mtime +60

#查找Linux系统上以.log结尾的日志文件位置,以access开头的,排除access.log文件,文件修改时间是60天之前的,文件大小超过200M的;

find / -name "*.log" -a -name "access*" -a ! -name access.log -a -mtime +60 -a -size +200M

#查找Linux系统上以.log结尾的日志文件位置,以access开头的,排除access.log文件,文件修改时间是60天之前的,文件大小超过200M的,将其拷贝至/tmp/目录;

for i in $(find / -name "*.log" -a -name "access*" -a ! -name access.log -a -mtime +60 -a -size +200M);do \cp $i /tmp/ ;done

find / -name "*.log" -a -name "access*" -a ! -name access.log -a -mtime +60 -a -size +200M -exec \cp {} /tmp/ \;

find / -name "*.log" -a -name "access*" -a ! -name access.log -a -mtime +60 -a -size +200M |xargs -I {} \cp {} /tmp/



3)Nginx WEB日志实战一,基于SHELL编程三剑客awk、sed、grep分析Nginx日志,分析、统计Nginx日志全天总的请求数(访问量),操作的方法和指令如下:

awk '{print $0}' access_20240523.log |wc -l

cat access_20240523.log |wc -l

wc -l < access_20240523.log

awk 'BEGIN{NR==1} END {print NR}' access_20240523.log

sed = access_20240523.log |tail -2|awk 'NR==1 {print $0}'

grep -aicwE " " access_20240523.log



4)Nginx WEB日志实战二,基于SHELL编程三剑客awk、sed、grep分析Nginx日志,分析、统计Nginx日志10:00-11:00之间的总的请求数(访问量),操作的方法和指令如下:

awk '/23\/May\/2024:10:00/' access_20240523.log |wc -l

sed -n '/23\/May\/2024:10:00/p' access_20240523.log |wc -l

grep -aiE '23\/May\/2024:10:00' access_20240523.log |wc -l

awk '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/' access_20240523.log |wc -l

sed -n '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/p' access_20240523.log |wc -l



5)Nginx WEB日志实战三,基于SHELL编程三剑客awk、sed、grep分析Nginx日志,分析、统计Nginx日志10:00-11:00之间的总的请求数(访问量),将用户的IP地址打印出来,操作的方法和指令如下:

sed -n '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/p' access_20240523.log |awk '{print $1}'

sed -n '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/p' access_20240523.log |cut -d" " -f1

sed -n '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/p' access_20240523.log |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"



6)Nginx WEB日志实战四,基于SHELL编程三剑客awk、sed、grep分析Nginx日志,分析、统计Nginx日志10:00-11:00之间的总的请求数(访问量),将用户的IP地址访问次数排前20名打印出来,操作的方法和指令如下:

sed -n '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/p' access_20240523.log |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|awk 'NR<=20 {print $0}'



7)Nginx WEB日志实战五,基于SHELL编程三剑客awk、sed、grep分析Nginx日志,分析、统计Nginx日志10:00-11:00之间的总的请求数(访问量),将用户的IP地址访问次数超过5000次加入Linux黑名单中,操作的方法和指令如下:

for ip in $(sed -n '/23\/May\/2024:10:00/,/23\/May\/2024:11:00/p' access_20240523.log |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|awk '{if(($1>=5000)) {print $2}}');do iptables -t filter -A INPUT -s $ip/32 -m tcp -p tcp --dport 80 -j DROP ;done

iptables -t filter -L -n --line-numbers|grep -aiE "DROP"

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1550.html

标签: nginx访问量
分享给朋友:

“Nginx日志分析&amp;EFK案例实战之Awk、Sed、Grep分析Nginx日志” 的相关文章

Nginx+keepalived实现高可用 nginx和keepalived如何搭建高可用集群

Nginx一般用来做服务网关,虽然Nginx的性能非常高,但是还是有宕机的风险,所以Nginx的高可用也是我们需要考虑的。常见的Nginx的高可用方案是使用keepalived浮动IP技术来实现。通过keepalived虚拟一个vip出来作为虚拟网关,所有请求都先通过虚拟网关找到真正网关,再往下走。...

nginx 常见错误

1.启动报错报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory32位系统 [root@sever...

Nginx 问题以及对应的解决方案

1. Nginx 无法启动当 Nginx 无法启动时,通常是由于以下几个原因导致的:配置文件有误。可以通过运行 nginx -t 命令检查配置文件是否存在语法错误。端口被占用。可以通过运行 netstat -tlnp 命令查看当前系统中占用该端口的进程,并将其停止或更改端口。缺少权限。Nginx 可...

高端Linux 脚本很有用,赶紧学起来!

Linux 脚本?准确的说叫 Linux Shell 脚本,Shell 脚本是一种被设计用来运行命令行解释器,他是 Linux 系统的一大特色之一。命令行是 Linux 系统中一种非常重要的交互方式,而它的实现基于 Linux 内核和 Shell 程序,为用户提供了强大和灵活的操作方式。使用 Lin...

WordPress切换到Nginx服务器教程

这几天将几个WordPress的Web服务器从Apache切换到了Nginx,中间遇到了不少问题,因此记录一下,以便日后维护使用。对于WordPress站点来说,固定链接主要是通过根目录下的.htaccess文件来控制,切换服务器后,Nginx的rewrite格式和Apache的不同,需要修改。先卸...

面试常问知识点:Nginx设置代理的一个注意点

前几天,重启了下Nginx代理服务,发现报错了,以下是本次的思考。1:先解决问题查看Nginx错误日志:40 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handsha...