操作シナリオ
JSON抽出モードは、ログテキストの各行が1本の原始ログであり、各ログをJSON解析ルールに基づいて複数のkey-valueキー値として抽出できるログ解析モードに適用されます。key-valueを抽出する必要がない場合は、単行全文形式を参照して設定してください。この記事では、JSON抽出モードを使用してログを収集する方法を紹介します。 前提条件
対象ファイルが存在するサーバーにはLogListenerがインストールされています。詳細については以下を参照してください:
LogListener Linux版は2.4.5以上、またはLogListener Windows版は2.9.7以上である必要があります。
効果プレビュー
お客様の1本のJSONログの元データが以下であると仮定します:
{"remote_ip":"10.135.46.111","time_local":"22/Jan/2019:19:19:34 +0800","body_sent":23,"responsetime":0.232,"upstreamtime":"0.232","upstreamhost":"unix:/tmp/php-cgi.sock","http_host":"127.0.0.1","method":"POST","url":"/event/dispatch","request":"POST /event/dispatch HTTP/1.1","xff":"-","referer":"http://127.0.0.1/my/course/4","agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0","response_code":"200"}
CLSによる構造化処理後、このログは以下のようになります:
agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0
body_sent: 23
http_host: 127.0.0.1
method: POST
referer: http://127.0.0.1/my/course/4
remote_ip: 10.135.46.111
request: POST /event/dispatch HTTP/1.1
response_code: 200
responsetime: 0.232
time_local: 22/Jan/2019:19:19:34 +0800
upstreamhost: unix:/tmp/php-cgi.sock
upstreamtime: 0.232
url: /event/dispatch
xff: -
操作手順
ステップ1:ログトピックの作成/選択
新しいログトピックを作成する場合は、以下の操作を実行できます:
2. 左側のナビゲーションバーで概覧を選択し、概覧ページに移動します。
3. クイックアクセスでサーバー及びアプリケーションを選択し、JSON-ファイルログを見つけてクリックし、収集設定プロセスに進みます。
4. 収集設定プロセスのログトピック作成ページで、実際のニーズに応じてログトピック名を入力し、ログ保存期間などの情報を設定して、次へをクリックします。
既存のログトピックを選択する場合は、以下の操作を実行できます:
2. 左側のナビゲーションバーでログトピックを選択し、配信するログトピックを選択して、指定したログトピック名をクリックすると、ログトピック管理ページに移動します。
3. 収集設定タブを選択し、LogListener収集設定欄で追加をクリックして、ログデータソース選択に進みます。
4. ログデータソース選択ページでサーバー及びアプリケーションを選択し、JSON-ファイルログを見つけてクリックし、収集設定プロセスに進みます。
ステップ2:マシングループ管理
収集対象サーバーにLogListenerがインストールされていない場合は、以下を参照してください:
新しいマシングループを作成する場合は、以下の操作を実行できます:
1. 新規マシングループをクリックします。
2. マシングループ名を入力し、マシン識別子の方法でLogListenerがインストール済みのターゲットサーバーを関連付けます。詳細はマシングループを参照し、確定をクリックします。 3. 作成が完了したら、Tabオプションで作成したマシングループのシステム環境を選択し、リストでターゲットマシングループをチェックして、次へをクリックします。
既存のマシングループを選択する場合は、Tabオプションで作成したマシングループのシステム環境を選択し、リストでターゲットマシングループをチェックして、次へをクリックします。
ステップ3:収集設定
ログファイル収集パスの設定
「収集設定」ページで、収集ルール名を入力し、ログ収集パス形式に従って「収集パス」を入力します。ログ収集パス形式の参考は以下の通りです:
注意:
Linuxログパスは/で始まる必要があります。Windowsファイルパスはドライブ文字で始まる必要があります。例えばC:\\です。
Linuxシステムにおけるログパス:/[ディレクトリプレフィックス式]/**/[ファイル名式]、例えば:/data/log/**/*.log。
Windowsシステムにおけるログパス:[ドライブ文字]:\\[ディレクトリプレフィックス式]\\**\\[ファイル名式]、例えば:C:\\Program Files\\Tencent\\...\\*.log。
ログ収集パスを入力すると、LogListenerは[ディレクトリプレフィックス式]に従って、ルールに一致するすべての共通プレフィックスパスをマッチングし、これらのディレクトリ(サブディレクトリを含む)配下の[ファイル名式]ルールに一致するすべてのログファイルを監視します。そのパラメータの詳細説明は以下の通りです:
|
1 | /var/log/nginx | access.log | この例では、ログパスは/var/log/nginx/**/access.logに設定されています。LogListenerは、/var/log/nginxプレフィックスパス配下のすべてのサブディレクトリにおいて、access.logという名前のログファイルを監視します。 |
2 | /var/log/nginx | *.log | この例では、ログパスは/var/log/nginx/**/*.logに設定されています。LogListenerは、/var/log/nginxプレフィックスパス配下のすべてのサブディレクトリにおいて、.logで終わる名前のログファイルを監視します。 |
3 | /var/log/nginx | error* | この例では、ログパスは/var/log/nginx/**/error*に設定されています。LogListenerは、/var/log/nginxプレフィックスパス配下のすべてのサブディレクトリにおいて、errorで始まる名前のログファイルを監視します。 |
注意:
Windowsシステム環境では、ソフトリンク収集は現在サポートされていません。
LogListener 2.3.9以降のバージョンでのみ、複数の収集パスを追加できます。
収集パスをlog/*.logに設定することをお勧めします。renameでログローテーション後の古いファイル名をlog/*.log.xxxxに変更してください。
デフォルトでは、1つのログファイルは1つのログトピックにのみ収集されます。1つのファイルを複数の収集設定に対応させる必要があり、ファイルが存在するシステム環境がLinuxである場合は、ソースファイルにソフトリンクを追加し、それを別の収集設定に追加してください。
収集パス拒否リストの設定
収集パスの拒否リストを有効にすると、収集時に指定したディレクトリプレフィックスまたは完全なファイルパスを無視できます。ディレクトリパスとファイルパスは完全一致にすることも、ワイルドカードパターンマッチングをサポートすることもできます。
収集拒否リストは2種類のフィルタリングタイプに分かれており、同時に使用できます:
ファイルパス:収集パス配下で、収集を無視する必要がある完全なファイルパスです。ワイルドカード*または?をサポートし、**によるパスのあいまい一致をサポートします。
ディレクトリパス:収集パス配下で、収集を無視する必要があるディレクトリプレフィックスです。ワイルドカード*または?をサポートし、**によるパスのあいまい一致をサポートします。
注意:
LogListener 2.3.9以降のバージョンが必要です。
収集拒否リストは収集パス配下で除外を行うため、ファイルパスモードであっても、ディレクトリパスモードであっても、指定するパスは収集パスのサブセットである必要があります。
収集戦略の設定
全量収集:LogListenerがファイルを収集する際、ファイルの先頭から読み取りを開始します。
增量収集:LogListenerがファイルを収集する際、ファイル内に新しく追加されたコンテンツのみを収集します。
遡及収集の設定
収集ポリシーとして増分収集を選択した場合、ここでさらに遡及収集の開始点を設定できます。LogListener起動時に、最新位置から指定したバイト数だけ前方にオフセットして収集を開始するかどうかを指定できます。
注意:
Windowsシステム環境は現在サポートされていません。
エンコードモード
UTF-8:お客様のログファイルのエンコードモードがUTF-8の場合、このオプションを選択してください。
GBK:お客様のログファイルのエンコードモードがGBKの場合、このオプションを選択してください。
JSONモードの設定
注意:
LogListenerは1階層のJSONのみを解析します。より深い階層のJSON解析は、インデックス設定を通じて行ってください。 収集設定ページで、「抽出モード」をJSONに設定します。下図に示すとおりです:
カスタムメタデータの設定
カスタムメタデータを設定して、ログを区別することができます。現在、以下の種類のメタデータ設定がサポートされています。詳細については、カスタムメタデータをご参照ください。 マシングループメタデータ:マシングループメタデータを使用します。
収集パス:正規表現を使用して収集パスから値を抽出し、メタデータとして使用します。
カスタム:カスタムキー値をメタデータとして使用します。
注意:
カスタムメタデータを設定できるのは、LogListener 2.8.7以降のバージョンのみです。
ログタイムスタンプソースの設定
ログ内の指定フィールドの値をログの時間として使用します。
1. ログ時間フィールドで、抽出済みのValue値をログ時間として選択してください。
2. 時間形式解析で、この値に対応する解析式を手動で入力するか選択します。例えば、ログ内の時間を表す値が 07/Jul/2025:19:19:30 +0800 の場合、解析形式は %d/%b/%Y :%H:%M:%S %z です。詳細については時間形式の設定を参照してください。 3. 検証をクリックしてください。
注意:
時間形式の入力に誤りがある場合、ログ時間は収集時間を基準とします。
フィルター条件の設定
フィルターの目的は、ビジネスニーズに応じてログ収集フィルタリングルールを追加し、価値のあるログデータを選別できるようにすることです。
JSON形式のログの場合、解析されたキーと値のペアに基づいてフィルタリング条件を設定できます。サポートされるフィルタリングルールは以下のとおりです:
等しい:指定フィールド値が指定文字に一致するログのみを収集します。完全一致または正規表現一致をサポートします。
等しくない:指定フィールド値が指定文字に一致しないログのみを収集します。完全一致または正規表現一致をサポートします。
フィールド存在:指定フィールドが存在するログのみを収集します。
フィールド不存在:指定フィールドが存在しないログのみを収集します。
例えば、元のJSON形式ログコンテンツ内のresponse_codeが400または500であるすべてのログデータを収集したい場合、keyにはresponse_codeを設定し、フィルタリングルールで等しいを選択し、valueには400|500を設定します。
注意:
Windowsシステム環境は現在サポートされていません。
フィルタリングルール「等しくない」、「フィールドが存在する」、および「フィールドが存在しない」は、LogListener 2.9.3以降のバージョンでのみサポートされます。
複数のフィルタリング条件間の関係は「AND」論理です。同じkey名に対して複数のフィルタリング条件を設定した場合、ルールは上書きされます。
アップロード解析失敗ログの設定
アップロード解析失敗ログを有効にすることをお勧めします。有効にすると、LogListenerは様々な解析失敗ログをアップロードします。アップロード解析失敗ログを無効にすると、失敗ログは破棄されます。
有効にした後、解析失敗のKey値を設定する必要があります(デフォルトはLogParseFailure)。解析に失敗したすべてのログは、入力内容をキー名(Key)とし、元のログ内容を値(Value)としてアップロードされます。
元のログのアップロード
有効にすると、LogListenerは元のログと解析済みのログを一緒にアップロードします。すべての元のログは、お客様が指定したキー名を使用し、元のログ内容を値(Value)としてアップロードされます。
高度な設定
注意:
Windowsシステム環境は現在サポートされていません。
チェックを入れることで、定義が必要な詳細設定を選択します。
JSON抽出モードでは、以下の詳細設定を使用できます:
|
タイムアウト属性 | この設定はログファイルのタイムアウト時間を制御します。ログファイルが指定時間内に更新されない場合、タイムアウトとみなされます。タイムアウトしたログファイルは、LogListener によって収集されなくなります。ログファイルの数が多い場合は、LogListener のパフォーマンス浪費を避けるため、タイムアウト時間を短縮することをお勧めします。 | タイムアウトなし:ログファイルはタイムアウトしません。 カスタム:カスタムログファイルのタイムアウト時間を設定します。 |
最大ディレクトリ深度 | この設定はログ収集の最大ディレクトリ深度を制御します。LogListener は、所在ディレクトリ階層が指定された最大ディレクトリ深度を超えるログファイルを収集しません。対象収集パスにワイルドカードが含まれる場合は、LogListener のパフォーマンス浪費を避けるため、適切な最大ディレクトリ深度を設定することをお勧めします。 | 0より大きい整数です。0はサブディレクトリへのドリルダウンを行わないことを表します。 |
ステップ4:インデックス設定
1. 次へをクリックすると、「インデックス設定」ページに移動します。
2. 「インデックス設定」ページで、以下の情報を設定します。設定の詳細については、インデックス設定を参照してください。 注意:
検索を有効にするにはインデックス設定をオンにする必要があります。オンにしない場合は検索できません。
3. 送信をクリックすると、インデックス設定の編集確認ページに移動します。
設定したインデックス設定を新規に書き込まれるログにのみ適用する場合は、確定をクリックします。この設定を履歴データにも適用する場合は、確定をクリックした後、詳細についてはインデックスの再構築を参照して、さらに設定を行ってください。 4. 操作に成功し、収集設定が完了しました。
関連操作
ログを検索するには、検索・分析ドキュメントを参照してください。