複数ログパターン
単一のアプリケーションでは2つ以上のフォーマットで、異なるモジュールログが書き込まれます。例えば、1つのフォーマットのアクセスログ情報と、その他のフォーマットでエラーログ情報が記載されます。この場合、同じアプリケーションに関する各ログフォーマットのログタイプを作成することなく、複数行ログパターンを単一のログタイプで作成します。
Site24x7の複数ログパターンで、1つのアプリケーションから異なるフォーマットで書かれるログをまとめることができ、それを単一のダッシュボードで可視化します。詳細はこちら
設定手順
- Site24x7にログインします。
- Site24x7サーバー監視エージェント(Windows | Linux)をダウンロード後、インストールします。
- 管理 > アプリケーションログ > ログの種類 > ログの種類の追加をクリックします。
ログの種類の追加方法の詳細はこちら
例:異なるフォーマットの2つのログファイル
1つのアプリケーションが異なる2つのログファイル(アクセスログ、エラーログ)を出力しているとします。
ファイル1:サンプルアクセスログとそのログパターン
127.0.0.1 - - [21/Jul/2022:12:41:20 +0530] "GET / HTTP/1.1" 200 44 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36"
$RemoteAddress$ - $RemoteUser$ [$Datetime:date$] "$Method$ $RequestURI$ $Protocol$" $Status:number$ $BytesSent:number$ "$Referer$" "$UserAgent$"! "$ForwardedFor$"!
ファイル2:サンプルエラーログとそのログパターン
[2022-05-29 16:29:38 +0530] [212777] [INFO] Starting gunicorn 20.1.0
[$Datetime:date$] [$ProcessID:number$] [$LogLevel$] $Message$
複数ログパターンを使用して、異なる2つのアクセスログファイルとエラーログファイルを同じログの種類として、追加できます。
これにより、単一ダッシュボードでアクセスおよびエラーログを可視化できます。
クエリ言語で、ログパターン名を指定して、特定のログパターンのデータをフィルターできます。例えば、次のクエリを使用して、アクセスログパターンを取得できます。
logtype="Gunicorn" and logpattern_name="Access log"
例:JSONと通常ログが同じファイルにある場合
JSONと単一行ログが同じファイルに存在するとします。
ファイル1:サンプルJSONログとそのログパターン
{"log":"Starting Application Server","stream":"stdout","time":"2022-06-22T20:19:58.980395832Z"}
json $log$ $stream$ $time as Datetime:date:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'$
ファイル1:サンプル単一行ログとそのログパターン
2021/08/05 20:26:49:000 portAvailability 9090 127.0.0.1
$Datetime:date:yyy/MM/dd HH:mm:ss:SSS$ $Message$
複数ログパターンを使用して、上記2つのログパターンを1つのログの種類で、作成できます。
- 解析中、ログファイルはログパターンで引用された順序に従います。例えば、上記のスクリーンショットでは、JSONパターンログが最初に解析され、その後、単一行ログが解析されます。
- ログ行が2つ以上マッチした場合、最初のパターンがマッチしているとエージェントが認識します。
- 上下矢印アイコンで、ログパターンを入れ替えられます。
- ログパターンの順番を入れ替えることができないため、サンプルログとログパターンの順番はマッチしません。
例:特定のログパターンと一般のログパターンを組み合わせて使用してる場合
ログパターンで、わずかに違いのあるログを出力しているアプリケーションを想定します。
特定ログパターンのサンプルログ
[05-Jun-2020 12:16:43] [212778] [ERROR] Exception occurred while starting.
[$Datetime:date:dd-MMM-yyyy HH:mm:ss$] [$ProcessID:number$] [$LogLevel$] $Message$
一般ログパターンのサンプルログ
[05-Jun-2020 12:16:43] [INFO] Starting gunicorn 20.1.0
[$Datetime:date:dd-MMM-yyyy HH:mm:ss$] $Message$
上記の例では、2つのサンプルログパターンはほとんど同じですが、メッセージ項目の形式がわずかに異なります。最初のログパターンはプロセスIDとログレベルを指定しています。このような場合に、最初に1つ目の特定ログパターンを指定後、2つ目の一般ログを指定します。
制限
複数ログパターンを使用する際の制限事項は次のとおりです。
- ログパターン間で、同じ項目名のデータタイプにする必要があります。次の2つのデータタイプで、項目名(ProcessID)が異なっているため、複数ログパターンを使用できません。
- ログパターン1: [$Datetime:date$] [$ProcessID:number$] [$LogLevel$] $Message$
- ログパターン2: [$Datetime:date$] [$ProcessID$] [$LogLevel$] $Message$
- 最大5つのログパターンを追加できます。
- 日時項目の名前は各ログパターンで同じ必要があります。
- ログパターン名は一意である必要があります。次のような名前の組み合わせには対応していません。
- JSONログと他のログパターンは組み合わせないでください。別々のログの種類としてふるまいます。
- 同じログの種類に、異なる2つのJSONログフォーマットを組み合わせないでください。
- 同じログの種類に、2つの複数行ログパターンを組み合わせないでください。
関連ガイド
サンプルログパターン
サポートしているログの種類