GoAccessを使ってみました。
GoAccessとは
GoAccessは、オープンソースのリアルタイムWebログアナライザーおよびインタラクティブビューアーであり、* nixシステムのターミナルまたはブラウザーを介して実行されます。
ビジュアルサーバーレポートをその場で必要とするシステム管理者に、高速で価値のあるHTTP統計を 提供します。
https://goaccess.io/
*nix
はunixを濁した言い方でしょうか?
とにかく、Webサーバのログをリアルタイムで解析するツールらしいです。
インストール
公式のインストール方法はココです。
しかし、私の場合、次のようなエラーが発生しました。
configure: error:
*** Missing development files for libmaxminddb library.
モジュールが不足しているらしいので、以下の手順でうまくいきました。
$ yum install ncurses-devel geoip-devel libmaxminddb-devel tokyocabinet-devel openssl-devel
$ wget https://tar.goaccess.io/goaccess-1.5.5.tar.gz
$ tar -xzvf goaccess-1.5.5.tar.gz
$ cd goaccess-1.5.5/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
$ make install
# バージョンが表示されればOK
$ goaccess -V
次に、ログのフォーマットを調整します。
※Webサーバが吐き出すログのフォーマットと一致させる必要があります。
# confを編集
vi /usr/local/etc/goaccess/goaccess.conf
time-format %H:%M:%S #コメントアウト解除
date-format %d/%b/%Y #コメントアウト解除
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" #コメントアウト解除
CLIで確認
ログファイルを指定するだけで解析してくれます。
とてもイージーです。
goaccess /var/log/httpd/access_log
以下、公式に記載されているインタラクティブキーの一覧です。
F1
またはh
メインヘルプ。F5
メインウィンドウを再描画します。q
プログラム、現在のウィンドウを終了するか、アクティブなモジュールを折りたたむo
またはENTER
選択したモジュールを展開するか、ウィンドウを開きます0-9Shift + 0
選択したモジュールをアクティブに設定しますj
拡張されたモジュール内を下にスクロールしますk
拡張されたモジュール内を上にスクロールしますc
スキームの色を設定または変更する^ f
アクティブなモジュール内で1画面前にスクロールします^ b
アクティブなモジュール内で1画面後方にスクロールしますTAB
モジュールの反復(順方向)SHIFT + TAB
モジュールの反復(逆方向)s
アクティブなモジュールの並べ替えオプション/
すべてのモジュールを検索します(正規表現を使用できます)n
次の出現の位置を見つけるg
最初のアイテムまたは画面の上部に移動しますG
最後の項目または画面の下部に移動します
GUIで確認
GUIで確認するには、-oオプションを付けて、htmlファイルを吐き出させます。
# htmlファイルを生成
goaccess /var/log/httpd/access_log -o /var/www/html/report.html
# リアルタイム解析
tail -f /var/log/httpd/access_log |goaccess -o /var/www/html/report.html --real-time-html-
すると、こんな感じで可視化されます。
かっこいいですね。
サービス化
サービス化しておけば、いちいちコマンドを実行せずともリアルタイムで確認することができます。
サービス化の仕方についてはこちらの記事が詳細に説明してくれています。
最後に
GoAccessを導入するのはとても簡単でした。
そして、リアルタイムで解析してくれるところもGoodです。
しかし、なんらかのトリガーを設定し、攻撃を検知してくれるような仕組みは無いようです?
そうだとすると、監視システムはこれとは別に用意する必要がありそうですね。
ただ、解析結果を可視化できるのは嬉しいですし、毎日レポートを吐き出しておくことで、運用状況をまとめやすいかもですね。
コメントを残す