在Docker环境下使用GoAccess监控日志

GoAccess是一款开源的日志监控程序,其提供了很多监控日志的方式,其中包括生成一个可视化的html文件.

  • 其控制页面如图:
    可视化控制台

本文讲述的是使用在docker环境下搭建监控平台,如下为搭建步骤,注意的是,在我这边日志文件在宿主主机上的路径为
/var/log/nginx/access.log, 生成的静态html文件存储在/mnt/static目录下.

    1. 下载ubuntu16.4镜像
      docker pull ubuntu:16.04
    1. 创建并进入容器
      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
    1. 进入容器后,更新系统环境及下载依赖库
      apt-get update && apt-get install -y vim libncursesw5-dev gcc make libgeoip-dev libtokyocabinet-dev build-essential wget
    1. 下载GoAccess源码
      wget http://tar.goaccess.io/goaccess-1.3.tar.gz
    1. 解压并进入目录
      tar -xzvf goaccess-1.3.tar.gz && cd goaccess-1.3
    1. 编译并安装源码
      ./configure --enable-utf8 --enable-geoip=legacy && make && make install
    1. 修改GoAccess配置文件
      vim /usr/local/etc/
      末尾加入:
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';
    1. 生成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静态文件路径来访问.
    1. 周期生成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
然后每个小时都会执行一遍该程序

最后就是直接关掉当前窗口即可使容器在后台运行

你可能感兴趣的:(在Docker环境下使用GoAccess监控日志)