项目上线之后,访问量逐渐增多,最近发现一些异常,从服务器监控zabbix没有发现比较有用的信息,链路监控pinpoint上发现访问量比之前增加了很多,所以想从入口方面分析一下来源,看看是不是被人抓取数据了。
Nginx日志格式
我这里使用的是阿里开源的tengine,和nginx是一样的,默认的日志格式
1 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
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 | yum install geoip-devel ncurses-devel glib2 glib2-devel ncurses-devel zlib zlib-devel |
1 | vim /usr/local/goaccess/etc/goaccess/goaccess.conf |
配置日志格式,和nginx里的日志格式匹配起来,日志规范参考上述链接
1 | time-format %H:%M:%S |
1 | %t 匹配time-format格式的时间字段 |
终端查看日志
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 |
