在部署完goaccess后,可通过以下命令来解析apache日志:
cat ssl_access_log | docker run -v /var/logs/httpd/goaccess.conf:/etc/goaccess/goaccess.conf --rm -i -e LANG="zh_CN.UTF-8" allinurl/goaccess -a -o html -p /etc/goaccess/goaccess.conf - > report.html
命令说明:
cat ssl_access_log #查看apache的ssl运行日志
| #管道符,将前一个命令的输出作为后一个命令的输入
docker run #运行docker,此处因为goaccess是通过docker的方式集成的
-v /var/logs/httpd/goaccess.conf:/etc/goaccess/goaccess.conf
#docker run命令的参数之一,为即将运行的docker添加目录映射,将底机的/var/logs/httpd/goaccess.conf映射到docker里的/etc/goaccess/goaccess.conf,使两个文件始终保持一致
--rm #docker run命令的参数之一,这个参数表示在容器退出时自动删除容器,这里指命令执行完就将这个docker删除
-i #docker run命令的参数之一,表示在交互模式下运行这个docker
-e LANG="zh_CN.UTF-8" #docker run命令的参数之一,设置环境变量LANG为zh_CN.UTF-8,是为了保证报告使用中文方式生成
allinurl/goaccess #运行在容器中的命令,表示在allinurl/goaccess这个Docker镜像中运行goaccess命令。
-a #goaccess命令的参数之一,表示生成所有域名的报告
-o html #goaccess命令的参数之一,表示将报告输出为html格式
-p /etc/goaccess/goaccess.conf #goaccess命令的参数之一,指定本次goaccess命令依赖配置文件/etc/goaccess/goaccess.conf
- > report.html #将goaccess的输出打印到report.html文件里
总结一下,这条命令的意思是:将SSL访问日志文件的内容作为输入,通过Docker运行一个容器,并在容器中运行goaccess命令来分析日志,然后将分析结果的HTML报告输出到名为report.html的文件中。
当前使用的apache日志格式如下:
#ssl_access_log
LogFormat %h %^ %^ [%d:%t %^] "%r" %s %b %D "%R" "%u"
#ssl_error_log
LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\""
本次解析的是ssl_access_log,所以goaccess.conf中,指定日志格式如下:
log-format %h %^ %^ [%d:%t %^] "%r" %s %b %D "%R" "%u"
本次命令执行需将goaccess.conf文件放入底机的/var/logs/httpd/目录下(后续用命令带-v参数进行映射,并用-p参数指定目录)
解析出的报告如下图: