ログが警告やエラーの情報ステータスを表示する

概要

デフォルトでは、Datadog の Intake API がログを受信すると、INFO ステータスが生成され、status 属性として自身を追加します。

ログパネルに情報ステータスのログが表示され、メッセージは警告を表示しています。

このデフォルトの status は、ログ自体に含まれる実際のステータスを必ずしも反映しているとは限りません。このガイドでは、実際のステータスでデフォルト値をオーバーライドする方法を説明します。

生ログ

Datadog で生ログが正しいステータスを表示していない場合、生ログから正しいログステータスを抽出して、それを正しいステータスにリマップします。

パーサーでステータス値を抽出する

Grok パーサーを利用して、word() マッチャーでルールを定義し、実際のログのステータスを抽出します。

  1. ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
  2. Add Processor をクリックします。
  3. プロセッサーの種類で Grok Parser を選択します。
  4. word() マッチャーを使用してステータスを抽出し、それをカスタムの log_status 属性に渡します。

例えば、ログは次のようになります。

WARNING: John disconnected on 09/26/2017

以下のようなルールを追加します。

MyParsingRule %{word:log_status}: %{word:user.name} %{word:action}.*

MyParsingRule の抽出の出力:

{
  "action": "disconnected",
  "log_status": "WARNING",
  "user": {
    "name": "John"
  }
}

ログステータスリマッパーを定義する

log_status 属性は正しいステータスを含んでいます。ログステータスリマッパーを追加して、log_status 属性のステータス値がデフォルトのログステータスをオーバーライドすることを確認します。

  1. ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
  2. Add Processor をクリックします。
  3. プロセッサーの種類で Status remapper を選択します。
  4. プロセッサーの名前を入力します。
  5. Set status attribute(s) セクションに log_status を追加します。
  6. Create をクリックします。
重大度属性の値が警告に一致するステータスを持つログを表示するログパネル

パイプラインの修正は、すべての処理が取り込みプロセスで行われるため、新しいログにのみ影響します。

JSON ログ

JSON ログは Datadog で自動的にパースされます。ログの status 属性は予約属性なので、JSON ログのための前処理操作を通過します。

この例では、ログの実際のステータスは、デフォルトの INFO ログステータスではなく、logger_severity 属性の値です。

ログパネルに情報ステータスのログが表示されるが、logger_severity 属性の値はエラーである

logger_severity 属性の値がデフォルトのログステータスをオーバーライドするようにするには、logger_severity をステータス属性のリストに追加します。

  1. ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
  2. Preprocessing for JSON Logs にカーソルを合わせ、鉛筆のアイコンをクリックします。
  3. ステータス属性のリストに logger_severity を追加します。ステータスリマッパーは予約されたすべての属性をリストの順番に探します。ステータスが logger_severity 属性に由来していることを確認するために、リストの最初に置きます。
  4. Save をクリックします。
logger_severity 属性の値がエラーに一致するステータスを持つログを表示するログパネル

パイプラインの修正は、すべての処理が取り込みプロセスで行われるため、新しいログにのみ影響します。新しいログは logger_severity 属性値で正しく構成されます。

リマップが機能するためには、プロセッサードキュメントで指定されているステータスフォーマットを遵守する必要があります。

その他の参考資料