GNU/Linux >> Linux の 問題 >  >> Rocky Linux

RockyLinux8にGoAccessWebLogAnalyzerをインストールする方法

GoAccessは、Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront、Caddyなどの複数の形式のログファイルを読み取って分析できるオープンソースの軽量ログアナライザーです。C言語で記述されており、コマンドラインからアクセスできるダッシュボードインターフェイス。

HTML、JSON、CSV形式でレポートを生成し、他のユーザーと共有することができます。パブリックリンクを介して表示できるリアルタイムのHTMLレポートを生成することもできます。

このチュートリアルでは、RockyLinuxベースのサーバーにGoAccessAnalyzerをインストールし、Nginxログを読み取ってリアルタイムレポートを提供するように構成する方法を学習します。

前提条件
  1. RockyLinux8を実行しているサーバー。

  2. sudo権限を持つroot以外のユーザー。

  3. ログにアクセスするためにサーバー上で実行されているNginx。

  4. すべてが更新されていることを確認してください。

    $ sudo dnf update
    
ステップ1-GoAccessの依存関係をインストールする

GoAccess v1.5.2の最新バージョンは、デフォルトのリポジトリでは利用できません。 GoAccessの最新バージョンをインストールするには、ソースからビルドします。最初のステップは、GoAccessパッケージの構築に必要な依存関係をダウンロードすることです。

$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel 
$ sudo dnf groupinstall 'Development Tools'
ステップ2-GoAccessをダウンロードしてインストールします

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
ステップ3-GeoIPデータベースをダウンロード

GeoIPデータベースは、DB-IPまたはMaxmindからダウンロードできます。 Maxmindからダウンロードする場合は、アカウントを作成して無料のライセンスキーを生成する必要があります。 DB-IPからのダウンロードは直接行うことができます。

上記のいずれかのソースから国のzipファイルをダウンロードします。ダウンロードしたら、それらを抽出して .mmdbをアップロードします サーバー上のファイルを/home / / geoipなどのカスタムフォルダーに移動します 。

ステップ4-GoAccessを構成する

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と入力します 終了したらプロンプトが表示されたら。

ステップ5-GoAccessを実行します

通常、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. 1日あたりのユニークな訪問者 -このパネルは一目瞭然です。各日付の一意の訪問者、ヒット数、および累積帯域幅が一覧表示されます。デフォルトでは、Webクローラーとスパイダーも含まれます。

  2. リクエストされたファイル(URL) -このパネルには、サーバー上で最もリクエストの多い非静的ファイルに関する統計が表示されます。

  3. 静的リクエスト -上記のパネルと似ていますが、画像、CSS、JavaScriptなどの静的ファイルを処理する点が異なります。

  4. 見つからないURL(404) -このパネルは、サーバー上に見つからないファイルとパスへのすべてのリクエストをログに記録します。

  5. 訪問者のホスト名とIP -このパネルには、サイトへの訪問者に関する詳細情報が表示されます。 oを押すことができます パネルを展開して、原産国、都市、逆引きDNSなどの詳細情報を取得します。

  6. オペレーティングシステム -このパネルには、訪問者が使用するさまざまなオペレーティングシステムが表示されます。

  7. ブラウザ -このパネルには、訪問者が使用するさまざまなブラウザが表示されます。

  8. 時間配分 -このパネルは、ヒット数、ユニークビジター、および消費された帯域幅に関する1時間ごとのレポートを提供します。

  9. 仮想ホスト -このパネルには、ログファイルから解析された仮想ホストが表示されます。 VCOMBINEDを使用した場合にのみ表示されます 上記の構成ファイルのログ形式、または%vの場合 ログ形式の構成の一部です。

  10. リファラーURL -これは、訪問者をサーバーに参照するURLを一覧表示します。このパネルはデフォルトで無効になっています。有効にするには、を追加して、構成ファイルの次の行をコメントアウトします。 その前に。

    #ignore-panel REFERRERS
    
  11. 参照サイト -このパネルには、参照元ホストのIPアドレスが表示されます。

  12. キーフレーズ -このパネルには、Google検索、Googleキャッシュ、またはGoogle翻訳で使用されているサイトにつながるキーワードが表示されます。このパネルもデフォルトで無効になっています。構成ファイルの次の行をコメントアウトして有効にします。

    #ignore-panel KEYPHRASES
    
  13. HTTPステータスコード -このパネルには、サーバーがリクエストに応答したときにサーバーから返されるHTTPステータスコードの統計が表示されます。

  14. リモートユーザー(HTTP認証) -このパネルには、HTTP認証で保護された、サーバー上のドキュメントにアクセスするユーザーのユーザーIDが表示されます。このパネルは、%eの場合にのみ機能します ログ形式の構成の一部です。

  15. キャッシュステータス -このパネルは、リクエストがキャッシュされ、そこから提供されているかどうかを判断します。このパネルは、%cの場合にのみ機能します ログ形式の構成の一部です。

  16. ジオロケーション -このパネルには、サイトにアクセスする訪問者の地理的な場所のリストが表示されます。構成ファイルにその場所をダウンロードして追加した場合にのみ表示されます。

ステップ6-GoAccessを非特権として実行

優れたセキュリティ慣行として、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
ステップ7-HTMLレポートを生成する

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のインストールと実行に関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。


Rocky Linux
  1. Ubuntu20.04にGoAccessWebLogAnalyzerをインストールする方法

  2. RockyLinux8にPython3.9をインストールする方法

  3. Rocky Linux 8 に Redis をインストールする方法

  1. RockyLinux8.4のインストール方法

  2. Ubuntu20.04にGoAccessWebLogAnalyzerをインストールする方法

  3. RockyLinux8にDockerCEをインストールする方法

  1. RockyLinux8にSnapをインストールする方法

  2. RockyLinux8にlighttpdWebサーバーをインストールする方法

  3. RockyLinux8にDockerCEをインストールする方法