Debian 7でApacheにGoAccess Web Log Analyzerをインストールして使用する方法

前書き

GoAccessを使用すると、シンプルなコマンドラインダッシュボードを使用してWebサーバーログをリアルタイムで監視し、トラフィックメトリックをすばやく表示および分析できます。 それは、1つのスクロール可能なダッシュボード上の個別のパネルに編成された統計を使用して、完全にターミナルで実行されます。 GoAccessを使用して、HTML、JSON、およびCSVのWebトラフィックレポートを生成することもできます。

このチュートリアルでは、ソースからソフトウェアをインストールする方法を示し、コマンドラインでプログラムを使用、表示、およびナビゲートする方法を示します。

画像:https://assets.digitalocean.com/articles/GoAccess_Apache_Debian/1.jpg [GoAccess Dashboard]

GoAccessは、他のほとんどすべてのWebサーバーからのログファイルを処理します。 ただし、ログファイルが適切に機能するためには、ログファイルの特定のフォーマットをGoAccessで定義する必要があります。

このガイドでは、仮想ホストが構成されているかどうかに関係なく、選択されたWebサーバーとしてApacheを使用することに焦点を当てます。

前提条件

このチュートリアルを開始する前に、これらの前提条件を完了してください。

VPSが処理するWebトラフィックが多いほど、GoAccessで処理する必要があるデータが多くなります。この場合は、より多くのデータが適しています。

手順1-システムパッケージの更新

まず、 `+ sudo `の昇格権限を持つユーザーとしてサーバーに ` ssh +`を追加します。 次に、以下の手順に従います。

ssh @

このコマンドは、 `+ apt-get +`パッケージマネージャーのデータベースを更新します。

sudo apt-get update

ステップ2-システムパッケージのアップグレード

Debianシステムパッケージの新しいアップデートをインストールします。

sudo apt-get upgrade

はいの場合は「+ y +」と入力して、新しいパッケージの更新に関するプロンプトが表示されたら確認します。

ステップ3-build-essentialパッケージをインストールする

`+ build essential `パッケージは、DebianおよびLinuxでソフトウェアをコンパイルするために必要な ` make +`などのいくつかの非常に重要な補助パッケージを提供します。 これらは、後のガイドでGoAccessのインストール段階に必要です。

`+ apt-get`を使用してパッケージをインストールする方法は次のとおりです。

sudo apt-get install build-essential

手順4-GoAccess依存関係のインストール

VPSにGoAccessをインストールして使用するために必要な依存関係は次のとおりです。 `+ apt-get +`パッケージマネージャーを使用してそれらを取得します。

sudo apt-get install libncursesw5-dev libglib2.0-dev libgeoip-dev libtokyocabinet-dev

ステップ5-ビルドディレクトリのセットアップ

必要なシステムパッケージが準備できたので、GoAccessを取得してビルドできます。

`+ / usr / local / src +`ディレクトリは、GoAccessソフトウェアをビルドするのに適した場所です。 次のコマンドを実行して、このディレクトリの*現在の* Debianユーザーアカウントの所有権を付与します。

sudo chown $USER /usr/local/src

次に、次のコマンドを使用して、この同じユーザーにディレクトリの読み取り、書き込み、実行の権限を付与します。

sudo chmod u+rwx /usr/local/src

`+ cd +`コマンドでこのディレクトリに移動します:

cd /usr/local/src

手順6-GoAccessソースコードのダウンロードと抽出

GoAccessは、執筆時点での安定したビルドのためにリリースバージョン0.8.5にあります。 ダウンロードするには、以下の「+ wget +」コマンドを使用します。

wget http://tar.goaccess.io/goaccess-0.8.5.tar.gz

これで、 + tar`コマンドを使用して、ダウンロードした + .tar.gz`ファイルとその内容を抽出および展開できます。

tar -zxvf goaccess-0.8.5.tar.gz

手順7-ソースコードのコンパイルとインストール

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

cd goaccess-0.8.5/

次のコマンドに示す2つのプレフィックスを使用して、このディレクトリ内にある_configure_スクリプトを実行します。

./configure -enable-geoip -enable-utf8

`+ make +`コマンドを使用して、GoAccessのインストールに必要な_makefile_をビルドします。

make

次のコマンドは、(以前に作成された_makefile_を使用して)GoAccessをシステムディレクトリにインストールし、Debian経由で実行可能にします。

sudo make install

手順8-GoAccess構成ファイルの編集

GoAccessのメイン設定ファイルには、チュートリアルの後半でプログラムのいくつかの高度な機能を使用するために_コメント解除_する必要がある_commented_行がいくつかあります。

`+ vi +`テキストエディタを使用して、次の方法でファイルを編集します。

sudo vi /usr/local/etc/goaccess.conf

この設定のコメントは「#」で示され、サーバーはその後の同じ行の後続の情報を無視することを意味します。 このファイルでは、合計2つの `#`シンボルを削除して、2行のコメントを解除する必要があります。

最初は `+ date-format`設定で、このように表示されます。

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

コメント記号( )を削除するには、「+ j 」を複数回押して、編集する行(「 date-format%d /%b /%Y + `line」)にカーソルをドロップします。 。 行に到達して「#」を選択したら、「+ x +」を押して削除および削除します。

正しく行われた場合、修正は次のようになります。

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

_ *注意:*間違いや誤った変更をしたと思われる場合は、「+ ESC 」を押して「:q 」と入力し、「 ENTER +」を押して変更を保存せずにファイルを終了できます。 _

コメントを外す必要がある2行目は `+ log-format +`行の1つで、正確な行はApacheの設定に依存します。 Apacheホストを1つだけ実行している場合は最初のオプションを選択し、_virtual hosts_をセットアップしている場合は2番目のオプションを選択します。 よくわからない場合は、おそらく「非仮想ホストのセットアップ」セクションに従ってください。

_ 警告:*これらの行の 1 *のみコメント解除します。 _

非仮想ホストのセットアップ

仮想ホストを使用しないセットアップの場合、前と同じ方法で次の行のハッシュ( )シンボルを削除します。

# NCSA Combined Log Format
#
log-format %h %^[%d:%^] "%r" %s %b "%R" "%u"
#

仮想ホストのセットアップ

仮想ホストを使用したセットアップの場合、前と同じ方法で次の行のハッシュ( )シンボルを削除します。

# NCSA Combined Log Format with Virtual Host
#
log-format %^:%^ %h %^[%d:%^] "%r" %s %b "%R" "%u"
#

`+ log-format `行の* 1 *のコメントを外した後、 ` ESC `を押します。 次に、「:wq」と入力し、「+ ENTER」を押します。 これにより、ファイルに加えた変更が書き込まれ、 `+ vi +`テキストエディターが終了します。

サポートされているフォーマット基準を満たす任意のプレーンテキストApacheログファイルでGoAccessを実行できるようになりました。

ステップ9-ユーザーを「adm」グループに追加する

Debianの管理者グループ(* adm )に現在のユーザーを追加して、ルートユーザーのアクセス許可に sudo *プレフィックスを必要とせずにこれらのコマンドを実行できるようにします。

「+ usermod 」は、「-g 」引数と追加したいグループ名(* adm *)に続けて問題のユーザー(この場合は* sammy *)を含めることで、ユーザーのプロパティを変更できます。 次のコマンドの「+」を独自のLinuxユーザー名に置き換えてください。

sudo usermod -g adm

上記のコマンドを実行した後、「+ exit 」と入力してから「 ENTER 」と入力してVPSから切断します。 次に、sudoユーザーでVPSに再度ログインします。 これは、先に ` usermod +`でユーザーに加えた変更が有効になるためです。

exit
ssh @

これで、* sudo *を使用せずにこのユーザーとしてGoAccessを実行するための適切な権限が必要になり、Apacheログディレクトリにもアクセスできるようになります。

ここで、ログディレクトリを見つけます。

ステップ10-ログファイルを見つける

一般に、Webサーバーは、ログファイルへのすべての着信および処理されたHTTP要求を記録します。

ログを使用できるように、Apacheがログを保存する場所を見つける必要があります。 デフォルトでは、DebianシステムではApacheログファイルは次の場所に保存されます。

+ / var / log / apache2 +

このディレクトリの内容を表示するには、次のようにlistコマンドを使用できます。

ls /var/log/apache2

ここでは、前述のログファイルがあります。サーバーの実行時間が十分に長い場合、その一部は `+ .gz `ファイルに圧縮されます。 現在Webサーバーに書き込まれて処理されている最新のものは、「 access.log +」という名前の非圧縮のものです。

仮想ホストを設定したセットアップでは、個々のホストのログファイルを見つけるために、「+ / apache2 」内から「 cd +」をサブディレクトリに追加する必要があります。

ここでログファイルを見つけた場合は、次のステップ(*ステップ11 *)に進みます。

さらに検索

ログファイルの検索に問題がある場合にのみ、この詳細情報を読む必要があります。

これらのアクセスログの場所は、Apache configの `+ CustomLog`ディレクティブによって制御されます。 この設定を変更した場合、Apacheアクセスログが別のディレクトリにある可能性があります。

`+ CustomLog `ディレクティブとその設定を見つけるには、次のコマンドに示すように、Apache構成ファイルの1つで ` grep +`を使用できます。

これにより、 `+ apache2.conf +`ファイルに追加されたカスタムディレクトリが出力されます。

grep CustomLog /etc/apache2/apache2.conf

別の方法として、このコマンドを実行することもできます。サーバーに多くのファイルがある場合は、時間がかかる場合があります。

sudo find / -name access.log

これにより、 `+ access.log +`という名前のシステム上のすべてのファイルが表示されます。

ステップ11-GoAccessを実行する

Apacheサーバーのログファイルのあるディレクトリが見つかったら、次のコマンドでGoAccessを実行できます。 このコマンドでは、標準のApacheのパスと異なる場合は、必ず「++」を独自のログファイルのディレクトリパスに置き換えてください。

goaccess -f  -a

このコマンドを実行すると、GoAccessダッシュボードが表示されます。

`+ -f `引数は、指定されたディレクトリパスを使用するようプログラムに指示し、 ` -a +`引数は、解析された各ホスト_agent_のすべての記録された統計を有効にします。

オプション:アーカイブログの抽出

古いログ(圧縮された `+ .gz +`タイプのファイル)でGoAccessを実行する場合は、それらを抽出して解凍する必要があります。 プログラムは、上記のコマンドを使用してこれらの圧縮ファイルで実行されません。

必要に応じて、Debianの `+ gunzip +`プログラムでこの抽出を行うことができます。

例えば:

sudo gunzip /var/log/apache2/

ここのコマンドの最後にある `+ access.log.10.gz +`ファイル名は、抽出したい圧縮ファイル名と一致する必要があります。

ステップ12-GoAccessをナビゲートする

これはGoAccessダッシュボードです。

画像:https://assets.digitalocean.com/articles/GoAccess_Apache_Debian/2.jpg [GoAccess Dashboard]

ダッシュボードを操作する方法は次のとおりです。

  • 「+ F1 」または「 h +」を押すと、小さなヘルプウィンドウが表示され、このセクションのキーとその機能が一覧表示され、その他の役立つ情報が提供されます。

  • `+ 0-9 `または ` SHIFT + 0-9 +`はそれぞれ番号の付いたモジュールを選択し、アクティブに設定します。 対応する番号は、各セクションのダッシュボードで確認できます。

  • ダッシュボードで現在選択されているモジュールを展開するには、「+ o 」または「 ENTER +」を使用します。 モジュールについては、次のセクションで説明します。

  • 「+ j 」は展開されたアクティブなモジュール内で下にスクロールし、「 k +」は展開されたアクティブなモジュール内で上にスクロールします。

  • `+ s +`はアクティブなモジュールで利用可能なソートオプションを表示します。

  • 最後に、ダッシュボードの現在の深さレベルに応じて、「+ q +」を押すとプログラムまたは現在のウィンドウが終了するか、アクティブなモジュールが折りたたまれます。

次のキーを使用して、より多くの対話を実現できます:

  • キーボードの「+ TAB +」キーを押すと、モジュール内を順番に進みます。

  • + SHIFT + + `+ TAB +`を一緒に押すと、最後のアクションの逆が行われ、モジュールを逆方向​​に繰り返します。

  • `+ F5 +`を押すと、ダッシュボードを更新して再描画できます。

  • 「+ c +」を押すと、ダッシュボードで使用中の現在の配色が設定および変更されます。

  • 「+ g +」は、フォーカスを最初のアイテムに移動し、ダッシュボード画面の上部に戻します。

  • `+ G +`は、ダッシュボード画面の最後の項目または下部までスクロールします。

ステップ13-モジュールを理解する

インターフェイスを移動できるようになったので、各モジュールに実際に含まれているものを見てみましょう。 ここのセクションは、プログラムの番号付きモジュールとタイトルに対応しています。 表示されるすべての_「ヒット」_値は、指定されたログファイルで見つかったリクエストの合計量に基づいています(特に明記されていない限り)。

ダッシュボード-全体的に分析されたリクエスト

ダッシュボードには、有効な要求、無効な要求、提供されたデータの分析にかかった時間、サーバーへの一意の訪問者、一意に要求されたファイル、一意の静的ファイル(通常は画像ファイルタイプ)、一意のHTTPリファラー(URL)、一意の404の数が表示されます見つからないエラー、解析されたログファイルのサイズ、最後に消費された帯域幅。

  • 1-ユニークビジター*

このモジュールは、日付ごとにリストされ、日付が含まれています。 同じIP、同じ日付、同じ_agent_を持つHTTPリクエストは、一意の訪問と見なされます。 これには、Webクローラー/スパイダーが含まれます。

  • 2-要求されたファイル*

リクエストされたファイルには、Webサーバーで最もリクエストの多いファイルが表示され、上記の_hits_が数字と割合で表示され、ホストが提供された時間(帯域幅)、使用されたプロトコル、使用されたリクエストタイプが表示されます。

  • 3-要求された静的ファイル*

+ jpg ++ css ++ swf ++ js ++ gif +、および `+ png +`ファイルタイプなど、最も頻繁に要求される静的ファイルのみを含み、最後と同じメトリック各オカレンスに提供されるモジュール。

  • 4-HTTP 404 URL *

同じ統計で以前のモジュールと同様にランク付けされたこのモジュールは、上位のHTTP 404:Not Found Errorリクエスト、およびリクエストされているURLをリストします。

  • 5-ホスト*

ホストには、Webサーバーに接続するホスト自体の詳細情報(接続数、その_global_ IPアドレス、および同じ繰り返しメトリックタイプの一部など)があります。

ここで展開されたモジュールは、以前の「+ -a 」引数が有効になっている場合、ホストの逆DNSルックアップ結果や原産国など、さらに多くの情報を表示できます。 ユーザー_agents_のリストを表示するには、目的のIPアドレスを選択し、「 ENTER +」を押します。

  • 6-オペレーティングシステム*

ホストのオペレーティングシステムが表示され、OSの使用状況がランク付けされます。 これは、他のほとんどのモジュールデータとは異なり、一意の訪問に基づいています。

  • 7-ブラウザー*

ブラウザモジュールは、最後のモジュールと同じ概念に従いますが、この場合、セッションの接続に使用されるホストのブラウザタイプが代わりにランク付けされます。 繰り返しますが、これはユニークビジターに基づいており、リクエスト全体ではありません。

  • 8-リファラーURL *

問題のホストが別のリソースを介してサイトにアクセスした場合、または別のホストからリンク/迂回された場合、参照元のURLはこのモジュールで提供されます。

  • 9-参照サイト*

このモジュールは、最後のモジュール(*参照URL *)とほとんど同じです。唯一の違いは、紹介の正確な起点ではなく、一般的なサイトアドレスが表示されることです。

  • 10-キーフレーズ*

Google検索、Googleキャッシュ、およびGoogle翻訳で使用されるキーワードをレポートします。これらは、Webサーバーがホストを処理する原因となります。 現在、これはGoogleのみをサポートし、他の検索エンジンはサポートしていません。

  • 11-地理的位置*

このモジュールには、訪問ホストのIPアドレスから確認された地理的な場所の概要が含まれています。 これを判別できない場合、「+ location unknown +」としてマークされます。

  • 12-HTTPステータスコード*

[HTTPステータスコード]には、HTTPリクエストの全体的なステータスコードの値に関する統計が、量と割合で示されます。

(オプション)さらにGoAccessを使用する

これらの追加コマンドを続行するには、「+ cd 」と「〜」でユーザーのホームディレクトリに移動します。 セカンダリの ` pwd +`コマンドは現在の作業ディレクトリを表示するため、正しく切り替えられたことを確認できます。

cd ~
pwd

HTMLレポート

GoAccessの標準出力を任意の名前のHTMLファイルに_redirecting_( +> +)することにより、HTMLレポートを生成できます。

この例では、ファイルの名前は + .html +`で、選択したログファイルから利用可能なすべての( `+ -a +)統計が含まれています。

goaccess -f /var/log/apache2/access.log -a > .html

新しく生成された `+ html +`ファイルは、ユーザーの_home_ディレクトリ内に作成されます。

JSONレポート

コマンドに `+ -o `および ` json `引数を追加することにより、JSONタイプのレポートを作成できます。 ここで、出力ファイルの拡張子は「 .json +」です。

goaccess -f /var/log/apache2/access.log -a -o json > .json

CSVレポート

CSVファイルを生成するには、以前と同じ方法に従います。コマンドに `+ csv `引数を追加し、ファイル拡張子を ` .csv +`に変更するだけです

goaccess -f /var/log/apache2/access.log -a -o csv > .csv

圧縮ファイルの実行

圧縮ファイルをGoAccessで実行するには、 `+ zcat `コマンドの出力を ` goaccess `コマンドにパイプします。 次のコマンドは、*すべて*圧縮された ` .gz +`ファイルが手動で抽出されることなく読み込まれていることを示しています。

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

開始日によるフィルタリング

指定した開始日からフィルタリングするには、次のコマンドの構造を使用できます。 これにより、2015年1月20日からログファイルの内容が終了するまで、HTTPリクエストが解析されます。

sed '//,$ p' /var/log/apache2/access.log | goaccess -a

これは、入力している日付が実際に渡されたログファイルに含まれている場合にのみ機能することに注意してください。

日でのフィルタリング

特定の日付を選び出し、その日のトラフィックを表示するようにフィルタリングできます。 今回はそうするために `+ grep +`を使用します。

grep '' /var/log/apache2/access.log | goaccess -a

ホストを除外する

このコマンドで特定のIPアドレスを除外し、「++」を目的のIPアドレスに置き換えます。

goaccess -exclude-ip= -f /var/log/apache2/access.log -a

リモート使用

GoAccessがVPSではなく、ローカルワークステーションなどのリモートマシンにインストールされている場合、VPSにSSHで接続し、_piping_を介してApacheログファイルをリモートで読み取ることができます。

ssh @ 'cat ' | goaccess -a

結論

このガイドを完了したら、GoAccessのインストール方法、コア機能の使用方法、GoAccessの柔軟性を高める他のいくつかの機能の使用方法を理解する必要があります。

ここに、カバーされていることの完全な要約があります。

  • 必要なDebianシステムパッケージの取得と更新。

  • ソースコードを使用したGoAccessのインストールとビルド。

  • Apache Webサーバーのログファイルを使用してGoAccessを実行します。

  • コマンドラインでGoAccessを操作し、操作します。

  • GoAccessダッシュボードのモジュールについて。

  • _redirection_を使用して、Apache Webサーバーログからさまざまなレポートタイプを作成します。

  • _Piping_その他のコマンドはGoAccessに出力されます。

Related