goaccess を使用して nginx ログを分析する詳細な方法

goaccess を使用して nginx ログを分析する詳細な方法

最近、goaccess を使って nginx ログを分析したいのですが、nginx ログの設定形式が通常の形式ではありません。完全に自分のニーズに合わせて書かれているため、goaccess では分析できず、自分で形式を再定義する必要があります。インターネット上には goaccess の紹介がたくさんありますが、そのほとんどは重要な点に焦点を当て、形式のカスタマイズを無視しているため、カスタマイズについてお話しします。

GoAccess は、コマンド ライン ターミナルで実行されるオープン ソースのリアルタイム Web ログ分析ツールです。このツールは、高速で多様な HTTP ステータス統計を提供するため、管理者はさまざまな種類のデータのカウントを心配する必要がなくなり、複雑なコマンドや多数のパイプライン/正規表現に別れを告げることができます。

nginxログを分析する

GoAccessのさまざまな表示モード
Goaccess には、次のような複数のデータ視覚化方法があります。

コマンドラインからフォーマットされたデータを出力します。access.log を使用して静的な視覚化データを生成します。リアルタイムの視覚化データを生成します。コンパイルしてインストールし、--enable-geoip=mmdb を選択した場合は、コマンドを使用するときに設定ファイルを編集し、パラメータ --config-file=/usr/local/etc/goaccess/goaccess.conf を追加する必要があります。パッケージ マネージャーを使用してインストールする場合、これは必要ありません。

コマンドライン出力 GoAccess
goaccess /var/log/nginx/access.log -c を実行すると、最初にデータの形式を尋ねられます。ここでは、ログに最初の形式を使用します。

アクセスログを解析して静的 HTML を生成する
GoAccess は access.log を解析して静的 HTML を生成し、より直感的な方法でデータを表示することもできます。

goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED を実行し、ブラウザを使用して report.html にアクセスし、すべてのデータが含まれるレポートを表示します。

アクセスログのリアルタイム解析
GoAccess は、静的 HTML ファイルの生成に加えて、リアルタイムの Web サイト アクセス データも生成できます。

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf

中国語サポートを追加
Goaccess 1.3 以降のバージョンでは、多言語サポートが提供されています。まず、コマンドラインで apt install language-pack-zh-hans を実行して中国語パッケージをインストールし、次に export LANG=zh_CN.UTF-8 を使用して環境変数を変更し、次に goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf を使用して GoAccess を再度起動すると、インターフェイスがすでに中国語になっていることがわかります。

リアルタイムモードについては、公式サイト https://rt.goaccess.io/?20200209201008 でデモを確認できます。

異常終了 リアルタイムモードが正常に終了しなかった場合、再度正常に起動できなくなる可能性があります。GoAccess はデフォルトで 7890 ウェブソケット ポートを使用するため、lsof -i:7890 を使用してポートを占有しているプロセス番号を表示し、それを強制終了します。

SSL サポート 暗号化された接続でリアルタイム データを出力する必要がある場合は、--ssl-cert= と --ssl-key= を使用する必要があります。設定後、report.html にアクセスすると、データがまだ静的であることがわかりました。突然、cloudflare cdn を使用していて、ポート 7890 が cloudflare のサポート対象ポート リストにないことを思い出したので、パラメーター --ws-url=wss://server ドメイン名 (ブラウザーはドメイン名のポート 8443 に接続しようとします):8443 --port=8443 を使用してポートを 8443 に変更しました。予想外だったのは、この時点では、プロキシリンクを使用すると report.html に接続でき、リアルタイムの情報を見ることができるのですが、直接接続すると、tcping で示されるように、静的なデータのままであることです。

cloudflareの公式サイトにアクセスすると、次のコンテンツが見つかります。

次のサービスと互換性があるのはポート 80 と 443 のみです。

中国ネットワークのドメイン名が有効になっている中国のデータセンターからのHTTP/HTTPSトラフィックの場合、
つまり、中国ではCloudflare経由で80/443以外のポートに接続することは不可能です...

リバースプロキシ しかし、接続する方法がないわけではありません。 最終的に、リバースプロキシソリューションを思いつきました。

起動パラメータを --ws-url=wss://yourdomain.com/goaccess --port=7890 に変更します。

nginxサイト設定ファイル/etc/nginx/site-available/defaultを変更し、次の内容を追加します。

場所 /goaccess {
    proxy_redirect オフ;
    プロキシパス https://127.0.0.1:7890;
    プロキシ_http_バージョン 1.1;
    proxy_set_header アップグレード $http_upgrade;
    proxy_set_header 接続「アップグレード」;
    proxy_set_header ホスト $http_host;
}

サイト設定ファイルで URL 書き換えが有効になっている場合は、/goaccess が影響を受けないように、このパスを書き換えから除外する必要があることに注意してください。

すべての書き換えルールを場所/に置く

位置 / { 
    if (-f $request_filename/index.html){
    書き換え (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
    (.*) $1/index.php を書き換えます。
    }
    if (!-f $リクエストファイル名){
    (.*) /index.php を書き換えます。
    }
}

以下は何もする必要はありません

場所 /goaccess/ {
}

その後、nginx を再起動して、report.html に再度アクセスします。左側の歯車にようやく接続が表示されることがわかります。

自分だけが視聴する場合や、IP が公開されることを気にしない場合は、CDN を経由せずに IP を使用して直接接続する方が手間がかかりません。

goaccess を使用して nginx ログを分析する方法についての記事はこれで終わりです。goaccess による nginx ログ コンテンツの分析の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • アーチファクト!最高の Nginx ログ分析ツール GoAccess
  • nginx-ingress-controller ログ永続化ソリューションのソリューション
  • Dockerでnginxログをローリングするアイデアの詳細な説明

<<:  指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)

>>:  CSS3の3D効果を使って立方体を作成する

推薦する

URLに基​​づいてリクエストを転送するnginxの実装の実践経験

序文これは fastdfs を使用してイントラネット外部に展開された分散ファイルシステムであるためで...

フロントエンドページのポップアップマスクはページのスクロールを禁止します

フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...

Linux/CentOS サーバー セキュリティ構成の一般ガイド

Linux はオープン システムです。インターネット上には、既成のプログラムやツールが多数存在します...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

MySQL 8.0 Windows zip パッケージ版の詳細なインストール手順

MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...

CSS3 の transition、transform、translate の違いと機能の簡単な分析

変換して翻訳するTransform は、変換と変形を意味します。他の幅属性や高さ属性と同様に、CSS...

Vueシャトルボックスは上下の動きを実現します

この記事の例では、vueシャトルボックスを上下に動かすための具体的なコードを参考までに共有しています...

MySQL交換パーティションの詳細な例

MySQL交換パーティションの詳細な例序文exchange パーティションを紹介する前に、まず my...

Pycharmとsshリモートアクセスサーバーdockerの詳細なチュートリアル

背景: 一部の実験はサーバー上で完了する必要があります。したがって、リモート サーバー上のコードをロ...

Win10でのMySQL5.7.17無料インストール版の基本設定チュートリアルについて(画像とテキスト付き)

データベース アプリケーションは、アプリケーション システムに不可欠な部分です。リレーショナル デー...

MySQLでテーブルインデックスを構築する方法

目次複数の種類のフィルタリングをサポート複数の範囲のクエリを避ける並べ替えを最適化するインデックスの...

Vue3 ベースのスクリプト設定構文 $refs の使用

目次1. Vue2 構文2. Vue3の使用1. コンポーネントのref値を設定する2. コンポーネ...

MySQL 5.7.10 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

MySQL は比較的使いやすいリレーショナル データベースです。今日は、win10 システムを再イ...

Navicateを使用してAlibaba Cloud Server上のMySQLに接続する

1. まず、サーバーの mysql にアクセスして権限を変更します。 GRANT オプション付きで、...

MySQL ソート機能の詳細

目次1. 問題のシナリオ2. 原因分析3. 解決策4. 知識を広げる4.1 クエリの最適化を制限する...