使用GoAccess监控Nginx和Apache日志
使用开源实时日志分析工具-GoAccess监控和分析Web服务器日志
如果您没有正确的工具,Web故障排除可能很有趣,但也可能令人沮丧。
如果您正在支持高流量的网站,通常需要分析和监视Web服务器日志以进行性能和容量规划。这对于Web工程师来说是必不可少的。
手动检查较小的日志文件大小是可以的,但是如果文件较大,那么浏览数百万行以查找指标将不会很有趣。
这就是为什么您需要工具 to facilitate administrator job并使其变得更加高效。
GoAccess是一个轻量级开源日志分析工具,支持多种日志格式,可与以下任何一种一起使用。
- Nginx
- Apache HTTP
- AWS ELB, S3, CloudFront
- Google云存储
您可以使用GoAccess分析哪些指标?
几乎可以在日志中捕获的所有内容。为了给您一个概念:
- 请求的服务时间
- 访问者的IP、DNS、主机
- 访问者的浏览器和操作系统详细信息
- 404未找到的详细信息
- 顶部请求/访问者
- 带宽
- 静态文件
- 地理位置
- 状态代码
- 等等..
是否正在寻找监视站点的这些指标?
很好!
您可以在哪个操作系统上安装?
GoAccess只有一个依赖项-ncurses
。如果您可以安装,可以在任何操作系统上使用它。
它在以下发行版软件包中可用:
- Ubuntu
- Debian
- Fedora
- CentOS
- FreeBSD/OpenBSD
- Slackware
- Arch Linux
- Gentoo
- MacOS
- 通过Cygwin的Windows
但是,您也可以从源代码构建或使用Docker。
如果您是Docker的新手,我建议您参考这个Docker Mastery course。
在Ubuntu上安装GoAccess
- 使用root权限登录Ubuntu服务器
- 使用以下命令安装
apt-get
apt-get install goaccess
很简单。
在CentOS上安装
登录到服务器并执行yum
命令
yum install goaccess
在CentOS / Ubuntu上使用源码安装
喜欢从源码编译吗?
以下是步骤。
- 如果使用CentOS,请安装以下依赖项
yum install gcc ncurses-devel glib2-devel geoip-devel tokyocabinet-devel
- 如果使用Ubuntu
apt-get install libncursesw5-dev libgeoip-dev make
- 使用
wget
下载最新的包
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
- 解压下载的文件
gunzip –c goaccess-1.2.tar.gz | tar xvf –
- 进入新创建的文件夹,该文件夹是您在解压后获得的
cd goaccess-1.2
- 使用以下命令编译
./configure --enable-geoip=legacy --enable-utf8 make make install
做得好,您已经安装了GoAccess,并准备好分析日志。
验证安装
安装后,只需在命令提示符上执行goaccess
,它应该打印如下的用法。
GoAccess – 1.2
用法:goaccess [文件名] [选项 …] [-c] [-M] [-H] [-q] [-d] [ …]
该命令还可以提供以下选项:
日志和日期格式选项
–date-format= – 指定日志日期格式。例如,%d /%b /%Y
–log-format= – 指定日志格式。内部引号需要
转义,或使用单引号。
–time-format= – 指定日志时间格式。例如,%H:%M:%S
用户界面选项
-c –config-dialog – 提示日志/日期/时间配置窗口。
-i –hl-header – 高亮显示活动面板。
-m –with-mouse – 在主仪表板上启用鼠标支持。
–color= – 指定自定义颜色。有关更多信息,请参见man页面
上的详情和选项。
–color-scheme= – 方案:1 => 灰色,2 => 绿色,3 => Monokai。
–html-custom-css= – 在HTML报告中指定自定义CSS文件。
–html-custom-js= – 在HTML报告中指定自定义JS文件。
–html-prefs= – 设置默认的HTML报告首选项。
–html-report-title=
–json-pretty-print – 使用制表符和换行符格式化JSON输出。
–max-items – 每个面板显示的最大项目数。
有关限制,请参见man页面。
–no-color – 禁用彩色输出。
–no-column-names – 在终端输出中不写列名。
–no-csv-summary – 在CSV输出中禁用摘要指标。
–no-progress – 禁用进度指标。
–no-tab-scroll – 禁用通过TAB滚动面板。
–no-html-last-updated – 隐藏HTML上次更新字段。
服务器选项
–addr= – 指定要绑定服务器的IP地址。
–daemonize – 作为守护程序运行(如果启用了–real-time-html)。
–fifo-in= – 读取命名管道(FIFO)的路径。
–fifo-out= – 写入命名管道(FIFO)的路径。
–origin= – 确保客户端在WebSocket握手时发送指定的来源头部
。
–port= – 指定要使用的端口。
–real-time-html – 启用实时HTML输出。
–ssl-cert= – 指定TLS / SSL证书的路径。
–ssl-key= – 指定TLS / SSL私钥的路径。
–ws-url= – WebSocket服务器响应的URL。
文件选项
– – 要解析的日志文件从标准输入中读取。
-f –log-file= – 输入日志文件的路径。
-l –debug-file= – 将所有调试消息发送到指定的文件。
-p –config-file= – 自定义配置文件。
–invalid-requests= – 将无效的请求记录到指定的文件中。
–no-global-config – 不加载全局配置文件。
解析选项
-a –agent-list – 启用按主机的用户代理列表。
-d –with-output-resolver – 在HTML | JSON输出上启用IP解析器。
-e –exclude-ip= – 排除一个或多个IPv4 / 6. 允许IP
范围,例如192.168.0.1-192.168.0.10
-H –http-protocol= – 如果找到,则设置/取消HTTP请求协议。
-M –http-method= – 如果找到,则设置/取消HTTP请求方法。
-o –output=file.html|json|csv – 输出HTML,JSON或CSV文件。
-q –no-query-string – 忽略请求的查询字符串。删除
查询字符串可以大大减少内存
消耗。
-r –no-term-resolver – 禁用终端输出的IP解析器。
–444-as-404 – 将非标准状态码444视为404。
–4xx-to-unique-count – 将4xx客户端错误添加到唯一访问者
计数。
–all-static-files – 在查询字符串中包括静态文件。
–crawlers-only – 仅解析和显示爬行器。
–date-spec= – 日期特定性。可能的值:`date`
(默认)或`hr`。
–double-decode – 解码双重编码的值。
–enable-panel= – 启用解析/显示给定面板。
–hour-spec=
– 小时特定性。可能的值:`hr`
(默认)或`min`(十分之一分钟)。
–ignore-crawlers – 忽略爬行器。
–ignore-panel= – 忽略解析/显示给定的面板。
–ignore-referer= – 忽略引荐人的计数。允许使用通配符
,例如,*.bing.com
–ignore-status= – 忽略解析给定的状态码。
–num-tests= – 要测试的行数。> = 0(默认值为10)
–process-and-exit – 解析日志并在不输出数据的情况下退出。
–real-os – 显示真实操作系统名称。例如,Windows XP,Snow
Leopard。
–sort-panel=PANEL,METRIC,ORDER – 在初始加载时对面板进行排序。例如:
– sort-panel=VISITORS,BY_HITS,ASC。请参阅
man页面以获取面板/字段列表。
–static-file= – 添加静态文件扩展名。例如:.mp3。
扩展名区分大小写。
GeoIP选项
-g –std-geoip – 较少内存的标准GeoIP数据库
消耗。
–geoip-database= – 指定路径到GeoIP数据库文件。即,
GeoLiteCity.dat,GeoIPv6.dat …
其他选项
-h –help – 此帮助。
-V –version – 显示版本信息并退出。
-s –storage – 显示当前存储方法。例如,B +
树,Hash。
–dcf – 当未使用`-p`时,显示默认配置的路径
文件。
可以通过运行`man goaccess`找到示例。
有关详细信息,请访问:http://goaccess.io
GoAccess版权所有(C)2009-2016 Gerardo Orellana
使用GoAccess分析Nginx和Apache
分析access.log的最快方法之一是使用-f
参数。
例如:
goaccess -f access.log
上述命令会打开access.log文件。这将显示整体仪表板和以下15个部分。
- 每天的独立访问者
- 请求的文件
- 静态请求(字体,图像,PDF等)
- 未找到(404)的请求
- 访问者的IP/主机详细信息
- 访问者的操作系统
- 浏览器详细信息
- 时间分布
- 引荐来源
- HTTP状态码
- 地理位置
如果所选文件实时更新,则可以注意到终端上的指标会更新。在这里,您可以查看需要分析的指标。
通过HTTP(s)进行实时监控
GoAccess允许您将输出重定向到HTML文件,您可以将其用作实时监控。当您不想每次需要验证某些指标时都登录服务器时,这非常方便。
goaccess /var/log/nginx/access.log -o /var/www/yaoweibin.com/htdocs/real-time.html --log-format=COMBINED --real-time-html
上述命令将输出重定向到real-time.html文件,该文件位于htdocs下。由于它是htdocs,所以每当我需要查看指标时,可以从https://yaoweibin.cn/real-time.html访问此文件。
一个漂亮的仪表盘!
不过,在生产环境中我不建议这样做。我相信您不希望有人阅读您的Web服务器日志,您可能希望采取以下限制。
- 使用用户名和密码保护文件
- 仅允许来自您的IP的访问
- 使用自定义端口的其他URL,并将其放在防火墙后面,这样只有允许的IP/用户才能访问
GoAccess看起来是一个功能强大的开源日志分析工具。它轻量且免费,所以请放心尝试。
您可能还对查看 cloud-based log analyzer 感兴趣。