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. AI绘图开源工具Stable Diffusion WebUI前端API对接

    背景 本文主要介绍 AI 绘图开源工具 Stable Diffusion WebUI 的 API 开启和基本调用方法,通过本文的阅读,你将了解到 stable-diffusion-webui 的基本介 ...

  2. 全局安装oh-my-zsh保姆教程

    我的系统是CentOS 7.6,按流程走完后可以实现系统内所有用户都默认使用zsh且插件配置共享省去重复编写配置或软连接的烦恼 1 安装git yum -y install git 2 安装zsh y ...

  3. subDomainBrute源码分析

    SubDomainsBrute简介 ​ SubDomainsBrute是一款目标域名收集工具 ,用小字典递归地发现三级域名.四级域名.五级域名等不容易被探测到的域名.字典较为全面,小字典就包括3万多条 ...

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

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

  5. Solution -「HDU 3507」Print Article

    Description Link. 给出 \(N\) 个单词,每个单词有个非负权值 \(C_{i}\),现要将它们分成连续的若干段,每段的代价为此段单词的权值和,还要加一个常数 \(M\),即 \(( ...

  6. std::for_each易忽略点

    以下代码为修改vector内部的每一个元素,使其每个元素大小变为原来的平方. std::vector v1{1, 2, 4, 2}; std::for_each(begin(v1), end(v1), ...

  7. Hosts映射

    Hosts映射 思考:如何通过主机名能够找到(ping)某个linux系统? 前言 Hosts:是一个文本文件,用来记录IP和Hostname的映射关系 DNS:是互联网上作为域名和IP地址映射的一个 ...

  8. Go 基础之基本数据类型

    Go 基础之基本数据类型 目录 Go 基础之基本数据类型 一.整型 1.1 平台无关整型 1.1.1 基本概念 1.1.2 分类 有符号整型(int8~int64) 无符号整型(uint8~uint6 ...

  9. Fortran 的简单入门和使用 OpenMPI

    Fortran 与 C-like 语言的区别简单总结 无大括号,使用关键字画出范围: C++: int main() { } Fortran: program test implicit none e ...

  10. .NET周刊【10月第3期 2023-10-22】

    国内文章 .NET 8 RC 2 发布,将在11月14日发布正式版 https://www.cnblogs.com/shanyou/p/17756172.html 微软于2023年10月10日发布了. ...