Debian7でApacheを使用してGoAccessWebLogAnalyzerをインストールして使用する方法
序章
GoAccessを使用すると、シンプルなコマンドラインダッシュボードを使用してWebサーバーのログをリアルタイムで監視し、トラフィックメトリックをすばやく表示および分析できます。 それは、1つのスクロール可能なダッシュボード上の別々のパネルに編成された統計を備えた端末で完全に実行されます。 GoAccessを使用して、HTML、JSON、およびCSVのWebトラフィックレポートを生成することもできます。
このチュートリアルでは、ソフトウェアをソースからインストールする方法を示し、次にコマンドラインでプログラムを使用、表示、およびナビゲートする方法を示します。
GoAccessは、他のほとんどすべてのWebサーバーのログファイルを処理します。 ただし、ログファイルが正しく機能するには、ログファイルの特定のフォーマットをGoAccessで定義する必要があります。
このガイドでは、仮想ホストが構成されているかどうかに関係なく、選択したWebサーバーとしてApacheを使用することに焦点を当てます。
前提条件
このチュートリアルを開始する前に、これらの前提条件を完了してください。
-
オペレーティングシステムとしてDebian7を使用するVPS
-
sudo昇格権限を持つVPSのユーザーアカウント。
-
アクティブまたは以前にアクティブなHTTPトラフィックがインストールされたApacheWebサーバー
VPSが処理するWebトラフィックが多いほど、GoAccessが処理する必要のあるデータが多くなります。この場合は、より多くのデータを処理する必要があります。
ステップ1—システムパッケージを更新する
まず、sudo
昇格権限を持つユーザーとしてssh
をサーバーに追加します。 次に、以下の手順に従います。
ssh sammy@your_server_ip
このコマンドは、apt-get
パッケージマネージャーのデータベースを更新します。
sudo apt-get update
ステップ2—システムパッケージをアップグレードする
Debianシステムパッケージに新しいアップデートをインストールします。
sudo apt-get upgrade
y
と入力して、新しいパッケージの更新についてプロンプトが表示されたら確認します。
ステップ3—ビルドエッセンシャルパッケージをインストールします
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ソフトウェアをビルドするのに適した場所です。 次のコマンドを実行して、このディレクトリの currentDebianユーザーアカウントの所有権を付与します。
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
次のコマンドは、GoAccessを(以前に作成した makefile を使用して)システムディレクトリにインストールし、Debian経由で実行可能にします。
sudo make install
ステップ8—GoAccess構成ファイルを編集する
GoAccessのメイン構成ファイルには、チュートリアルの後半でプログラムの高度な機能を使用するためにコメント解除する必要のあるコメント行がいくつかあります。
vi
テキストエディタを使用して、次のようにファイルを編集します。
sudo vi /usr/local/etc/goaccess.conf
この構成のコメントは#
で示され、サーバーがその後の同じ行の後続の情報を無視することを意味します。 このファイルでは、2行のコメントを解除するために、合計2つの#
シンボルを削除する必要があります。
1つ目は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
行)にカーソルを置きます。 行に到達して#
を選択したら、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つだけ実行している場合は最初のオプションを選択し、仮想ホストを設定している場合は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
行のoneのコメントを解除した後、ESC
を押します。 次に、:wq
と入力し、ENTER
を押します。 これにより、ファイルに加えた変更が書き込まれ、vi
テキストエディタが終了します。
これで、サポートされているフォーマット基準を満たすプレーンテキストのApacheログファイルでGoAccessを実行できます。
ステップ9—ユーザーを「adm」グループに追加します
現在のユーザーをDebianの管理者グループ( adm )に追加して、rootユーザー権限のsudoプレフィックスを必要とせずにこれらのコマンドを実行できるようにします。
usermod
は、-g
引数と追加するグループ名( adm )、続いて問題のユーザー(この場合)を含めることで、ユーザーのプロパティを変更できます。 サミー)。 次のコマンドのsammy
を自分のLinuxユーザー名に置き換えてください。
sudo usermod -g adm sammy
上記のコマンドを実行した後、exit
と入力し、次にENTER
と入力して、VPSから切断します。 次に、sudoユーザーを使用してVPSに再度ログインします。 これは、usermod
を使用してユーザーに対して以前に行った変更が有効になるようにするためです。
exit
ssh sammy@your_server_ip
これで、sudoを使用せずにこのユーザーとしてGoAccessを実行するための適切な権限があり、Apacheログディレクトリにもアクセスできるはずです。
次に、logsディレクトリを見つけます。
ステップ10—ログファイルを見つけます
一般に、Webサーバーは、すべての着信および処理済みHTTP要求をログファイルに記録します。
ログを利用できるように、Apacheがログを格納する場所を見つける必要があります。 デフォルトでは、DebianシステムではApacheログファイルは次の場所に保存されます。
/var/log/apache2
このディレクトリの内容を表示するには、次のようにlistコマンドを使用できます。
ls /var/log/apache2
ここには、前述のログファイルがあります。サーバーが十分に長く稼働している場合は、その一部が.gz
ファイルに圧縮されます。 現在Webサーバーに書き込まれ、処理されている最新のものは、access.log
という名前の非圧縮のものです。
仮想ホストが構成されたセットアップの場合、cd
を/apache2
内からサブディレクトリに入れて、個々のホストのログファイルを見つける必要がある場合があります。
ここでログファイルが見つかった場合は、次の手順(手順11 )に進みます。
さらに検索
ログファイルの検索に問題がある場合にのみ、この詳細情報を読む必要があります。
これらのアクセスログの場所は、Apacheの構成の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を実行できます。 このコマンドでは、/var/log/apache2/access.log
が標準のApacheと異なる場合は、必ず独自のログファイルディレクトリパスに置き換えてください。
goaccess -f /var/log/apache2/access.log -a
このコマンドを実行すると、GoAccessダッシュボードが表示されます。
-f
引数は、指定されたディレクトリパスを使用するようにプログラムに指示し、-a
引数は、解析された各ホストagentのすべての記録された統計を有効にします。
オプション:アーカイブログの抽出
古いログ(圧縮された.gz
タイプのファイル)でGoAccessを実行する場合は、それらを抽出して解凍する必要があります。 プログラムは、上記のコマンドを使用して、これらの圧縮ファイルに対して実行されません。
必要に応じて、Debianのgunzip
プログラムを使用してこの抽出を行うことができます。
例えば:
sudo gunzip /var/log/apache2/access.log.10.gz
ここでのコマンドの最後にあるaccess.log.10.gz
ファイル名は、抽出する圧縮ファイル名と一致する必要があります。
ステップ12—GoAccessをナビゲートする
これはGoAccessダッシュボードです。
ダッシュボードを操作する方法は次のとおりです。
-
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、同じ日付、同じエージェントを持つHTTPリクエストは、一意の訪問と見なされます。 これには、Webクローラー/スパイダーが含まれます。
2 —要求されたファイル
Requested Filesは、Webサーバー上で最も要求の多いファイルを表示し、 hits を数値、パーセンテージ、ホストが提供された時間(帯域幅)、使用されたプロトコル、および何として表示します。リクエストタイプが使用されました。
3 —要求された静的ファイル
jpg
、css
、swf
、js
、gif
、
4 — HTTP 404 URL
同じ統計情報を持つ以前のモジュールと同様にランク付けされたこのモジュールは、上位の繰り返しHTTP 404:Not Found Errorリクエスト、およびリクエストされているURLを一覧表示します。
5 —ホスト
ホストには、接続数、グローバル IPアドレス、同じ繰り返しメトリックタイプの一部など、Webサーバーに接続するホスト自体に関する詳細情報があります。
ここで拡張されたモジュールは、以前の-a
引数が有効になっている場合、ホストの逆引きDNSルックアップ結果や原産国などのさらに多くの情報を表示できます。 ユーザーエージェントのリストは、目的の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
および~
を使用してユーザーのホームディレクトリに移動し、これらの追加コマンドを続行します。 2番目のpwd
コマンドは、現在の作業ディレクトリを出力するため、正しくディレクトリに切り替えたことを確認できます。
cd ~
pwd
HTMLレポート
GoAccessの標準出力を任意の名前のHTMLファイルにリダイレクト(>
)することにより、HTMLレポートを生成することができます。
この例では、ファイルの名前はreport.html
で、選択したログファイルから利用できるすべての(-a
)統計が含まれています。
goaccess -f /var/log/apache2/access.log -a > report.html
新しく生成されたhtml
ファイルは、ユーザーのhomeディレクトリ内に作成されます。
JSONレポート
コマンドに-o
およびjson
引数を追加することにより、JSONタイプのレポートを作成できます。 ここで、出力ファイルの拡張子は.json
です。
goaccess -f /var/log/apache2/access.log -a -o json > report.json
CSVレポート
CSVファイルを生成するには、前と同じ方法に従います。 コマンドにcsv
引数を追加し、ファイル拡張子を.csv
に変更するだけです。
goaccess -f /var/log/apache2/access.log -a -o csv > report.csv
圧縮ファイルの実行
圧縮ファイルをGoAccessで実行するには、zcat
コマンドの出力をgoaccess
コマンドにパイプします。 次のコマンドは、すべての圧縮された.gz
ファイルが、最初に手動で抽出せずに読み込まれていることを示しています。
zcat /var/log/apache2/access.log.*.gz | goaccess -a
開始日によるフィルタリング
指定された開始日からフィルタリングするには、次のコマンドの構造を使用できます。 これにより、2015年1月20日からログファイルの内容が終了するまでのHTTPリクエストの解析が保証されます。
sed '/20\/Jan\/2015/,$ p' /var/log/apache2/access.log | goaccess -a
これは、入力している日付が実際に渡されたログファイルに含まれている場合にのみ機能することに注意してください。
日でのフィルタリング
特定の日付を選び出し、フィルタリングしてその日のトラフィックを表示することができます。 今回はgrep
を使用します。
grep '20/Jan/2015' /var/log/apache2/access.log | goaccess -a
ホストを除く
このコマンドで特定のIPアドレスを除外し、111.111.111.111
を目的のIPアドレスに置き換えます。
goaccess —exclude-ip=111.111.111.111 -f /var/log/apache2/access.log -a
リモート使用
GoAccessがVPSではなくローカルワークステーションなどのリモートマシンにインストールされている場合は、VPSにSSHで接続し、Pipingを介してApacheログファイルをリモートで読み取ることができます。
ssh sammy@your_server_ip 'cat /var/log/apache2/access.log' | goaccess -a
結論
このガイドを完了すると、GoAccessのインストール方法、そのコア機能の利用方法、およびGoAccessの操作をより柔軟にする他のいくつかの機能の使用方法を理解する必要があります。
これがカバーされたものの完全な要約です:
- 必要なDebianシステムパッケージの入手と更新。
- ソースコードを使用したGoAccessのインストールとビルド。
- ApacheWebサーバーのログファイルを使用したGoAccessの実行。
- コマンドラインでGoAccessを介して対話およびナビゲートします。
- GoAccessダッシュボードのモジュールを理解する。
- リダイレクトを使用してApacheWebサーバーログからさまざまなレポートタイプを作成します。
- Piping他のコマンド出力をGoAccessに出力します。