GoAccess对Nginx日志分析完美分析

 前言html

QQ截图20180831124109.png

若是把运维看作是医生给病人看病,则日志就是病人对本身的陈述,不少时候医生须要经过对病人的描述中得出病人情况,是否严重,须要什么计量的药,什么类型的药。因此古人有句话叫对症下药,这个症就是病人的描述加医生的判断,在重一点的病在加上不少的化验。在医生看病时病人的描述和化验单上的数据对医生是很是重要的。同理日志在运维中的做用也是相似的,但很是不幸,日志在不少运维中被严重低估,直到磁盘空间不足的时候才想到,这有个大的日志文件把他删了,这样能够节省空间。nginx


 GoAccessweb

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

  • 全部面板和指标都定时在终端输出上每200毫秒更新一次,在HTML输出上每秒更新一次。浏览器

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

  • 跟踪提供请求所需的时间。若是您想跟踪减慢网站速度的网页,则很是有用。bash

  • 数据持久性强,GoAccess可以经过磁盘上的B + Tree数据库逐步处理日志。服务器

  • GoAccess是用C语言编写的,要运行它,你只须要将ncurses做为依赖项,它甚至还具备本身的RFC6455兼容Web Socket服务器。网络

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

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

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

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


 部署方案

方案一: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 &


 页面解析

QQ截图20180831122855.png

General Statistics:此面板提供了几个指标的摘要,其中一些包括:有效和无效请求的数量,分析数据集所花费的时间,惟一访问者,请求的文件,静态文件(CSS,ICO,JPG等)HTTP引用,404s,已解析日志文件的大小和带宽消耗。

Unique visitors此面板显示点击次数,惟一身份访问者和每一个日期的累积带宽等指标。包含相同IP,相同日期和相同用户代理的HTTP请求被视为惟一访问者。默认状况下,它包括网络爬虫/蜘蛛。 可使用--date-spec = hr将日期特异性设置为小时级别,这将显示日期,例如05 / Jun / 2016:16。若是您想跟踪小时级别的每日流量,这很是棒。

Requested files此面板显示Web服务器上请求最多的文件。它显示了匹配,惟一身份访问者和百分比,以及累积带宽,协议和使用的请求方法。

Requested static files列出了最经常使用静态文件,如:JPG,CSS,SWF,JS,GIF,和PNG文件类型,使用相同的指标做为最后的面板一块儿。能够将其余静态文件添加到配置文件中。

404 or Not Found显示与先前请求面板相同的指标,可是,其数据包含在服务器上找不到的全部页面,或一般称为404状态代码。

Hosts此面板包含有关主机自己的详细信息。这很是适合发现×××性爬虫,并肯定谁在吃你的带宽。 扩展面板能够显示更多信息,例如主机的反向DNS查找结果,原产国和城市。若是-a启用了参数,则能够经过选择所需的IP地址,而后按Enter来显示用户代理列表。

Operating Systems此面板将报告主机在到达服务器时使用的操做系统。它试图提供每一个操做系统的最具体版本。
Browsers此面板将报告主机在访问服务器时使用的浏览器。它试图提供每一个浏览器的最具体版本。
Visit Times此面板将显示每小时报告。此选项显示24个数据点,天天一小时一个。 可选地,可使用--hour-spec = min将小时特异性设置为十分之一水平,这将显示小时为16:4若是您想要发现服务器上的流量峰值,这很好。
Virtual Hosts此面板将显示从访问日志中解析的全部不一样虚拟主机。若是在日志格式字符串中使用%v,则会显示此面板。
Referrers URLs若是相关主机经过其余资源访问了网站,或者是从其余主机连接/转移给您,则会在此面板中提供引用它们的网址。请参阅`--ignore-panel`配置文件以启用它。 (默认禁用)
Referring Sites此面板仅显示主机部分,但不显示整个URL。请求来自的URL。
Keyphrases它报告了用于Google搜索,Google缓存和Google翻译的关键字,这些关键字已致使您的网络服务器。目前,它仅经过HTTP支持Google搜索查询。请参阅`--ignore-panel`配置文件以启用它。 (默认禁用)
Geo Location肯定IP地址在地理位置的位置。统计数据按大陆和国家分列。它须要使用GeoLocation支持进行编译。
HTTP Status CodesHTTP请求的数字状态代码的值。
Remote User (HTTP authentication)这是HTTP身份验证肯定的请求文档的人员的用户ID。若是文档没有密码保护,则此部分将为“ - ”,就像前一个部分同样。除非%e在log-format变量中给出,不然不会启用此面板。


 最后

GoAccess日志分析工具的功能还有不少,能够细分到统计某一天、某一个IP用户的访问状况,也能够统计某个时间段的,更能够导出CSV表格整理汇总分析

相关文章
相关标签/搜索