
GoAccessは、*nixシステムのターミナルまたはブラウザ上で直接動作する、オープンソースのリアルタイムWebログ解析ツール兼インタラクティブビューアです。システム管理者、DevOpsエンジニア、セキュリティ専門家向けに設計されており、高速で実用的なHTTP統計情報とビジュアルなサーバーレポートを即座に提供します。GoAccessは、Webサーバーログをリアルタイムに解析し、データをターミナルまたはライブHTMLダッシュボードで直接表示するため、トラフィックの監視、異常の検出、問題の迅速なトラブルシューティングが容易になります。
詳細情報: https://goaccess.io。
GoAccessは、指定されたWebログファイルを解析し、データをXターミナルに出力します。機能は以下の通りです。
完全なリアルタイム
すべてのパネルとメトリクスは、ターミナル出力では200ミリ秒ごと、HTML出力では毎秒更新されるように設定されています。
最小限の設定
アクセスログファイルに対して実行し、ログ形式を選択するだけで、GoAccessがアクセスログを解析して統計情報を表示します。
アプリケーション応答時間の追跡
リクエストの処理にかかった時間を追跡します。サイトの速度低下を引き起こしているページを追跡したい場合に非常に便利です。
WebSocket認証:
GoAccessは拡張されたWebSocket認証を提供し、ローカルおよび外部のJWT検証、セキュアなトークン更新機能、外部認証システムとのシームレスな統合をサポートします。
ほぼすべてのWebログ形式
GoAccessは任意のカスタムログ形式文字列を許可します。Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFrontなどの事前定義オプションがあります。
増分ログ処理
データの永続化が必要ですか?GoAccessは、ディスク上の永続化オプションを通じてログを増分的に処理する機能を備えています。
依存関係は1つだけ
GoAccessはCで書かれています。実行に必要な依存関係はncursesだけです。それだけです。独自のWeb Socketサーバー(http://gwsocket.io/)も備えています。
訪問者
ヒット数、訪問者数、帯域幅、および時間または日付ごとの最も遅いリクエストのメトリクスを決定します。
バーチャルホストごとのメトリクス
複数のバーチャルホスト(サーバーブロック)をお持ちですか?どのバーチャルホストがWebサーバーリソースを最も消費しているかを表示するパネルがあります。
ASN(自律システム番号マッピング)
悪意のあるトラフィックパターンを検出し、それに応じてブロックするのに最適です。
カラースキームのカスタマイズ
ターミナルから、またはHTML出力にスタイルシートを適用するだけで、GoAccessを自分の色の好み/スキームに合わせることができます。
大規模データセットのサポート
GoAccessは、最適化されたインメモリハッシュテーブルにより、大規模なログを解析する機能を備えています。メモリ使用量は非常に良好で、パフォーマンスもかなり優れています。このストレージはディスク上の永続化もサポートしています。
Dockerサポート
上流からGoAccessのDockerイメージをビルドする機能があります。ボリュームマッピングを使用してgoaccess.confを編集することで、完全に設定することもできます。Dockerセクションを参照してください。docker-composeの使用方法に関するドキュメントもあります。
GoAccessは任意のカスタムログ形式文字列を許可します。事前定義オプションには以下が含まれますが、これらに限定されません。
GoAccessは、高速なターミナルベースのログアナライザーとして設計されました。その中核となる考え方は、ブラウザを使用せずに(SSH経由でアクセスログを簡単に分析したい場合や、ターミナルで作業するのが好きな場合に最適です)Webサーバー統計をリアルタイムで迅速に分析し表示することです。
また、セキュリティ監視の実用的なツールとしても機能し、ログから不審なアクティビティ、異常なトラフィックパターン、ブルートフォース攻撃、スキャナー、ボット、異常なリクエストを簡単に特定できます。
ターミナル出力がデフォルトの出力ですが、完全で自己完結型のリアルタイムHTMLレポート、JSON、およびCSVレポートを生成する機能も備えています。
これは何よりもモニターコマンドツールとして見ることができます。
GoAccessは*nixシステムでコンパイルして使用できます。
以下のコマンドでGoAccessをダウンロード、展開、コンパイルします。
$ wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
$ tar -xzvf goaccess-1.10.2.tar.gz
$ cd goaccess-1.10.2/
$ ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib
$ make
# make install
$ git clone https://github.com/allinurl/goaccess.git
$ cd goaccess
$ autoreconf -fiv
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install
GNU+Linuxでは、お使いのディストリビューションのパッケージマネージャーを使用してGoAccessをインストールするのが最も簡単です。すべてのディストリビューションがGoAccessの最新バージョンを利用できるわけではありません。
# apt-get install goaccess
注意: これにより古いバージョンのGoAccessがインストールされる可能性があります。最新の安定版を実行していることを確認するには、以下の代替オプションを参照してください。
$ wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg >/dev/null
$ echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/goaccess.list
$ sudo apt-get update
$ sudo apt-get install goaccess
注意:
.debパッケージはHTTPSでも利用可能です。apt-transport-httpsをインストールする必要があるかもしれません。# yum install goaccess
# pacman -S goaccess
# emerge net-analyzer/goaccess
# brew install goaccess
# cd /usr/ports/sysutils/goaccess/ && make install clean
# pkg install sysutils/goaccess
# cd /usr/ports/www/goaccess && make install clean
# pkg_add goaccess
# zypper ar -f obs://server:http http
# zypper in goaccess
# pkg install goaccess
# pkgin install goaccess
GoAccessはCygwinを使用してWindowsで使用できます。Cygwinのパッケージを参照してください。または、Windows 10のGNU+Linuxサブシステムを使用します。
Dockerイメージが更新され、アクセスログから出力を直接送信できるようになりました。レポートのみを出力したい場合は、外部環境のログをDockerベースのプロセスにパイプできます。
touch report.html
cat access.log | docker run --rm -i -v ./report.html:/report.html -e LANG=$LANG allinurl/goaccess -a -o report.html --log-format COMBINED -
またはリアルタイム
tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o report.html --log-format COMBINED --real-time-html -
docker-composeの使用方法に関するドキュメントもあります。
Debianベースのシステム向けに、開発ライブラリでローカルシステムを汚染しないように、分離されたコンテナ環境でバイナリをビルドすることもできます。
$ curl -L "https://github.com/allinurl/goaccess/archive/refs/heads/master.tar.gz" | tar -xz && cd goaccess-master
$ docker build -t goaccess/build.debian-12 -f Dockerfile.debian-12 .
$ docker run -i --rm -v $PWD:/goaccess goaccess/build.debian-12 > goaccess
Dockerイメージの使用方法の詳細は、DOCKER.mdをご覧ください。
GoAccessの要件は最小限で、Cで書かれており、ncursesのみが必要です。ただし、以下はソースからGoAccessをビルドするための一部のディストロにおけるオプションの依存関係の表です。
| ディストリビューション | NCurses | GeoIP(オプション) | GeoIP2(オプション) | OpenSSL(オプション) |
|---|---|---|---|---|
| Ubuntu/Debian | libncurses-dev | libgeoip-dev | libmaxminddb-dev | libssl-dev |
| RHEL/CentOS | ncurses-devel | geoip-devel | libmaxminddb-devel | openssl-devel |
| Arch | ncurses | geoip | libmaxminddb | openssl |
| Gentoo | sys-libs/ncurses | dev-libs/geoip | dev-libs/libmaxminddb | dev-libs/openssl |
| Slackware | ncurses | GeoIP | libmaxminddb | openssl |
注意: ソースからコンパイル/ビルドするには、gcc、autoconf、gettext、autopointなどのビルドツールをインストールする必要があるかもしれません。例:base-devel、build-essential、"Development Tools"。
インメモリストレージは、データセットのサイズを利用可能な物理メモリ量に制限する代わりに、優れたパフォーマンスを提供します。GoAccessはインメモリハッシュテーブルを使用します。メモリ使用量は非常に良好で、パフォーマンスもかなり優れています。このストレージはディスク上の永続化もサポートしています。