我们统计自己网站的流量可以用百度统计,和google统计等等.也可以通过分析自己服务器的日志来得到数据,本文来介绍一下用goaccess实时分析服务器日志.

goaccess官网:https://goaccess.io

我曾经尝试用大名鼎鼎的logstash+elasticsearch+kibana组合进行日志分析,先不说分析的结果,CPU和内存消耗可是非常高,光运行这三个家伙内存就消耗了近30%,启动的时候更夸张到CPU和内存几乎达到100%(当时服务器只有可怜的1核CUP,2G内存)。吓得宝宝直接放弃的对日志的实时分析,打算有需要的时候download到本地再用这三个家伙分析一下.

最近发现很多人用goaccess分析日志,我就试了试,发现异常消耗竟然非常小,也满足我的需求,欣喜异常.

goaccess只适合小打小闹,如果你网站日志非常多的话,可以试试阿里云的日志服务,号称亿级数据秒查,牛逼哄哄

请求排行

看看谁在做坏事

我根本就没有装phpmyadmin,可是访问量最高的链接居然是请求phpmyadmin目录的,看来坏人真多。

操作系统

浏览器

爬虫

地区

下面来介绍一下我部署goaccess的过程.

一、配置log-format

首先我们需要将自己的日志格式配置到goaccess的config文件中,让goaccess能够识别出你的日志。
这里有nginx日志格式转goaccess的日志格式脚本:https://github.com/stockrt/nginx2goaccess
首先到nginx的配置文件中找到你的日志格式,形如

./nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'

得到配置信息

time-format %T
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u"

创建一个文件goaccess.conf,将配置信息写入文件

二、修改Dockerfile

下载goaccess源码

git clone https://github.com/allinurl/goaccess.git goaccess

修改Dockerfile,在文件最后追加

COPY goaccess.conf /etc/goaccess.conf

COPY init.sh /init.sh
RUN chmod +x /init.sh
CMD ["/init.sh"]

init.sh的内容

#!/bin/bash
goaccess /srv/logs/access.log  -o /srv/report/index.html --no-global-config --config-file=/etc/goaccess.conf --real-time-html

三、启动goaccess实例

先build一下

docker build . -t allinurl/goaccess

启动实例

docker run --restart=always -d -p 7890:7890 \
  -v "/webroot:/srv/report"       \
  -v "/serverlog:/srv/logs"           \
  --name=goaccess allinurl/goaccess

其中webroot目录和serverlog目录是输出的html的目录和服务器日志的目录,读者需要根据自己的情况自行修改。

现在,日志的报表结果应该出来了,文件会输出在webroot目录下的index.html,下载下来打开就可以浏览你的日志情况啦。

四、在线实时日志报表

如果你想在线访问,只需要部署一个web环境访问webroot中的index.html文件,页面中的数据是通过websocket访问更新的,也就是启动命令中的7890端口。

关于web环境的部署设计到多个方面的知识,这里就不做介绍了,读者可以自行google。

posted @ 2018-05-21 14:26:36
评论加载中...

发表评论