概要
デフォルトでは、Datadog の Intake API がログを受信すると、INFO
ステータスが生成され、status
属性として自身を追加します。
このデフォルトの status
は、ログ自体に含まれる実際のステータスを必ずしも反映しているとは限りません。このガイドでは、実際のステータスでデフォルト値をオーバーライドする方法を説明します。
生ログ
Datadog で生ログが正しいステータスを表示していない場合、生ログから正しいログステータスを抽出して、それを正しいステータスにリマップします。
パーサーでステータス値を抽出する
Grok パーサーを利用して、word()
マッチャーでルールを定義し、実際のログのステータスを抽出します。
- ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
- Add Processor をクリックします。
- プロセッサーの種類で Grok Parser を選択します。
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
属性のステータス値がデフォルトのログステータスをオーバーライドすることを確認します。
- ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
- Add Processor をクリックします。
- プロセッサーの種類で Status remapper を選択します。
- プロセッサーの名前を入力します。
- Set status attribute(s) セクションに log_status を追加します。
- Create をクリックします。
パイプラインの修正は、すべての処理が取り込みプロセスで行われるため、新しいログにのみ影響します。
JSON ログ
JSON ログは Datadog で自動的にパースされます。ログの status
属性は予約属性なので、JSON ログのための前処理操作を通過します。
この例では、ログの実際のステータスは、デフォルトの INFO
ログステータスではなく、logger_severity
属性の値です。
logger_severity
属性の値がデフォルトのログステータスをオーバーライドするようにするには、logger_severity
をステータス属性のリストに追加します。
- ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
- Preprocessing for JSON Logs にカーソルを合わせ、鉛筆のアイコンをクリックします。
- ステータス属性のリストに
logger_severity
を追加します。ステータスリマッパーは予約されたすべての属性をリストの順番に探します。ステータスが logger_severity
属性に由来していることを確認するために、リストの最初に置きます。 - Save をクリックします。
パイプラインの修正は、すべての処理が取り込みプロセスで行われるため、新しいログにのみ影響します。新しいログは logger_severity
属性値で正しく構成されます。
リマップが機能するためには、プロセッサードキュメントで指定されているステータスフォーマットを遵守する必要があります。
その他の参考資料