当前位置: 首页 > news >正文

nginx部署goaccess监控

前言

要在 nginx 中增加 流量访问的统计功能,可以通过以下几种方式实现:

1、通过分析 nignx 的日志

2、使用 ningx 的模块,如 ngx_http_stub_status_module 以及第三方的 nginx 组件

3、使用第三方监控,如Grafana + Prometheus、ELK Stack、Zabbix 等

其中组件 ngx_http_stub_status_module 提供的监控信息比较基础,如果需要更详细的监控需要引入其他的组件,在部署上相对麻烦

第三方的监控方式,是比较成熟的商业解决方案,但是部署上比较麻烦,通常用于企业部署,个人部署倾向使用 goaccess 来分析 nginx 日志进行监控

部署

goaccess 是轻量级的开源解决方案,官方地址 https://goaccess.io/,使用简单,本地安装后,通过配置一条 crontab 命令,定期分析 nginx 日志并生成 html 页面

在 nginx 中配置一条 location,指向 goaccess 生成的 html 文件即可,重启 nginx 即可在 web 端进行查看监控情况

安装goaccess

ubuntu 下使用 apt 安装 goaccess,goaccess 也提供了 docker 的发行版本

sudo apt update
sudo apt install goaccess -y

生成监控页面

增加一个监控的站点目录,如 /var/www/html/monitor,然后添加一个 crontab 命令如下

*/5 * * * * /usr/bin/goaccess /var/log/nginx/access.log -o /var/www/html/monitor/index.html --log-format=COMBINED

该命令每 5 分钟执行一次,读取 nginx 的日志文件 /var/log/nginx/access.log,分析生成 /var/www/html/monitor/index.html 页面

日志的格式使用 COMBINED ,一个典型的 COMBINED 日志格式如下

127.0.0.1 - - [24/Aug/2025:12:34:56 +0800] "GET /index.html HTTP/1.1" 200 1024 "https://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

如果使用了自定义的日志格式,需要告诉 goaccess,不然会出现解析错误的情况,如自定义日志的格式如下

log_format main '$time_local client[$remote_addr] cf[$realip_remote_addr] - $scheme - request[$request] ''$status send[$body_bytes_sent] host[$host] refer[$http_referer] useragent[$http_user_agent]';

那么 goaccess 的日志格式应该指定为如下

/usr/bin/goaccess /var/log/nginx/access.log -o /var/www/html/monitor/index.html \--log-format='%d:%t %^ client[%h] cf[%^] - %^ - request[%r] %s send[%b] host[%v] refer[%R] useragent[%u]' \--date-format='%d/%b/%Y' \--time-format='%H:%M:%S'

配置nginx

使用 goaccess 生成的监控页面,需要在 nginx 配置 location,以方便在浏览器上查看监控,这里使用了 base auth 授权

location ^~ /monitor/ {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/.htpasswd;root /var/www/html/;index index.html;
}

通过以下命令创建授权用户访问,运行命令后输入密码,在查看监控的时候需要授权才能访问

这里的 -c 表示创建一个 /etc/nginx/.htpasswd 文件,记录输入的用户密码信息

htpasswd -c /etc/nginx/.htpasswd admin

配置完毕后,重新加载 nginx 配置后生效 nginx -s reload

查看监控

在浏览器中输入需要访问的域名,输入账号密码,查看部分效果如下(清空了日志,目前还没有任何日志)

http://www.dtcms.com/a/348608.html

相关文章:

  • JdbcTemplate和MyBatis的区别
  • 《支付回调状态异常的溯源与架构级修复》
  • 学习制作记录(选项UI以及存档系统)8.24
  • KVM虚拟化
  • Vue3 setup代替了vue2的哪些功能
  • 分布式事务的两种解决方案
  • MYSQL(DDL)
  • 前端 vs 后端请求:核心差异与实战对比
  • Qt——网络通信(UDP/TCP/HTTP)
  • 【Unity开发】Unity核心学习(二)
  • PAT 1081 Rational Sum
  • 【机器学习】8 Logistic regression
  • Power BI切片器自定义顺序
  • 智能油脂润滑系统:给设备一份 “私人定制” 的保养方案
  • Linux 学习笔记 - 集群管理篇
  • 【大模型LLM学习】Data Agent学习笔记
  • C++算法学习专题:二分查找
  • Kubernetes部署Prometheus+Grafana 监控系统NFS存储方案
  • Socket some functions
  • 让机器人“想象”未来?VLN导航迎来“理解力”新升级
  • 每日算法刷题Day64:8.24:leetcode 堆6道题,用时2h30min
  • 解密 Spring Boot 自动配置:原理、流程与核心组件协同
  • 人形机器人——电子皮肤技术路线:压电式电子皮肤及一种超越现有电子皮肤NeuroDerm的设计
  • 深度学习:CUDA、PyTorch下载安装
  • Leetcode 3659. Partition Array Into K-Distinct Groups
  • sqlite创建数据库,创建表,插入数据,查询数据的C++ demo
  • 商密保护迷思:经营秘密到底需不需要鉴定?
  • 对称二叉树
  • 机械学习综合练习项目
  • jar包项目自启动设置ubuntu