効率的な視覚化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やヒントのまとめ

推薦する

Dockerコンテナの個別展開のためのLNMPの実装

1. 環境整備各コンテナの IP アドレス: nginx: 172.16.10.10マイSQL: 1...

イメージを再構築せずにDockerにポートを動的に追加する方法

操作中に Docker コンテナの公開ポートを変更または追加する必要がある場合がありますが、実行中の...

MySQL ストアド プロシージャの作成と呼び出しの詳細な説明

目次序文ストアドプロシージャ: 1. ストアドプロシージャの作成と呼び出し1. ストアドプロシージャ...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

MySQL で group by を使用すると常にエラー 1055 が発生します (推奨)

MySQL で group by を使用すると常にエラー 1055 が発生するため、原因を確認する...

MySQL ロックブロッキングの詳細な分析

日常のメンテナンスでは、スレッドがブロックされることが多く、データベースの応答が非常に遅くなります。...

アニメーションとトランジションの違い

CSS3アニメーションとJSアニメーションの違いJSはフレームアニメーションを実装しますCSS3はト...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

MySQLにデータを素早くインポートする方法

序文:日々の勉強や仕事の中で、データをエクスポートする必要に迫られることがよくあります。たとえば、デ...

MYSQL スロークエリとログの例の説明

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

Tencent Cloud で HTTPS を無料で導入する方法

最近、WeChatアプレットを書いていたとき、WeChatアプレットではすべてのリクエストインターフ...

js 配列 fill() 充填メソッド

目次1. fill() 構文2. fill() の使用3. まとめ序文:配列の初期化方法についてはよ...

VueはGraphVisを使用して無限に拡張された関係グラフを開発します

1. GraphVis 公式サイトにアクセスして、対応する js をダウンロードします。js の新し...

TypeScriptの列挙型を詳しく説明する

目次1. デジタル列挙2. 文字列の列挙3. 逆マッピング4. 異種列挙5. 定数列挙6. 列挙メン...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...