GoAccessは、Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront、Caddyなどの複数の形式のログファイルを読み取って分析できるオープンソースの軽量ログアナライザーです。C言語で記述されており、コマンドラインからアクセスできるダッシュボードインターフェイス。
HTML、JSON、CSV形式でレポートを生成し、他のユーザーと共有することができます。パブリックリンクを介して表示できるリアルタイムのHTMLレポートを生成することもできます。
このチュートリアルでは、RockyLinuxベースのサーバーにGoAccessAnalyzerをインストールし、Nginxログを読み取ってリアルタイムレポートを提供するように構成する方法を学習します。
-
RockyLinux8を実行しているサーバー。
-
sudo権限を持つroot以外のユーザー。
-
ログにアクセスするためにサーバー上で実行されているNginx。
-
すべてが更新されていることを確認してください。
$ sudo dnf update
GoAccess v1.5.2の最新バージョンは、デフォルトのリポジトリでは利用できません。 GoAccessの最新バージョンをインストールするには、ソースからビルドします。最初のステップは、GoAccessパッケージの構築に必要な依存関係をダウンロードすることです。
$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel $ sudo dnf groupinstall 'Development Tools'
GoAccessアーカイブの最新バージョンをダウンロードします。 GoAccessの最新バージョンは、公式ダウンロードページから入手できます。
$ wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz
アーカイブからファイルを抽出します。
$ tar -xzvf goaccess-1.5.2.tar.gz
パッケージを構成してインストールします。
$ cd goaccess-1.5.2 $ autoreconf -fi $ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl $ sudo make $ sudo make install
GoAccessが実行されていることを確認します。
$ goaccess --version GoAccess - 1.5.2. For more details visit: https://goaccess.io/ Copyright (C) 2009-2020 by Gerardo Orellana Build configure arguments: --enable-utf8 --enable-geoip=mmdb --with-openssl
GeoIPデータベースは、DB-IPまたはMaxmindからダウンロードできます。 Maxmindからダウンロードする場合は、アカウントを作成して無料のライセンスキーを生成する必要があります。 DB-IPからのダウンロードは直接行うことができます。
上記のいずれかのソースから国のzipファイルをダウンロードします。ダウンロードしたら、それらを抽出して .mmdb
をアップロードします サーバー上のファイルを/home /
などのカスタムフォルダーに移動します 。
GoAccessは、構成ファイルを/usr/local/etc/goaccess/goaccess.conf
に保存します。 。次のコマンドを使用して、システム上のファイルの場所を確認できます。
$ goaccess --dcf /usr/local/etc/goaccess/goaccess.conf
編集のためにファイルを開きます。
$ sudo nano /usr/local/etc/goaccess/goaccess.conf
ほとんどのオプションはコメント化されています。これらのオプションは、コマンドラインから使用するか、ここのファイルに設定できます。オプションを有効にするには、#
を削除します その前のキャラクター。
まず、 time-format
を有効にしましょう オプション。チュートリアルではNginxファイルを解析するので、Apache/Nginxログ用のオプションを有効にします。
# The following time format works with any of the # Apache/NGINX's log formats below. # time-format %H:%M:%S
次に、Nginxの date-format
を有効にします オプション。
# The following date format works with any of the # Apache/NGINX's log formats below. # date-format %d/%b/%Y
次に、 log-format
を有効にします オプション。このチュートリアルでは、 Combined
を使用します Nginxが一般的に使用するログ形式。
log-format COMBINED
ログファイルに[仮想ホスト]フィールドが含まれている場合は、代わりに次のオプションを有効にしてください。
log-format VCOMBINED
ログ形式をより細かく制御したいとします。その場合、代わりに次の行を有効にして(アクセスしているログに応じて)、必要に応じてパラメーターを追加または削除できます。
log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
GeoIPモジュールを有効にするには、GeoIPデータベースへのパスを入力して次のオプションを有効にします。
# For GeoIP2 Country database: # Download the GeoLite2-Country.mmdb.gz # gunzip GeoLite2-Country.mmdb.gz # geoip-database /home/geoip/dbip-country-lite-2021-10.mmdb
Ctrl + Xを押してファイルを保存します Yと入力します 終了したらプロンプトが表示されたら。
通常、GoAccessを実行する場合は、次のコマンドを使用する必要があります。
$ sudo /usr/local/bin/goaccess /var/log/nginx/access.log
通常のユーザーはログファイルを開くことができないため、sudoを使用する必要があります。また、sudoコマンドは / usr / local / bin
内のアプリケーションを認識しないため、sudoコマンドで実行可能ファイルのフルパスを使用する必要があります。 ディレクトリ。ただし、シンボリックリンクを作成することで制限を回避できます。
これを行うには、次のコマンドを実行します。
$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess
これで、GoAccessを直接実行できます。
$ sudo goaccess /var/log/nginx/access.log
Nginxログファイルは、すべての着信HTTPトラフィックの記録を保持します。サーバーが長期間稼働している場合は、圧縮された .gz
に古いログを含む複数のアクセスログが表示されます。 フォーマット。古いログファイルは、ログローテーションの結果として生成されます。
コマンドを実行すると、次のダッシュボードが表示されます。
GoAccessには、ダッシュボードをナビゲートするためのいくつかのキーボードショートカットが用意されています。
-
TAB
使用可能なモジュールとSHIFT+ TAB
を進めます 後方に移動します。 -
F5
ダッシュボードを更新します。 -
g
ダッシュボード画面の上部に移動し、G
下に移動します。 -
o
またはENTER
選択したモジュールを展開します。 -
j
およびk
アクティブなモジュール内で上下にスクロールします。 -
s
アクティブなモジュールの並べ替えオプションを表示します。 -
/
すべてのモジュールとn
を検索します 次の試合に移動します。 -
0-9
およびSHIFT+ 0
それぞれの番号の付いたモジュールをすばやくアクティブにします。 -
?コード> クイックヘルプダイアログを表示します。
-
q
プログラムを終了します。
すべてのパネルを簡単に見ていきましょう。
-
1日あたりのユニークな訪問者 -このパネルは一目瞭然です。各日付の一意の訪問者、ヒット数、および累積帯域幅が一覧表示されます。デフォルトでは、Webクローラーとスパイダーも含まれます。
-
リクエストされたファイル(URL) -このパネルには、サーバー上で最もリクエストの多い非静的ファイルに関する統計が表示されます。
-
静的リクエスト -上記のパネルと似ていますが、画像、CSS、JavaScriptなどの静的ファイルを処理する点が異なります。
-
見つからないURL(404) -このパネルは、サーバー上に見つからないファイルとパスへのすべてのリクエストをログに記録します。
-
訪問者のホスト名とIP -このパネルには、サイトへの訪問者に関する詳細情報が表示されます。
o
を押すことができます パネルを展開して、原産国、都市、逆引きDNSなどの詳細情報を取得します。 -
オペレーティングシステム -このパネルには、訪問者が使用するさまざまなオペレーティングシステムが表示されます。
-
ブラウザ -このパネルには、訪問者が使用するさまざまなブラウザが表示されます。
-
時間配分 -このパネルは、ヒット数、ユニークビジター、および消費された帯域幅に関する1時間ごとのレポートを提供します。
-
仮想ホスト -このパネルには、ログファイルから解析された仮想ホストが表示されます。
VCOMBINED
を使用した場合にのみ表示されます 上記の構成ファイルのログ形式、または%v
の場合 ログ形式の構成の一部です。 -
リファラーURL -これは、訪問者をサーバーに参照するURLを一覧表示します。このパネルはデフォルトで無効になっています。有効にするには、
#
を追加して、構成ファイルの次の行をコメントアウトします。 その前に。#ignore-panel REFERRERS
-
参照サイト -このパネルには、参照元ホストのIPアドレスが表示されます。
-
キーフレーズ -このパネルには、Google検索、Googleキャッシュ、またはGoogle翻訳で使用されているサイトにつながるキーワードが表示されます。このパネルもデフォルトで無効になっています。構成ファイルの次の行をコメントアウトして有効にします。
#ignore-panel KEYPHRASES
-
HTTPステータスコード -このパネルには、サーバーがリクエストに応答したときにサーバーから返されるHTTPステータスコードの統計が表示されます。
-
リモートユーザー(HTTP認証) -このパネルには、HTTP認証で保護された、サーバー上のドキュメントにアクセスするユーザーのユーザーIDが表示されます。このパネルは、
%e
の場合にのみ機能します ログ形式の構成の一部です。 -
キャッシュステータス -このパネルは、リクエストがキャッシュされ、そこから提供されているかどうかを判断します。このパネルは、
%c
の場合にのみ機能します ログ形式の構成の一部です。 -
ジオロケーション -このパネルには、サイトにアクセスする訪問者の地理的な場所のリストが表示されます。構成ファイルにその場所をダウンロードして追加した場合にのみ表示されます。
優れたセキュリティ慣行として、rootとして機能するコードが少ないほど良いです。ルートなしでGoAccessを実行するには、ログファイルを読み取るための権限が必要です。
サーバーログファイルは通常、 adm
の一部です。 グループ。次のコマンドを使用して確認できます。
$ ls -l /var/log/nginx total 68 -rw-r----- 1 nginx adm 30547 Oct 10 12:47 access.log -rw-r----- 1 nginx adm 35063 Oct 10 12:47 error.log
ご覧のとおり、ログファイルを開くためにrootユーザーである必要はありません。 adm
に属するすべてのユーザー グループはファイルを開くことができます。
ルートなしでGoAccessを実行する最も簡単な方法は、現在ログインしているユーザーを adm
に追加することです。 グループ。そうすれば、sudoを使用せずにそのユーザーでGoAccessを実行できます。
次のコマンドを実行して、現在のユーザーを adm
に追加します グループ。
$ sudo usermod -aG adm $USER
ここで、ログアウトしてから再度ログインして、変更を適用します。または、変更を実装するためにログアウトせずに、次のコマンドを実行できます。
$ su $USER
sudoを必要とせずにGoAccessを直接実行できるはずです。
$ goaccess /var/log/nginx/access.log
GoAccessを使用して、オンラインで提供できるHTMLレポートを生成できます。次のコマンドを使用して、HTMLレポートを生成します。
$ goaccess /var/log/nginx/access.log -o stats.html
自分用にローカルPCにファイルをダウンロードするか、Webサイトフォルダをダウンロードして公開することができます。
GoAccessを使用してリアルタイムのHTMLレポートを生成することもできます。ただし、最初に、GoAccessWebsocketを実行するために7890ポートを開く必要があります。次のコマンドを使用してポートを開きます。
$ sudo firewall-cmd --permanent --add-port=7890/tcp
ファイアウォールをリロードして変更を適用します。
$ sudo firewall-cmd --reload
次に、次のコマンドを実行して、リアルタイムのHTMLレポートを生成します。
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
これにより、指定した場所でリアルタイムレポートが生成されます。上記のコマンドは、接続をリッスンするWebSocketとしてGoAccessをフォアグラウンドで実行し続けます。
上記のコマンドを実行する際の小さな注意点があります。上記のコマンドは、GoAccessが / usr / share / nginx / html
に対するユーザー権限を持っている場合に機能します ディレクトリ。現在ログインしているユーザーの下でGoAccessを実行しているため、 / usr / share / html
でそのユーザーに権限を付与する必要があります ディレクトリ。なんらかの理由で待てない場合は、sudoを使用してGoAccessを実行する必要があります。
$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
GoAccessをバックグラウンドで実行する場合は、次のコマンドを使用して、代わりにデーモンとして実行できます。
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonize Daemonized GoAccess: 78315
GoAccessデーモンを停止するには、次のコマンドでプロセスを強制終了します。
$ sudo kill -9 78315
ここでは、前のコマンドで取得したプロセスIDを使用しています。プロセスIDを覚えていない場合は、次のコマンドを使用してプロセスを強制終了することもできます。
$ sudo kill -9 `pidof goaccess`
コマンドでバッククォート( `)を使用していることに注意してください。通常の引用符を使用すると、コマンドは失敗します。
これで、RockyLinux8サーバーへのGoAccessLogAnalyzerのインストールと実行に関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。