nginx流量监控:goAccess安装与使用

关于goAccess

GoAccess 是一款实时、快速的日志分析工具,专门设计用于分析Web服务器日志,特别是Nginx日志。

安装

(1)准备相关依赖

# Missing development libraries for ncursesw
# centOS
yum install -y ncurses-devel
# Ubuntu
apt-get install libncurses5-dev

# Missing development files for libmaxminddb library.
# centOS
yum install -y libmaxminddb-devel
# Ubuntu
apt-get install libmaxminddb-dev

(2)下载&编译

# 下载
wget https://tar.goaccess.io/goaccess-1.9.2.tar.gz
# 解压
tar -xzvf goaccess-1.9.2.tar.gz
# 进入目录
cd goaccess-1.9.2/
# 预编译
./configure --enable-utf8 --enable-geoip=mmdb --prefix=/opt/goaccess
# 编译
make
# 安装
make install

(3)编辑配置文件goaccess.conf,添加如下内容

# 将配置文件放在etc目录下
cp /usr/local/goaccess-1.7/config/goaccess.conf /etc/goaccess.conf
vim /etc/goaccess.conf

time-format %H:%M:%S
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R"  "%u" "%^" "%T"

(4)增加全局变量,中文启动

cp /path/to/goaccess/bin/goaccess /usr/bin/
LANG="zh_CN.UTF-8" goaccess -f /path/to/nginx/access.log -p /etc/goaccess.conf

在这里插入图片描述

配合Nginx使用

(1)监控方式1:直接读取日志

goaccess path/to/nginx/access.log

(2)监控方式2:生成HTML报告

goaccess path/to/nginx/access.log -o report.html --log-format=COMBINED

--log-format 参数用于指定日志格式,对于Nginx的默认访问日志格式,使用 COMBINED 通常是最合适的,因为它匹配Apache的combined日志格式,也是Nginx默认日志格式。

高级用法
-a 参数表示启用实时分析模式,适合监视实时日志流。
-d 参数开启DNS解析,显示主机名而非IP地址。
-f 参数指定日志文件路径。
-p 参数指定GoAccess配置文件路径。
-t 和 -T 分别显示表格和树状图统计。
-r 参数可以接受管道输入,例如 cat access.log | goaccess - 。

(3)实时生成HTML报告

vim /etc/goaccess.conf
# 291行左右,可通过 /"关键词"进行搜索定位
daemonize true
# 310行左右:
real-time-html true

#直接启动
LANG="zh_CN.UTF-8" goaccess -f /path/to/nginx/access.log -p /etc/goaccess.conf -o  /path/to/goaccess-1.7/report.html

默认goaccess在开启实时real-time-html后会监听端口7890的websocket,如果服务器不允许请求7890端口,你就看不到那个页面是实时更新的——你会发现访问的页面最后更新时间始终不变

或者改用 crontab,定时更新report.html

 vim /etc/crontab
 
 # 定时生成nginx监控HTML——goaccess
* *     * * *   goaccess -p /etc/goaccess.conf /var/log/nginx/access.log -o  /opt/goaccess-1.9.2/report.html

(4)自定义nginx日志格式&goAccess适配

# goaccess默认的日志格式与nginx的默认格式一致

%h %^[%d:%t %^] "%r" %s %b "%R" "%u"

log_format combined '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

自定义日期格式:增加一个响应时间

修改nginx.conf文件:文件中的http下增加或修改如下配置

log_format myfmt '$remote_addr - $remote_user [$time_local] "$request"'
				'$status $body_bytes_sent "$http_referer" '
				'"$http_user_agent" $request_time'
access_log path/to/access.log myfmt;

在这里插入图片描述

修改goAccess配置文件:

vim /etc/goaccess.conf

# 添加以下内容
time-format %H:%M:%S
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R"  "%u" %T

# 重启goaccess
LANG="zh_CN.UTF-8" goaccess -f /path/to/nginx/access.log -p /etc/goaccess.conf -o  /path/to/goaccess-1.9/report.html
  • 变量说明
 1.$remote_addr$http_x_forwarded_for 用以记录客户端的ip地址;
 2.$remote_user :用来记录客户端用户名称;
 3.$time_local : 用来记录访问时间与时区;
 4.$request : 用来记录请求的url与http协议;
 5.$status : 用来记录请求状态;成功是200,
 6.$body_bytes_sent :记录发送给客户端文件主体内容大小;
 7.$http_referer :用来记录从那个页面链接访问过来的;
 8.$http_user_agent :记录客户端浏览器的相关信息;

(5)nginx转发

    # 配置文件中监听端口,对请求进行转发
    server{
        listen 33503;
        server_name localhost;

		# report.html路径
        location /report.html {
            alias /opt/goaccess-1.9.2/report.html;
        }
    }

(5)访问nginx ip + 端口 / report.html

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/654831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qmt量化交易策略小白学习笔记第7期【qmt策略之股票快照指标】

qmt策略之股票快照指标 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,需免费开通量化回测与咨询实盘权限,可以和博主联系! 股票快照指标 提供标…

python双色球选号程序的实现与解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:双色球选号游戏的魅力 二、程序设计与实现 1. 生成红色球号码 2. 生…

OpenHarmony迎来首个互联网技术统一标准,鸿蒙OS生态走向如何?

开源三年半,OpenHarmony(以下简称“开源鸿蒙”)迎来了新进展。在5月25日召开的「OpenHarmony开发者大会」上,鸿蒙官宣了开源鸿蒙设备统一互联技术标准。 一直以来,各行业品牌操作系统相互独立、难以协同,成为其互联互通的痛点。为进一步解决…

USST新生训练赛div2+div3题解

目录 前言题解部分B Ichihime and Triangle(800)题目大意题解代码实现 C Kana and Dragon Quest game(900)题目大意题解代码实现 J Squares and Cubes(800)题目大意题解代码实现 F Double Sort(1200)题目大意题解代码实现 I Minimize the Thickness(1100)题目大意题解代码实现 …

华为CE6851-48S6Q-HI升级设备版本及补丁

文章目录 升级前准备工作笔记本和交换机设备配置互联地址启用FTP设备访问FTP设备升级系统版本及补丁 升级前准备工作 使用MobaXterm远程工具连接设备,并作为FTP服务器准备升级所需的版本文件及补丁文件 笔记本和交换机设备配置互联地址 在交换机接口配置IP&#…

LAMP源码编译安装——CentOS7

文章目录 LAMP是什么LAMP软件组件LinuxApacheMySQLPHP 源码安装Apache一、准备工作二、安装环境依赖包三、配置软件模块四、编译及安装五、优化配置文件路径六、添加httpd系统服务(有两种方法)方法一:方法二: 七、修改httpd 服务配…

LabVIEW软件需求分析文档内容和编写指南

编写LabVIEW软件需求分析文档(Software Requirements Specification, SRS)是软件开发的关键步骤之一。以下是详细的内容结构、编写指南和注意事项: 内容结构 引言 项目背景:简要介绍项目背景和目的。 文档目的:说明需…

利用NewGIS平台将FME模板发布为接口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 一、模板编写 二、发布模板 三、接口获取 四、移动端调用 ​​​​​ 前言 在实际的应用生产过程中,尤其是移动端GIS软件的开发,针对一些闭…

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…

头文件大小写引发的报错

jenkins下打包编译报错如下,提示编译zynqCan.c时找不到“syscfgpll/sysCfgpll.h”文件。 但IDE下编译是没有报错也没有警告的,工程中也存在文件“syscfgpll/sysCfgPll.h”。 仔细观察发现,报错说的是找不到头文件“syscfgpll/sysCfgpll.h”…

蓝桥杯物联网竞赛_STM32L071_18_长短按键检测

长短按键的检测是国赛题里面遇到的,省赛没出过有两种实方法 定时器配置: 定时器的话要比delay准确,其中tim7定时器的准度最高 定时器预分配配置32 - 1,计数周期是10000 - 1这样做那么32MHZ/32也就是一秒钟记录10^6的数&#xf…

c++ vector实现出现的一些问题

目录 前言: 浅拷贝问题: typename指定类型: 前言: 最近学习了c vector的使用,然后也自己实现了一下vector的部分重要的功能。然后在其中出现了一些问题,在这就主要记录一下我解决哪些bug。 浅拷贝问题: 在实现res…

Weblogic SSRF漏洞 [CVE-2014-4210]

漏洞复现环境搭建请参考 http://t.csdnimg.cn/svKal docker未能成功启动redis请参考 http://t.csdnimg.cn/5osP3 漏洞原理 Weblogic的uddi组件提供了从其他服务器应用获取数据的功能并且没有对目标地址做过滤和限制,造成了SSRF漏洞,利用该漏洞可以向内…

若依跳转(新增)页面,在菜单中不显示的页面

在router.js文件中 跳转方式 this.$router.push(/monitor/b/b)

路由引入实验(思科)

华为设备参考:路由引入实验(华为) 技术简介 路由引入技术在网络通信中起着重要的作用,能够实现不同路由协议之间的路由传递,并在路由引入时部署路由控制,实现路径或策略的控制 实验目的 不同的路由协议之…

二十三篇:未来数据库革新:AI与云原生的融合之旅

未来数据库革新:AI与云原生的融合之旅 1. 智能数据库管理:AI的魔法 在数字化时代,数据库技术作为信息管理的核心,正经历着前所未有的变革。AI(人工智能)和云原生技术的融合,正在重新定义数据库…

力扣刷题--2965. 找出缺失和重复的数字【简单】

题目描述 给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个下标从 0 开始、…

蓝桥杯Web开发【大学组:国赛】2022年真题

1.分一分 如果给你一个数组,你能很快将它分割成指定长度的若干份吗? 1.1 题目问题 请在 js/index.js 文件中补全函数 splitArray 中的代码,最终返回按指定长度分割的数组。 具体要求如下: 将待分割的(一维&#x…

web前端之vue动态访问静态资源、静态资源的动态访问、打包、public、import、URL、Vite

MENU 静态资源与打包规则动态访问静态资源直接导入将静态资存放在public目录中动态导入URL构造函数结束语实践与坑附文 静态资源与打包规则 介绍 Vite脚手架在打包代码的时候,会把源代码里对于静态资源的访问路径转换为打包后静态资源文件的路径。主要的区别是文件指…

Vue中使用Vue-scroll做表格使得在x轴滑动

页面效果 首先 npm i vuescroll 在main.js中挂载到全局 页面代码 <template><div class"app-container"><Header :titletitle gobackgoBack><template v-slot:icon><van-icon clickgoHome classicon namewap-home-o /></templat…