日志分析工具——goaccess

简介:

每天把日志分析结果通过邮件发送给boss和研发,是不是省去自己写脚本的时间了?

wKioL1REr0SyFyRrAAbfTaYWVPI456.jpg

下面是goaccess安装步骤,我也是从其他地方抓取的,安装很简单,网上一搜一大把

安装GoAccess

RedHat或centos,使用yum:

yum install goaccess

GoAccess有两种使用方法,一种是直接在控制台显示和操作。

当你要立马分析出今天早上10点到12点的IP访问情况的时候,直接在控制台敲命令是最快的。

另外一种就是生成html文件或者数据文件。

如果你希望每天管理的服务器集群能给你发送一个昨天访问日志的情况,这个就是不二选择了。

控制台使用GoAccess

goaccess的参数:

-f <input-file> : 需要解析的日志文件

-a --agent-list : 在host模块是不是能点击IP出现这个IP的user-agentlist,就是出现如图的功能

Image

-c --conf-dialog: 是否显示log和format配置对话窗口。

就是下面的这个窗口

Image(1)

这个窗口有很多可以研究的。

 

首先,goaccess支持的日志格式有哪些?

Common Log Format (CLF)

通用日志格式,例子:

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

这个是Common Log Format的扩展,例子:

125.125.125.125 - dsmith [10/Oct/1999:21:15:05 +0500] "GET /index.html HTTP/1.0" 200 1043 "http://www.ibm.com/" "Mozilla/4.05 [en] (WinNT; I)" "USERID=CustomerA;IMPID=01234"主机 用户身份 作者 [日期] "请求方法 请求路径 请求协议" 状态码 字节数 referrer 客户端代理 cookie

 W3C

IIS 4.0和5.0是使用这种格式的,例子如下:

#Software: Microsoft Internet Information Server 4.0#Version: 1.0#Date: 1998-11-19 22:48:39#Fields: date time c-ip cs-username s-ip cs-method cs-uri-stem cs-uri-query sc-status sc-bytes cs-bytes time-taken cs-version cs(User-Agent) cs(Cookie) cs(Referrer)1998-11-19 22:48:39 206.175.82.5 - 208.201.133.173 GET /global/images/navlineboards.gif - 200 540 324 157 HTTP/1.0 Mozilla/4.0+(compatible;+MSIE+4.01;+Windows+95) USERID=CustomerA;+IMPID=01234 http://yourturn.rollingstone.com/webx?98@@webx1.html

 CloudFront

AWS上的日志格式

自定义格式

关于自定义格式所设置的参数说明在这里

 

-d --with-output-resolver 在HTML输出或者json输出中开启IP 解析

如果开启了-d,goaccess就会使用GEOIP来进行IP解析。

-e --exclude-ip=<ip address>

Host模块中不需要被统计的IP,比如可以将爬虫的IP过滤掉

-h --help 帮助文档

-H --http-protocol 显示的时候是否带上HTTP协议信息

-m --with-mouse 控制面板开启支持鼠标点击,带上了m之后,双击鼠标就相当于回车的操作

-M --http-method 是否带上HTTP方法信息

-H和-M带上之后效果为:

Image(2)

-o --output-format=csv|json 输出为csv或者json形式

-p --conf-file=<filename>

指定配置文件,如果你有配置文件,配置文件中又恰巧设置了log-format和date,那么你就不会被强制进入到format对话框了。如果你没有设置的话,默认使用~/.goacessrc。

-q --no-query-string

忽略请求的参数部分

-r --no-term-resolver

在Host模块中是否进行IP的解析。加上-r是禁止IP解析。

--no-color

输出无颜色标示

--real-os

展示真实的操作系统。在Operation System模块中,是否展示更详细的操作系统信息。

如图:

Image(3)

下面说说的是控制台的键盘操作:

F1是打开帮助文档

F5是刷新当前窗口

q是退出当前窗口,直到退出程序

o是进入选择条目

0-9 是选择模块

tab和shift+tab是在前后模块之前切换

j和k是在模块内部条目切换

s是模块内部条目排序方式

 

ps:模块切换在右上角有当前模块的标示

 

使用GoAccess生成文件

说起GoAccess最让你爽的就是能生成html了,然后每天就可以看个统计报表。

下面的命令能生成html页面:

goaccess -d -f web.log -a -p /home/yejianfeng/.goaccessrc > test.html

 

生成的html的截图如下:

Image(5)

也可以生成json:

goaccess -q -f web.log -a -p /home/yejianfeng/.goaccessrc -o json >test.json

 

和csv

goaccess -q -f web.log -a -p /home/yejianfeng/.goaccessrc -o csv>test.csv



我一般是将分析结果保存为HTML格式,然后通过python脚本发送出去,脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/python
#coding:utf-8
import  smtplib
import  sys
from  email.Header  import  Header
from  email.mime.text  import  MIMEText
from  email.mime.multipart  import  MIMEMultipart
from  email.mime.image  import  MIMEImage
def  sendMail(sender,receiver,subject,attfile):
     smtpserver  =  'smtp.126.com'
     username  =  'admin123'
     password  =  '111111'
     msg  =  MIMEMultipart( 'alternative' )
     msg[ 'Subject' =  Header(subject, 'utf-8' )
     =  open (attfile)
     html  =  ''.join(f.readlines())
     f.close()
     part2  =  MIMEText(html, 'html' , 'utf-8' )
     msg.attach(part2)
     att  =  MIMEText( open (attfile, 'rb' ).read(), 'base64' , 'utf-8' )
     att[ "Content-Type" =  'application/octet-stream'
     att[ "Content-Disposition" =  'attatchment;filename="report.html"'
     msg.attach(att)
     smtp  =  smtplib.SMTP()
     smtp.connect( 'smtp.126.com' )
     smtp.login(username,password)
     smtp.sendmail(sender,receiver,msg.as_string())
     smtp.quit()
if  __name__  = =  '__main__' :
     sender  =  'admin123@126.com'
     receiver  =  [ 'user01@126.com' , 'user02@126.com' ]
     subject  =  'xxx日志分析报告'
     sendMail(sender,receiver,subject,sys.argv[ 1 ])





本文转自 baiying 51CTO博客,原文链接:http://blog.51cto.com/baiying/1565880,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
4月前
|
监控 安全 NoSQL
5 个适用于 Linux 的开源日志监控和管理工具
5 个适用于 Linux 的开源日志监控和管理工具
281 0
|
6天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
10 0
|
6天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
37 0
|
5月前
|
存储 数据可视化 搜索推荐
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
57 0
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus VS ELK Stack:容器监控与日志管理工具的比较与选择
在容器化时代,有效的容器监控与日志管理工具对于确保应用程序的可靠性和可维护性至关重要。本文将比较两个主流工具,Prometheus和ELK Stack,探讨它们在容器监控和日志管理方面的特点、优势和适用场景,帮助读者做出明智的选择。
|
3月前
|
存储 监控 Ubuntu
日志切割工具-Logrotate实现nginx日志切割
日志切割工具-Logrotate实现nginx日志切割
37 0
|
5月前
一个查看 SAP CRM One Order 运行时生成的应用日志(Application Log)的小工具
一个查看 SAP CRM One Order 运行时生成的应用日志(Application Log)的小工具
61 0
|
5月前
|
监控 Java
JVM日志分析及工具
JVM日志分析及工具
48 0
|
9月前
|
存储 监控 Ubuntu
日志切割工具-Logrotate实现nginx日志切割
日志切割工具-Logrotate实现nginx日志切割
161 0

热门文章

最新文章