由于全部是静态资源,所以一开始也部署了Nginx作为HTTP服务器。日志采用默认的格式产生,一直也没太关注, 这次正好藉着博客改版,尝试分析下近期的日志,以对网站状态有个全局的了解。 扯得有点远了,还是继续分析日志吧。 错误日志分析 错误日志也叫应用程序日志,主要用于方便开发者或者运维在出问题的时候排查原因。 分析 错误日志相对于访问日志要少(废话),但从中也能找到对我们有价值的信息。 总结 通过分析一遍Nginx的日志,也学习了许多新知识,比如数据的可视化,搜索引擎的习惯以及一些XSS和SQL注入的方法等, 算是温故而知新吧。
在nginx.conf中定义的日志格式如下: http { ... 没有命令直接将日志按天分割,我们写了一个shell脚本,每日0点定时执行。 /bin/bashlogs_path="/mydata/nginx/logs/" mv ${logs_path}access-web.log ${logs_path}access-web-$(date }access-api.log ${logs_path}access-api-$(date -d "yesterday" +"%Y%m%d").log cron: 0 0 * * * /mydata/nginx /nginx.log.sh 从nginx服务器将日志数据传输到日志服务器 [root@VM_231_116_centos ~] root@10.105.83.34's password: access-power
0x00 事件 帮助朋友搭建了博客,运行过了一段时间,准备发个网站分析报告给他。 有效的数据只有 Nginx 的访问日志,于是使用决定 GoAccess 工具对这个日志进行分析, 0x01 安装 吾使用的是 CentOS,使用 yum 源进行安装即可。 $ yum -y install goaccess 其他平台可参考官方下载:https://goaccess.io/download 0x02 使用 1、确定日志格式 从 Nginx 的配置中可以查看日志文件的格式 --log-format 指定日志格式字符串。 --date-format 日志格式日期。它们都以百分号(%)开头。 --time-format 日志格式时间。它们都以百分比(%)开头。 3、查看分析文件 最后在浏览器中打开 test.html 文件,就能看到访问日志的具体分析: image.png image.png :
最终实现的功能 分析得到日志中访问ip的top20,访问地址的top20,访问客户端ua的排名,并且生成excel报表 2、思路演进 2.1、第一步读取日志 对nginx进行日志分析,首先拿到需要分析的 nginx日志文件,日志文件的内容具有固定的定义方法,每一行的日志中每一个特殊的字段都代表着具体的含义,例如: 95.143.192.110 - - [15/Dec/2019:10:22:00 +0800 ") 执行代码,查看打印的结果,控制台输出: 9692 542 9150 依次表示日志文件中的总行数、匹配错误(没有匹配到的)的行数、匹配正确的行数 2.3、第三步分析日志 利用pandas模块进行日志的分析 日志分析完了,回过头来需要的是采集到日志文件,并且定时的去进行分析,可以利用time模块得到时间并且判断,实现定时的分析,例如,每月3号的凌晨1点进行日志分析 import time if __name 2.7、可扩展方向 本文进行日志的分析算是入门之作,可以进一步扩展的方向比如:分析报表的定时消息邮件等推送,分析报表的图形化展示等等
先随便截取一个nginx标准日志: 62.173.145.171 - - [12/Jan/2020:17:23:54 +0800] "GET /vvx/000000000000.cfg HTTP/1.1 " 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0" 默认的nginx 标准日志格式如下: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer status 状态码 $body_bytes_sent 发送给客户端的文件大小 “$http_referer” 记录从哪个页面访问过来的 “$http_user_agent” 记录客户端相关信息 我们可以修改nginx 的日志输出格式 在nginx.conf文件中,默认有这样一段: #log_format main '$remote_addr - $remote_user [$time_local] "$request
缺省值为不开启此选项 -f 日志文件路径。 -s HTTP 状态码报告,为了能够更好的解析日志,选项被默认关闭。 -e 指定IP地址的访问统计。 -a 通过代理的请求统计。 ,移动指针到最底部 最简单、快速的使用方式 goaccess -f access.log 产生完整、全面统计数据的使用方式 goaccess -f access.log -a -s -b 用压缩包直接分析
利用python脚本分析nginx日志内容,默认统计ip、访问url、状态,可以通过修改脚本统计分析其他字段。 /usr/bin/python # -*- coding: utf-8 -*- """ 1.分析日志,每行日志按空格切分,取出需要统计的相应字段,作为字典的key,遍历相加 2.使用到字典的get方法, 通过定义默认值,避免miss key的错误 3.使用列表解析表达式 4.使用sorted函数排序列表 5.使用argparse传入参数 6.nginx日志格式: log_format access_log http_referer" ' '"$http_user_agent" "$request_time"' '"$upstream_addr"' '"$upstream_response_time"'; 7.日志内容 open file error:", e) if __name__ == '__main__': parser = argparse.ArgumentParser(description="传入日志文件
Web服务器的各种系统管理工作包括了多Nginx/Apache 日志的统计,python使这个任务变得极其简单,下面分享两个小脚本。 下面是在服务器的日志中统计这种现象的代码: #! 此脚本的代码能帮你从服务器日志中获取这种信息。 此脚本的代码利用循环,每次读取日志文件中的一行,这也是读取文件的常用方式。 二、检查Nginx的访问日志,统计基于每个独立IP地址的点击率 检查Nginx的日志文件,统计基于每个独立IP地址的点击率,代码如下: #! 服务器的各个IP的点击数,这是通过分析Nginx日志文件的来的.在这个脚本中我们使用正则表达式来获得并同时验证IP,这个方法避使得我们避免了字符串切分操作和长度检查,但我们却不得不负担匹配正则表达式运行的开销
Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的 统计每小时的请求数,top100的时间点(精确到小时) awk '{print $4}' access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 100 性能分析 在nginx log中最后一个字段加入$request_time 列出传输时间超过 3 秒的页面,显示前20条 cat access.log|awk '($NF > 3){print $7}'|sort
简介 针对业务需求建立用户访问行为记录,基于ELK(Elasticsearch日志检索+Logstash日志收集+Kibana查询 展示)日志处理技术,建立业务日志采集和智能分析系统,实现了对访问用户的行为跟踪和针对不同类别用户的访问热点分析 、趋势分析和对比分析。 elk-node2192.168.99.186elasticsearch + logstash 配置Nginx 日志 Nginx 默认的access 日志为log格式,需要logstash 进行正则匹配和清洗处理,从而极大的增加了logstash的压力 所以我们Nginx 的日志修改为json 格式 。 Nginx access 日志和 Nginx error 日志 http { include /etc/nginx/mime.types; default_type application
GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序 (Terminal) 即可访问。 -f --log-file 需要分析的日志文件路径。 -p --config-file 配置文件路径。 -o --output 输出格式,支持。html、json、csv。 Nginx 默认的日志格式就是 NCSA, 所以一般就选第一个就可以了。 日志格式选中 NCSA Combined Log Format 并回车后, GoAccess 分析日志完成后会在终端上显示分析结果。 GoAccess 也是支持日志格式定制的,比如现在绝大部分 Nginx 可能都会包括 vhost,即一个物理 Nginx 服务器可以支持多个域名的虚拟主机,但是 Nginx 默认的 NCSA 日志格式在
一、webalizer简介 webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。 在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。 -1.12.1/logs/access.log 需要分析的日志 LogType clf 定义了正在处理的日志类型 OutputDir /usr/local/nginx-1.12.1 -n 指定的服务器的主机名 三、webalizer基本使用 1、webalizer语法格式及参数说明 分析一个nginx的access日志,并查看index.html webalizer access_log 之所以webalizer分析速度惊人,如果日志是按天滚动的access日志,则基本在几秒内就能找出×××者IP。
如果在请求处理期间产生了内部跳转(参考另一篇nginx跳转讲述), 请求结束时的路径可能不同于原始的请求路径。 官方模块使用说明http://nginx.org/en/docs/http/ngx_http_log_module.html 配置实例说明 在nginx.conf中相关的配置指令为: log_format ,格式和缓冲区大小(nginx访问日志支持缓存)。 日志文件的路径可以包含变量(0.7.6+), 但此类日志存在一些限制: 应该拥有在目录里创建文件的权限。 写缓冲无效。 每条日志写入都会打开和关闭文件。 使用实例: open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2; nginx log_module源码分析 先关注log模块的初始化
[喵咪Liunx(6)]Nginx日志分析工具goaccess #w-blog博客 前言 哈喽大家好呀! 日志分析工具goaccess,goaccess可以对Nginx的LOG文件进行分析,对请求量,用户数量等进行可视化展示,好那么久进入我们今天的正题吧! 使用 GoAccess 可以很好的分析Nginx日志,使用 goaccess -f access_nginx.log 见下图 使用空格之后加回车即可进行分析 结果如下: 3. 总结 今天主要是讲了关于GoAccess的安装使用以及导出分析结构, GoAccess在日常查看Nginx日志分析请求量的时候确实比较好用,但是并不是很灵活,比如一些线上遇到紧急问题GoAccess很难能够直接反应出来 , GoAccess只能作为离线日志分析,在今后的博文中将会说到BELK日志消息系统,功能更强大但是会更加复杂,只是简单的对Nginx进行访问量统计.接口统计还是使用GoAccess会比较方便,那么今天的就到这里谢谢大家的支持
GoAccess简介 GoAccess 是一款开源(MIT许可证)的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序即可访问。 功能如下: 通用统计: 此面板展示了几个主要指标,比如:有效和无效请求的数量,分析这些数据所花费的时间,独立访客的情况,请求的文件,静态文件(CSS, ICO, JPG 等)的完整URL,404错误,被解析的日志文件的大小以及消耗的带宽 虚拟主机: 此面板将显示从访问日志中解析出来的不同的虚拟主机的情况。此面板仅在日志格式中启用了 %v 参数时显示。 此面板默认为开启,除非在日志格式变量中设置了参数 %e 。 日志格式 格式转换脚本在https://github.com/stockrt/nginx2goaccess/blob/master/nginx2goaccess.sh,具体内容如下 [root@VM_0
有个需求要分析nginx日志,也懒得去研究logstach之类的开源工具,干脆直接写一个脚本,自己根据需求来实现: 先看日志格式:我们跟别人的不太一样,所以没办法了: 12.195.166.35 AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.4.0.558 U3/0.8.0 Mobile Safari/534.30" 上面是我的日志格式 我当初是给正则匹配的时候单独封装一个函数的,这样就省去了下面每个函数要打开之前都要单独打开一遍文件,但是我return的时候只能用列表的形式返回,结果列表太大把我的内存耗光了,我的是32G的内存,15G的日志
使用Python分析nginx日志 专栏作者:熊球 ♚土木工程毕业,现从事web后端开发方面的工作,擅长python,flask框架等。 所以很多个人网站,或者公司都会选择使用nginx作为服务器。在使用nginx的时候,每一个http请求都会产生一条日志,通过python分析日志我们可以清楚的了解网站的pv,uv等一些重要数据。 在服务器上我们通常使用logrotate来分割当天日志进行分析, 假设我当天结束分割出的的日志名字为log20101001.gz, 我们使用python的gzip库来读取这个压缩文件所以我们可以直接使用 GET /small/v10/css/tlbs.css HTTP/1.1,当碰到这种类型的日志的时候,生成字典后通过try如果提取不到我们需要的参数就说明这条日志不需要,通过continue直接分下一条日志 ,添加分析参数只需要在in_value方法中添加各种相应的参数字段就可以。
Python如何分析Nginx的日志?1. 前言Nginx 作为高性能 Web 服务器和反向代理,广泛应用于生产环境。 运维和开发人员经常需要分析其访问日志(access.log)与错误日志(error.log),以便进行流量统计、性能优化、安全审计等工作。 Python 解析 Nginx 日志3.1 使用正则表达式解析import refrom datetime import datetime# Nginx 日志正则log_pattern = re.compile Nginx 日志分析不仅能帮助我们了解网站访问情况,还能快速发现性能瓶颈与安全风险。相比纯文本统计,可视化图表能让数据更直观、更易于决策。6. 总结使用 Python 分析 Nginx 日志的优势在于:灵活性:可根据业务需求定制分析逻辑。可扩展性:可接入数据库、可视化平台(如 Grafana、Kibana)。
【转载请注明出处】:https://cloud.tencent.com/developer/article/1636526 1、Nginx状态监控 Nginx提供了一个内置的状态信息监控页面可用于监控Nginx 2、日志分析 Nginx默认的日志格式配置可以在/etc/nginx/nginx.conf中找到 log_format main '$remote_addr - $remote_user [$time_local '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time'; 打印的日志实例 指的是从接受用户请求的第一个字节到发送完响应数据的时间,即$request_time包括接收客户端请求数据的时间、后端程序响应的时间、发送响应数据给客户端的时间 $upstream_response_time: 用于接收来自上游服务器的响应的时间 常用分析命令 /access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 10 14、查找指定时间段的日志 awk '$4 >="[25/Mar/2020:01:00
Nginx的访问日志记录每条请求的来龙去脉,通过日志可以分析出很多有用的监控信息,如下面的这些信息。 请求的响应时间。 请求到达的后端服务器的地址和端口。 请求是否存在缓存配置。 下面将会对Nginx日志分析中常见的需求进行说明。 实战需求分析 首先需要确认Nginx日志分析应该使用什么类型的工具。与筛选动态upstream管理工具的方式一样,它应该至少满足如下条件。 支持直接分析指定的日志文件,命令为“ngxtop -l“Nginx日志文件路径”;”。 智能化nginx_log_analysis 架构重构 现在除进行日志分析外,日志分析工具还需要同时满足高性能、低消耗、迭代方便等需求。 本文节选自新书《Nginx实战:基于Lua语言的配置、开发与架构详解》中对于“Nginx日志分析系统”的精彩剖析。在这一部分,更不乏关于日志远程传输、时序数据库等具体用法和实战案例。