利用goaccess实时监控nginx的访问日志

​ 这篇文章主要写一下我在利用goaccess对nginx生成的访问日志时的经历。

​ 最终会生成一个下面类似的网页:
​ 这篇文章主要写一下我在利用goaccess对nginx生成的访问日志时的经历。

​ 最终会生成一个下面类似的网页:
在这里插入图片描述
​ 我们在nginx配置文件中可以对总体的访问或单个项目的访问生成日志,我们可以对日志生成网页更加直观的查看访问信息。

这是我在nginx配置文件中的配置:

http {
    include       mime.types;
    default_type  application/octet-stream;
	# 日志格式 名称为 main
    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;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    ......省略
    
    server {
         ......省略
         location /robot/ {
             access_log  logs/robot_access.log  main;
             ......省略
         }
         ......省略
    }

​ 然后我们要安装goaccess

​ 在安装之前我们要先安装基础环境

#为方便最终日志统计时显示IP地理位置,需要安装依赖项GeoIP-devel:
yum install GeoIP-devel.x86_64
#安装ncurses-devel开发库:
yum install ncurses-devel
#安装tokyocabinet-devel开发库:
yum install tokyocabinet-devel
#安装openssl-devel开发库:
yum install openssl-devel

​ 然后正式安goaccess

wget https://tar.goaccess.io/goaccess-1.3.tar.gz
tar -xzvf goaccess-1.3.tar.gz
cd goaccess-1.3/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

​ 这里要注意的是,如果我们要用到https并且http请求都会跳转到https时,我们要在configure中添加一个--with-openssl不然我们使用httpsws会跳转到wss但是会被拒绝掉。

​ 然后我们进入到nginx下的logs目录中。执行以下命令生成网页(report.html):

goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --real-time-html --time-format='%H:%M:%S' --date-format='%d/%b/%Y' --log-format=COMBINED --daemonize

​ 我们加--daemonize参数是为了后台执行,执行这个的前提是有--real-time-html这个参数。如果我们是https的还需要添加--ssl-cert=crt文件目录 --ssl-key=key文件目录这两个参数才可以实现wss

​ 完成后我们就可以输入地址进行访问。

​ 最后我们这个生成的网页并不想让所有人都看到,那我们可以设置一个密码,输入密码后才可以访问。这里我们利用htpasswd这个工具。

​ 先进行安装yum -y install httpd-tools

​ 然后设置用户名和密码,并把用户名、密码保存到指定文件中(这里生成的用户名为userTest,存放到nginx下的passwd文件中)

htpasswd -c /usr/local/nginx/passwd userTest
New password: 
Re-type new password: 
Adding password for user coderschool 

​ 然后配置nginx中的访问:

location /report.html {
    alias /usr/local/nginx/html/report.html;
    auth_basic "请输入用户名和密码!"; #这里是验证时的提示信息 
    auth_basic_user_file /usr/local/nginx/report_passwd; #这是你生成密码存放的文件
    proxy_http_version 1.1; # 这三行是为了实现websocket
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

​ 至此,我们就完成了用goaccess对nginx日志的实现监控。

​ 打开链接会首先让我们输入用户名和密码,然后就可以看到我们统计的信息了,并且是通过websocket连接,请求数据都会实时改变。

img


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值