ログの種類の追加

ログの種類はアプリケーションの書き込みログのフォーマットを定義します。
Site24x7では多くのログの種類をデフォルトでサポートしています。アプリケーションログを有効化し、ログプロファイルを作成します。
ログの種類を関連付けることでログの収集、解析、管理が始められます。Site24x7のデフォルトのログの種類に加えて、カスタムログの種類を作成することもできます。

目次

カスタムログの種類の追加

ログの種類リストに設定したいログの種類がない場合、カスタムログの種類を作成し定義できます。
カスタムログの種類の設定は[管理]→[アプリケーションログ]→[ログの種類]→[ログの種類を追加]をクリックしてください。

次の項目を入力します。

  1. 表示名:表示する名前を入力します。
  2. ログの種類:ログの種類をドロップダウンより選択します。
  3. 最大アップロード制限:サブスクリプション期間中にアップロードすることができるサイズを指定します。
  4. 自動検出:[有効]を選択すると、ログの種類に関連付けられている新規サーバーログを自動で検出し、それをアップロードします。
  5. サンプルログ:ログパターンを検出するために、サンプルとしてログ行を入力します。
    • ログパターンの検出には日付項目が必須です。
    • [+]をクリックして、複数のログを追加できます。
      アプリケーションログでは、複数のログパターンを指定でき、それらを単一のログの種類として設定できます。
    複数行ログJSONログキー-バリューログXMLログにも対応しています。
    サンプルログは少なくとも2行入力する必要があります。
  6. ログパターン:
    • 大半のサンプルログでは、デフォルトでログパターンが生成されます。この場合、デフォルトの名前を関連する項目名に変更し保存する必要があります。
      詳細は次の画像を参照してください。
    • ログパターンを自身で定義するサンプルログが存在します。この場合、こちらの項目を参照してカスタムログパターンを作成してください。
      パターンを指定し名前を入力したら、 tickをクリックしてパターンを保存します。
    • これにより、次の画像のようにサンプルのログ出力が生成されます。ログパターン欄で、各項目名を編集してサンプルログ出力の列を編集できます。
    • ログパターンの作成で問題が発生した場合は、[問題を報告しますか?]をクリックしてください。これにより、弊社サポートにログパターンとサンプルログが送信され分析を行います。
  7. APIアップロード:HTTPSエンドポイント経由でログを送信したい場合は、[有効化]を選択してください。
  8. 最後に[保存]をクリックして、ログプロファイルに関連付けを行います。
    ログの保存期間は30日となっています。

ログパターンの定義

各項目名は$で囲む必要があります(例:$Message$)。次の構文を使用して、カスタムログパターンを指定できます。

$FieldName:DataType:Format$
属性 説明
項目名 属性の説明を入力します。
データタイプ 項目名に関連付けられたデータタイプです。
項目名には次のデータタイプを指定できます。
- Number
- String
- Date
- Decimal
- IP (IPv4 or IPv6)
- Word
- Config - Pattern
フォーマット "Date"データタイプのみ必要です。その他のデータタイプについてはフォーマットに追加する必要はありません。
  • Number項目の定義

    ($FieldName:Number$)
    Numberは項目名と関連付ける値のデータタイプです。
  • String項目の定義

    ($FieldName$)または($FieldName:String$)
    Stringは項目名と関連付けるテキストです。
  • Date項目の定義

    ($FieldName:Date:Format$)
    FieldNameは変数名を定義し、Dateは変数のデータタイプを定義します。Dateの変数は下記のフォーマットで定義する必要があります。
    $DateTime:date:EEEE MMM dd HH:MM:SS:SSS$
    例として、次のようなものがあります。
    日付項目 サンプルログ ログパターン
    Tuesday Sep 19 13:34:56.123 2007 - フォーマット: EEEE MMM dd HH:mm:ss:SSS yyyy Tuesday Sep 19 13:34:56.123 2007 Starting App Server $Datetime:date:EEEEE MMM dd HH:mm:ss.SSS yyyy$ $message$
    Sep 19 2007 13:34:56 123456 PST
    フォーマット: MMM dd yyyy HH:mm:ss SSSSS z
    Sep 19 2007 13:34:56:123456 PST Starting App Server $Datetime:date:MMM dd yyyy HH:mm:ss:SSSSS z$ $message$
    19-09-07 1:34:56 pm -0800
    フォーマット: yy-MM-dd hh:mm:ss a Z
    19-09-07 1:34:56 pm -0800 Starting App Server $Datetime:date:yy-MM-dd hh:mm:ss a Z$ $message$
    13:34:56,262
    フォーマット: HH:mm:ss,D
    13:34:56,262 Starting App Server $Datetime:date:HH:mm:ss,D$ $message$
    Tue September 19 13:34:56
    フォーマット: EEE MMMM dd HH:mm:ss
    Tue September 19 13:34:56 Starting App Server $Datetime:date:EEE MMMM dd HH:mm:ss$ $message$
    UNIX時間(秒単位)の場合、フォーマットは"$DateTime:date:unix$"を指定してください。 1190234095 Starting App Server $Datetime:date:unix$ $message$

    サポートしている日付フォーマット:

    フォーマットの要件 日付フォーマット
    年 - 2桁 yy (または) y 17 or 7
    年 - 4桁 yyyy 2017
    月 - 2桁 MM 07
    月 - 3桁 MMM Sep
    完全な月名 MMMM September
    日付 dd 19
    時間(0-12) hh 1
    時間(0-23) HH 13
    mm 34
    ss 56
    ミリ秒 SSS 123
    タイムゾーン(+0800 +1100)
    タイムゾーン(-0800 または PST)
    Z
    z
    -0800
    PST
    年単位の日数 D 262
    曜日 - 3文字 EEE Tue
    完全な曜日 EEEE Tuesday
    AM/PM/am/pm a pm
    Unix時間 - エポックからの秒数 unix 1190234095
    Unix時間 - エポックからのミリ秒 unixm 1190234095123

    フォルダーやファイル名から日付の値の取得

    フォルダー名には年、月、日にちが記載されます。時、分、秒の値はログ行の末尾にのみ記載されます。

    $DateTime:date:@folder(yyyy-MM-dd)HH:mm:ss$ $
    $DateTime:date:@file(yyyy-MM-dd)HH:mm:ss$ $
    $DateTime:date:@filepath(yyyy-MM-dd)HH:mm:ss$ $

    例:
    サンプルログ

    11:10:11 CassandraDaemon:init Logging initialized
    11:10:12 YamlConfigurationLoader:load Loading settings from file
    11:10:13 DatabaseDescriptor:data Data files directories

    ログパターン
    $DateTime:date:@folder(yyyy-MM-dd)HH:mm:ss$ $ClassName$:$Method$ $Message$

    ファイル名: D:\MyWebApp\2020-01-15\process.log

    日付の値がログファイルの親フォルダーにある場合、ログパターン内に@folderを入力します。

    日付値を含めないログ収集

    ログ行に日付値を含めず時間項目のみを記載したい場合、次の日付パターンを入力してください。

    サンプルログ

    11:10:11 CassandraDaemon:init Logging initialized
    11:10:12 YamlConfigurationLoader:load Loading settings from file
    11:10:13 DatabaseDescriptor:data Data files directories

    ログパターン
    $DateTime:date:@filedate(yyyy-MM-dd)HH:mm:ss$ $ClassName$:$Method$ $Message$

    @filedateには、ファイルの最終修正日が取得されます。

    日時値を含めないログ収集

    ログ行に時間と日付の値を含めない場合、次の日付パターンを入力してください。

    サンプルログ

    CassandraDaemon:init Logging initialized
    YamlConfigurationLoader:load Loading settings from file
    DatabaseDescriptor:data Data files directories

    ログパターン
    $DateTime:date:agent_time$ $ClassName$:$Method$ $Message$

    agent_timeには、エージェントがインストールされているマシンのログ読み取り時間が記載されます。

    異なる言語での日付値の解析

    次のログ列にポルトガル語の日付値が含まれているとします。

    サンプルログ
    Log Entry: 00:00:07 quinta-feira, 10 outubro 2019 Iniciando recebimento de mensagem
    Log Entry: 00:00:07 quinta-feira, 10 outubro 2019 Buscando mensagems na fila Quantidade=0
    Log Entry: 00:00:08 quinta-feira, 10 outubro 2019 Sucesso ao buscar quantidade: CM_OK

    ログパターン
    Log Entry: $DateTime:date:pt(HH:mm:ss EEEE, dd MMMM yyyy)$ $Message$
    "pt" はポルトガル語を意味します。

    他言語のコードはこちらのページをご確認ください。

  • Decimal項目の定義
    ($FieldName:Decimal$)
    Decimalは項目名に関連付けられている値を意味します。
    例:165.5
  • IP項目の定義
    ($FieldName:ip$)
    IP項目名に関連付けられている値を意味します。IPv4およびIPv6の両方を使用できます。
    例:192.0.2.1, 2001:0db8:85a3:0:0:8a2e:0370:7334
  • Word項目の定義
    ($Filename:word$)
    Word項目名に関連付けられている値を意味します。WordはStringのサブセットですが、項目に1つだけWordを含める必要があります。一つ以上のWordが存在する場合、Stringとして定義する必要があります。
  • Config項目の定義
    ($FileName:config:@file$)
    ここでの@fileが項目名に関連付けられているコンフィグタイプです。
    例:@folder, @file, @ip, @host

    ($FieldName:config:@filepath$)
    例: C:\Program Files\cassandra\logs\server.log
    ファイルパスを入力すると、Site24x7のアプリケーションログが完全なファイルパスを取得し項目に挿入します。
    特定のフォルダーに追加したい場合(例ではCassandra)、次のように項目を定義します。
    $FieldName:config:@filepath:2$
  • パターン項目の定義
  • このデータタイプはJSONファイルに対して使用し、同じログ内のJSONオブジェクト値のパターン定義を行います。
    パターン1:
    json $log:pattern:$RemoteHost$ $RemoteLogName$ $RemoteUser$ [$DateTimefield:date:dd/EEE/yyyy:HH:mm:ss$] $Method$ $RequestURI$ $Protocol$ $Status:number$ $ResponseSize:number$ $Referer$ $UserAgent$$ $stream$ $time$

    上記はデータタイプパターン項目内のデータ項目です。

    パターン2:
    json $log:pattern:$RemoteHost$ $RemoteLogName$ $RemoteUser$ [$DateTimefield$] $Method$ $RequestURI$ $Protocol$ $Status:number$ $ResponseSize:number$ $Referer$ $UserAgent$$ $stream$ $time:date:yyyy-mm-dd'T'HH:mm:ss.SSS'Z'$

    上記はデータタイプパターン項目外のデータ項目です。

    サンプルログ:

    {"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}
    {"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}
    {"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}

  • 特殊文字のエスケープ
  • 特殊文字のあるログ行の場合、ESC(特殊文字)を使用します。

    特殊文字のあるサンプルログ:
    2022-01-12 22:00:29,793 GMT*16.2*Message
    2022-01-12 22:00:29,793 GMT*16.2*Message
    2022-01-12 22:00:29,793 GMT*16.2*Message

    ログパターンを次のように入力します。

    $Datetime:date:yyyy-MM-dd HH:mm:ss,S z$ESC(*)$Version$ESC(*)$Message$

ログパターンサンプル:

次のログパターンをサポートしています。

  • デフォルトの文字を用いたログパターン:

    文字または単語がすべてのログ行で繰り返される場合、それらをログパターンを設定することで除外できます。[,]、*、:といった文字で取り除きます。
    例は次のとおりです。

    サンプルログ:
    2017/08/01 01:05:50 [error] 28148#1452: *154 FastCGI sent in stderr

    ログパターン:

    $DateTime:date$ [$LogLevel$] $ProcessId:number$#$ThreadId:number$: *$UniqueId:number$ $Message$
    項目名 項目値
    DateTime 2017/08/01 01:05:50
    LogLevel error
    ProcessId 28148
    ThreadId 1452
    UniqueId 154
    Message FastCGI sent in stderr
  • カスタム日付フォーマットを用いたログパターン:

    異なる日付フォーマットがサンプルログに含まれている場合、ログパターンに既存の日付フォーマットを入力する必要があります。

    サンプルログ:
    demo_user demo_db 192.168.22.10 58241 2018-01-08 11:58:23 AEDT FATAL: no pghba.conf entry for host

    ログパターン:

    $User$ $DB$ $RemoteIP$ $PID$ $DateTime:date:yyyy-MM-dd HH:mm:ss z$ $LogLevel$: $Message$
    項目名 項目値
    User demo_user
    DB demo_db
    RemoteIP 192.168.22.10
    PID 58241
    DateTime 2018-01-08 11:58:23 AEDT
    LogLevel FATAL
    Message no pghba.conf entry for host
  • 除外項目のあるログパターン:

    ログには各行で項目数が異なるケースがあります。
    このような場合、ログパターン内で"!"を用いて空欄の項目を除外する必要があります。
    次の例では、"ProcessId"が2番目のログで空欄となっています。そこでこの項目を除外します。

    サンプルログ:
    Aug 7 07:35:02 log-host systemd[1]: Stopping CUPS Scheduler
    Aug 7 08:40:02 log-host kernel: 817216.167300] audit: type=1400

    ログパターン:

    $DateTime:date$ $Host$ $Application$![$ProcessId$]!: $Message$
    項目名 項目値 - 行1 項目値 - 行2
    DateTime Aug 7 07:35:02 Aug 7 08:40:02
    Host log-host log-host
    Application systemd kernel
    ProcessId 1 -
    Message Stopping CUPS Scheduler 817216.167300] audit: type=1400

APIエンドポイント経由でログ送信

HTTPSエンドポイントを経由したログ送信を行えます。

項目設定の更新

    ログの種類の追加画面のサンプル出力欄の[項目設定の編集]をクリックしてください。

    各項目で、次の設定を編集できます。

  • 表示名:項目の名前です。
  • この項目の単位:適切な単位を選択します。数字の項目のみ表示されます。
  • Groupbyの有効化:同じ値をもつエントリをグループ化します。
  • Groupbyの文字列長:Groupbyクエリの出力で表示できる文字数を指定します。
    最大200文字まで指定できます。
  • 検索結果からこの項目を隠します:検索結果を表示する際に指定した項目を隠します。
  • マスキングの有効化:[はい]を選択し、正規表現でキャプチャグループを指定することで、文字列をマスキングします。
  • ハッシュ化の有効化:[はい]を選択し、正規表現でキャプチャグループを指定することで、データをハッシュ化します。
    詳細はこちらのページをご確認ください。

ログ行のフィルター

ログの種類の追加画面のサンプル出力欄の[項目設定の編集]をクリックしてください。

ログ行のフィルター欄で、次の設定を編集できます。

  • この項目のみログ行を選択します:[一致]、[不一致]、[含む]、[含まない]を選択して、取得するログ行を指定します。
  • これら値のいずれか:指定した条件の値を入力します。
  • この項目を無視:[はい]を選択すると、指定した項目のアップロードを無効にします。
  • [適用]をクリックします。

項目抽出

項目抽出を使用して、解析されていない項目を正規表現で定義し、必要な情報を抽出します。

関連ガイド