Nginxのアクセスログ解析ソフトウェアを導入する

1,はじめに

本稿は、Nginxのアクセスログ解析を行うソフトウェア「GoAccess」をDebian 9.8の環境に構築する。

この、GoAccessはオープンソースで開発が行われているソフトウェアで、Nginxのログをグラフィカルに表示する機能を持つ。

本稿はソースコードからコンパイルしているが、よくよく調べてたところ、パッケージが用意されていた。

下記コマンドで一発っぽいorz

apt-get install goaccess

以下、GoAccess V1.3の導入手順を記載する。

2,導入手順

(0)前提要件

本文書は下記の事柄を前提としている。

  1. 導入先環境の管理者権限を持つユーザーでログインをしていること(全ての作業は管理者権限を持つユーザーで実行する)
  2. 導入先環境でNginxが稼働していること(同一マシン内)

本文書は同一環境内にWebサーバーが稼働していることを前提としているため、Webサーバーとログ監視サーバーを分けて構築するシステムにおいては、適さない。

(1)実行ファイルの作成

GoAccessの実行ファイルは、公式サイトで配布されているソースコードを、導入先環境でコンパイルする方法により行う。

まず、ソースコードの取得とそれのコンパイル方法について記載する。

(A)ソースコードのダウンロード

GoAccessのソースコード等は公式サイトにて、下記の箇所で公開されている。

GoAccess - Downloads

今回は、Version 1.3を導入するため、下記の手順を執行する。

(ⅰ)GoAccessをコンパイルするための作業用ディレクトリの作成
mkdir tmpGoAccess

作業用ディレクトリの作製箇所及びディレクトリ名は常識の範囲内で任意である。

(ⅱ)作成した作業用ディレクトリへ移動する
cd tmpGoAccess
(ⅲ)ソースコードをダウンロードする

GoAccessのソースコードをダウンロードするために、下記のコマンドを実行する。

wget https://tar.goaccess.io/goaccess-1.3.tar.gz

なお、wgetコマンドが導入されていない場合が想定できる。

その場合は、以下の対処が考えられる。

  1. 担当者と協議しwgetコマンドを導入する
  2. curlコマンド等他の手段を用いる
  3. リモート環境でソースコードをダウンロードする

コマンドの正常実行時の出力は下記の通りである。

root@testspace:~/workspace/tmpGoAccess# wget https://tar.goaccess.io/goaccess-1.3.tar.gz
 --2019-06-22 11:09:14--  https://tar.goaccess.io/goaccess-1.3.tar.gz
 tar.goaccess.io (tar.goaccess.io) をDNSに問いあわせています… 107.170.196.4
 tar.goaccess.io (tar.goaccess.io)|107.170.196.4|:443 に接続しています… 接続しました。
 HTTP による接続要求を送信しました、応答を待っています… 200 OK
 長さ: 541374 (529K) [application/x-gzip]
 `goaccess-1.3.tar.gz' に保存中
 goaccess-1.3.tar.gz 100%[===================>] 528.69K   481KB/s    in 1.1s    
 2019-06-22 11:09:16 (481 KB/s) - `goaccess-1.3.tar.gz' へ保存完了 [541374/541374]
(ⅳ)ダウンロードしたソースコードを解凍する

ダウンロードしたソースコードは圧縮ファイルになっているため、下記のコマンドを用いて解凍を行う。

tar -xzvf goaccess-1.3.tar.gz

コマンドの正常実行時の出力は下記の通りである。

root@testspace:~/workspace/tmpGoAccess# tar -xzvf goaccess-1.3.tar.gz
 goaccess-1.3/
 goaccess-1.3/ChangeLog
 goaccess-1.3/resources/
 goaccess-1.3/resources/tpls.html
 goaccess-1.3/resources/css/
 goaccess-1.3/resources/css/app.css
 goaccess-1.3/resources/css/bootstrap.min.css
 goaccess-1.3/resources/css/fa.min.css
 goaccess-1.3/resources/js/
 goaccess-1.3/resources/js/charts.js
 goaccess-1.3/resources/js/d3.v3.min.js
 goaccess-1.3/resources/js/app.js
 goaccess-1.3/resources/js/hogan.min.js
 goaccess-1.3/config/
 goaccess-1.3/config/browsers.list
 goaccess-1.3/config/goaccess.conf
 goaccess-1.3/depcomp
 goaccess-1.3/src/
 goaccess-1.3/src/browsers.h
 goaccess-1.3/src/xmalloc.h
 goaccess-1.3/src/gdns.h
 goaccess-1.3/src/geoip2.c
 goaccess-1.3/src/settings.h
 goaccess-1.3/src/parser.c
 goaccess-1.3/src/gdashboard.h
 goaccess-1.3/src/commons.c
 goaccess-1.3/src/error.h
 goaccess-1.3/src/sort.c
 goaccess-1.3/src/error.c
 goaccess-1.3/src/config.h.in
 goaccess-1.3/src/gdns.c
 goaccess-1.3/src/khash.h
 goaccess-1.3/src/base64.h
 goaccess-1.3/src/settings.c
 goaccess-1.3/src/labels.h
 goaccess-1.3/src/bin2c.c
 goaccess-1.3/src/goaccess.h
 goaccess-1.3/src/options.c
 goaccess-1.3/src/websocket.h
 goaccess-1.3/src/csv.c
 goaccess-1.3/src/color.c
 goaccess-1.3/src/gmenu.c
 goaccess-1.3/src/opesys.h
 goaccess-1.3/src/output.h
 goaccess-1.3/src/gstorage.h
 goaccess-1.3/src/tcabdb.h
 goaccess-1.3/src/commons.h
 goaccess-1.3/src/json.h
 goaccess-1.3/src/gwsocket.h
 goaccess-1.3/src/options.h
 goaccess-1.3/src/geoip1.c
 goaccess-1.3/src/tcabdb.c
 goaccess-1.3/src/base64.c
 goaccess-1.3/src/sort.h
 goaccess-1.3/src/util.h
 goaccess-1.3/src/gstorage.c
 goaccess-1.3/src/sha1.h
 goaccess-1.3/src/gslist.h
 goaccess-1.3/src/goaccess.c
 goaccess-1.3/src/util.c
 goaccess-1.3/src/gkhash.h
 goaccess-1.3/src/output.c
 goaccess-1.3/src/geoip1.h
 goaccess-1.3/src/gmenu.h
 goaccess-1.3/src/ui.c
 goaccess-1.3/src/tcbtdb.c
 goaccess-1.3/src/gkhash.c
 goaccess-1.3/src/browsers.c
 goaccess-1.3/src/gwsocket.c
 goaccess-1.3/src/sha1.c
 goaccess-1.3/src/ui.h
 goaccess-1.3/src/gholder.c
 goaccess-1.3/src/opesys.c
 goaccess-1.3/src/json.c
 goaccess-1.3/src/gholder.h
 goaccess-1.3/src/parser.h
 goaccess-1.3/src/tcbtdb.h
 goaccess-1.3/src/color.h
 goaccess-1.3/src/gdashboard.c
 goaccess-1.3/src/xmalloc.c
 goaccess-1.3/src/websocket.c
 goaccess-1.3/src/csv.h
 goaccess-1.3/src/gslist.c
 goaccess-1.3/README
 goaccess-1.3/config.sub
 goaccess-1.3/Makefile.am
 goaccess-1.3/AUTHORS
 goaccess-1.3/configure.ac
 goaccess-1.3/missing
 goaccess-1.3/COPYING
 goaccess-1.3/Makefile.in
 goaccess-1.3/NEWS
 goaccess-1.3/TODO
 goaccess-1.3/config.rpath
 goaccess-1.3/install-sh
 goaccess-1.3/ABOUT-NLS
 goaccess-1.3/compile
 goaccess-1.3/configure
 goaccess-1.3/goaccess.1
 goaccess-1.3/INSTALL
 goaccess-1.3/po/
 goaccess-1.3/po/Makevars
 goaccess-1.3/po/LINGUAS
 goaccess-1.3/po/en@quot.header
 goaccess-1.3/po/zh_CN.gmo
 goaccess-1.3/po/en@boldquot.header
 goaccess-1.3/po/ja.gmo
 goaccess-1.3/po/insert-header.sin
 goaccess-1.3/po/goaccess.pot
 goaccess-1.3/po/fr.gmo
 goaccess-1.3/po/ja.po
 goaccess-1.3/po/es.po
 goaccess-1.3/po/es.gmo
 goaccess-1.3/po/POTFILES.in
 goaccess-1.3/po/zh_CN.po
 goaccess-1.3/po/quot.sed
 goaccess-1.3/po/boldquot.sed
 goaccess-1.3/po/stamp-po
 goaccess-1.3/po/Makefile.in.in
 goaccess-1.3/po/fr.po
 goaccess-1.3/po/remove-potcdate.sin
 goaccess-1.3/po/Rules-quot
 goaccess-1.3/config.guess
 goaccess-1.3/aclocal.m4
 goaccess-1.3/m4/
 goaccess-1.3/m4/intlmacosx.m4
 goaccess-1.3/m4/progtest.m4
 goaccess-1.3/m4/lib-prefix.m4
 goaccess-1.3/m4/iconv.m4
 goaccess-1.3/m4/gettext.m4
 goaccess-1.3/m4/lib-ld.m4
 goaccess-1.3/m4/lib-link.m4
 goaccess-1.3/m4/nls.m4
 goaccess-1.3/m4/po.m4

解凍を実施したディレクトリ内に「goaccess-1.3」という名前を持つディレクトリが作成される。

(B)コンパイルオプションの作成

ダウンロードし解凍を実施したソースコード一式のコンパイルを行う。

(ⅰ)「goaccess-1.3」ディレクトリへ移動する
cd goaccess-1.3/
(ⅱ)コンパイルのオプションの登録を行う
./configure --enable-utf8 --enable-geoip=legacy
(壱)ERROR対応:Missing development files for the GeoIP library

上記コマンドを実行すると、下記のエラーが出力される場合がある。

root@testspace:~/workspace/tmpGoAccess/goaccess-1.3# ./configure --enable-utf8 --enable-geoip=legacy
 checking for a BSD-compatible install… /usr/bin/install -c
 checking whether build environment is sane… yes
 checking for a thread-safe mkdir -p… /bin/mkdir -p
 checking for gawk… gawk
 checking whether make sets $(MAKE)… yes
 checking for gcc… gcc
 checking whether the C compiler works… yes
 checking for C compiler default output file name… a.out
 checking for suffix of executables… 
 checking whether we are cross compiling… no
 checking for suffix of object files… o
 checking whether we are using the GNU C compiler… yes
 checking whether gcc accepts -g… yes
 checking for gcc option to accept ISO C89… none needed
 checking for style of include used by make… GNU
 checking dependency style of gcc… gcc3
 checking whether gcc and cc understand -c and -o together… yes
 checking whether NLS is requested… yes
 checking for msgfmt… no
 checking for gmsgfmt… :
 checking for xgettext… no
 checking for msgmerge… no
 checking build system type… x86_64-unknown-linux-gnu
 checking host system type… x86_64-unknown-linux-gnu
 checking for ld used by GCC… /usr/bin/ld
 checking if the linker (/usr/bin/ld) is GNU ld… yes
 checking for shared library run path origin… done
 checking how to run the C preprocessor… gcc -E
 checking for grep that handles long lines and -e… /bin/grep
 checking for egrep… /bin/grep -E
 checking for CFPreferencesCopyAppValue… no
 checking for CFLocaleCopyCurrent… no
 checking for GNU gettext in libc… yes
 checking whether to use NLS… yes
 checking where the gettext function comes from… libc
 checking for libintl_dgettext in -lintl… no
 checking for pthread_create in -lpthread… yes
 checking whether to build with rdynamic for GNU ld… yes
 checking for GeoIP_new in -lGeoIP… no
 configure: error: 
     *** Missing development files for the GeoIP library

これについては開発者のGitHubにおいて対処法が掲載されている(Debian用ではないが)。

Missing development files for the GeoIP library · Issue #243 · allinurl/goaccess · GitHub

https://github.com/allinurl/goaccess/issues/243#issuecomment-279397327

上記記述を参考に、「Missing development files for the GeoIP library」エラー発生時は、下記のコマンドを用いてGeoIP libraryの導入を行う。

apt-get install libgeoip-dev

GeoIPのインストールが正常終了時は下記が出力される。

root@testspace:~/workspace/tmpGoAccess/goaccess-1.3# apt-get install libgeoip-dev
 パッケージリストを読み込んでいます… 完了
 依存関係ツリーを作成しています                
 状態情報を読み取っています… 完了
 以下の追加パッケージがインストールされます:
   geoip-bin
 以下のパッケージが新たにインストールされます:
   geoip-bin libgeoip-dev
 アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
 166 kB のアーカイブを取得する必要があります。
 この操作後に追加で 543 kB のディスク容量が消費されます。
 続行しますか? [Y/n] y
 取得:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 geoip-bin amd64 1.6.9-4 [66.4 kB]
 取得:2 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libgeoip-dev amd64 1.6.9-4 [99.8 kB]
 166 kB を 0秒 で取得しました (185 kB/s)
 以前に未選択のパッケージ geoip-bin を選択しています。
 (データベースを読み込んでいます … 現在 44865 個のファイルとディレクトリがインストールされています。)
 …/geoip-bin_1.6.9-4_amd64.deb を展開する準備をしています …
 geoip-bin (1.6.9-4) を展開しています…
 以前に未選択のパッケージ libgeoip-dev を選択しています。
 …/libgeoip-dev_1.6.9-4_amd64.deb を展開する準備をしています …
 libgeoip-dev (1.6.9-4) を展開しています…
 geoip-bin (1.6.9-4) を設定しています …
 man-db (2.7.6.1-2) のトリガを処理しています …
 libgeoip-dev (1.6.9-4) を設定しています …
(弐)ERROR対応:Missing development libraries for ncursesw

また、下記のようなエラーが出力されるかもしれない。

root@testspace:~/workspace/tmpGoAccess/goaccess-1.3# ./configure --enable-utf8 --enable-geoip=legacy
 checking for a BSD-compatible install… /usr/bin/install -c
 checking whether build environment is sane… yes
 checking for a thread-safe mkdir -p… /bin/mkdir -p
 checking for gawk… gawk
 checking whether make sets $(MAKE)… yes
 checking for gcc… gcc
 checking whether the C compiler works… yes
 checking for C compiler default output file name… a.out
 checking for suffix of executables… 
 checking whether we are cross compiling… no
 checking for suffix of object files… o
 checking whether we are using the GNU C compiler… yes
 checking whether gcc accepts -g… yes
 checking for gcc option to accept ISO C89… none needed
 checking for style of include used by make… GNU
 checking dependency style of gcc… gcc3
 checking whether gcc and cc understand -c and -o together… yes
 checking whether NLS is requested… yes
 checking for msgfmt… no
 checking for gmsgfmt… :
 checking for xgettext… no
 checking for msgmerge… no
 checking build system type… x86_64-unknown-linux-gnu
 checking host system type… x86_64-unknown-linux-gnu
 checking for ld used by GCC… /usr/bin/ld
 checking if the linker (/usr/bin/ld) is GNU ld… yes
 checking for shared library run path origin… done
 checking how to run the C preprocessor… gcc -E
 checking for grep that handles long lines and -e… /bin/grep
 checking for egrep… /bin/grep -E
 checking for CFPreferencesCopyAppValue… no
 checking for CFLocaleCopyCurrent… no
 checking for GNU gettext in libc… yes
 checking whether to use NLS… yes
 checking where the gettext function comes from… libc
 checking for libintl_dgettext in -lintl… no
 checking for pthread_create in -lpthread… yes
 checking whether to build with rdynamic for GNU ld… yes
 checking for GeoIP_new in -lGeoIP… yes
 checking for mvaddwstr in -lncursesw… no
 configure: error: *** Missing development libraries for ncursesw

このように「Missing development libraries for ncursesw」のエラーが出力された場合について公式サイトの下記記事が参考となる。

configure: error: *** Missing development libraries for ncursesw · Issue #102 · allinurl/goaccess · GitHub

https://github.com/allinurl/goaccess/issues/102#issuecomment-57303589

上記記述を参考に、下記のコマンドを用いてncurseswの導入を行う。

apt-get install libncursesw5-dev

ncurseswのインストールが正常終了時は下記が出力される。

root@testspace:~/workspace/tmpGoAccess/goaccess-1.3# apt-get install libncursesw5-dev
 パッケージリストを読み込んでいます… 完了
 依存関係ツリーを作成しています                
 状態情報を読み取っています… 完了
 以下の追加パッケージがインストールされます:
   libtinfo-dev
 提案パッケージ:
   ncurses-doc
 以下のパッケージが新たにインストールされます:
   libncursesw5-dev libtinfo-dev
 アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
 279 kB のアーカイブを取得する必要があります。
 この操作後に追加で 1,579 kB のディスク容量が消費されます。
 続行しますか? [Y/n] y
 取得:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libtinfo-dev amd64 6.0+20161126-1+deb9u2 [79.2 kB]
 取得:2 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libncursesw5-dev amd64 6.0+20161126-1+deb9u2 [200 kB]
 279 kB を 0秒 で取得しました (345 kB/s)
 以前に未選択のパッケージ libtinfo-dev:amd64 を選択しています。
 (データベースを読み込んでいます … 現在 44909 個のファイルとディレクトリがインストールされています。)
 …/libtinfo-dev_6.0+20161126-1+deb9u2_amd64.deb を展開する準備をしています …
 libtinfo-dev:amd64 (6.0+20161126-1+deb9u2) を展開しています…
 以前に未選択のパッケージ libncursesw5-dev:amd64 を選択しています。
 …/libncursesw5-dev_6.0+20161126-1+deb9u2_amd64.deb を展開する準備をしています …
 libncursesw5-dev:amd64 (6.0+20161126-1+deb9u2) を展開しています…
 libtinfo-dev:amd64 (6.0+20161126-1+deb9u2) を設定しています …
 libncursesw5-dev:amd64 (6.0+20161126-1+deb9u2) を設定しています …
 man-db (2.7.6.1-2) のトリガを処理しています …
(参)正常にコンパイルオプションの登録ができた場合

コンパイルオプションの登録が正常に完了すると、下記が出力される。

root@testspace:~/workspace/tmpGoAccess/goaccess-1.3# ./configure --enable-utf8 --enable-geoip=legacy
 checking for a BSD-compatible install… /usr/bin/install -c
 checking whether build environment is sane… yes
 checking for a thread-safe mkdir -p… /bin/mkdir -p
 checking for gawk… gawk
 checking whether make sets $(MAKE)… yes
 checking for gcc… gcc
 checking whether the C compiler works… yes
 checking for C compiler default output file name… a.out
 checking for suffix of executables… 
 checking whether we are cross compiling… no
 checking for suffix of object files… o
 checking whether we are using the GNU C compiler… yes
 checking whether gcc accepts -g… yes
 checking for gcc option to accept ISO C89… none needed
 checking for style of include used by make… GNU
 checking dependency style of gcc… gcc3
 checking whether gcc and cc understand -c and -o together… yes
 checking whether NLS is requested… yes
 checking for msgfmt… no
 checking for gmsgfmt… :
 checking for xgettext… no
 checking for msgmerge… no
 checking build system type… x86_64-unknown-linux-gnu
 checking host system type… x86_64-unknown-linux-gnu
 checking for ld used by GCC… /usr/bin/ld
 checking if the linker (/usr/bin/ld) is GNU ld… yes
 checking for shared library run path origin… done
 checking how to run the C preprocessor… gcc -E
 checking for grep that handles long lines and -e… /bin/grep
 checking for egrep… /bin/grep -E
 checking for CFPreferencesCopyAppValue… no
 checking for CFLocaleCopyCurrent… no
 checking for GNU gettext in libc… yes
 checking whether to use NLS… yes
 checking where the gettext function comes from… libc
 checking for libintl_dgettext in -lintl… no
 checking for pthread_create in -lpthread… yes
 checking whether to build with rdynamic for GNU ld… yes
 checking for GeoIP_new in -lGeoIP… yes
 checking for mvaddwstr in -lncursesw… yes
 checking for library containing tputs… none required
 checking for ncursesw/ncurses.h… yes
 checking for ncurses.h… no
 checking for sed… yes
 checking for tr… yes
 checking for gethostbyname in -lnsl… yes
 checking for socket in -lsocket… no
 checking for ANSI C header files… yes
 checking for sys/types.h… yes
 checking for sys/stat.h… yes
 checking for stdlib.h… yes
 checking for string.h… yes
 checking for memory.h… yes
 checking for strings.h… yes
 checking for inttypes.h… yes
 checking for stdint.h… yes
 checking for unistd.h… yes
 checking arpa/inet.h usability… yes
 checking arpa/inet.h presence… yes
 checking for arpa/inet.h… yes
 checking fcntl.h usability… yes
 checking fcntl.h presence… yes
 checking for fcntl.h… yes
 checking for inttypes.h… (cached) yes
 checking limits.h usability… yes
 checking limits.h presence… yes
 checking for limits.h… yes
 checking locale.h usability… yes
 checking locale.h presence… yes
 checking for locale.h… yes
 checking netdb.h usability… yes
 checking netdb.h presence… yes
 checking for netdb.h… yes
 checking netinet/in.h usability… yes
 checking netinet/in.h presence… yes
 checking for netinet/in.h… yes
 checking stddef.h usability… yes
 checking stddef.h presence… yes
 checking for stddef.h… yes
 checking for stdint.h… (cached) yes
 checking for stdlib.h… (cached) yes
 checking for string.h… (cached) yes
 checking for strings.h… (cached) yes
 checking sys/socket.h usability… yes
 checking sys/socket.h presence… yes
 checking for sys/socket.h… yes
 checking sys/time.h usability… yes
 checking sys/time.h presence… yes
 checking for sys/time.h… yes
 checking for unistd.h… (cached) yes
 checking for an ANSI C-conforming const… yes
 checking for ptrdiff_t… yes
 checking whether struct tm is in sys/time.h or time.h… time.h
 checking for int64_t… yes
 checking for int8_t… yes
 checking for off_t… yes
 checking for size_t… yes
 checking for uint32_t… yes
 checking for uint64_t… yes
 checking for uint8_t… yes
 checking for _LARGEFILE_SOURCE value needed for large files… no
 checking for working memcmp… yes
 checking whether time.h and sys/time.h may both be included… yes
 checking for sys/time.h… (cached) yes
 checking for unistd.h… (cached) yes
 checking for alarm… yes
 checking for working mktime… yes
 checking whether lstat correctly handles trailing slash… yes
 checking whether stat accepts an empty string… no
 checking for strftime… yes
 checking for working strtod… yes
 checking for floor… no
 checking for gethostbyaddr… yes
 checking for gethostbyname… yes
 checking for gettimeofday… yes
 checking for malloc… yes
 checking for memmove… yes
 checking for memset… yes
 checking for mkfifo… yes
 checking for realloc… yes
 checking for realpath… yes
 checking for regcomp… yes
 checking for select… yes
 checking for setlocale… yes
 checking for socket… yes
 checking for strcasecmp… yes
 checking for strchr… yes
 checking for strcspn… yes
 checking for strdup… yes
 checking for strerror… yes
 checking for strncasecmp… yes
 checking for strpbrk… yes
 checking for strrchr… yes
 checking for strspn… yes
 checking for strstr… yes
 checking for strtol… yes
 checking for strtoull… yes
 configure: creating ./config.status
 config.status: creating Makefile
 config.status: creating po/Makefile.in
 config.status: creating src/config.h
 config.status: executing depfiles commands
 config.status: executing po-directories commands
 config.status: creating po/POTFILES
 config.status: creating po/Makefile
 Your build configuration:
 Prefix         : /usr/local
   Package        : goaccess
   Version        : 1.3
   Compiler flags :  -pthread
   Linker flags   : -lnsl -lncursesw -lGeoIP -lpthread  
   Dynamic buffer : no
   Geolocation    : GeoIP Legacy
   Storage method : In-memory Hash Database (Default)
   TLS/SSL        : no
   Bugs           : goaccess@prosoftcorp.com

(C)コンパイル

(ⅰ)実行ファイルの作成

下記コマンドを実行する。

make

正常時の出力例を掲載したかったが、大量のコンパイルログでしかないため、記載しない。

コンパイルエラーが表示されていなければ問題はない。

(ⅱ)実行ファイルを適切な箇所へ配置する

下記コマンドを実行する。

make install

エラーメッセージが出力されていなければ正常終了である。

(2)動作確認

(A)バイナリの動作確認

下記コマンドを実行する。

goaccess --version

正常終了時は下記が出力される。

root@testspace:~# goaccess --version
 GoAccess - 1.3.
 For more details visit: http://goaccess.io
 Copyright (C) 2009-2016 by Gerardo Orellana
 Build configure arguments:
   --enable-utf8
   --enable-geoip=legacy
(B)Nginxのリアルタイムログ監視を行う

Nginxのログファイルを指定してGoAccessを起動する。

goaccess access.log --log-format=COMBINED

なお、「–log-format=COMBINED」を指定することで、自動的にNginxのログをパースが行われる。

GoAccess V1.3 動作画面
GoAccess V1.3 動作画面
(C)HTML出力

下記コマンドを実行するとリアルタイムのWebで確認できるLog Viewerを作成する。

goaccess -f /tmp/nginx/access.log --log-format=COMBINED -o  /tmp/www/logviewer.html --real-time-html
ログビューワー画面
ログビューワー画面

ブラウザからアクセスログを閲覧できる。

リアルタイムの情報反映には、WebSocketが使われている。

そのため、Web画面でリアルタイムのログ監視を実施する場合、ポート「7890」を開放する必要がある。

3,参考文献

  1. GoAccess – Manual Page
  2. GoAccess – Frequently Asked Questions
  3. nginxアクセスログ解析をリアルタイムで行いたい GoAccess オレンジの国

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA