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

MongoDB のログの収集

この手順では、ログを MongoDB から Sumo Logic に収集する方法について説明します。MongoDB 用 Sumo Logic アプリケーションにより、MongoDB 環境に関するインサイトが得られ、全体的なシステム状態、クエリ、ログインや接続、エラーや警告、レプリケーション、シャーディングをトラッキングできます。

ログ タイプ

MongoDB 用 Sumo Logic アプリケーションは、インストール済みコレクタとローカル ファイル ソースを使用して MongoDB ログを取り込みます。 

MongoDB ログには、各ログ メッセージに関連付けられた重大度とコンポーネントが含まれます。 

詳細については、MongoDB ドキュメントを参照してください。MongoDB ログ のパースの詳細については、「MongoDB Log Spec (MongoDB ログの仕様)」を参照してください。

コレクタの設定

MongoDB サーバでインストール済みコレクタを設定します。

ソースの設定

  1. 各サーバ インスタンスのローカル ファイル ソースを設定します。たとえば、Replicas、Shards、または Arbiters を実行している場合、それぞれに独自のローカル ファイル ソースが必要です。
  2. 以下のソース フィールドを設定します。
    1. Name (名前)。(必須) 名前は必須です。必要に応じて説明を入力します。
    2. Source Host (ソース ホスト): 各ソースに個別のソース ホストを設定します。
    3. Source Category (ソース カテゴリ)。(必須) たとえば、mongo/serverAmongo/serverB。この命名規則を使用すれば、MongoDB アプリケーションで _sourceCategory=mongo* をカスタム データ フィルタとして使用し、すべてのログを収集できます。詳細については、「ベスト プラクティス」を参照してください。
  3. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ パースの有効化)。True。
    2. Time Zone (タイムゾーン)。ログはデフォルトで UTC に設定されています。
    3. Timestamp Format (タイムスタンプ フォーマット)。自動検出。
  4. [Save (保存)] をクリックします。

フィールド抽出ルール

フィールド抽出ルール (FER) を使用すると、MongoDB ログを自動でパースできます。FER を作成するには、[Manage Data (データの管理)] > [Settings (設定)] > [Field Extraction Rules (フィールド抽出ルール)] に移動します。詳細な手順については、「フィールド抽出ルールの作成」を参照してください。引き続き MongoDB 固有のヒントについて説明します。

[Create a Field Extraction Rule (フィールド抽出ルールの作成)] ページに、FER の名前を入力し、次を指定します。

  • Scope (範囲) - Sumo がパースするログを定義します。一般的に、_sourceCategory に関して範囲を指定します。上記の「ソースの設定」で推奨される _sourceCategory の命名規則を使用した場合は、次の範囲を指定して、すべての MongoDB ログをパースします。

    _sourceCategory="mongo*"

    If you configured a different _sourceCategory, use that value, with a wildcard as appropriate.

  • Parse Expression (パース式) - 次のステートメントを入力します。

    parse "* * *  [*] *" as timestamp,severity,component,context,msg

    上記のステートメントでは、MongoDB ログの timestampseveritycomponentcontext、および msg フィールドをパースします。(MongoDB ログ メッセージのサンプルについては、次のセクションを参照してください)。これにより、クエリにパース ステートメントを追加せずにクエリを実行できます。取り込み時に Sumo がこのルールに従ってログをパースするため、ユーザはこれらのフィールドに対してクエリを実行するだけで済みます。  

ログ メッセージのサンプル

2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017

クエリのサンプル

次の 2 つのサンプル クエリは、上記の「フィールド抽出ルール」で説明したように FER が設定されていることを前提としています。FER を定義していない場合は、各クエリの _sourceCategory="mongo*" 行の後に次のようなパース ステートメントを追加する必要があります。 

| parse "* * * [*] *" as timestamp,severity,component,context,msg 

コンポーネント別メッセージ数

_sourceCategory="mongo*" 
| count by component

失敗したログイン試行回数

_sourceCategory="mongo*" "authentication failed"  
| parse regex field=msg  "authentication failed for (?<user>[\S]+) on (?<database>[\S]+) from client (?<client_ip>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}) ; (?<reason>[\s\S]+)" 
| count by timestamp, user, database, client_ip, reason
| fields - _count

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