首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx日志配置及日志分析脚本案例

nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息 error log 则是记录服务器错误日志...Nginx 记录来自于你的 IP错误 当你设置日志级别成 debug,如果你在调试一个在线的高流量网站的话,你的错误日志可能会记录每个请求的很多消息,这样会变得毫无意义。...在events{...}配置如下内容,可以使 Nginx 记录仅仅来自于你的 IP错误日志。...坑点: 使用$uri 可以在nginx对URL进行更改或重写,但是用于日志输出可以使用$request_uri代替,如无特殊业务需求,完全可以替换。 压缩格式 日志增加了压缩的信息。....log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l 8,通过日志查看当天ip连接数,过滤重复 cat access.log | grep

2.9K41
您找到你想要的搜索结果了吗?
是的
没有找到

没想到,日志还能这么分析!

可以发现,nginx 的 access.log 日志每一行是一次用户访问的记录,从左到右分别包含如下信息: 客户端的 IP 地址; 访问时间; HTTP 请求的方法、路径、协议版本、协议版本、返回的状态码...要按时间分组,首先我们先「访问时间」过滤出来,这里可以使用 awk 命令来处理,awk 是一个处理文本的利器。...awk 命令默认是以「空格」为分隔符,由于访问时间在日志里的第 4 列,因此可以使用 awk '{print $4}' access.log 命令把访问时间的信息过滤出来,结果如下: ?...上面的信息还包含了时分秒,如果只想显示年月日的信息,可以使用 awk 的 substr 函数,第 2 个字符开始,截取 11 个字符。 ?...---- 分析 TOP3 的请求 access.log 日志,第 7 列是客户端请求的路径,先使用 awk 过滤出第 7 列的内容后,进行 sort 排序,再用 uniq -c 去重并统计,然后再使用

1.1K10

没想到,日志还能这么分析!

可以发现,nginx 的 access.log 日志每一行是一次用户访问的记录,从左到右分别包含如下信息: 客户端的 IP 地址; 访问时间; HTTP 请求的方法、路径、协议版本、协议版本、返回的状态码...要按时间分组,首先我们先「访问时间」过滤出来,这里可以使用 awk 命令来处理,awk 是一个处理文本的利器。...awk 命令默认是以「空格」为分隔符,由于访问时间在日志里的第 4 列,因此可以使用 awk '{print $4}' access.log 命令把访问时间的信息过滤出来,结果如下: 上面的信息还包含了时分秒...,如果只想显示年月日的信息,可以使用 awk 的 substr 函数,第 2 个字符开始,截取 11 个字符。..., n 表示按数值排序) 对统计的结果排序,结果如下图: ---- 分析 TOP3 的请求 access.log 日志,第 7 列是客户端请求的路径,先使用 awk 过滤出第 7 列的内容后,进行

50110

运维面试题(每日一题)

要求不能使用shell循环语句) 2、如何过滤出已知当前目录下home的所有一级目录(提示:不包含home目录下面目录的子目录及隐藏目录,即只能是一级目录)?...①mysql主从原理: 库生成两个线程,一个I/O线程,一个SQL线程; i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件; 主库会生成一个...HTTP 请求的特征一般有两种:IP 地址和 User Agent 字段。比如,恶意请求都是某个 IP 段发出的,那么把这个 IP 段封掉就行了。...12.通过robot协议以及HTTP_USER_AGENT防爬虫优化 13.配置错误页面根据错误码指定网页反馈给用户 14.Nginx日志相关优化 访问日志切割轮询、不记录指定元素日志、最小化日志目录权限...想要错误信息,应该导入日志

5K22

性能工具之linux常见日志统计分析命令

,以秒为单位(向后端建立连接开始到接受完数据然后关闭连接为止的时间) “$http_referer” - 记录哪个页面链接访问过来的(请求头 Referer 的内容 ) “$http_user_agent...反向代理服务器在转发请求的 http 头信息,可以增加 x_forwarded_for** 信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。...使用 awk 分解出Nginx access日志的信息 218.56.42.148 - - [19/Apr/2017:01:58:04 +0000] "GET / HTTP/1.1" 200 0 0.023...,我们可以日志解析出下面不同类型的信息: awk '{print $1}' access.log # IP 地址 ($remote_addr) awk '{print $3}' access.log...) awk '{print $12}' access _log # upstream响应时间 ($upstream_response_time) 我们不难发现,使用默认的域分隔符,不方便解析出请求行

2.7K30

第十章·Linux系统管理-输入输出

4.一些执行命令,我们已经知道他可能出现错误信息, 想将他直接丢弃时。 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。...若使用如下命令: #会把文件`/etc/passwd`的内容依次显示到屏幕上 [root@zls ~]# cat /etc/passwd 但如果cat命令行没有参数, 它就会标准输入读取数据, 并将其送到标准输出...而不是直接显示在屏幕上 标准追加输出重定向 >> 将命令执行的结果追加输出到指定文件 错误覆盖输出重定向 2> 将程序的错误结果输出到执行的文件,会覆盖源文件内容 错误追加输出重定向 2>> 将程序输出的错误结果以追加的方式输出到指定文件...}' |awk -F"/" '{print $1}' 127.0.0.1 192.168.69.112 ---- 案例6: 打印根分区已用空间的百分比(打印数字) [root@zls ~]# df..., 标准错误输出会直接输出终端显示, 建议在使用管道前将标准错误输出重定向。

1K40

Linux awk命令详细教程

文章还提供了如何打印指定列、过滤日志、按条件统计、指定多个分隔符、日志切割、匹配指定列和统计文件大小等实际应用示例,以及一个统计nginx日志数据的awk脚本示例。...-f scripfile: 脚本文件读取awk命令,免去命令行输入。 -o:输出文件名作为结果保存。 -c:只输出awk处理行的数量。...打印指定列 假设access.log的字段依次为ip、time、method、url、http_version、status_code、body_bytes_sent,打印每行第1、4、7列: awk...过滤日志 打印响应状态码为500或404的日志记录: awk '$9~/^(500|404)$/{print $0}' access.log 3....本文全面介绍了awk的语法和常见用法,建议在实践多思考应用场景,熟练使用必能让你在数据分析和问题排查时如虎添翼。

13710

各种日志分析方式汇总

系统日志 记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志记录的时间类型由 Windows NT/2000 操作系统预先定义。...默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx 应用程序日志 包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志记录文件错误...如果某个应用程序出现崩溃情况,那么我们可以程序事件日志中找到相应的记录,也许会有助于你解决问题。...安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表设置审核策略,以便当安全性日志满后使系统停止响应。...筛选后的结果,可以很清晰的识别用户登录信息,记录内容包括用户登录时间、登录是否成功、登录使用的账号以及远程登录时用户使用IP 地址。

5.9K71

linux文本处理三剑客之awk

​4.1特点与应用场景 awk 一门语言,类似于C语言 过滤,统计,计算 过滤,统计日志 4.2 awk内置变量 内置变量 示例 NR Number or Record 记录号,行号 NF Number...{print sum}' ​4.5 awk数组 统计日志:类似于 统计次数:统计每个ip出现次数,统计每种状态码出现次数,统计系统每个用户被攻击的次数,统计攻击者ip出现次数 累加求和:统计每个...数组专用循环,变量获取到的是数组的下标 #awk字母 会被识别为变量,如果只是想使用字符串需要使用双引号引起来 awk 'BEGIN{a[0]=oldboy;a[1]=liao; print...,array[i]}' access.log.20220304000301 |sort -rnk2 注意:使用awk统计日志,尽量精确匹配。...not enough",$1,$5,$NF}' 注意:awk使用多个条件的时候 第1个条件可以放在 ‘条件{动作}’ 第2个条件 一般使用if 面试题:统计这段语句中,单词字符小于6的单词,显示出来

76500

CDN日志过滤方法

CDN日志往往记录较大,单纯使用grep和cat无法彻底进行统计分析,这种情况下可以使用zcat和awk来进行 日志格式 腾讯云官方给出的回源日志格式如下: 请求时间、客户端IP、访问域名、文件路径、字节数...、省份编码、运营商编码、HTTP状态码、referer、Request-Time、UA、range、HTTP Method、协议标识、缓存HIT/MISS image.png Zcat使用方法 Zcat...可以直接对gz格式的文件进行查看分析,并且进行过滤日志大部分都是常用方法如下: -S:指定gzip格式的压缩包的后缀。...ip信息和具体文件: zcat *.gz|awk ‘{if ($8==404) {print $2,$4}}’| sort | uniq -c | sort -rn 3、查看访问miss状态的文件信息...client ip信息: zcat *.gz | awk ‘{print $2}’|sort|uniq -c|sort -rn 5、指定文件路径:/index.php/45.html的访问日志 zcat

1.4K20

针对Nginx日志的相关运维操作记录

: $remote_addr             远程请求使用IP地址 $remote_user             远端登录名 $time_local                 ...请求使用IP地址 %l      远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为"On",否则将得到一个"-"。...是按照空格把每一行日志拆分成若干项,其中$7对应的就是URL,当然具体对应的内容和使用nginx时设置的日志格式有关。...这样就可以通过拆分提取出IP,URL,状态码等信息。split是awk的内置函数,在此的意思是按照“?”将URL进行分割得到一个数组,并赋值给b。 COUNT[b[1]]++表示相同的接口数目加1。...}’过滤出500错误日志,然后在此基础上做统计,其思路同2类似!

1.4K100

Nginx日志配置及日志切割

Nginx日志 日志对于统计排错来说是非常有利的,Nginx日志主要分为两种: access_log(访问日志)和error_log(错误日志),通过访问日志可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息...#反向代理服务器在转发请求的http头信息,可以增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的IP服务器地址.日志格式如下: log_format porxy '$http_x_forwarded_for...Nginx通过error_log指令实现的,该指令记录服务器和请求处理过程错误信息 语法 配置错误日志文件的路径和日志级别 error_log file [level]; Default:...只有日志错误级别等于或高于level指定的值才会写入错误日志。默认值是error。...# 例子中指定了错误日志的路径为:/var/logs/nginx/nginx-error.log,日志级别使用默认的error。

1.9K50

nginx限制IP恶意调用短信接口处理方法

ip黑名单的方式: 处理方法: 一、nginx黑名单方式: 1、过滤日志访问API接口的IP,统计每10分钟调用超过100次的IP,直接丢进nginx的访问黑名单 2、具体步骤: 编写shell脚本:...access.log中正常访问API接口并在10分钟(下面是日志切割,再做个定时任务每10分钟执行一次,就可以实现了)内访问量最高的30个IP,取值如果此IP访问量大于100次,则把此IP放入黑名单 cat...给过滤掉,只筛选正常访问的 3、修改nginx.conf 在http模块加入: include denyip.conf; 重新加载nginx生效。...的访问日志,则会返回403错误: [root@xxx logs]# tail -f access.log | grep "60.184.131.6" 31268622 60.184.131.6 "-"...请求数: 处理这种情况的方法还有一种是限制单 IP 单位时间的请求数,以及单 IP 的并发连接数 此方法没有实际运用,因为感觉这种方法会误杀正常的访问用户 写一下此方法的大概配置,http模块加入: http

3.2K30

Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序

前言 有一段log日志,需日志里面分析,统计IP访问次数排序前10名,查看是否有异常攻击。...日志提取 如下日志,这段日志包含的信息内容较多,我们希望提取ip,访问时间,请求方式,访问路径(不带参数),状态码 123.125.72.61 - - [05/Dec/2018:00:00:02 +0000...可以使用 awk日志内容格式化输出,根据空格格式化输出,第一列是ip,也就是'{print $1}',其它列依次类推 awk '{print $1,$4,$6,$7,$9}' log.txt [root...次数 统计IP访问次数排序前10名,使用 sort 对内容进行排序,默认是自然顺序排序。...『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -u :就是 uniq ,相同的数据出现一行代表; -t :分隔符,默认是用 [tab] 键来分隔; -k :以哪个区间

2.3K30

Linux awk统计日志中出现过的IP(或出现次数最多的N个IP)

BEGIN语句块在awk開始输入流读取行之前被运行,这是一个可选的语句块,比方变量初始化、打印输出表格的表头等语句通常能够写在BEGIN语句块。...END语句块在awk输入流读取全然部的行之后即被运行。比方打印全部行的分析结果这类信息汇总都是在END语句块完毕,它也是一个可选语句块。...可用awk来统计固定格式日志里的一些数据,如日志中出现过所有不同的IP awk ‘{i=$1;count[i]++}END{for(i in count)print(i,count[i])}’ /var...当前WEB服务器中联接次数最多的ip地址 netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr 查看日志访问次数最多的前10个IP cat...$1}' 前五天的访问次数最多的网页 cat access_log | awk '{print $7}' | uniq -c | sort -n -r | head -20 日志里查看该ip在干嘛

1.1K20

101个shell脚本

比如, 我们可以每一分钟去查看一下日志,把上一分钟的日志过滤出来分析,并且只要请求的ip数量超过100次那么就直接封掉。 而解封的时间又规定为每半小时分析一次,把几乎没有请求量的ip给解封!..." ## 封ip block(){ ## 把日志文件ip过滤出来,去掉重复的ip,并统计ip的重复次数以及对ip进行排序,最后将结果写到一个文件 grep "$d1:" $log_file...思路:就是先df -h 然后过滤出已使用的那一列,然后再想办法过滤出百分比的整数部分,然后和85去比较,同理,inode也是一样的思路。 实现代码: #!...; 如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则>返回0给调用脚本,否则,返回52给调用脚本; 提示,在函数返回错误值给调用脚本,使用return 参考代码: #...虽然使用了一些插件但没有效果。分析访问日志,发现有几个ip访问量特别大,所以想到可以写个shell脚本,通过分析访问日志,把访问量大的ip直接封掉。

1.2K10

指定时间内网站访问次数的监控

需求说明: 在日常运维工作,为了防止一些恶意访问的行为,例如不断的请求刷流量,通过实时过滤Nginx访问日志,将单位时间内访问次数达到指定阀值的来源ip查找出来,并通过邮件报警方式及时通知运维人员!...ago" +"%H:%M:%S"` #结束时间 stop_time=`date +"%H:%M:%S"` #过滤出单位之间内的日志并统计最高ip数 tac $logfile | awk -...-1 | awk '{print $1}'` # 单位时间[1分钟]内单ip访问次数超过300次,则触发邮件报警 if [[ $ip_top -gt 300 ]];then /usr/bin/python...请求次数异常', 'utf-8').encode() # 获取系统要发送的文本内容 with open('/root/log_ip_top10', 'r') as f: line = f.readline...http://192.168.10.202:8888 200 http://192.168.10.202:8888 200 ........... 4)定时任务,由于上面脚本是监控一分钟内的日志,因此每分钟执行一次

1.5K70
领券