序章

GoAccess は、Webサーバーのログをリアルタイムで監視するためのツールです。 これはCで記述されており、ダッシュボードインターフェイスに人気のある ncurses ライブラリを使用しており、コマンドラインから直接アクセスできます。

これは、制御する任意のWebサーバーにSSHで接続し、関連する統計を迅速かつ安全に表示または分析できるため、優れています。 コマンドラインダッシュボードインターフェイスとは別に、HTML、JSON、CSVなどの他の形式で統計を表示することもできます。これらは、他のコンテキストで使用したり、他のユーザーと共有したりできます。

GoAccessは、ニーズに応じて、クライアント側の分析ツールの優れた代替手段になる可能性もあります。 サーバーログを直接分析するため、追加のスクリプトをロードする必要はなく、データは完全に管理されます。

このチュートリアルでは、Ubuntu20.04WebサーバーにGoAccessforApacheをインストールして構成します。 コマンドラインインターフェイスで使用可能なモジュールとナビゲーションショートカットを確認する前に、GoAccessを使用してApacheログファイルにアクセスします。

前提条件

このチュートリアルでは、次のものが必要です。

  • 1つのUbuntu20.04サーバー。 このUbuntu20.04チュートリアルの初期サーバー設定に従うことで設定できます。これには、sudo権限を持つroot以外のユーザーとファイアウォールが含まれます。

  • Ubuntu20.04にApacheをインストールする方法に従ってApacheをインストールします。

ステップ1—GoAccessをインストールする

このステップでは、GoAccessツールとその依存関係をインストールします。

パッケージデータベースとシステムが最新であることを確認することから始めます。

  1. sudo apt update
  2. sudo apt full-upgrade

次に、GoAccessをインストールします。 ツールのバージョンはUbuntuリポジトリで利用できますが、これは通常、最新の安定バージョンではありません。 たとえば、執筆時点でのGoAccessの最新バージョンは1.4ですが、Ubuntu20.04リポジトリから入手できるバージョンは1.3です。

サーバーに最新の安定バージョンのGoAccessがインストールされていることを確認するには、ソースからコンパイルするか、Ubuntuの公式GoAccessリポジトリを使用します。

方法1—ソースからのコンパイル

まず、ソースからGoAccessをコンパイルするために必要な依存関係をインストールします。

  1. sudo apt install libncursesw5-dev libgeoip-dev libtokyocabinet-dev build-essential

次の依存関係をインストールします。

  • build-essential:以下を含む多くのパッケージをインストールします gcc C、C +、およびその他のプログラミング言語用のコンパイラ、および make GoAccessmakefileをビルドするため。
  • libncursesw5-dev:GoAccessがコマンドラインインターフェイスに使用するncursesライブラリをインストールします。
  • libgeoip-dev:GeoIPライブラリに必要なファイルが含まれています。
  • libtokyocabinet-dev:パフォーマンスを向上させるためのデータベース依存関係を提供します。

次に、次のコマンドを使用して、公式Webサイトから最新バージョンのGoAccessをダウンロードします。

  1. wget http://tar.goaccess.io/goaccess-1.4.tar.gz

ダウンロードが完了したら、次のコマンドでアーカイブを抽出します。

  1. tar -xzvf goaccess-1.4.tar.gz

次のように、新しく解凍されたディレクトリに移動します。

  1. cd goaccess-1.4/

このディレクトリ内にあるconfigureスクリプトを実行します。

  1. ./configure --enable-utf8 --enable-geoip=legacy

The --enable-utf8 フラグは、GoAccessがワイド文字をサポートしてコンパイルされることを保証します。 --enable-geoip 元のGeoIPデータベースでGeoLocationサポートを有効にします。 交換できます legacymmdb 代わりに、拡張されたGeoIP2データベースを使用します。 他の構成オプションは、GoAccessWebサイトにあります。

次のような出力が表示されます。

Output
. . . Your build configuration: Prefix : /usr/local Package : goaccess Version : 1.4 Compiler flags : -pthread Linker flags : -lnsl -lncursesw -lGeoIP -lpthread UTF-8 support : yes Dynamic buffer : no Geolocation : GeoIP Legacy Storage method : In-Memory with On-Disk Persitance Storage TLS/SSL : no Bugs : [email protected]

を実行します make GoAccessのインストールに必要なmakefileをビルドするコマンド:

  1. make

最後に、以前に作成したmakefileを使用してGoAccessをシステムにインストールします。

  1. sudo make install

次のコマンドを実行して、プログラムが正常にインストールされたことを確認します。

  1. goaccess --version

次の出力が表示されます。

Output
GoAccess - 1.4. For more details visit: http://goaccess.io Copyright (C) 2009-2020 by Gerardo Orellana Build configure arguments: --enable-utf8 --enable-geoip=legacy

方法2—公式のGoAccessリポジトリを使用する

GoAccessをインストールする別の方法は、プログラムの公式Ubuntuリポジトリを使用することです。 この方法は、新しいリリースごとにソースからコンパイルしなくても、システムのアップグレード中に自動的に新しいバージョンに更新されるようにする場合に適しています。 最初にリポジトリをサーバーに追加する必要があります。

  1. echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list

最初にディストリビューションのリリース名を取得し、次にそれをパイプします tee、ファイルに追加します /etc/apt/sources.list.d/goaccess.list.

ソースリストにリポジトリが含まれているので、GPGキーをダウンロードして署名を確認できます。

  1. wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -

次に、次のコマンドを使用してパッケージデータベースを更新します。

  1. sudo apt update

最後に、GoAccessをインストールします。

  1. sudo apt install goaccess

これで、GoAccessがUbuntuサーバーにインストールされました。 次のステップでは、構成ファイルにアクセスして編集し、プログラムの実行方法を変更できるようにします。

ステップ2—GoAccess構成の編集

GoAccessには、プログラムの動作を永続的に変更できる構成ファイルが付属しています。 このファイルを編集して、時刻、日付、およびログ形式を指定し、GoAccessがサーバーログの解析方法を認識できるようにします。

構成ファイルは次の場所にあります。 ~/.goaccessrc また %sysconfdir%/goaccess.conf どこ %sysconfdir% どちらかです /etc/, /usr/etc/、 また /usr/local/etc/. 構成ファイルがサーバー上のどこにあるかを確認するには、次のコマンドを実行します。

  1. goaccess --dcf
Sample output
/etc/goaccess/goaccess.conf

を使用してこの構成ファイルを編集します nano:

  1. sudo nano /etc/goaccess/goaccess.conf

注:このファイルがサーバーに存在しない場合は、必ず最初に作成して、 goaccess.conf GitHubのファイル。

ファイル内の行の多くはコメント化されています。 オプションを有効にするには、最初のオプションを削除します # その前のキャラクター。 有効にしましょう time-format 最初にApacheの設定。 この設定は、 log-format 時間とGoAccessがサポートされているフォーマット基準を満たすプレーンテキストのApacheログファイルを解析できるようにします。

/etc/goaccess/goaccess.conf
# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S

次に、Apacheのコメントを解除します date-format を指定する設定 log-format 日にち:

/etc/goaccess/goaccess.conf
# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y

最後に、コメントを外します log-format 設定。 いくつかの行でこの設定が変更され、コメントを解除する正確な行は、Webサーバーの設定方法によって異なります。 非仮想ホストを設定している場合は、以下のコメントを外してください log-format ライン:

/etc/goaccess/goaccess.conf
# NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

それ以外の場合、仮想ホストを設定している場合は、代わりに次の行のコメントを解除してください。

/etc/goaccess/goaccess.conf
# NCSA Combined Log Format with Virtual Host
log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

この時点で、ファイルを保存してエディターを終了できます。 これで、GoAccessプログラムを実行し、いくつかのApacheプレーンテキストログファイルを分析する準備が整いました。

ステップ3—GoAccessを使用したApacheのログファイルへのアクセス

Apacheサーバーは、Webサイトへのアクセスを許可し、すべての着信HTTPトラフィックのアクセスログを保持します。 これらのレコードまたはログファイルはシステムに保存され、Webサイトの使用状況とオーディエンスに関する貴重な情報源になります。

Ubuntuでは、Apacheログファイルはに保存されます /var/log/apache2 デフォルトではディレクトリ。 このディレクトリの内容を調べるには、次のコマンドを実行します。

  1. sudo ls /var/log/apache2
Sample output
access.log error.log other_vhosts_access.log

サーバーが長期間実行されている場合は、圧縮されていることがあります .gz ログローテーションの結果としての過去のログファイルを含むこのディレクトリ内のファイル。 最新のログは access.log ファイル。 仮想ホストを備えたWebサーバーの場合、次のことを行う必要があります。 cd 内からサブディレクトリに /apache2 各ホストのログファイルを見つけるためのディレクトリ。

先に進み、Apacheアクセスログに対してGoAccessを実行して、Webサーバーによって処理されているトラフィックのタイプについての洞察を得ましょう。 次のコマンドを実行して、 access.log GoAccessを使用したファイル:

  1. sudo goaccess /var/log/apache2/access.log

これにより、GoAccessコマンドラインダッシュボードが起動します。

注:代わりにログ形式の構成プロンプトが表示された場合は、前の手順でGoAccess構成ファイルに加えた変更が有効になっていないことを意味します。 構成ファイルが適切な場所にあり、必要な設定のコメントを外していることを確認してください。

前述のように、長時間実行されるWebサーバーに複数の圧縮ログファイルがある場合があります。 最初にファイルを抽出せずにこれらすべてのファイルに対してGoAccessを実行するには、 zcat にコマンド goaccess:

  1. zcat /var/log/apache2/access.log.*.gz | goaccess -a

次に、キーボードショートカットを使用してダッシュボードインターフェイスをすばやくナビゲートする方法を学習します。

ステップ4—ターミナルダッシュボードのナビゲート

ダッシュボードの上部には、いくつかの主要なメトリックの要約があります。 これには、レポート期間の合計リクエスト数、一意の訪問者、ログサイズ、404が見つからないエラー、リクエストされたファイル、解析されたログファイルのサイズ、HTTPリファラー、ログソースの名前、ログファイルの処理にかかった時間などが含まれます。

上部のパネルの下に、前述のメトリックおよびGoAccessでサポートされているその他のデータポイントの詳細を提供する、使用可能なすべてのモジュールがあります。 インターフェイスをナビゲートするには、次のキーボードショートカットを使用します。

  • TAB 利用可能なモジュールを進めて SHIFT+TAB 後方に移動します。
  • F5 ダッシュボードを更新します。
  • g ダッシュボード画面の上部に移動し、 G ダッシュボードの最後のアイテムに移動します。
  • o また ENTER 選択したモジュールを展開します。
  • jk アクティブなモジュール内で上下にスクロールします。
  • s アクティブなモジュールのソートオプションを表示します。
  • / すべてのモジュールを検索し、 n 次の試合に移動します。
  • 0-9SHIFT+0 それぞれの番号の付いたモジュールをすばやくアクティブにします。
  • ? クイックヘルプダイアログを表示します。
  • q プログラムを終了します。

次に、ダッシュボードで使用可能な各モジュールを調べてみましょう。 それぞれに番号とタイトルがあり、存在する行の総数が示されます。 The > 文字はアクティブなパネルを示し、ダッシュボードの上部にも反映されます。

各パネルの簡単な説明は次のとおりです。 以下の各セクションは、プログラムのパネル番号とタイトルに対応しています。

1 —1日あたりのユニークな訪問者

このパネルには、報告された各日付のヒット数、一意の訪問者、および累積帯域幅が表示されます。 一意の訪問者は、同じIPアドレス、日付、およびユーザーエージェントを持つ訪問者と見なされます。 デフォルトでは、Webクローラーとスパイダーが含まれています。

2-要求されたファイル(URL)

このパネルは、Webサーバー上で最も要求の多い非静的ファイルに関する統計を提供します。 リクエストパス、HTTPプロトコルとメソッド、一意の訪問者、ヒット数、累積帯域幅が表示されます。

3 —静的リクエスト

このパネルは、前のパネルと同じメトリックを提供しますが、画像、CSS、JavaScript、またはその他のファイルタイプなどの静的ファイル用です。

4 —見つからないURL(404)

このパネルには、2と3で説明したものと同じメトリックが表示されますが、サーバーで見つからなかったパス(404)が表示されます。

5 —訪問者のホスト名とIP

このパネルには、Webサーバーに接続するホストに関する詳細情報が表示されます。 それらのIPアドレス、訪問数、および消費された帯域幅の量を見つけることができます。 これは、誰がすべての帯域幅を使い果たしているかを特定し、必要に応じてそれらをブロックするための優れた方法です。

を押してこのパネルを展開すると o、出身国、都市、逆引きDNSルックアップ結果などの各ホストに関する詳細情報が表示されます。

6 —オペレーティングシステム

このパネルは、ホストがWebサーバーに接続するために使用するさまざまなオペレーティングシステムを報告します。 このパネルを展開すると、各オペレーティングシステムの特定のバージョンが表示されます。

7 —ブラウザ

前のパネルと同様に、これはWebサーバーへの各固有の訪問者が使用したブラウザーを報告し、展開された各ブラウザーの特定のバージョンを一覧表示します。

8 —時間分布

ここでは、ヒット数、ユニークビジター、および消費された帯域幅に関する1時間ごとのレポートが表示されます。 これは、サーバーのトラフィックのピーク期間を見つけるのに最適な方法です。

9 —仮想ホスト

このパネルには、ログファイルから解析された仮想ホストが表示されます。 次の場合にのみアクティブになります %v ログ形式の構成に含まれています。

10 —リファラーURL

訪問しているホストをWebサーバーに参照したURLがここに反映されます。 このパネルはデフォルトで無効になっており、コメントアウトすることによってのみ有効にできます。 REFERRERS GoAccess構成ファイルで強調表示されている行:

/etc/goaccess/goaccess.conf
#ignore-panel VISIT_TIMES
#ignore-panel VIRTUAL_HOSTS
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES

11 —参照サイト

このパネルには、参照元ホストのIPアドレスが表示されますが、URL全体は表示されません。

12 —キーフレーズ

ここでは、あなたのウェブサイトにつながったグーグル検索、グーグルキャッシュ、グーグル翻訳で使用されたキーワードが報告されます。 このパネルもデフォルトで無効になっており、設定で有効にする必要があります。

/etc/goaccess/goaccess.conf
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
#ignore-panel KEYPHRASES
#ignore-panel STATUS_CODES

13 —HTTPステータスコード

このパネルには、リクエストに応答するときにWebサーバーから返されるHTTPステータスコードの全体的な統計が反映されます。 パネルを展開すると、各ステータスコードの集計統計が表示されます。

14 —リモートユーザー(HTTP認証)

このパネルには、HTTP認証によって決定された、サーバー上のドキュメントを要求しているユーザーのユーザーIDが表示されます。 パスワードで保護されていないドキュメントの場合、この部分は -. このパネルは、次の場合にのみ有効になることに注意してください %e ログ形式の構成の一部です。

15 —キャッシュステータス

このパネルでは、リクエストがキャッシュされ、キャッシュから提供されているかどうかを判断できます。 次の場合に有効になります %C はログ形式変数の一部であり、ステータスは次のようになります。 MISS, BYPASS, EXPIRED, STALE, UPDATING, REVALIDATED、 また HIT.

16 —ジオロケーション

このパネルは、IPアドレスの訪問から得られた地理的位置の要約を提供します。 このパネルを展開すると、出身国ごとに集計された統計が表示されます。

ダッシュボードで使用可能なパネルを確認したので、さまざまな形式でレポートを生成します。

ステップ5—レポートの生成

GoAccessでは、ターミナルにデータを表示するだけでなく、HTML、JSON、またはCSVレポートを生成することもできます。 このセクションのコマンドを実行する前に、ホームディレクトリにいることを確認してください。

  1. cd ~

レポートを静的HTMLとして出力するには、引数としてHTMLファイルを指定します。 -o 国旗。 このフラグは、で終わるファイル名も受け入れます .json また .csv.

  1. sudo goaccess /var/log/apache2/access.log -o stats.html

A stats.html ファイルがユーザーディレクトリに表示されます。

  1. ls
Output
goaccess-1.4 goaccess-1.4.tar.gz snap stats.html

このファイルは、を使用してローカルマシンのユーザーディレクトリにコピーできます。 scp. このコマンドは、リモートサーバーではなく、ローカルマシンから実行します。

  1. scp user@your_server_ip:stats.html ~/stats.html

ファイルがコピーされたら、ブラウザで次のコマンドを使用して開くことができます。 open macOSでのコマンド:

  1. open ~/stats.html

または、ローカルマシンでLinuxディストリビューションを使用している場合:

  1. xdg-open ~/stats.html

HTMLレポートを生成し、これをブラウザで表示しました。

結論

この記事では、GoAccessコマンドラインツールについて説明し、サーバーログの分析に使用する方法について説明しました。 GoAccessをApacheログで使用する方法のみを検討しましたが、このツールは、Nginx、Amazon S3、Elastic Load Balancing、CloudFrontなどの他のログ形式もサポートしています。

完全なGoAccessドキュメントを確認するか、実行することができます man goaccess あなたのターミナルで。