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効果を使って立方体を作成する

推薦する

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...

HTML の大なり、小なり、スペース、引用符などでよく使用されるエスケープ コードのリスト。

表は以下のとおりです。 HTMLソースコード結果を表示説明する&lt; <未満記号また...

CSSフロートの特性についての簡単な説明

この記事では、CSS フロートの特徴を紹介します。皆さんと共有し、自分用のメモとして残したいと思いま...

Nginxドメイン名転送の実装

Nginx の紹介Nginx (「エンジン x」) は、ロシアのプログラマー Igor Sysoev...

Gearman + MySQL による永続化操作例

この記事では、gearman+mysql メソッドを使用して永続化操作を実装します。ご参考までに、詳...

背景画像に CSS3 変換を適用するためのソリューション

CSS 変換は便利ですが、背景画像にはまだ適用されていません。この投稿では、背景画像を回転させたい場...

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

Reactでコンポーネントロジックを共有する3つの方法

簡単に説明すると、これら 3 つの方法は、レンダリング プロップ、高階コンポーネント、カスタム フッ...

Vueはカウントダウン機能を実装する

この記事の例では、カウントダウン機能を実装するためのVueの具体的なコードを参考までに共有しています...

よく使われる Docker コマンドと例の概要と分析

目次1. コンテナライフサイクル管理(1)ドッカー実行(2)スタート/ストップ/リスタート(3)ドッ...

Nginx アクセス ログとエラー ログ パラメータの説明

例: nginx ログには、アクセス ログとエラー ログの 2 つの主な種類があります。アクセス ロ...

nginx と openssl で https を実装する方法

サーバーデータがSSL証明書を使用して暗号化および認証されていない場合、ユーザーのデータはプレーンテ...

Linux bzip2 コマンドの使用

1. コマンドの紹介bzip2 は、ファイルの圧縮と解凍に使用されます。これは、Linux システム...

Centos7 ベースの Varnish キャッシュ プロキシ サーバーを展開する

1. ワニスの概要1. ワニスの紹介Varnish は、新しいソフトウェア アーキテクチャを使用し、...

MySql インデックスはクエリ速度を向上させる一般的な方法のコード例

インデックスを使用してクエリを高速化する1. はじめにWeb 開発には、ビジネス テンプレート、ビジ...