侧边栏壁纸
博主头像
AngusWong's博客 博主等级

行动起来,活在当下

  • 累计撰写 25 篇文章
  • 累计创建 26 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Nginx日志分析工具Goaccess的安装使用

Administrator
2021-06-19 / 0 评论 / 0 点赞 / 10 阅读 / 0 字
[h2title]一、安装Goaccess[/h2title] 1、Mac系统 使用Homebrew安装,命令
brew install goaccess
2、Centos系统
yum -y install goaccess
3、Debian/Ubuntu系统
apt-get install goaccess
[h2title]二、分析Nginx日志[/h2title] Nginx日志文件所在可以在Nginx配置文件中找到,以下是宝塔面板网站Nginx配置中的部分内容
location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null; 
    }
    access_log  /www/wwwlogs/www.***.com.log;
    error_log  /www/wwwlogs/www.***.com.error.log;
由此可以看出,日志文件位于/www/wwwlogs/网站域名.log 生成统主文件命令如下
goaccess -f /www/wwwlogs/dd.******.com.log -o result.html
Parsing... [0] [0/s]
GoAccess - version 1.3 - Mar 29 2020 22:32:54
Config file: No config file used

Fatal error has occurred
Error occurred at: src/parser.c - parse_log - 2764
No time format was found on your conf file.
第一次运行会报错误如上所示,提示『未在配置文件中设置时间格式』,所以需要先修改配置文件,如果不知道配置文件地址可以使用如下命令寻找配置文件。
[root@www ~]# whereis goaccess
goaccess: /usr/bin/goaccess /etc/goaccess /usr/share/man/man1/goaccess.1.gz
[root@www ~]#
Centos系统配置文件所在位置为/etc/goaccess/goaccess.conf,修改配置文件打开以下几个配置(去掉前面的#号)
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
然后使用如下命令使用配置文件生效
goaccess -f /www/wwwlogs/www.*****.com.log -p /etc/goaccess/goaccess.conf -o result.html
这样日志分析结果就生成到result.html文件中,用浏览器打开此文件可以查看分析信息。 [h2title]三、常用参数说明[/h2title]
  • -f --log-file=<logfile> 指定日志文件
  • -p --config-file=<filename> 指定配置文件
  • --real-time-html 实时更新
  • -a --agent-list 开启 UserAgent 列表。开启后会降低解析速度。
  • -d --with-output-resolver 输出 HTML 或者 JSON 报告时开启 IP 解析。
  • -o --output=<json|csv|html> 将给定文件重定向到标准输出,通过后缀名决定输出格式
以下是一些常用命令
# 指定文件和配置文件
goaccess -f nginx.log -p ./goaccess.conf -o result.html
# 指定日志格式
goaccess -f nginx.log --log-format='%^ %^[%h] %^[%d:%t %^] "%r" %s %b "%R" "%u" %^ %T %^' --date-format='%d/%b/%Y' --time-format=%T -o result.html
# 实时更新html
nohup ./goaccess -f access.log -p config/nginxlog.conf -o day-report.html --real-time-html --ws-url=report.xxx.com &
    [dangerbox title="错误排除"] 如果把日志文件从服务器下载到本地进行分析,由于系统语言和时间格式不同可能会产生错误
goaccess ~/Downloads/www.***.com.log -o ~/Downloads/report.html
==40120== GoAccess - Copyright (C) 2009-2020 by Gerardo Orellana@ {0/s}
==40120== https://goaccess.io - <hello@goaccess.io>
==40120== Released under the MIT License.
==40120==
==40120== FILE: /Users/*****/Downloads/www.***.com.log
==40120==
已解析 10 行 出现以下错误:
==40120==
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120== Token '28/Apr/2021' doesn't match specifier '%d'
==40120==
==40120== 格式错误 - 请检查你的日志/日期/时间格式
这种情况下需要指定语言才能使用,可以使用下面两个命令
# 不会报错,但是生成的是英文格式
LANG="en_US.UTF-8" bash -c 'goaccess www.***.com.log --log-format=COMBINED'
# 不会报错,而且生成的HTML是中文格式
LANG="zh_CN.UTF-8" LC_TIME="en_US.UTF-8" bash -c 'goaccess www.***.com.log --log-format=COMBINED -o result.html'
[/dangerbox]
0

评论区