项目上线之后,访问量逐渐增多,最近发现一些异常,从服务器监控zabbix没有发现比较有用的信息,链路监控pinpoint上发现访问量比之前增加了很多,所以想从入口方面分析一下来源,看看是不是被人抓取数据了。
Nginx日志格式
我这里使用的是阿里开源的tengine,和nginx是一样的,默认的日志格式
1 2 3 4 5 6 7
| log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; error_log logs/error.log warn; access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;
|
1
| 113.200.77.134 - - [19/Dec/2019:10:45:39 +0800] "GET /air/home/code/regions HTTP/1.1" 200 1391 "http://localhost:8080/app/tabs/home" "Mozilla/5.0 (Linux; Android 9; COL-AL10 Build/HUAWEICOL-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/72.0.3626.121 Mobile Safari/537.36" "-"
|
参数 | 说明 | 实例 |
---|
$remote_addr | 客户端地址 | 113.200.77.134 |
$remote_user | 客户端用户名称 | - - |
$time_local | 访问时间和时区 | 19/Dec/2019:10:45:39 +0800] |
$request | 请求的URI和HTTP协议 | GET /air/home/code/regions HTTP/1.1 |
$http_host | 请求地址,即浏览器中你输入的地址(IP或域名) | |
$status | HTTP请求状态 | 200 |
$upstream_status | upstream状态 | |
$body_bytes_sent | 发送给客户端文件内容大小 | 1391 |
$http_referer | url跳转来源 | http://localhost:8080/app/tabs/home |
$http_user_agent | 用户终端浏览器等信息 | Mozilla/5.0 (Linux; Android 9; COL-AL10 Build/HUAWEICOL-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/72.0.3626.121 Mobile Safari/537.36 |
$ssl_protocol | SSL协议版本 | |
$ssl_cipher | 交换数据中的算法 | |
$http_x_forwarded_for | HTTP 扩展头部 | |
$upstream_addr | 后台upstream的地址,即真正提供服务的主机地址 | |
$request_time | Nginx处理整个请求所用总时间 | |
$upstream_connect_time | Nginx与upstream server建立连接所用时间 | |
$upstream_header_time | 从建立连接成功到接收第一个字节之间的时间 | |
$upstream_response_time | 从建立连接成功到接收第一个字节之间的时间 | |
GoAccess
GoAccess是一个开源的实时 Web日志分析器和交互式查看器,可在* nix系统的终端中或通过浏览器运行。
它为需要实时可视服务器报告的系统管理员提供了快速而有价值的HTTP统计信息。
官网地址:https://goaccess.io/
github地址:https://github.com/allinurl/goaccess
GoAccess日志规范:https://goaccess.io/man#custom-log
安装GoAccess
1 2 3 4 5 6 7
| yum install geoip-devel ncurses-devel glib2 glib2-devel ncurses-devel zlib zlib-devel wget https://tar.goaccess.io/goaccess-1.3.tar.gz tar -xzvf goaccess-1.3.tar.gz cd goaccess-1.3/ ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=legacy make make install
|
1
| vim /usr/local/goaccess/etc/goaccess/goaccess.conf
|
配置日志格式,和nginx里的日志格式匹配起来,日志规范参考上述链接
1 2 3
| time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| %t 匹配time-format格式的时间字段 %d 匹配date-format格式的日期字段 %h host(客户端ip地址,包括ipv4和ipv6) %r 来自客户端的请求行 %m 请求的方法 %U URL路径 %H 请求协议 %s 服务器响应的状态码 %b 服务器返回的内容大小 %R HTTP请求头的referer字段 %u 用户代理的HTTP请求报头 %D 请求所花费的时间,单位微秒 %T 请求所花费的时间,单位秒 %^ 忽略这一字段
|
终端查看日志
1
| /usr/local/goaccess/bin/goaccess -a -d -f /usr/local/tengine/logs/access.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf
|
- F1或h:帮助
- F5 :刷新主界面
- q:退出程序/当前窗口/折叠当前模块
- o或Enter:展开选中的模块或窗口
- 0-9以及Shift + 0:将选中的模块或窗口激活
- k和j:模块内部移动
- c:修改配色
- ^f和^b:模块中上下滚屏
- tab shift+tab:前后切换模块
- s:模块内部排序选择
- /:在所有模块中搜索(支持正则)
- n:找到下个匹配
- g和G:跳到第一项/最后一项
生成html格式
1
| usr/local/goaccess/bin/goaccess -a -d -f /usr/local/tengine/logs/access_log.1 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o ~/sx.html
|