ubuntu20.04安装goaccess实时对nginx日志进行分析

goaccess可以对nginx日志进行分析,生成实时动态页面,同时通过nginx反向代理来解决WebSocket数据传输问题、

一、ubuntu20.04安装goaccess

配置goaccess apt源

cd /etc/apt
wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/goaccess.list
apt-get update
apt-get install goaccess

查看是否安装成功 dpkg -l | grep goaccess

二、修改配置文件

vim /etc/goaccess/goaccess.conf
# 在 # NCSA Combined Log Format后添加以下配置
time-format %T
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

修改完成后保存后退出

三、生成动态实时的html报告

LANG="zh_CN.UTF-8" /usr/bin/goaccess -a -d -f nginx日志文件绝对路径 -p /etc/goaccess/goaccess.conf(goaccess配置文件) -o /home/wwwroot/web/report/index.html --port=9870 --real-time-html --daemonize

常用参数说明

  • -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时使用
  • --port指定端口号

四、配置web界面查看

配置nginx,可以使用htpasswd对页面配置用户认证。如果没有该命令的话可以使用apt install apache2-utils安装

# 先修改nginx配置文件
location ^~ /report {
# 设置运行的ip地址
allow ip;
deny all;
auth_basic "Nginx_status";
auth_basic_user_file /etc/nginx/conf.d/nginx_htpasswd;
alias /home/wwwroot/web/report;
index index.html;
}
# 配置用户和密码
htpasswd -c /etc/nginx/conf.d/nginx_htpasswd 用户名
# 重新加载nginx中间件
nginx -s reload

五、自动更新页面数据

报表页面与GoAccess服务端通过HTTP建立连接后,后续就是WebSocket数据传输了,GoAccess默认使用了7890端口。通常情况下,服务器上的HTTP服务已经使用了80端口,并且出于安全考虑关闭其他端口,浏览器的Html页面与GoAccess就无法正常进行数据交互。这时我们可以配置Nginx反向代理并修改报表访问路径来解决此问题

1.配置nginx代理

vim goaccess_svr.conf
upstream goaccess_svr {
server 127.0.0.1:9870;
}
# 在nginx主配置文件添加
location /goaccess {
proxy_pass http://goaccess_svr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

2.修改报表页面

需要修改里面的与GoAccess服务端连接的URL和端口

cd /home/wwwroot/web/report
vim index.html
# 查找关键字"port",换成自己的域名或者ip
var connection = {"url": "server.example.com/goaccess","port": 80}
# 重新加载nginx中间件
nginx -s reload

最后效果如下:

ubuntu20.04安装goaccess实时对nginx日志进行分析的更多相关文章

  1. Ubuntu20.04安装Typora

    Ubuntu20.04安装Typora 安装方法 # optional, but recommended sudo apt-key adv --keyserver keyserver.ubuntu.c ...

  2. Ubuntu20.04安装 maven并配置阿里源

    Ubuntu20.04安装 maven并配置阿里源 sudo apt update sudo apt install maven #安装maven,默认安装路径为/usr/share/maven 添加 ...

  3. ubuntu20.04安装网易云音乐

    Ubuntu20.04安装网易云 进入网易云音乐下载地址 下载对应客户端 进入终端,安装 sudo dpkg -i 软件名.deb

  4. ubuntu20.04安装EasyConnect兼容性问题解决

    目录 1. 命令行启动EasyConnect 2. 降级pango 3. 重新启动EasyConnect,即可成功启动 Ubuntu20.04安装EasyConnect后无法启动的解决方案 工作使用操 ...

  5. Ubuntu 14.04 安装最新稳定版Nginx 1.6.0

    如果已经安装,请先卸载sudo apt-get remove nginx最新的稳定版Nginx 1.6.0在ubuntuupdates ppa库中提供,网址http://www.ubuntuupdat ...

  6. GoAccess自动分割Nginx日志

    GoAccess 是一款开源的网站日志实时分析工具.GoAccess 的工作方式很容易理解,就是读取和解析 Apache/Nginx/Lighttpd 的访问日志文件 access log,然后以更友 ...

  7. Ubuntu20.04 安装MongoDB及其基本使用

    MongoDB 官方文档 本博客旨在自我学习使用,如有任何疑问请及时联系博主 基本介绍 MongoDB 是由C++语言编写并基于分布式文件存储的开源数据库. MongoDB 是一款介于关系数据库和非关 ...

  8. Ubuntu20.04安装PEA软件

    PEA软件可用于实时精密卫星钟差估计,精密卫星定轨,精密单点定位,电离层建模以及DCB估计等. Ginan开发人员推荐使用Ubuntu18.04或Ubuntu20.04搭建,本文使用Ubuntu20. ...

  9. Ubuntu20.04安装Redis

    本文介绍了如何在Ubuntu20.04上安装Redis. 安装Redis sudo apt install redis-server 检查服务的状态 安装完成后可以通过以下命令检查服务的状态 sudo ...

  10. Ubuntu20.04安装MongoDB

    本教程描述了如何在Ubuntu20.04上安装MongoDB4.4 安装MongoDB Ubuntu 20.04默认存储库中不提供最新版本的MongoDB,因此需要在系统中添加官方的MongoDB存储 ...

随机推荐

  1. Azure Data Factory(六)数据集类型为Dataverse的Link测试

    一,引言 之前有讲过 Azure Data Factory 的 Copy Data 的操作,演示了将 Blob Storage1 的数据通过 Azure Data Factory 复制到 Blob S ...

  2. Leetcode刷题笔记——单调性

    单调性 单调性是数学中使用的一种常见性质,通常用于描述函数,在高等数学中的定义常常为: 设函数f(x)在区间I上有定义,如果对于I上的任意两个数x1和x2,当x1<x2时,有f(x1)<f ...

  3. 2.10 PE结构:重建重定位表结构

    Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制.在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用 ...

  4. Visual Studio 2022 Preview 3和2019 16.11发布

    Visual Studio 2022 Preview 3 主要特点 个人和团队生产力 附加到进程改进 新项目设计器 黑暗主题提升 开发现代应用 远程测试 新的JavaScript和TypeScript ...

  5. Java 21 新特性:Record Patterns

    Record Patterns 第一次发布预览是在JDK 19.随后又在JDK 20中进行了完善.现在,Java 21开始正式推出该特性优化.下面我们通过一个例子来理解这个新特性. record Po ...

  6. [HNCTF 2022 WEEK2]e@sy_flower

    花指令分析 如果没接触过花指令,先看这个博客,大致了解一下花指令 https://www.cnblogs.com/Here-is-SG/p/15802040.html 点击此处下载附件 查壳 32位, ...

  7. SpringBoot WebSocket STOMP

    SpringBoot WebSocket STOMP 关键词:Springboot, WebSocket, STOMP, broadcast, sendToUser, MessageMapping, ...

  8. 使用Vue3+elementPlus的Tree组件实现一个拖拽文件夹管理

    目录 1.前言 2.分析 3. 实现 4.踩坑 4.1.拖拽辅助线的坑 4.2.数据的坑 4.3.限制拖拽 4.4.样式调整 1.前言 最近在做一个文件夹管理的功能,要实现一个树状的文件夹面板.里面包 ...

  9. bootstrap响应式原理

    Bootstrap 框架的网格系统工作原理如下:1 .数据行 (.row) 必须包含在容器( .container )中,以便为其赋予合适的对齐方式和内距 (padding) . 如: <div ...

  10. 火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作为企业数字化建设的必备要素,易用的数据引擎能帮助企业提升数据使用效率,更好提升数据应用价值,夯实数字化建设基础. ...