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. 京东获得JD商品详情 API 返回值说明

    ​ item_get-获得JD商品详情  API测试 onebound.jd.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) ...

  2. 怎么选择API接口来获取自己想要的数据

    在今天的数字时代,数据变得越来越重要,API接口也成为了获取数据的一种重要方式.无论是开发自己的应用程序还是进行市场营销,数据的获取都是非常必要的.但是,如何选择API接口来获取自己想要的数据呢? 以 ...

  3. 拼多多sku详情的获取分析以及应用

    一.拼多多sku详情获取方式 要获取拼多多SKU详情,需要使用拼多多的API接口,以下是获取拼多多SKU详情的步骤: 1.注册拼多多开放平台账户并创建应用 拼多多创建开发者账户并创建应用,获得应用ID ...

  4. Prompt 指北:如何写好 Prompt,让 GPT 的回答更加精准

    目录 1. 得亏 GPT 脾气好 2. 玩 GPT 得注意姿势 3. 指南指北指东指西 3.1 首先你得理解 GPT 是咋工作的 3.2 "Prompt 工程"走起 3.3 奇淫技 ...

  5. js监控微信浏览器的自带的返回事件(延迟解决微信返回立即执行popstate事件)

    /** * 浏览器回退事件监听 */ var listenerBackHandler = { param: { isRun: false, //防止微信返回立即执行popstate事件 }, list ...

  6. 文心一言 VS 讯飞星火 VS chatgpt (100)-- 算法导论9.3 6题

    六.用go语言,对一个包含n个元素的集合来说,k分位数是指能把有序集合分成k个等大小集合的第k-1个顺序统计量.给出一个能找出某一集合的k分位数的 O(nlgk)时间的算法. 文心一言: 要找到一个集 ...

  7. 文心一言 VS 讯飞星火 VS chatgpt (105)-- 算法导论10.1 3题

    三.用go语言,仿照图 10-2,画图表示依次执行操作 ENQUEUE(Q,4).ENQUEUE(Q,1).ENQUEUE(Q,3).DEQUEUE(Q).ENQUEUE(Q,8)和 DEQUEUE( ...

  8. 小白CNN入门指导

    小白CNN入门指导 这几天一直在小白入门学习卷积层以准备组会,以下是我自学理解内容,若有错误的地方请各位评论指出 数学部分 一 卷积层 \[输入 32*32*3 (input neurons) \] ...

  9. 想让你的代码简洁,试试这个SimpleDateFormat类高深用法

    本文分享自华为云社区<从入门到精通:SimpleDateFormat类高深用法,让你的代码更简洁!>,作者:bug菌. 环境说明:Windows 10 + IntelliJ IDEA 20 ...

  10. js数据结构--队列

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...