メインコンテンツまでスキップ
Sumo Logic Japanese

JSON を使用したソースの設定

ソースは、UTF-8 でエンコードされた JSON ファイルを使用して設定できます。インストール済みコレクタでローカルファイル設定管理を使用する場合は、JSON ファイルを使用してソースを設定できます。また、ホスト型コレクタとインストール済みコレクタのソースは、コレクタ管理 API を使用して設定することもできます。

詳細については以下のトピックを参照してください。

ソース JSON ファイルの定義

コレクタを登録する際に、user.properties または sumo.conf 設定ファイルで sources または syncSources パラメータを使用してソース JSON ファイルを指定できます。これらのパラメータは、コレクタを最初にセットアップする際に使用します。

パラメータ タイプ 説明
sources 文字列 登録時に設定するソースを記述した JSON ファイルを設定します。コレクタの設定後にソースを変更したい場合は、コレクタ管理 API または Sumo Web アプリケーションを使用します。
syncSources 文字列 登録時に設定するソースを記述した JSON ファイルの場所を設定します。このパラメータで指定したファイルは継続してモニタリングされ、コレクタの設定と同期されます。

syncSources パラメータの設定の詳細については、「ローカル設定ファイル管理」を参照してください。 

JSON を使用した複数ソースの設定

JSON を使用して複数のソースを設定するには、以下の方法があります。

  • 単一の JSON ファイルにすべてのソースの設定情報を記述する (sources.json)
  • ソースごとに個別の JSON ファイルを作成して単一のフォルダに配置する。その後、個別のソースではなくソース フォルダを設定できます。

詳細については「ローカル設定ファイルでのソースの指定オプション」を参照してください。

ソースの種類

各ソースには、上記の表にある汎用フィールドに加えて、固有のフィールドを定義できます。有効なフィールド タイプを下表に示します。以下のセクションに、各ソースに固有のパラメータと関連する JSON ファイルの例を示します。

インストール済みコレクタのログ ソース

Source Type タイプ値
ローカル ファイル ソース LocalFile
リモート ファイル ソース RemoteFileV2
ローカル Windows イベント ログ ソース LocalWindowsEventLog
リモート Windows イベント ログ ソース RemoteWindowsEventLog
ローカル Windows パフォーマンス ソース LocalWindowsPerfMon
リモート Windows パフォーマンス ソース RemoteWindowsPerfMon
Syslog ソース syslog
スクリプト ソース Script
Docker ログ ソース DockerLog
Docker 統計情報ソース DockerStats

インストール済みコレクタのメトリクス ソース

フィールド タイプ タイプ値
ホスト メトリクス ソース SystemStats
Graphite ソース Graphite

ホスト型コレクタのログ ソース

フィールド タイプ タイプ値
HTTP ソース HTTP
クラウド Syslog ソース Cloudsyslog
Amazon S3 ソース ポーリング
AWS Elastic Load Balancing ソース ポーリング
AWS CloudFront ソース ポーリング
AWS CloudTrail ソース ポーリング
AWS S3 監査ソース ポーリング

ホスト型コレクタのメトリクス ソース

フィールド タイプ タイプ値
AWS CloudWatch ソース ポーリング

すべてのソース タイプに共通のパラメータ

以下のパラメータは、syslog とメトリクス以外のすべてのソース タイプで使用されます。これらのパラメータは複数行検出はサポートしていないため、共通パラメータのmultilineProcessingEnabled、 useAutolineMatching、および manualPrefixRegexp は使用できません。これらのパラメータを設定ファイルで指定しても無視されます。

パラメータ タイプ 必須 デフォルト 説明 アクセス
sourceType 文字列 はい   正しいソース タイプを入力します (詳細については各ソース タイプを参照してください)。 変更不可
name 文字列 はい   ソースの名前を入力します。名前は一意でなければなりません。この値はメタデータ フィールドの _source に割り当てられます。 変更可
description 文字列 不可 null ソースの説明を入力します。 変更可
hostName 文字列 不可 null ソースのホスト名を入力します。この値はメタデータ フィールドの _sourceHost に割り当てられます。ホスト名は最大 128 文字です。 変更可
カテゴリ 文字列 不可 null ソースのカテゴリを入力します。この値はメタデータ フィールドの _sourceCategory に割り当てられます。詳細については「ベスト プラクティス」を参照してください。 変更可
タイプスタンプの処理
automaticDateParsing ブール 不可 true タイムスタンプをパースするかどうかを指定します。true を指定すると、日付の自動パースが有効になります (デフォルト設定)。false を指定すると無効になります。無効にすると、タイムスタンプ情報はパースされません。 変更可
timeZone 文字列 不可 null ソースが使用するタイム ゾーンを TZ データベース形式で入力します。例: "America/Los_Angeles".詳細については「タイム ゾーンの形式」を参照してください。 変更可
forceTimeZone ブール 不可 false true を指定すると、ソースは特定のタイム ゾーンを使用します。false を指定すると、ソースはログで見つかったタイム ゾーンを使用します。デフォルト設定は false です。 変更可
defaultDateFormat 文字列 不可 null (廃止予定) ログで使用されるデフォルトの日付形式。タイムスタンプ オプションの詳細は、「タイムスタンプ、タイム ゾーン、時間範囲、および日付フォーマット」を参照してください。  下記の置換オブジェクト defaultDateFormats を参照してください。 変更可
defaultDateFormats オブジェクト配列 不可 null ログ メッセージ中の日付フォーマットを定義します。ロケーター正規表現を使用することで、ログ行中でのタイムスタンプの表示場所を指定できます。 

defaultDateFormats オブジェクトには 2 つの要素があります。

format (必須) — 日付フォーマットを指定します。
locator (省略可能) — ログ行中でのタイムスタンプの表示場所を指定する正規表現です。例:

\[time=(.*)\]

例については、下記のタイムスタンプの例を参照してください。

タイムスタンプ オプションの詳細は、「タイムスタンプ、タイム ゾーン、時間範囲、および日付フォーマット」を参照してください
変更可
複数行の処理
multilineProcessingEnabled ブール 不可 true true を指定すると有効、false を指定すると無効になります。デフォルト設定は true です。1 行に 1 つのメッセージが格納されているファイル (例: Linux の system.log) を収集する場合には false に設定しても構いません。複数行メッセージ (log4J や例外スタック トレースなど) を使用する場合は、有効のままにしておきます。 変更可
useAutolineMatching ブール 不可 true true を指定するとメッセージの境界が自動的に推定され、false を指定するとメッセージの境界が自動的に推定されなくなります (UI の Infer Boundaries オプションに相当します)。デフォルト設定は true です。 変更可
manualPrefixRegexp 文字列 不可 null useAutolineMatching=false を指定する場合は、メッセージの最初の行と一致する正規表現を入力することで、境界を手動で定義してください。正規表現に特殊文字 (バックスラッシュや二重引用符など) が含まれる場合は、エスケープする必要があります。

たとえば、この式は:

"^\[\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d{3}\].*"

このように指定します:

"^\\[\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\].*"
変更可
処理ルール
filters 文字列配列 不可 [ ] ソースにフィルタを追加する場合は、フィルタの名前 (Exclude、Include、Hash、Mask、または Forward) を指定します。フィルタのルールと制限を確認し、「JSON を使用した処理ルールの作成」を参照してください。 変更可
コレクションの開始タイミング
cutoffTimestamp Long 不可 0 (すべてのデータを収集)
 
エポック時刻からのミリ秒数 (13 桁) で指定されたタイムスタンプより新しいデータのみを収集します。エポック時刻の変換にはこのサイトを利用できます。http://www.epochconverter.com/

ローカル ファイル ソースの場合、このカットオフは個別のログ行の時刻ではなく「修正後」の時刻に適用されます。
変更可
cutoffRelativeTime 文字列 不可   cutoffTimestamp の代わりに指定することで、現在時刻に対する相対オフセットを指定できます。例: -1h-1d-1w で、それぞれ 1 時間、1 日、1 週間前の時刻を指定します。

cutoffRelativeTime には、月 (M)、週 (w)、日 (d)、時 (h)、および分 (m) を指定できます。

ローカル ファイル ソースの場合、このカットオフは個別のログ行の時刻ではなく「修正後」の時刻に適用されます。
変更不可

設定できないパラメータ

以下のパラメータは Sumo Logic サービスによって自動的に設定されます。API リクエストを生成する場合を除いて、これらのパラメータは JSON ファイルには指定しないでください。API リクエストでは、JSON ファイルに id パラメータを指定する必要があります。

  • id
  • alive - このパラメータは、Sumo がハートビート メッセージを 15 秒おきに受信するたびに更新されます。ハートビートによって接続が確立されていることが確認されます。ハートビート メッセージが 30 分間受信できないと、このパラメータは false になります。
  • status

タイム ゾーンの形式

JSON ソースの設定において、timeZone 設定の文字列は、Sumo Logic Web アプリケーションで表示されるタイム ゾーン設定と同じ形式には準拠しません。JSON timeZone プロパティは、(GMT+11:00) スタイルの値ではなく、基礎となる TZ データベースのタイム ゾーン形式を使用します。

例:

"timeZone": "America/Los_Angeles",

タイム ゾーン環境変数のリストは、このWikipedia 記事に掲載されています。  

タイムスタンプの例

JSON の 2 つのデフォルト日付形式である yyyy-MM-dd HH:mm:ssyyMMdd HH:mm:s でのタイムスタンプの例を示します。

{
    "source": {
        "name": "test",
        "defaultDateFormats": [{
            "format": "yyyy-MM-dd HH:mm:ss",
            "locator": "time=(.*),"
        }, {
            "format": "yyMMdd HH:mm:ss"
        }]
    }
}

JSON を使用した処理ルールの作成

JSON を使用してソースを設定する際には、処理 (フィルタリング) ルールを定義することができます。フィルタは、Sumo Logic に送信するメッセージを選別するためのルールを指定します。フィルタには 4 つのタイプがあります。

  • Exclude (除外) — Sumo Logic に取り込む前にメッセージを削除します。Exclude は「ブラックリスト」フィルタだと考えてください。詳細については、 「包含ルールと除外ルール」を参照してください。
  • Include (包含) — 定義したデータのみを Sumo Logic に送信します。Include は「ホワイトリスト」フィルタだと考えてください。詳細については、 「包含ルールと除外ルール」を参照してください。
  • Hash (ハッシュ) — ランダムに生成される一意のコードでメッセージを置き換えることで、クレジット カード番号やユーザ名などの機密情報を保護します。このタイプのデータをハッシュ変換することで、データが完全に非表示の場合でもトラッキングすることができます。詳細については、「ハッシュ ルール」を参照してください。
  • Mask (マスク) — 式をカスタマイズ可能なマスク文字列に置換します。特に、通常はトラッキングの対象とはならないパスワードなどのデータを保護するのに便利です。詳細については、「マスク ルール」を参照してください。
  • Forward (転送) — 一致したログ メッセージをデータ転送先に送信します。詳細については、下記の「例: データ転送ルール」を参照してください。
パラメータ タイプ 必須 説明 アクセス
name 文字列 はい ルールの名前。 変更可
filterType   はい フィルタ タイプ。次のいずれかを指定します。Exclude、Include、Hash、Mask、または Forward 変更可
regexp 文字列 はい フィルタを定義するための正規表現。filterType = Mask または Hash の場合、この正規表現では、マスクまたはハッシュで置き換える領域を指定する最低 1 つのグループが一致する必要があります。

複数行メッセージの場合は、文字列がメッセージ内のどこにあっても一致するように、単一行モディファイア (?s) を式の先頭と末尾に付加してください。例:
(?s).*secur.*(?s)

syslog UDP メッセージの最後には改行文字が含まれる場合があるため、文字列と正しく一致させるためには上記の正規表現が必要になります。
変更可
mask 文字列 敗 (filterType = Mask の場合) 一致したログ テキストをマスクするための文字列。 変更可

例: 除外フィルタ

指定したキーワードを含むメッセージを除外するフィルタの例を以下に示します。

 "filters":[{
      "filterType":"Exclude",
      "name":"filter_auditd",
      "regexp":".*exe=\"\\/usr\\/sbin\\/crond\".*terminal=cron\\sres=success.*"
    }],

*("test")*, など、特殊文字を使用した文字列を含むメッセージを除外する場合は、JSON で正しく解釈されるように、特殊文字を二重エスケープする必要があります。

フィルタするメッセージの例:

*("test")*

標準正規表現 (UI を使用してフィルタを作成する場合の構文):

\*\("test"\)\*

JSON のフィルタ構文:

\\*\\(\"test\"\\)\\*

特殊文字を二重エスケープした JSON のフィルタ例:

{
    "source": {
        "name": "test",
        "filters": [{
            "filterType": "Exclude",
            "name": "Filter keyword",
            "regexp": "\\*\\(\"test\"\\)\\*"
        }]
    }
}

承認トークンを含むメッセージをマスクするフィルタの例を以下に示します。

フィルタするメッセージの例:

auth":"Basic cABC123vZDAwfvDldmlfZ568dWQ6vvhjER4dgyR33lP"

標準正規表現 (UI を使用してフィルタを作成する場合の構文):

auth"\s*:\s*"Basic\s*([^"]+)"

JSON のフィルタ構文:

auth\"\\s*:\\s*\"Basic\\s*([^\"]+)\"

特殊文字を二重エスケープした JSON のフィルタ例:

"filters":[{
      "filterType":"Mask",
      "name":"masktoken",
      "regexp":"auth\"\\s*:\\s*\"Basic\\s*([^\"]+)\"",
      "mask":"##TOKEN##"
    },

例: データ転送ルール

以下の JSON ソース設定では、フィルタ配列によってデータ転送ルールを指定しています。  JSON でデータ転送ルールを設定するためには、データ転送先の sinkId を取得する必要があります。詳細については、下記の「データ転送先の sinkId の取得」を参照してください。

{
     "api.version": "v1",
     "sources": [{
          "sourceType": "Syslog",
          "name": "example",
          "port": 514,
          "protocol": "TCP",
          "encoding": "UTF-8",
          "category": "example",
          "useAutolineMatching": false,
          "multilineProcessingEnabled": false,
          "timeZone": "UTC",
          "automaticDateParsing": true,
          "forceTimeZone": false,
          "defaultDateFormat": "dd/MMM/yyyy HH:mm:ss",
          "filters": [{ 
               "filterType": "Forward",
               "name": "example",
               "regexp": "(?s).*(?s)",
               "sinkId": 22
           }]  
     }]
}

データ転送先の sinkId の取得

データ転送先の sinkId を取得するには、Sumo Web アプリケーションで試験的なデータ転送ルールを作成します。Sumo は、選択した転送先の sinkId でソースの JSON 設定を更新します。その後、ソースのJSON 設定を表示して、sinkIdをメモしてから、試験的なデータ転送ルールを削除します。

これらの手順では、データ転送先はすでに作成されていることを前提としています。

  1. インストール済みコレクタのソースにデータ転送ルールを追加する方法については、「データ転送の処理ルールの設定」を参照してください。このプロセスでは、データの転送先を選択します。
  2. 上の手順で更新したソースの JSON 設定を表示するには:
    1. [Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。 
    2. ソースの右側にあるアイコンをクリックします。[API usage information (API 利用情報)] パネルが表示されます。JSON のフィルタ セクションにある sinkId をメモします。
  3. ソースの右側にあるアイコンをクリックします。JSON のフィルタ セクションにある sinkId をメモします。
  4. [API usage information (API 利用情報)] パネルで [Done (終了)] をクリックします。
  5. データ転送先の sinkId が判別しましたので、試験的なルールを削除します。
    1. [Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
    2. 試験的なルールに追加したソースに移動します。
    3. ページの [Processing Rules (処理ルール)] セクションで、試験的なルールの右側にある削除アイコンをクリックします。

データ転送先の sinkId を取得しましたので、上記の「例: データ転送ルール」の例に従ってソースの JSON 設定でフィルタ配列を定義できます。

  • この記事は役に立ちましたか?