1 配置goaccess 日志系统
引言 本文主要介绍,如何快速搭建一个可以查看nginx 访问日志的监控系统
1.1 安装并配置goaccess
以centos/alma linux为例子
直接安装
sudo yum install goaccess
安装成功成功之后
sudo vi /etc/goaccess/goaccess.conf
在文件最末端,添加下面的格式定义(nginx缺省格式),如果格式不同,请检查goaccess的相关资料,这里默认按照nginx缺省格式
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
对应的 /etc/nginx/nginx.conf的格式定义应为
http {
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 /var/log/nginx/access.log main;
在 /var/www目录下,建立一个goaccess目录,并修改权限
cd /var/www
mkdir goaccess
sudo chown -R nginx:nginx /var/www/goaccess
sudo chmod -R 755 /var/www/goaccess
执行下面的命令,正常情况下,应该 /var/www/goaccess目录下,生产一个 index.html文件,这个就是日志访问记录文件,用浏览器打开就能看到访问数据了.
sudo goaccess /var/log/nginx/access.log -o /var/www/goaccess/index.html --log-format=COMBINED
1.2 通过web访问日志文件
假设你的 域名配置 goaccess.example.com,那么参考配置为 ,把域名和证书改成你自己的
# goaccess system
server {
listen 8800 ssl http2; # Listen for HTTPS on port
listen [::]:8800 ssl http2; # Listen for IPv6 traffic as well
server_name goaccess.example.com; # Replace with your actual domain
# SSL configuration
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
root /var/www/goaccess;
index index.html;
}
}
检查配置文件正确行
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果成功,重启服务后,访问 goaccess.example.com应该就能看到访问数据了.
sudo systemctl restart nginx
1.3 配置/etc/crontab,定时更新数据
修改 /etc/crontab,增加一行 goaccess配置.前面一行是定时更新证书的命令,保存
0 0,12 * * * root sleep 2380 && certbot renew -q
0 * * * * root goaccess /var/log/nginx/access.log -o /var/www/goaccess/index.html --log-format=COMBINED
重启crond服务
sudo systemctl restart crond