Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的 IP访问量(4-5点) grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc - l 查看访问最频繁的前100个IP awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 100 查看访问100次以上的 IP awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn 查询某个IP的详细访问情况 uniq -c|sort -nr|head -n 100 性能分析 在nginx log中最后一个字段加入$request_time 列出传输时间超过 3 秒的页面,显示前20条 cat access.log
当网站出问题时分析日志,第一步一般都不会是看访问日志。但是也不能忽视它,在访问日志中记录了很多的客户信息,如果你有心,可以从这个日志中获得很多有用的信息! 访问日志access_log记录了所有对Web服务器的访问活动。 正如其名字所示,访问日志access_log记录了所有对Web服务器的访问活动。 (建议最好不要打开,会影响Apache记录服务器日志的速度) 第二项是空白,用一个"-"占位符替代。实际上绝大多数时候这一项都是如此。 但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。 第四项是请求的时间。这个信息用方括号包围,而且采用所谓的"公共日志格式"或"标准英文格式"。 把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。 第八项记录的是客户在提出请求时所在的目录或URL。
移动推送、BI、云数仓Doris、ES、数据湖DLC、WeData、流计算Oceanus,多款产品助您高效挖掘数据潜力,提升数据生产力!
那就是从基于网关 access 日志统计分析转化到具体的场景中的通用业务模型。 详细的介绍请参考《性能测试实战30讲》 中的 【14丨性能测试场景:如何理解业务模型?】 通用业务场景模型。 二、前置工作 首先我们从高峰日取出一天的网关 access 日志,这里示例大概有 1400+ 万的记录 [root@k8s-worker-4 ~]# wc -l access.log 14106419 access.log 至于网关 access 日志如何配置,可以参看之前的文章 SpringCloud 日志在压测中的二三事 我们得到的 access 日志内容一般如下: 10.100.79.126 那么,我们的需求来了,如何通过分析 access 日志,获取每个接口网关处理时间最大值、最小值、平均值及访问量。这里我扩展了获取每个接口网关处理时间的统计分析,方便我们对接口的性能评估。 logdir="D:\log" #存放统计所需的日志相关字段 logfile_format=os.path.join(mulu,"access.log") print ("read from logfile
默认,access日志路径是. /logs/access.log, 默认的日志格式为combined格式; 使用log_format指令可以自定义日志格式; 语法 log_format name [escape=default|json none] string ...; escape参数(1.11.8)设置变量的字符转义,json或default风格;默认使用default风格;none关闭转义; 示例,自定义compression日志格式 '"$http_referer" "$http_user_agent" "$gzip_ratio"'; server { gzip on; access_log /spool/logs/nginx-access.log compression; ... } } 默认的combined格式为 log_format combined '$remote_addr
PHP-FPM的错误日志建议打开,这样可以看到PHP的错误信息: 一般是这个配置路径 /etc/php/7.3/fpm/pool.d/www.conf,日志目录如果需要自己建立PHP目录,一定要把权限赋给 www-data用户,否则没有创建目录的权限,就无法记录日志 chown www-data:www-data /var/log/php/ php_flag[display_errors] = on php_admin_value [error_log] = /var/log/php/www.error.log php_admin_flag[log_errors] = on 还可以把php的access日志也打开,是在同一个配置文件中 access.log = /var/log/php/www.access.log 最后还有一个慢日志的记录也可以打开 slowlog = /var/log/php/www.log.slow request_slowlog_timeout
那么我们nginx access日志记录中,就会有大量的重复的css和js文件的日志记录。 2.2 日志筛选map 我们在access_log 日志下 添加一个map对象; 配置传参为uri,默认为通过返回1,如果匹配到以下的正则表达式.*. (gif|jpg|jpeg|png|bmp|swf|js|css|svg|woff|ttf)$) 0; } access_log /var/log/nginx/access.log main if 这个时候我们的access日志就会将以上数据的请求给过滤掉。 配置完毕后,我们的access日志将会少很多日志。 PS:建议养成log日志的阅读习惯。因为日志文档会记录服务器的各种状态。我们可以根据数据进行及时修复和优化服务器配置。
Module ngx_http_log_module nginx 日志相关指令主要有两条, 一条是log_format,用来设置日志格式, 另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小 通俗的理解就是先用log_format来定义自己想用的日志格式,然后在用access_log定义日志时再把定义的log_format名称 跟在后面; 1、log_format 格式 log_format name(格式名字) string(格式样式即想要得到什么样的日志内容) 示例: log_format access '$remote_addr - $remote_user [$time_local 指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径; access_log path(存放路径) access(自定义日志名称,和log_format设置的名称一致) 示例: access_log logs/access.log access; 注意: 在定义日志目录中要注意的是,nginx进程设置的用户和组必须有对该路径创建文件的权限, 假设nginx的usr指令设置的用户名
1.安装GoAccess 工具可以直接使用 apt-get install goaccess 2.使用goaccess命令将日志生成html文件 goaccess 日志路径 -o 输出HTML的路径 - --time-format 时间格式 --date-format 日期格式 --log-format 用于指定日志字符串格式 命令执行完后开启一个websocket服务用来实时更新日志数据 server { listen 8080; server_name localhost; access_log logs/proxy.access.log proxy; location /report.html{ alias /home 至此日志数据图形化完成,更多使用方式请访问官网 GoAccess中文网
由于在调试时需要查看access_log日志,但是springboot默认并没有开启,因此查看了一下文档,在springboot的配置文件中添加如下设置,即可将日志输出当磁盘文件中以供查看。 #日志开关 server.tomcat.access-log-enabled=true #日志格式 server.tomcat.access-log-pattern=%h %l %u %t "%r" % s %b %D #日志输出目录,这里是设置为当前目录下 server.tomcat.basedir=
一、案例分析 公司为了每天都能够随时看到公司WEB业务的实时运行情况,希望运维通过分析access.log日志信息,实时展示一下数据给公司的运营部门: 统计不同返回值的数量 统计访问前5名的IP地址 统计每日 二、nginx access_log定义json格式日志 部署nginx 设置nginx 访问日志为json格式 a、部署nginx服务 [root@node4 ~]# tar xf nginx-*.rpm 由于ES是基于json来处理数据的,所以给ES的数据就必须是JSON数据,只有这样才能通过json将数据进行分析、统计。 为了能让ES能分析access.log日志,我们让nginx直接将该日志的格式设置为json格式。 logs/access.log main_json; 三、日志收集 filebeat设置-修改配置文件定义日志收集 [root@node4 ~]# egrep -v "(#|^$)" /etc/filebeat
统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) grep "07/Apr/2017:0 [4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l 查看访问最频繁的前100个IP awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 100 查看访问100次以上的IP awk '{print $1}' access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 100 性能分析 在nginx log中最后一个字段加入$request_time 列出传输时间超过 3 秒的页面 -100 蜘蛛抓取统计 统计蜘蛛抓取次数 grep 'Baiduspider' access.log |wc -l 统计蜘蛛抓取404的次数 grep 'Baiduspider' access.log
四、Windows日志实例分析 在Windows日志中记录了很多操作事件,为了方便用户对它们的管理,每种类型的事件都赋予了一个惟一的编号,这就是事件ID。 1. 五、WEB日志文件分析 以下列日志记录为例,进行分析: #Software: Microsoft Internet Information Services 6.0 #Version: 1.0 sxjyzx/2.gif - 80 - 192.168.99.236 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1) 200 0 0 分析 表示程序有错; sc-substatus 服务端传送到客户端的字节大小; cs–win32-statu客户端传送到服务端的字节大小; 1**:请求收到,继续处理 2**:操作成功收到,分析 有时是为了防止发生系统过载 503——服务器过载或暂停维修 504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长 505——服务器不支持或拒绝支请求头中指定的HTTP版本 FTP日志分析
前言 前边介绍了apache服务器下的访问日志与错误日志的介绍查看与简单的分析 那么本篇介绍一下在nginx服务器的的两种日志的查看。 从而找到,我机子的两个日志存放地点: /var/logdata/nginx/access.log /var/logdata/nginx/error.log 查看access访问日志 vi /var/logdata /nginx/access.log ? 访问日志分析 摘出来一段部分结果: 100.109.195.91 - - [17/Feb/2017:00:08:11 +0800] "GET /data/upload/shop/common/loading.gif 错误日志同理, vi /var/logdata/nginx/error.log 关于错误日志的查看,这里就不多赘述。
一、访问日志信息 当浏览器请求服务器时,如果在服务器上设置了访问日志,就会记录下用户的访问记录。 但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。 (4)日志记录的第四项是请求的时间。这个信息用方括号包围,而且采用“公用日志格式”或者“标准英文格式”。 (5)日志记录的第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器受到的是一个什么样的请求。 它告诉我们传输是否被打断(即该数值是否和文件的大小相同) 二、配置访问日志 在apache的配置文件httpd.conf中,有一行是这么配置的: CustomLog "logs/access.log" common 指定了日志的目录路径.
那么日志文件的地址和日志文件的配置可以在nginx.conf中看到。 而且,Nginx默认就会帮我们开启运行日志记录和错误日志记录这两种情况。这里我们先了解运行日志 access_log 吧。 而access_log 日志在http标签内。有两个配置项定义了access_log 日志,效果如下: http { .... PS:access.log日志默认缓存了4+31+16 = 51天+今天=52天的日志。 之后会分享如何配置自己的nginx拦截 2.3 自定义日志Format格式 通过上面的分析,我们可以知道nginx默认的log日志有很多参数已经过时了,或者大概率取不到。 等几秒之后,我们再阅读access.log文件就可以看到我们配置后格式的日志清单了。 3. 小结 主要介绍了access的一些基本情况和日志内容的阅读。 这里只是介绍了,如何阅读日志。
request->ip(), 'rq_time' => sprintf("%.2f", $rq_time), ]; logger()->channel('access ConvertEmptyStringsToNull::class, \App\Http\Middleware\AccessLog::class ]; 增加一下配置 config/logging.php 'access ' => [ 'driver' => 'daily', 'path' => env('LOG_PATH_ACCESS', storage_path('logs /access/laravel.log')), 'level' => env('LOG_LEVEL', 'debug'), 'days' => 14,
GC 日志分析 首先,如果需要查看 GC 日志,需要在 jvm 参数中加入如下参数 -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:d:/GClogs /tomcat6-gc.log GC 日志 2016-11-23T11:01:27.738+0800: 0.150: [GC [PSYoungGen: 331K->288K(5952K)] 331K- PSPermGen: 3060K->3060K(21248K)], 0.0052429 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] Young GC 日志 image Full GC 日志分析 ? image JVM 参数设置 jvm 参数对应堆内存设置 ? image 比例设置 ? 32M) -XX:MaxGCPauseMillis=500 :设置最大暂停时间(毫秒) -XX:+DisableExplicitGC:禁止显示GC的调用(即禁止开发者的 System.gc();) GC日志
在nginx.conf中定义的日志格式如下: http { ... /bin/bashlogs_path="/mydata/nginx/logs/" mv ${logs_path}access-web.log ${logs_path}access-web-$(date -d "yesterday" +"%Y%m%d").logmv ${logs_path}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 .log 100% 2616KB 2.6MB/s 00:00 access-power-20170907.log 100% 1687KB 1.7MB/s 00:00 access-api-
C、如何筛选 如果想要查看账户登录事件,在右边点击筛选当前日志,在事件ID填入4624和4625,4624 登录成功 4625 登录失败 D、事件ID及常见场景 对于Windows事件日志分析,不同的 net user USER PASSWORD /add net localgroup administrators USER /add 0x02 日志分析工具 A、Log Parser Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory 常见登录类型日志分析 https://blog.csdn.net/zhulinu/article/details/52747984 Windows 7和Windows Server 2008 R2 安全事件的说明 /www.jb51.net/hack/384430.html https://wenku.baidu.com/view/e86ad976e009581b6bd9ebcf.html Powershell日志分析
日志服务(CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索分析、实时消费、日志投递等多项服务,协助用户通过日志来解决业务运营、安全监控、日志审计、日志分析等问题。用户无需关注资源扩容问题,五分钟快速便捷接入,即可享受稳定可靠的日志服务。
扫码关注腾讯云开发者
领取腾讯云代金券