|NO.Z.00007|——————————|^^ 构建 ^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V3|
Posted yanqi_vip
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了|NO.Z.00007|——————————|^^ 构建 ^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V3|相关的知识,希望对你有一定的参考价值。
一、AWK、Sed、Grep分析nginx日志;### --- AWK、Sed、Grep分析Nginx日志;
~~~ 作为运维人员,在企业中日志内容主要用于拍错,定问题,根据日志内容错误提示,
~~~ 能够第一时间去定位问题,拍错问题,从而快速的解决问题,降低企业的损失。
~~~ 其实日志内容出了用于运维人员,开发人员,DBA排错之外,
~~~ 换可以对日志内容进行分析,统计,评估,
~~~ 从而掌握门户网站IP、PV、UV、访问量,资源分配,使用情况等。
### --- AWK、Sed、Grep分析Nginx日志;
### --- cd到nginx的日志目录
[root@localhost nginx]# cd /var/log/nginx/
[root@localhost nginx]# ll
-rw-rw-r-- 1 nginx root 1527988 Nov 3 22:13 access.log
-rw-r--r-- 1 root root 34543 Oct 31 11:45 access.log-20201031.gz
-rw-rw-r-- 1 nginx root 47309 Nov 1 10:12 access.log-20201101.gz
-rw-rw-r-- 1 nginx root 87592 Nov 2 13:24 access.log-20201102.gz
-rw-rw-r-- 1 nginx root 46903 Nov 3 12:41 access.log-20201103.gz
-rw-rw-r-- 1 nginx root 0 Nov 2 13:25 error.log
-rw-r--r-- 1 root root 1488 Oct 30 13:20 error.log-20201031.gz
-rw-rw-r-- 1 nginx root 299 Nov 1 18:11 error.log-20201102.gz
### --- 每一条都是一个用户的访问请求;
[root@localhost nginx]# more access.log
192.168.1.101 - - [03/Nov/2020:12:41:22 +0800] "POST /zabbix.php?action=notifications.get&sid=a2c13a51c1e3ec42&output=ajax HTTP/1.1" 200 436 "http://192.168.1.59/zabbix.php?action=da
shboard.view&ddreset=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
二、基于SHELL编程三剑客Awk、Sed、Grep分析线上Nginx的日志,
### --- 统计当天,总的用户访问量:
### --- 基于SHELL编程三剑客Awk、Sed、Grep分析线上Nginx的日志,
### --- 分析和统计Nginx全天总的请求数(访问量)操作的指令和方法如下:
[root@localhost nginx]# awk print $0 access.log |wc -l // 统计我们当天用户访问量; 单引号表示命令段,大括号把命令括起来,表示一个动作,print打印动作,$0表示文本所有内容,wc 统计,-l打印行号
3884
[root@localhost nginx]# sed = access.log|tail -2 // sed = 是显示行号的,tail -2表示显示最后两行
3884
192.168.1.101 - - [03/Nov/2020:22:22:45 +0800] "POST /zabbix.php?action=notifications.get&sid=a2c13a51c1e3ec42&output=ajax HTTP/1.1" 200 436 "http://192.168.1.59/hosts.php?ddreset=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
[root@localhost nginx]# sed = access.log|tail -2 |head -1 // head -1 表示第一行
3884
[root@localhost nginx]# sed = access.log|tail -2 |head -1
3884
[root@localhost nginx]# wc -l access.log|cut -d "" -f1 // -f1便是fire字段
3884 access.log
[root@localhost nginx]# awk ENDprint NR access.log
3884
三、基于SHELL编程三剑客Awk、Sed、Grep分析线上Nginx的日志,
### --- 基于SHELL编程三剑客Awk、Sed、Grep分析线上Nginx的日志,
### --- 分析和统计Nginx全天09:00~11:00之间总的请求数(访问量)操作的指令和方法如下:
### --- 范围 head表示前5条,tail表示末尾5条
[root@localhost nginx]# awk /2020:09:00/ access.log|more
[root@localhost nginx]# sed -n /2020:09:00/p access.log|more
[root@localhost nginx]# grep -aiw 2020:12:41 access.log|more
[root@localhost nginx]# sed -n /2020:12:41/,/2020:12:00/p access.log|head -5
[root@localhost nginx]# awk /2020:12:41/,/2020:12:00/ access.log|wc -l
四、基于SHELL编程三剑客Awk、Sed、Grep分析线上Nginx的日志,
### --- 基于SHELL编程三剑客Awk、Sed、Grep分析线上Nginx的日志,
### --- 分析和统计Nginx全天09:00~11:00之间总的请求数(访问量),将IP地址打印出来,
### --- 同时将前20名的IP地址打印,将访问次数超过500的IP加入linux的黑名单;操作的指令和方法如下:
### --- 都属于正则表达式:
### --- 将09:00~11:00的IP地址打印出来;
[root@localhost nginx]# sed -n /2020:12:41/,/2020:12:00/p access.log|awk print$1|more
192.168.1.101
192.168.1.59
[root@localhost nginx]# sed -n /2020:12:41/,/2020:12:00/p access.log|grep -oE "([0-9]1,3\\.)3[0-9]1,3"|more
192.168.1.101
192.168.1.59
### --- 将访问次数超过500次的IP加入linux的黑名单:
~~~ sort -n正向排序;uniq -c去重并统计,sort -nr 逆向排序,head -20 打印20名;
root@localhost nginx]# sed -n /2020:12:41/,/2020:12:00/p access.log|grep -oE "([0-9]1,3\\.)3[0-9]1,3"|sort -n|uniq -c|sort -nr|head -20 //打印访问量排前20名的IP地址;
3964 192.168.1.101
3961 192.168.1.59
### --- 打印访问次数超过500次的用户地址;
[root@localhost nginx]# sed -n /2020:12:41/,/2020:12:00/p access.log|grep -oE "([0-9]1,3\\.)3[0-9]1,3"|sort -nr|uniq -c|sort -nr|awk if(($1>500)) print$2
192.168.1.101
192.168.1.59
### --- 访问量超过500次的加入IPtables防火墙黑名单:(IPtable)
### --- $ip/32表示IP地址,IPtable规则
[root@localhost nginx]# for ip in $(sed -n /2020:12:41/,/2020:12:00/p access.log|grep -oE "([0-9]1,3\\.)3[0-9]1,3"|sort -nr|uniq -c|sort -nr|awk if(($1>500)) print$2);do iptable -t filter -A INPUT -s $ip/32 -m tcp -p tcp --dport 80 -j DROP ;done
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warmd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
以上是关于|NO.Z.00007|——————————|^^ 构建 ^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V3|的主要内容,如果未能解决你的问题,请参考以下文章