当前位置: 首页 > 编程日记 > 正文

GoAccess安装及分析nginx实时日志

GoAccess是一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作),终端输出是默认输出,但它能够生成完整的,独立的实时 HTML报告(非常适合分析,监控和数据可视化),以及a JSON和CSV报告。

  • 所有面板和指标都定时在终端输出上每200毫秒更新一次,在HTML输出上每秒更新一次。

  • GoAccess允许任何自定义日志格式字符串。预定义选项包括Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等

  • 跟踪提供请求所需的时间。如果您想跟踪减慢网站速度的网页,则非常有用。

  • 数据持久性强,GoAccess能够通过磁盘上的B + Tree数据库逐步处理日志。

  • GoAccess是用C语言编写的,要运行它,你只需要将ncurses作为依赖项,它甚至还具有自己的RFC6455兼容Web Socket服务器。

  • 您可以针对访问日志文件运行它,选择日志格式并让GoAccess解析访问日志并显示统计信息。

  • 按小时或日期确定最慢运行请求的匹配数,访问者数,带宽数和指标数。

  • 多个虚拟主机,一个面板,显示哪个虚拟主机正在消耗大部分Web服务器资源。

  • 定制GoAccess以适合您自己的色彩品味。通过终端,或者只是更新HTML输出上的样式表。

GoAccess安装部署:

方案一:Yum安装部署
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-develyum install gcc -y
yum -y install GeoIP-update
yum install goaccess

#修改/etc/nginx/nginx.conf文件的日志存储格式
log_format main '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '
'$status $body_bytes_sent "$http_referer" - $request_body'
'"$http_user_agent" "$http_x_forwarded_for"';

#修改文件/etc/goaccess.conf改成goaccess格式标准对应为
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] requesthost:"%v"; "%r" requesttime:"%T"; %s %b "%R" - %^"%u"

#测试生成页面
goaccess -f /var/log/nginx/access.log -c -a>/usr/share/nginx/html/go.html
方案二:源码安装部署

#yum安装依赖包
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel
yum install gcc -y
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
yum -y install GeoIP-update


#下载goaccess源码包,并解压编译安装
wget https://tar.goaccess.io/goaccess-1.2.tar.gz
tar xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/./configure --enable-geoip --enable-utf8make && make install


#修改/etc/nginx/nginx.conf文件的日志存储格式
log_format main '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '
'$status $body_bytes_sent "$http_referer" - $request_body'
'"$http_user_agent" "$http_x_forwarded_for"';

#修改文件/usr/local/etc/goaccess.conf改成goaccess格式标准对应为
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] requesthost:"%v"; "%r" requesttime:"%T"; %s %b "%R" - %^"%u"


#测试生成页面
goaccess -f /var/log/nginx/access.log -c -a>/usr/share/nginx/html/go.html


#后台实时生成数据到goaccess页面
/usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/go.html --real-time-html &

安装常见问题:

问题1:安装时提示:Missing development files for the GeoIP library

解决方法: 下载GeoIP library包,执行 yum -y install GeoIP-update

问题2:

Fatal error has occurred
Error occurred at: src/parser.c - parse_log - 2764
No time format was found on your conf file.

问题解析: 配置文件goaccess.conf中time format格式不正确,只需把所需要对应日志格式前的#去掉即可,最后格式如下:

time-format %T
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b

Goaccess支持实时查看access日志,Linux执行:goaccess -f access.log -o go.html --real-time-html -p goaccess.conf,按enter执行
解释如下:access.log处要改成access.log的绝对路径 go.html表示生成的Html文件,这里也要用绝对路径代替,goaccess.conf表示配置文件,也要写绝对路径,否则会提示找不到这个文件

实时日志命令执行后提示如下:

这样就可以查看go.html文件了。

可以在windows本地打开浏览器访问实时的go.html文件,如果你的服务器访问地址是www.xxx.com,则只需访问www.xx.com/go.html即可

如想查看goaccess访问对应的端口,执行netstat -antp | grep goaccess,结果如下:

如果端口被占用,无法启动,可以执行如下命令关闭端口:

su - root     #切换到root用户

lsof -i :端口号     #得到PID号

kill -9 PID



转载于:https://www.cnblogs.com/wx170119/p/11226268.html

相关文章:

在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的

在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的。下面通过一个例子来阐述如何实现这一思想: // 记录特定进程的affinity maskunsigned long lProcessAffinityMask;// 记录系统的affinity maskunsigned long lSystemAffinityMask;::GetProc…

学习Spring Boot

Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别的单体应用. Spring boot 怎么干的? 下面让我们来用spring boot 做一个hello world. 环境准备, 需要保证你的机器上已经有…

Linux添加用户组和添加用户

1.用户组 添加组:groupadd 组名 [rootServer-n93yom ~]# groupadd dev [rootServer-n93yom ~]# cat /etc/group | grep dev dev:x:10011: [rootServer-n93yom ~]# 删除组:groupdel 组名 [rootServer-n93yom ~]# groupdel dev [rootServer-n93yom ~]# cat…

用javascript实现仿163的js广告向下挤压页面的效果

本次实现一个js小小特效,效果就是广告从页面的上方出来将基本页面挤压下去。 实现的思路是将两个div(广告div1和div2)。将div1的高度不断增加,增加的同时div2的y轴坐标变大,div1的高度增加多少相对应的y轴坐标加大多少…

【eclipse】快速调整eclipse背景和格式的方法

第一步 第二步 第三步 :选择相应的格式 效果如图

对做C#自定义控件的一点心得

近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装这个COM组件,中间遇到很多曲折,研究了一个星期,终于完成了 下面总结一下我做DSOFramer这个自定义控件的注意地方: 1、在创建一个Windows窗体控件库的时候&am…

numpy知识点

1、nonzero 对于一维数据来说,将返回符合条件的 下标 >>> b1 np.array([True, False, True, False]) >>> np.nonzero(b1)(array([0, 2]),)对于二维数据来说,将返回两维 元组, 第一维是符合条件的 x的索引,第二…

Excel导入异常Cannot get a text value from a numeric cell解决

POI操作Excel时偶尔会出现Cannot get a text value from a numeric cell的异常错误。 异常原因:Excel数据Cell有不同的类型,当我们试图从一个数字类型的Cell读取出一个字符串并写入数据库时,就会出现Cannot get a text value from a numeric …

【蓝桥java】递归基础之反向输出字符串

题目:输入一个字符串,要求将该字符串反向输出 代码实现: package xn.zzunit.recurrence;/*** 递归方法反向输出字符串* author tyrantForever**/ public class Project1 {public static void main(String[] args) {String testString "…

SQL Server中灾难时备份结尾日志(Tail of log)的两种方法

简介 在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏。可以通过备份结尾日志(Tail of log)使得数据库可以恢复到灾难发生时的状态。 例如: 上图中。在DB_1中做了完整备份,在Log_1,Log_2处做了日志备份。在Log_2备份之后不久&…

C examples

最近在看David R. Hanson 的《C Interfaces and Implementations》&#xff0c;文中第一章提到了Literate Programming 作者举了一个例子&#xff1a; 功能&#xff1a;用于检测输入中相邻且相同的单词 #include<stdio.h> #include<math.h> #include<errno.h&g…

特征工程:特征生成,特征选择(三)

转自&#xff1a;https://blog.csdn.net/cymy001/article/details/79169862 特征生成 特征工程中引入的新特征&#xff0c;需要验证它确实能提高预测得准确度&#xff0c;而不是加入一个无用的特征增加算法运算的复杂度。 1. 时间戳处理 时间戳属性通常需要分离成多个维度比如年…

JAVA设计模式之不变模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述不变&#xff08;Immutable&#xff09;模式的&#xff1a; 一个对象的状态在对象被创建之后就不再变化&#xff0c;这就是所谓的不变模式。 不变模式的结构 不变模式可增强对象的强壮型(robustness)。不变模式允许多个对象共享…

【蓝桥java】递归基础之智力训练

题目&#xff1a; 匪警请拨110,即使手机欠费也可拨通&#xff01; 为了保障社会秩序&#xff0c;保护人民群众生命财产安全&#xff0c;警察叔叔需要与罪犯斗智斗勇&#xff0c;因而需要经常性地进行体力训练和智力训练&#xff01; 某批警察叔叔正在进行智力训练&#xff1a; …

EF-Entity Framework 相关技术点收集贴

不定期、偶尔、添加更新 在网络上看到或者自己开发过程中碰到的EF&#xff0d;Entity Framework相关技术点 本文地址:http://www.cnblogs.com/vnii/archive/2012/02/28/2371736.html 1.数据表字段有默认值&#xff0c;比如DateTime类型的字段CreateTime默认值为数据新增的时间g…

[翻译]LightRacer游戏架构

1.0版本的Light Racer架构可说的不多。仅有一个单一的Activity&#xff0c;进行按钮的处理&#xff0c;显示游戏相关数据和显示GameView。我将在另一篇文章中说明游戏的画面是如何工作的&#xff0c;但是现在我先声明一下的就是&#xff1a;在Android中&#xff0c;单个Activit…

case when里的like功能 ////// 截取(substr)

case when里的like功能 假如要用到case when又要用到like这样的功能&#xff0c;即如果字符串包含‘语文’就怎么怎么样&#xff0c;包含‘数学’就怎么怎么样&#xff0c;包含‘英语’就怎么怎么样&#xff0c;like是用于where中的&#xff0c;放在case when里面是无效的&…

在Asp.Net MVC中设定site路径所对应的默认action

设置路由的default的Controller和Action可以达到我们预期的效果&#xff0c;代码如下所示&#xff1a; public class RouteConfig {public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(n…

【蓝桥java】递归基础之输出连续数字

题目&#xff1a;使用递归方法输出连续的数字 代码实现&#xff1a; package xn.zzunit.recurrence;/*** 递归方法输出连续的数字* author tyrantForever**/ public class Project2 {public static void main(String[] args) {printNumber(2, 9);}public static void printNu…

慢慢学Linux驱动开发,第十章,GNU C的扩展

内核开发者使用的C语言涵盖了ISO C99标准和GNU C扩展特性。这里简单介绍一下GNU C的扩展特性。 1.内联&#xff08;inline&#xff09;函数 GNU的C编译器支持内联函数&#xff0c;也是C的一个特性之一。就是函数会在所调用的位置上展开&#xff0c;这样做虽然会导致代码量的增加…

vMA学习笔记之一:将vMA加入域

目的&#xff1a; 将vMA加入域的方法 操作步骤&#xff1a; 1、 开启vMA 2、 按住AltF2切换到虚拟终端界面&#xff0c;使用vi-admin用户登录 2 3、 已经登录进来了 4、 在进行加域操作之前&#xff0c;必须确保DNS配置正确&#xff08;在初始化安装的时候会提示你设置DNS&…

关于DWG文件转换成PDF

最近有这样一个需求&#xff0c;客户会提供DWG文件&#xff0c;因为DWG文件是不能直接在网页上显示的&#xff0c;所以必须对他做处理&#xff0c;要求是转换成PDF格式。我查了很久的资料&#xff0c;很多都是基于C#和.NET的方法&#xff0c;而且都是说的很模糊&#xff0c;不是…

剑指offer--day07

1.1 题目&#xff1a;反转链表&#xff1a;输入一个链表&#xff0c;反转链表后&#xff0c;输出新链表的表头。 1.2 思路&#xff1a;这道题&#xff0c;我们要做到的是反转链表&#xff0c;我们的思路是将前一个节点与后一个节点断开&#xff0c;然后让后一个节点指向前一个节…

【蓝桥java】递归基础之计算共多少种走法

计算从某个位置&#xff08;x,y&#xff09;走到&#xff08;0,0&#xff09; 一共多少种走法 代码实现&#xff1a; package xn.zzunit.recurrence;/*** 从某个位置&#xff08;x,y&#xff09;走到&#xff08;0,0&#xff09; 一共多少种走法* author tyrantForever**/ pub…

数据库设计的三大范式

为了建立冗余较小、结构合理的数据库&#xff0c;设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff0c;必须满足一定的范式。在实际开发中最为常见的设计范式有三个&#xf…

JS得到对应字段 的值。遍历

这个写法不是经典。我受感触是因为。我写很多代码&#xff0c;没去想过怎么样去节省我们的开发时间&#xff0c;应该去写一些通用性的代码。 而且。我也没有把C#代码优化的思想转到各个地方。像JS的代码。我就没去想过怎么去优化。 加油吧。 function getPageListSet(pageIndex…

微信小程序开发中如何实现侧边栏的滑动效果?

原文链接&#xff1a;https://mp.weixin.qq.com/s/7CM18izpZqf0oc0D75IGmQ1概述在手机应用的开发中侧边栏滑动是很常见的功能&#xff0c;当然在小程序中也不会例外&#xff0c;很多特效还没有成熟案例&#xff0c;只能原生重写&#xff0c;所以今天在网上为大家收集整理来几个…

采购审批专题总结--bob

一采购审批设置的一般步骤&#xff1a; 前置步骤 ①定义安全性控制 N&#xff1a;PO/设置/采购/单据类型 ②使用审批结构 N&#xff1a;PO/设置/组织/财务选项 ③安全层次结构选择 N&#xff1a;PO/设置/组织/采购选项 ④采购…

【蓝桥java】递归基础之39级台阶

题目&#xff1a; 小明刚刚看完电影《第39级台阶》。离开电影院的时候&#xff0c;他数了数礼堂前的台阶数&#xff0c;恰好是39级! 站在台阶前&#xff0c;他突然又想着一个问题&#xff1a; 如果我每一步只能迈上1个或2个台阶。先迈左脚&#xff0c;然后左右交替&#xff0c;…