ログラインの分離方法を指定する

一般に、完全なアクセスログ(例えば、 Nginx アクセスログ)は 1 行を占めます。2 つのログは改行で区切られています。 たとえば、次の 2 つのシングルラインアクセスログを参照してください。

10.1.1.1 - - [13/Mar/2016:10:00:10 +0800] "GET / HTTP/1.1" 0.011 180 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)"
10.1.1.1 - - [13/Mar/2016:10:00:11 +0800] "GET / HTTP/1.1" 0.011 180 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)"

Java アプリケーションの場合、プログラムログは通常複数の行にまたがります。 特性ログヘッダーは、 2 つのログを分離するために使用されます。 たとえば、次の Java プログラムログを参照してください。

[2016-03-18T14:16:16,000] [INFO] [SessionTracker] [SessionTrackerImpl.java:148] Expiring sessions
0x152436b9a12aecf, 50000
0x152436b9a12aed2, 50000
0x152436b9a12aed1, 50000
0x152436b9a12aed0, 50000
前述の Java ログには、日時形式の開始フィールドがあります。 正規表現は \[\d+-\d+-\w+:\d+:\d+,\d+]\s.* です。 以下のように、コンソールで設定を完了してください。
図 1. フルモード解析の正規表現

ログフィールドを抽出する

Log Service data modelsによれば、ログには 1 つ以上のキーと値のペアが含まれています。 分析のために指定したフィールドを抽出するには、正規表現を設定する必要があります。 ログコンテンツを処理する必要がない場合、ログはキーと値のペアと見なすことができます。

上記のアクセスログの場合:
  • フィールドが抽出されるとき

    Regular expression: (\S+)\s-\s-\s\[(\S+)\s[^]]+]\s"(\w+). *, Extracted contents: 10.1.1.1, 13/Mar/2016:10:00 and GET.

  • フィールドが抽出されない場合

    Regular expression: (. *), Extracted contents: 10.1.1.1 - - [13/Mar/2016:10:00:10 +0800] "GET / HTTP/1.1" 0.011 180 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)""

ログ時間を指定する

Log Service data models によると、ログには UNIX のタイムスタンプ形式の時間フィールドが必要です。 現在、ログ時間は、 Logtail がログ内容を収集する時のシステム時刻に設定することができます。

上記のアクセスログの場合:
  • ログコンテンツの時間フィールドを抽出するTime: 13/Mar/2016:10:00:10Time expression: %d/%b/%Y:%H:%M:%S
  • ログが収集されるシステム時刻 Time: Timestamp when the log is collected.