GoAccess是一款开源的日志监控程序,其提供了很多监控日志的方式,其中包括生成一个可视化的html文件.
- 其控制页面如图:
可视化控制台
本文讲述的是使用在docker环境下搭建监控平台,如下为搭建步骤,注意的是,在我这边日志文件在宿主主机上的路径为
/var/log/nginx/access.log
, 生成的静态html文件存储在/mnt/static目录下.
- 下载ubuntu16.4镜像
docker pull ubuntu:16.04
- 下载ubuntu16.4镜像
- 创建并进入容器
docker run -it -v /var/log/nginx/:/var/logs/nginx -v /mnt/static:/home/static -v /etc/localtime:/etc/localtime --name nginx_log ubuntu /bin/bash
- 创建并进入容器
- 进入容器后,更新系统环境及下载依赖库
apt-get update && apt-get install -y vim libncursesw5-dev gcc make libgeoip-dev libtokyocabinet-dev build-essential wget
- 进入容器后,更新系统环境及下载依赖库
- 下载GoAccess源码
wget http://tar.goaccess.io/goaccess-1.3.tar.gz
- 下载GoAccess源码
- 解压并进入目录
tar -xzvf goaccess-1.3.tar.gz && cd goaccess-1.3
- 解压并进入目录
- 编译并安装源码
./configure --enable-utf8 --enable-geoip=legacy && make && make install
- 编译并安装源码
- 修改GoAccess配置文件
vim /usr/local/etc/
末尾加入:
- 修改GoAccess配置文件
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
date-format %d/%b/%Y
time-format %H:%M:%S
real-time-html true
port 618
output /home/static/index.html
需要注意的是,上面的log-format
参数值对应的是nginx的日志格式,我这边nginx的日志格式如下:
log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$status $request_length $body_bytes_sent "$http_referer" '
'"$http_user_agent" $request_time $upstream_response_time';
- 生成html
goaccess -a -d -f /var/logs/nginx/access.log -p /usr/local/etc/goaccess/goaccess.conf -o /home/static/index.html
执行完成后将会有/home/static/index.html
文件,使用浏览器打开即可,也可以通过配置nginx静态文件路径来访问.
- 生成html
- 周期生成html文件
apt-get install cron
vim /etc/cron.task
添加
0 * * * * goaccess -a -d -f /var/logs/nginx/access.log -p /usr/local/etc/goaccess/goaccess.conf -o /home/static/index.html
保存后执行crontab /etc/cron.task
然后每个小时都会执行一遍该程序
最后就是直接关掉当前窗口即可使容器在后台运行
网友评论