nginx流量监控:goAccess安装与使用

关于goAccess

GoAccess 是一款实时、快速的日志分析工具,专门设计用于分析Web服务器日志,特别是Nginx日志。

安装

(1)准备相关依赖

# Missing development libraries for ncursesw
# centOS
yum install -y ncurses-devel
# Ubuntu
apt-get install libncurses5-dev

# Missing development files for libmaxminddb library.
# centOS
yum install -y libmaxminddb-devel
# Ubuntu
apt-get install libmaxminddb-dev

(2)下载&编译

# 下载
wget https://tar.goaccess.io/goaccess-1.9.2.tar.gz
# 解压
tar -xzvf goaccess-1.9.2.tar.gz
# 进入目录
cd goaccess-1.9.2/
# 预编译
./configure --enable-utf8 --enable-geoip=mmdb --prefix=/opt/goaccess
# 编译
make
# 安装
make install

(3)编辑配置文件goaccess.conf,添加如下内容

# 将配置文件放在etc目录下
cp /usr/local/goaccess-1.7/config/goaccess.conf /etc/goaccess.conf
vim /etc/goaccess.conf

time-format %H:%M:%S
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R"  "%u" "%^" "%T"

(4)增加全局变量,中文启动

cp /path/to/goaccess/bin/goaccess /usr/bin/
LANG="zh_CN.UTF-8" goaccess -f /path/to/nginx/access.log -p /etc/goaccess.conf

在这里插入图片描述

配合Nginx使用

(1)监控方式1:直接读取日志

goaccess path/to/nginx/access.log

(2)监控方式2:生成HTML报告

goaccess path/to/nginx/access.log -o report.html --log-format=COMBINED

--log-format 参数用于指定日志格式,对于Nginx的默认访问日志格式,使用 COMBINED 通常是最合适的,因为它匹配Apache的combined日志格式,也是Nginx默认日志格式。

高级用法
-a 参数表示启用实时分析模式,适合监视实时日志流。
-d 参数开启DNS解析,显示主机名而非IP地址。
-f 参数指定日志文件路径。
-p 参数指定GoAccess配置文件路径。
-t 和 -T 分别显示表格和树状图统计。
-r 参数可以接受管道输入,例如 cat access.log | goaccess - 。

(3)实时生成HTML报告

vim /etc/goaccess.conf
# 291行左右,可通过 /"关键词"进行搜索定位
daemonize true
# 310行左右:
real-time-html true

#直接启动
LANG="zh_CN.UTF-8" goaccess -f /path/to/nginx/access.log -p /etc/goaccess.conf -o  /path/to/goaccess-1.7/report.html

默认goaccess在开启实时real-time-html后会监听端口7890的websocket,如果服务器不允许请求7890端口,你就看不到那个页面是实时更新的——你会发现访问的页面最后更新时间始终不变

或者改用 crontab,定时更新report.html

 vim /etc/crontab
 
 # 定时生成nginx监控HTML——goaccess
* *     * * *   goaccess -p /etc/goaccess.conf /var/log/nginx/access.log -o  /opt/goaccess-1.9.2/report.html

(4)自定义nginx日志格式&goAccess适配

# goaccess默认的日志格式与nginx的默认格式一致

%h %^[%d:%t %^] "%r" %s %b "%R" "%u"

log_format combined '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

自定义日期格式:增加一个响应时间

修改nginx.conf文件:文件中的http下增加或修改如下配置

log_format myfmt '$remote_addr - $remote_user [$time_local] "$request"'
				'$status $body_bytes_sent "$http_referer" '
				'"$http_user_agent" $request_time'
access_log path/to/access.log myfmt;

在这里插入图片描述

修改goAccess配置文件:

vim /etc/goaccess.conf

# 添加以下内容
time-format %H:%M:%S
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R"  "%u" %T

# 重启goaccess
LANG="zh_CN.UTF-8" goaccess -f /path/to/nginx/access.log -p /etc/goaccess.conf -o  /path/to/goaccess-1.9/report.html
  • 变量说明
 1.$remote_addr$http_x_forwarded_for 用以记录客户端的ip地址;
 2.$remote_user :用来记录客户端用户名称;
 3.$time_local : 用来记录访问时间与时区;
 4.$request : 用来记录请求的url与http协议;
 5.$status : 用来记录请求状态;成功是200,
 6.$body_bytes_sent :记录发送给客户端文件主体内容大小;
 7.$http_referer :用来记录从那个页面链接访问过来的;
 8.$http_user_agent :记录客户端浏览器的相关信息;

(5)nginx转发

    # 配置文件中监听端口,对请求进行转发
    server{
        listen 33503;
        server_name localhost;

		# report.html路径
        location /report.html {
            alias /opt/goaccess-1.9.2/report.html;
        }
    }

(5)访问nginx ip + 端口 / report.html

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值