为了查看本站点的健康状况以及用户访问情况,就需要定期的分析服务器的 access 日志。这时候可以适合引入轻量级的日志分析工具,例如 GoAccess ,其使用简单且分析效果较好
GoAccess 分析Nginx 日志
Nginx
GoAccess 介绍
GoAccess被设计成一个基于终端的快速日志分析器。它的核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器
虽然终端输出是默认输出,但是它能够生成完整的,自包含的实时HTML报告,非常适合分析,监控和数据可视化,以及JSON和CSV报告
主要功能
GoAccess演示地址
https://k.i4t.com/go.html
依赖包安装
#首先先安装依赖包,需要配置epel (根据系统进行依赖安装) #centos6 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #centos7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #安装依赖包 yum -y install glib2 glib2-devel ncurses ncurses-devel GeoIP GeoIP-devel GeoIP-data
版本使用1.3 发行时间2018-11-23
安装Goaccess 由于网络问题,官方下载的比较慢,这里我提供了一套下载地址
#abcdocker提供软件包下载 wget http://down.i4t.com/goaccess-1.3.tar.gz tar xf goaccess-1.3.tar.gz cd goaccess-1.3 ./configure --prefix=/usr/local/goaccess1.3 --enable-utf8 --enable-geoip=legacy --with-openssl make && make install #官方下载 wget https://tar.goaccess.io/goaccess-1.3.tar.gz tar xf goaccess-1.3.tar.gz cd goaccess-1.3 ./configure --prefix=/usr/local/goaccess1.3 --enable-utf8 --enable-geoip=legacy --with-openssl make && make install #设置软链 ln -s /usr/local/goaccess1.3 /usr/local/goaccess
以上二选一
配置GoAccess
安装我的文档安装完goaccess之后,目录在/usr/local/goaccess下
接下来我们要对goaccess做一些配置
1.配置环境变量 echo "export PATH=/usr/local/goaccess/bin:$PATH" >>/etc/profile source /etc/profile 2.配置文件修改 [root@abcdocker ~]# vim /usr/local/goaccess/etc/goaccess/goaccess.conf time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" 3.配置文件参数说明 %x 匹配 time-format 和 date-format 变量的日期和时间字段。用于使用时间戳来代替日期和时间两个独立变量的场景。 %t 匹配 time-format 变量的时间字段。 %d 匹配 date-format 变量的日期字段。 %v 根据 canonical 名称设定的服务器名称(服务区或者虚拟主机)。 %e 请求文档时由 HTTP 验证决定的用户 ID。 %h 主机(客户端IP地址,IPv4 或者 IPv6)。 %r 客户端请求的行数。这些请求使用分隔符(单引号,双引号)引用的部分可以被解析。否则,需要使用由特殊格式说明符(例如:%m, %U, %q 和 %H)组合格式去解析独立的字段。 注意: 既可以使用 %r 获取完整的请求,也可以使用 %m, %U, %q and %H 去组合你的请求,但是不能同时使用。 %m 请求的方法。 %U 请求的 URL。 注意: 如果查询字符串在 %U中,则无需使用 %q。但是,如果 URL 路径中没有包含任何查询字符串,则你可以使用 %q 查询字符串将附加在请求后面。 %q 查询字符串。 %H 请求协议。 %s 服务器回传客户端的状态码。 %b 回传客户端的对象的大小。 %R HTTP 请求的 "Referer" 值。 %u HTTP 请求的 "UserAgent" 值。 %D 处理请求的时间消耗,使用微秒计算。 %T 处理请求的时间消耗,使用带秒和毫秒计算。 %L 处理请求的时间消耗,使用十进制数表示的毫秒计算。 %^ 忽略此字段。 %~ 继续解析日志字符串直到找到一个非空字符(!isspace)。 ~h 在 X-Forwarded-For (XFF) 字段中的主机(客户端 IP 地址,IPv4 或者 IPv6)。
Nginx配置
为了提供Goaccess分析精准度,需要配置Nginx的log_format
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_cookie" "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access_web.log main; #在http标签配置的,默认就有开启就ok
GoAccess 控制台模式
goaccess有控制台模式和html静态页面模式,这里先介绍一下控制台模式
goaccess -a -d -f logs/access_web.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf #常用参数 -a --agent-list 启用由主机用户代理的列表。为了更快的解析,不启用该项 -d --with-output-resolver 在HTML/JSON输出中开启IP解析,会使用GeoIP来进行IP解析 -f --log-file 需要分析的日志文件路径 -p --config-file 配置文件路径 -o --output 输出格式,支持html、json、csv -m --with-mouse 控制面板支持鼠标点击 -q --no-query-string 忽略请求的参数部分 --real-time-html 实时生成HTML报告 --daemonize 守护进程模式,--real-time-html时使用
控制台操作方法
F1 主帮助页面 F5 重绘主窗口 q 退出 1-15 跳转到对应编号的模块位置 o 打开当前模块的详细视图 j 当前模块向下滚动 k 当前模块向上滚动 s 对模块排序 / 在所有模块中搜索匹配 n 查找下一个出现的位置 g 移动到第一个模块顶部 G 移动到最后一个模块底部
GoAccess HTML模式
goaccess -a -d -f /usr/local/nginx/logs/access_web.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/image/go-access.html #-o 输出html地址
GoAccess Daemonize
GoAccess可以使用daemonize模式运行,并提供创建实时HTML的功能,只需要在启动命令后添加--real-time-html和--daemonize参数即可
[root@abcdocker ~]# goaccess -a -d -f /usr/local/nginx/logs/access_web.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/image/go-access.html --real-time-html --daemonize Daemonized GoAccess: 25584 #监听端口7890 [root@abcdocker ~]# netstat -lntup|grep 7890 tcp 0 0 0.0.0.0:7890 0.0.0.0:* LISTEN 25584/goaccess
启动GoAccess后,使用Web socket建立长连接,监听7890端口,还可以使用--port指定端口号
网站开启了HTTPS功能,就需要GoAccess启用openssl,在配置文件goaccess.conf中配置ssl-cert和ssl-key来支持openssl,还需要将ws-url指定为https://i4t.com
GoAccess Crontab
在某些常见下,没有这样的实时性要求,可采用crontab机制实现定时更新HTML报表
*/45 * * * * goaccess -a -d -f /usr/local/nginx/logs/access_web.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/k8s/k8s.abcdocker.com/go.html
定时任务设置每45分钟刷新一次
当Nginx日志被切割后,可以使用--keep-db-file进行分析新产生的日志
GoAccess演示地址
https://k.i4t.com/go.html
45分钟刷新一次
相关文章:
- Kubernetes 1.14 二进制集群安装
- Kuerbernetes 1.11 集群二进制安装
- 搭建分布式文件系统FastDFS集群
- Nagios 配置及监控