datadog(ログ監視)にて任意の文字列でdowntimeを入れる方法

## これは何？
今まで使用していた監視ツールからdatadogに移管する際、「ログ監視を特定の文言や文字列にて監視抑止したい」という要望がありました。
その内容に対応できるかの検証＆手順メモのまとめです。

## 概要
 - datadogのパイプライン機能を使用し、ログタイトル名を任意のキーに入れる
 - downtimeのGroup scopeにて抑止したい文字列が含まれた任意のキー/値を設定してdowntimeを設定する

## 注意点
 - datadogの仕様にて1024文字を超える文字は入らないため、抑止したい文字列が長文の場合は考慮する必要があります。
>JSON 形式に変換されたログイベントが保持できる属性は 256 未満です。これらの各属性のキーは 50 文字未満、連続するネストのレベルは 20 未満、 それぞれの値は (ファセットに昇格した場合) 1024 文字未満となります。
※一部引用
https://docs.datadoghq.com/ja/logs/log_collection/?tab=%E3%83%9B%E3%82%B9%E3%83%88

## 対応方法
### 事前準備
#### パイプライン
1.ログの画面から「pipelines」に移動し、「Add a new pipeline」を選択。
以下のように設定項目を入力しCreateを選択。
| 項目         | 値                | 備考                                                | 
| ------------ | ----------------- | --------------------------------------------------- | 
| Filter:      | source:*          | 今回全てのログを対象にしたいため「source:* 」に設定 | 
| Name:        | log_name_downtime | 任意の文字                                          | 
| Tags:        |           -        | 任意の文字                                          | 
| Description: | log_name_downtime | 任意の文字                                          | 

設定例)
![Log_Pipelines___Datadog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510307/dd404427-1c1c-552e-c02e-4722504efcf7.png)

2.作成したpipelinesを選択し、「Add Processor」を選択
以下のように設定項目を入力しCreateを選択。
| 項目                      | 値                    | 備考                                              | 
| ------------------------- | --------------------- | ------------------------------------------------- | 
| Select the processor type | Grok Parser           |                                                   | 
| Name the processor        | log_name_downtime     | 任意の文字                                        | 
| log samples               |             -          | 設定したrulesが問題なく動くかを確認するための項目 | 
| Define parsing rules      | log_name %{data:name} |                                                   | 

例)
![Log_Pipelines___Datadog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510307/214303ce-8fdb-d519-7fab-bafc04c8aaa5.png)

#### monitor
※ログモニターの作成方法は省略
1.対象のログモニターの「Select monitor scope」項目にある集計設定部分に対し以下を追加。
```
@name 
※上記文字を入れてエンターを投下すると、UI上では@name (@name)になる
```
![Cursor_と_Editing_Windowsログ監視___host_kurata-test___VM_____verification_task_has_finished_with_____state_____status__warn_OR_error______Datadog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510307/21a4bd4b-c510-4b70-4e6a-c81b6b457e6a.png)
2.「Create」または「Save」を選択し保存する。

### ダウンタイム設定方法
1.「Manage Downtimes」の画面に移動し、「Schedule Downtime」を選択。
「Choose what to silence」の部分に対し、以下のように設定を実施する。
※それ以外の設定値は記載省略
| 項目                      | 値                    | 備考                                              | 
| ------------------------------------------- | --------------- | ---------------------- | 
| 「By Monitor Name」　OR 『By Monitor Tags」 | By Monitor Name | 設定上はどちらでも可 | 
| Monitor:                                    | All monitors    | 任意の値<br>ここでは全てのMonitorを対象に選択               | 
| Group scope                                 | @name:\*hoge*      | 特定の条件式あり※1               | 

※1 実機検証したところ、単語か文字列かで入力する値が異なる事が確認できた

例)
・単語の場合
「test」という文字がログに含まれている場合に抑止する
設定値 : \@name:\*test*

・文字列の場合
「test os windows」という文字列がログに含まれている場合に抑止する
設定値 : \@name:\*test\*os\*windows\*
詳細は以下ドキュメントを参照
[ダウンタイム](https://docs.datadoghq.com/ja/monitors/downtimes/?tab=bymonitortags)
[ダウンタイムのスコープ](https://docs.datadoghq.com/ja/monitors/guide/scoping_downtimes/)
<br>

2.その他の設定値を入力、「Save」を選択し保存する。
3.「Group scope」に設定した文字列がDatadogのdowntimeにて抑止されれば成功

## まとめ
上記にて「ログ監視を特定の文言や文字列にて監視抑止したい」という事が実現できました。
ですが、無理やり回避している感が強いので他に良いやり方がある場合は教えてください:disappointed_relieved: