ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:240.28KB ,
资源ID:6360825      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6360825.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(GoAccess初探.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

GoAccess初探.docx

1、GoAccess初探 real-time web log analyzer一 关于GoAccess 31 GoAccess是什么? 32 特点 33 为什么用GoAccess 34缺点 4geoip粒度太粗 4日期粒度太粗 4二 GoAccess的安装 41 最新安装包的下载 42 需要安装的依赖 42.1 官方给出的相关依赖提示 52 编译安装 52.1 编译的参数 53 yum安装(我们选择这种方式) 6三 GoAccess参数说明 6四 GoAccess的使用 8五 GoAccess对于access日志的自定义 91 如何自定义日志格式 92 官方自定义日志格式的参数 92.1 自定义参

2、数及其对应nginx的accesslog中的fromat 103 根据我们的nginx的format自定义日志格式 10六 真正分析access日志 11键盘操作: 12七 使用GoAccess生成报表及一些管道的应用 12八 两个问题的调研 131 关于设备识别unknow的问题 132 没有找到对错误日志的分析方法 16一 关于GoAccess1 GoAccess是什么?GoAccess是一款开源工具,它可以实时地去分析web的log并且提供了在*nix系统上通过交互式窗口来运行查看,它通过可视化报表快速提供给系统管理员有价值的关于HTTP的统计信息。2 特点可以将指定的web log文件

3、进行解析,通过终端把统计的数据展现出来 生成统计数据,带宽统计等 请求的时间(有利于查看慢的站点) 最高访问 请求的静态文件统计,例如图片,js , css等 各个状态码的统计 Host,反向DNS,ip所在地 操作系统 浏览器/蜘蛛 引用的网站 引用的URLs 关键词组 地理位置 (大陆、国家、城市) 可输出JSON或CSV 各种的颜色主题 支持大容量数据且支持大容量数据的持续分析 支持IPv6 可生成HTML报告3 为什么用GoAccessGoAccess背后的主要思想是能够快速分析和查看web服务器统计数据,虽然可以生成一个HTML、JSON、CSV报告,默认情况下它输出终端,并且你还可

4、以用到他更多的监控命令工具。4缺点geoip粒度太粗它是使用机器自带的GeoIP,这个自带的77k左右的IP库只能判断出国籍,不能判断到城市。呃,这个就意味着你的报表中有99%的IP统计是来自:China。你可以升级你的GeoIp,但是,付费。网上有免费的GeoLiteCity.dat库,但是goaccess自身就不支持国籍-城市的分类,也不支持使用外部的IP库。我能想到还有的办法就是用goaccess生成json,然后自己写python也好,php也好程序来加载城市的Ip库来解析地理位置。然后再生成报表。不过,这样,好像就不美了。好消息是这个功能在ISSUE中有人提了,TODO LIST。日

5、期粒度太粗日期只能粒度到天,如果需要统计一天每个小时的访问数据,就没法了。也不是没办法,你可以先grep小时的数据,然后再用goaccess解析。不过,这样,好像很挫。好消息是这个功能在ISSUE中有人提了,TODO LIST。二 GoAccess的安装1 最新安装包的下载通过http:/goaccess.io/download 可以下载到最新的tar包2 需要安装的依赖yum install glib2 glib2-devel GeoIP-devel ncurses-devel根据官方给出的提示,这里我们先安装好相应的依赖,以便日后的使用2.1 官方给出的相关依赖提示DistroNCurse

6、sGLib = 2.0.0GeoIP (optional)Tokyo Cabinet (optional)Ubuntu/Debianlibncursesw5-devlibglib2.0-devlibgeoip-devlibtokyocabinet-devFedora/RHEL/CentOSncurses-develglib2-develgeoip-develtokyocabinet-develArch Linuxncursesglib2geoipcompile from sourceGentoosys-libs/ncursesdev-libs/glib:2dev-libs/geoipdev-d

7、b/tokyocabinet2 编译安装1 wget http:/tar.goaccess.io/goaccess-0.9.2.tar.gz2 tar -xzvf goaccess-0.9.2.tar.gz3 cd goaccess-0.9.2/4 ./configure -enable-geoip -enable-utf85 make6 make install2.1 编译的参数-enable-debug用于调试并且关闭编译器优化-enable-utf8用于支持更多的字符集,满足Ncursesw的需求-enable-geoip用于地理位置的支持. 满足MaxMinds GeoIP 需求-en

8、able-tcb=用于对memhash和btree的支持-disable-zlib在btee数据库上禁用zlib压缩-disable-bzip在btree数据库上禁用bzip压缩3 yum安装(我们选择这种方式)先安装epelWget http:/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmwget rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm安装GoAccessyum install goaccess -y安装十分方便,到此就结束了三 GoAccess参

9、数说明goaccess -f log -c-r-m-h-q-d-g-a-o csv|json-e IP_ADDRESS.-a -agent-list可以在host栏点击ip显示user agent 如下图-c -config-dialog是否显示log和format配置对话窗口,也可以用于日后标准格式的调试,和重新设定格式-d -with-output-resolver生成json报表需要用到的参数-e -exclude-ip 排除某个IP或者一个范围例如.,192.168.0.1-192.168.0.10-f -log-file 用于解析日志文件,必加的参数-g -std-geoip支持标准

10、的geoip-h -help帮助-H -http-protocol包含HTTP请求的协议,格式中已设定无需加此参数-m -with-mouse支持鼠标的点击,点击相当于键盘的回车操作-M -http-method包含请求的方法和当前的请求,以后的格式中已设定,无需此参数-o -output-format 生成jsion和csv报表需要加此参数导出-p -config-file 可以指定已经配置好格式的配置文件,优先于默认的格式-q -no-query-string忽略请求中疑问号后的query例如 = 官方提示移除这个可以减少内存的消耗,根据需求而定-r -no-term-resolver禁止

11、ip在终端上的显示-s -storage显示当前的存储算法-h -help命令行的帮助-V -version显示版本号-444-as-404视444code为404code-ignore-panel=PANEL忽略以下列出的数据VISITORSREQUESTSREQUESTS_STATICNOT_FOUNDHOSTSOSBROWSERSVISIT_TIMESREFERRERSREFERRING_SITESKEYPHRASESGEO_LOCATIONSTATUS_CODES-real-os展示真实的操作系统。在Operation System模块中,是否展示更详细的操作系统信息。四 GoAcce

12、ss的使用首次我们通过执行 goaccess -f access.log 解析得到以下窗口Common Log Format (CLF) 此适用于apache标准日志通用日志格式,例子:127.0.0.1 - frank 10/Oct/2000:13:55:36 -0700 GET /apache_pb.gif HTTP/1.0 200 2326主机 用户身份 作者 日期 请求方法 请求路径 请求协议 状态码 字节数NCSA Commbined Log Format 适用于nginx标准日志这个是Common Log Format的扩展,例子:125.125.125.125 - dsmith

13、10/Oct/1999:21:15:05 +0500 GET /index.html HTTP/1.0 200 1043 Mozilla/4.05 en (WinNT; I) USERID=CustomerA;IMPID=01234主机 用户身份 作者 日期 请求方法 请求路径 请求协议 状态码 字节数 referrer 客户端代理 cookie需要注意的是当空格选中模式的时候按回车会出现此报错,是由于你配置文档没有打开日志格式和日期格式的注释,或者说是有可能日志格式与系统给出的相应格式不符,系统无法读取显然这里我们不能通过官方给出的标准格式来解析五 GoAccess对于access日志的自定

14、义1 如何自定义日志格式1.1 可以通过-c的参数来调出上面系统自带的定义日志格式窗口,因为在你设置完日志格式后执行goaccess -f access.log 就不会再调出此窗口,只有首次执行才会调用,所以要通过-c参数1.2 我们可以通过修改/etc/,/usr/etc/or/usr/local/etc/下的配置文件来进行自定义格式Vim /etc/goaccess按照上图,取消data-format 和 log-format的注释,定义自己的格式,或者自己加两行也可以2 官方自定义日志格式的参数time_format 在配置文件可以加入字段,后面加上时间的自定义参数,对时间格式做全局设置

15、date_format 在配置文件可以加入此字段,后面加上日期的自定义参数,对日期格式做全局设置log_format 在配置文件可以加入此字段,后面加上自定义的日志参数,对日志格式进行全局的设置2.1 自定义参数及其对应nginx的accesslog中的fromat%x 匹配替代time_format和date_format的设定,可以同时调用两个的全局设置%t 匹配替代time_fromat的设置 %d 匹配替代 date_format的设置%h 客户端ip $remote_addr%r 请求方法 $request%m 请求算法 相当于$request中的 post或get的匹配%U 请求的

16、URL路径(包括任何查询字符串) 相当于$request中的 URL匹配%H 请求的协议 相当于$request中的 HTTP/1.1%s 服务端返回客户端的状态code $status%b 返回客户端的body size $body_bytes_sent%R refer $http_referer %u user-agent $http_user_agent%D 服务请求的时间,以微秒为单位 $request_time%T 服务请求的时间,以秒为单位 $request_time%L 服务请求的时间,以毫秒为单位 $request_time% 忽略官方没有对应参数的区域以上是官方给出的所有匹配

17、参数,原版见 http:/www.goaccess.io/man3 根据我们的nginx的format自定义日志格式log_format main $hostname $server_name $remote_addr - $remote_user $time_local $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for $upstream_addr $upstream_response_time $request_time $http_cookie;例如:以上为ngin

18、x中的format配置根据nginx中的format信息和真实访问日志内容,得出以下自定义格式date-format %d/%b/%Y log-format % % %h %d:% %r %s %b %R %u % %:% % %T %注意 以上log-format每个参数之间有空格,跟真实访问日志中空格对应下面对log-fomat后面匹配参数从左至右依次于nginx的format和真实日志内容进行对应Log-fromat相应参数Nginx相应format%$hostname%$server_name%h$remote_addr%- $remote_user%d:%$time_local “%

19、r”$request%s$status%b$body_bytes_sent“%R”$http_referer%u$http_user_agent%$http_x_forwarded_for%:%$upstream_addr% $upstream_response_time%T$request_time%$http_cookiedate-format %d/%b/%Y 对应的是14/Jul/2015%d:% 对应的是 - - 14/Jul/2015:18:13:06 +0800 这部分是官方默认配置方法这里的%d调用的就是date-format格式并且这里的匹配是官方默认方法,不用特意留意 -

20、- :+ 这些符号和空格通过-c参数调出的官方日志设置窗口可以分析出这点到此日志格式就定义完成了六 真正分析access日志此时通过 goaccess -f log日志名字 直接可以分析,因为在配置文档设置过,不会再弹出之前官方的日志设置窗口,如果想弹出可以加-c参数键盘操作: F1或h:帮助 F5:刷新主界面 q:退出程序/当前窗口/折叠当前模块 o或Enter:展开选中的模块或窗口 0-9以及Shift + 0:将选中的模块或窗口激活 k和j:模块内部移动 c:修改配色 f和b:模块中上下滚屏 tabshift+tab:前后切换模块 s:模块内部排序选择 /:在所有模块中搜索(支持正则)

21、n:找到下个匹配 g和G:跳到第一项/最后一项七 使用GoAccess生成报表及一些管道的应用使用GoAccess生成html报告: goaccess -f access.log -a report.html生成json报告:goaccess -f access.log -a -d -o json report.jsonCSV:goaccess -f access.log -o csv report.csv由于nginx会自动压缩日志,以下命令可以直接分析压缩后的日志:123zcat access.log.*.gz | goaccess#或者zcat -f access.log* | goac

22、cess一些其他关于管道的用法zcat access.log.1.gz | goaccess让goaccess去分析已经打包压缩好的日志文件。或者干脆分析目前下所有日志zcat access.log* | goaccess如果需要分析某天的日志,例如10月5号那天的日志,我们让linux管道命令来大显身手sed -n /05/Dec/2010/,$ p access.log | goaccess -s -b分析从11月5号到12月5号一个月内的日志sed -n /5/Nov/2010/,/5/Dec/2010/ p access.log | goaccess -s -b当你不希望在服务器上安装

23、goaccess程序,可以通过调用本地的goaccess程序来分析服务器上的日志ssh userserver cat /var/log/apache2/access.log | goaccess -s -a -b可以排除某个IP或者一个列表的IP交给goaccessgrep -v cat exclude_vhost_list_file vhost_access.log | goaccess八 两个问题的调研1 关于设备识别unknow的问题此项应该是从user_agent判断,但是不清楚为什么识别不了ios分别取出ios的总数和android总数(ios)68494+(android)1729

24、2=85786 用68494/85786=79%与报表中计算基本相似,没导致完全准确可能是由于下面截图导致我对这列进行过滤发现会出现一些(linux;字段专门对一条包含IOS的accesslog进行分析日志内容如下:XXXXXXXXXXXX.com XXXXXXXXXXXXX 117.136.60.57 - - 14/Jul/2015:18:00:01 +0800 GET /url HTTP/1.1 200 1483 - ios - XX.XX.XX.XX 0.017 0.017 XXXXXXXXXXXXXXXXXXXXXXXXX结果仍然是说明跟上面提到的Linux字段没有关系,goacces

25、s无法识别然后再单独查看安卓字段的日志日志内容如下:XXXXXXXXXXXX.com XXXXXXXXXXXXX 117.136.60.57 - - 14/Jul/2015:18:00:01 +0800 GET /url HTTP/1.1 200 1483 - ios - XX.XX.XX.XX 0.017 0.017 XXXXXXXXXXXXXXXXXXXXXXXXX结果可以分析出安卓Goaccess基本没什么详细文档,官方也没明确说法这是我在issue查到一个相关的问题,如下图2 没有找到对错误日志的分析方法我首先用分析访问日志方法去匹配超时的那种errorlog%d %t % %#%:

26、*% %, %:%h, %:$, %:%r, %:%R, %:%这样是不成功的,然后我分析访问日志没逗号,我把逗号全部去掉也不行然后我再以空格为分隔,所有未知区域用%代替,还是不成功的,然后我逐次去掉不同的符号去匹配也是不成功,然后就有了下面的想法如果用errorlog去拼凑accesslog首先accesslog的解析是没问题的log-format % % %h %d:% %r %s %b %R %u % %:% % %T %我把后面都删除只剩下 log-format % % %h %d:% 想试试goaccess有没有那么智能,只要匹配上正确的就能解析,显然不行然后我又用这种方式log-f

27、ormat % % %h %d:% %在后面加上了一个%看看能不能全部匹配上后面的内容,显然还是不行然后我又尝试log-format % % %h %d:% % % % % % % %:% % % %后面全部用%忽略每个区域,数量都是对上的,但是显然还是不行由此判断它对日志的分析有自己的一套格式,对于匹配要求很高最后我把errorlog的所有未知区域都去掉,最小化分析2015/07/17 19:10:20 61.158.152.98 POST /Utility/PVCounter.api HTTP/1.1 http:/10.10.30.65:80/Utility/PVCounter.apilog-format %d %H:%M:%S %h %r %还是没有成功

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1