効率的な視覚化Nginxログ表示ツール

効率的な視覚化Nginxログ表示ツール

導入

Rhit は、標準フォルダー (gzip 圧縮ファイルも許容) から Nginx ログ ファイルを読み取り、分析してカウントし、不要な一時ファイルやデータを生成せずにコンソールの視覚的なテーブルに表示できます。

日付、応答値、リクエスト元などでフィルタリングしてマッチングし、分析を行うことができます。Rhit は非常に効率的で、1 秒あたり数百万行のログ データを処理できます。

以下は、1 月のログでステータス コード 1xx および 2xx を検索した結果です。

プロジェクトのアドレスは次のとおりです。

https://github.com/Canop/rhit

インストール

コンパイルされたバイナリ ファイルを直接ダウンロードして使用しますが、シェルが rhit バイナリ ファイルを見つけられることを確認する必要があります。これに対処する簡単な方法は、それを /usr/local/bin ディレクトリに配置し、実行権限を追加することです。

chmod +x rhit を実行する  
// ダウンロードアドレス: https://dystroy.org/rhit/download

crates.io からインストールします。Rust 環境に応じて、次のコマンドを使用してインストールします。

貨物インストールrhit

ソース コードのインストールは Rust 環境に依存します。GitHub ソース コードをクローンした後、rhit フォルダーに入り、次のコマンドを実行します。

貨物をインストール --path 。  

表示フィールド

rhit はデフォルトのディレクトリで nginx ログ ファイルを自動的に開くことも、コマンド ライン パラメータでログ パスを指定することもできます。

私の/アーカイブされた/ログ  

一般的な nginx ログ行は次のとおりです。

178.133.125.122 - - [21/Jan/2021:05:49:52 +0000] "HEAD /broot/download/x86_64-pc-windows-gnu/broot.exe HTTP/1.1" 200 0 "-" "Mozilla/4.0 (互換; MSIE 6.0; Windows NT 5.1)"

日付、リモート IP アドレス、パス、送信バイト数などの複数のフィールドで構成されます。 rhit は、テーブルをソートするためのフィールドのリストを実行できます。指定しない場合は、デフォルトで日付、ステータス コード、ソース、パス別に表示されます。複数のフィールドを指定する場合は、-f date,status のようにカンマで区切ります。すべてのフィールドを表示するには、-f all を使用します。

日付ベース。 --field date または短縮形の -f date を使用します。デフォルトでは、棒グラフの長さはヒット数に基づいていますが、送信されたバイト数に基づいてソート キーを変更できます。

IP ベース。デフォルトでは、リモート IP は表示されません。 rhit -f ip を使用すると表示できます。

リクエスト方法に基づきます。 HTTP リクエスト メソッドはデフォルトでは表示されません。 rhit -f method を使用すると表示できます。

パスベース。コマンドはrhit -f path

Referer に基づきます。コマンドはrhit -f refです

ステータスコードに基づきます。コマンドはrhit -f statusです

フィルター

Rhit には、結果リストをフィルタリングし、表示したいデータや表示したくないデータを表示するためのフィルターがいくつか用意されています。

日付でフィルタリングします。日単位の精度で、日付の形式は年/月/日です。たとえば、2021/2/15 から 2021/2/20 までのデータをフィルタリングできます。また、特定の時間より大きい、特定の時間より小さい、または特定の時間を含まないデータをフィルタリングすることもできます (「>」、「<」、「!」記号を使用)。

リモート IP でフィルタリングします。パラメータは -i で、特定の IP をフィルタリングするか、特定の IP を除外します (「!」記号を使用)。

リクエストメソッドでフィルタリングします。パラメータは -m で、特定のメソッドをフィルタリングしたり、特定のメソッドを除外したりします。

リクエスト パスでフィルターするには、-p パラメータを使用します。これは、完全一致または正規表現にすることができます (たとえば、すべてのパスが "download" で始まり "exe" で終わる場合、パラメータは -p 'download.*exe$' です)。

リファラーでフィルタリングします。パラメータは -r で、パスによるフィルタリングの構文と一致しています。

ステータス コードでフィルターします。パラメータは -s で、特定のステータス コードをフィルタリングしたり、特定のステータス コードを除外したりします。

複合スクリーニング。上記の方法は任意の方法で組み合わせることができます。

ソートキー

デフォルトでは、すべてのテーブルはソートキーであるヒット数でソートされ、ヒストグラムを含め、ソートキーのすべての値がピンク色で表示されます。送信されたバイト数にもっと興味がある場合は、-kb を使用してソート キーをバイトに変更できます。

Rhit の効率的なビジュアル Nginx ログ表示ツールに関するこの記事はこれで終わりです。Rhit Nginx ログ表示ツールに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx でアクセスログをリアルタイムで表示できるようにする詳細な手順

<<:  HTML に FLASH へのリンクを追加し、すべての主要ブラウザと互換性を持たせる方法

>>:  HTML5で見逃せないAPIやヒントのまとめ

推薦する

JavaScript の便利な配列トリック 12 選

目次アレイ重複排除1. from() を新しい Set() メソッドに重ねる2. スプレッド演算子 ...

JavaScript/TypeScript で同時リクエスト制御を実装するためのサンプルコード

シナリオリクエストが 10 件あるが、同時リクエストの最大数は 5 件で、リクエスト結果が必要である...

nginx で http でアクセスする Web サイトを https に変更する方法

目次1. 背景2. 前提条件https:証明書システム: 3. 操作プロセス3.1 証明書の生成3....

JavaScript オブジェクトを作成する 3 つの方法

目次1. オブジェクトリテラル2. newキーワードはオブジェクトを作成する3. Object.cr...

MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)

開発の背景:最近、私はバッチ データを MySQL データベースにインポートする機能に取り組んでいま...

クールなネオンライト効果を実現する純粋な CSS (デモ付き)

私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...

Jupyter Notebook で JavaScript を実行する方法

その後、VSC で Jupyter Notebook を使用する方法も追加しました...アナコンダを...

MySQL で数千万のテストデータを含むテストデータベースを作成する方法

場合によっては、MySQL が公式に提供しているテスト ライブラリに基づいてテスト データを作成し、...

a タグをクリックして入力ファイルのアップロードダイアログボックスを表示する方法

htmlコードをコピーコードは次のとおりです。 <SPAN class=tag><...

nginxリバースプロキシによるセッション障害の問題の解決策

同僚から助けを求められました。バックエンド システムへのログインは成功したものの、システムには正常に...

インデックスを使用して MySQL ORDER BY ステートメントを最適化する方法

テーブルの作成とインデックスの作成 テーブルtbl1を作成( id int ユニーク、sname v...

Docker に MySQL と Redis をインストールする方法

この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...

JavaScriptの再帰の詳細

目次1. 再帰とは何ですか? 2. 再帰を使って数学の問題を解く1. 1 * 2 * 3 * 4 …...

IIS を使用して X-Forwarded-For ヘッダー (XFF) を呼び出して訪問者の実際の IP を記録する 2 つの方法

問題: IIS を通じて公開された Web サイトは F5 デバイスの背後に配置されています。透過的...

Nginx URL 書き換えメカニズムの原理と使用例

URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数...