DatadogのFlex logsについて

みなさんこんにちは、DatadogのAdvent calendarの12日目ですね。
今回は今年の9月11日にGAとなった[Flex Logs](https://app.datadoghq.com/release-notes/flex-logs-is-now-generally-available)についての記事を書いていこうと思います。
ドキュメントのページはすでにあるんですが、まだ日本語に翻訳されていないこともあり、気になっているけど利用にいたっていないという人もいるかと思います。そんな方向けに自学習がてら簡単にまとめてみました。

![Screenshot 2024-12-02 at 15.04.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/daacaf42-8311-8462-1c82-e7093cbf6f08.png)

### はじめに
まずDatadogのログ管理についておさらいをしていこうと思います。

![2024-11-27_11-33-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/7c651085-a285-6a8b-235c-36820c904ee9.png)
最近Datadogではログ管理についてこのような図を用いて説明をしています。
一番上に**INDEXING FLEX ARCHIVING**とあるように、Datadog上でのログの取り扱いをそれぞれ記載しており、両端に二つの三角形と真ん中にある平行四辺形が、左からそれぞれINDEXING、FLEX、ARCHIVINGとなっていて、出力されるログがユースケース毎に図形の中に位置しています。

図のY軸が出力されるログの頻度で、アプリケーションやトランザクションのログは高頻度で出力されるため図中だと上方に位置し、監査ログやネットワークのログは前者のログに比べると出力頻度が低いため下方に位置しています。
X軸はログの保存期間を示しており、本番環境のアプリのログなどは鮮度を重視することから比較的少なめの保持期間であるため左側に位置し、監査や設定変更などのログは長期間の保存が想定されるため右側に位置しています。


### INDEX、FLEX、ARCHIVEとは
はじめに説明したこれら3つのログの扱いについて確認していきます。

#### Indexed logs
アプリケーションログなど、頻繁にクエリを実行し、短期間保持する必要があるログ用のソリューション

これはDatadogに送信されたログの中でIndex Filterを通過し、Datadog上で一定期間保持されているログを意味します。
Datadogではログの送信と保持で別々の課金形態をとっており、Datadogに送信されたログの中から保持するログを選別することによって、**ログ管理のコストを最適化**することが可能です。
Index Filterは属性やタグなどをFilterとして使用し、それらの情報を持つログがDatadogに送信された際にDatadog上で一定期間保持し、Log Explorerなどの画面で参照可能になります。
アプリケーションログのような高い頻度で確認を行いたい、短期保存が必要なログ向けのソリューションとなります。

Index Filterに該当しないログは[Live Tail](https://docs.datadoghq.com/logs/explorer/live_tail/#live-tail-view)という機能を利用して過去15分間のみDatadog UI上で確認が可能です。

他にも複数Index Filterを作成し、それぞれで異なる保持期間を設定したり、一部のログを除外するExclusion Filterなどもありますが、今回の記事では割愛します。

https://docs.datadoghq.com/logs/log_configuration/indexes/

#### Archived logs
監査ログや設定変更などのログなど、クエリの実行頻度が低く、長期間保存する必要があるログ用のソリューション

Datadogのログ関連の機能の一つにArchiveがあります。これはDatadog上に送信されたログの中から、Filterにマッチしたログを外部のストレージなどにアーカイブすることができる機能です。アーカイブ先としてはS3などのクラウドストレージはもちろん、SplunkやElasticsearchなどへ送信することも可能です。
ここまで説明したらお気づきだと思いますが、アーカイブ対象のログでもIndexの期間を超過した際にはLog Explorerではそのログは見えない状態になります。その際、ログのRehydrateを行い、アーカイブ先から再度Datadogにログを流し込むことで再度Log Explorerでログを参照できるようになります。

また、アーカイブしたいログはDatadog上でIndex化しなくても良いというポイントがあります。

https://docs.datadoghq.com/logs/log_configuration/forwarding_custom_destinations/?tab=http


#### Flex Logs
セキュリティやトランザクションのログなど、長期間保持する必要があるが、緊急でクエリを実行する必要があるログ用のソリューション

Flex Logsはストレージとコンピューティングを切り離すことで、コストを抑えつつもIndexよりも長い期間Datadog上でログの保持を可能とします。上の画像でもありましたが、立ち位置としてはIndexとArchiveの中間に入るようなイメージです。
ストレージとコンピューティングを切り離すことについて、ログを保存するストレージはIndexのストレージよりも安く、最長で15ヶ月間の保存が可能で、これにより長期間メトリクスやトレースなどの情報と紐づけて分析を行うことが可能です。
コンピューティングに関しては、ログの検索を行う際のクエリ容量を意味し、Flex Logsに該当するログを検索する時のみ使用されます。利用中のデータセンターによって制限がありますが、StarterからLまでの選択肢があります。

https://docs.datadoghq.com/logs/log_configuration/flex_logs/

また、Flex LogsはIndexed Logsに比べてコストの面で優位なところがあります。
https://www.datadoghq.com/pricing/?product=log-management#products

##### Flex Logsの注意点
Flex Logsに保存されたログは現時点では下記のような注意点があります。
>Monitors are not supported in Flex Logs.
Watchdog is not supported in Flex Logs.
Dashboards are supported in Flex Logs; however, make sure to consider these dashboard queries when you choose your compute size.

[Flex Logs Notes](https://docs.datadoghq.com/logs/log_configuration/flex_logs/?_gl=1*1bavcxh*_gcl_au*NDQ2NjQzNzUwLjE3MzMxMDE5Mjc.*_ga*NjIwMjAzOTY1LjE3MjUyNDE1ODg.*_ga_KN80RDFSQK*MTczMzExMzc2Ny4xMDkuMS4xNzMzMTE0MjUyLjAuMC4xMjkyNTI1ODYw*_fplc*bGs0QUZsOENjOWJCJTJCMnhlOU9oJTJGcU1PVEhrWE4xc0ZvZSUyRnZjMUIyZ0RlSGk0M1NNbUdobU1hNkVqVWQlMkZJTHNJJTJCSkNhMXN6YVBGV1RIQmZ0MXZ0OUdocmo1cURvbmt2YklCVlFOY3RkTU1MeXZtMDN6SWttaUlhUWJrd1FZUSUzRCUzRA..&_ga=2.222077471.666328300.1732510187-620203965.1725241588#compute-sizes:~:text=for%20more%20information.-,Notes,-%3A)

これらの機能はリアルタイムの調査を目的としているのに対し、Flexは過去のログ、つまり現在より少し前に保存されたログを対象としているためです。

### Flex Logの設定方法
大きく二つのステップがあります。

1. Flex Logs ControlsでFlex Logsを有効化する
1. Index Filterの設定でFlexの設定を追加する

#### Flex Logsの有効化
Flex Logsの有効化はLogsの設定画面のFlex Logs Controlsから可能です。
![Screenshot 2024-12-04 at 10.57.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/9fb295b0-991a-f0eb-6042-33164cf9e332.png)
デフォルトではStarterのみが選択可能なためこのまま「Enable Flex Logs」から有効化をします。
Scalable ComputeはCSMへ問い合わせを行うことで有効化することが可能です。

#### Index Filterでの設定
Flex Logsの機能を有効化すると、Index Filterの設定にFlex Tierの設定が表示されるようになります。
![2024-12-04_11-07-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/ffded793-755a-5014-6a0d-cb1c247408bc.png)
Standard TierはIndexed Logsに該当し、デフォルトで15日、最長で90日の設定が可能です。(15日以外の設定は事前にCSMへのリクエストが必要です。)
Flex TierはFlex Logsに該当し、180日から450日の設定が可能です。
これらは同時に有効化することもできるし、片方だけ有効化することもできます。これによってDatadogに送信されたログに対して3通りの設定を定義できます。

1. Standard Tierのみ
Index化し、保持期間の間Monitorの評価対象として利用可能
1. Flex Tierのみ
Flex化し、長期間Logs Explorer上で確認、分析が可能
1. Standard TierとFlex Tierの両方を使用する
Index期間終了後、対象のログはFlex化する。
※この場合Flexの期間は180日ですが、全体の保持期間は195日(15+180)ではなく180(15を含む)となる点に注意が必要です。

これについて下記のような使用例が考えられます。
- Standard Tier＋Flex Tier
    - Monitorで評価を行うため重要なアプリケーションログやエラーログを対象に設定
- Flex Tier
    - アラートがトリガーされた際に調査に必要なログを対象に設定し、中長期的に振り返りができるように

#### Logs Explorer上での表示について
デフォルトではLogs Explorer上では非表示になっています。
![2024-12-04_11-50-35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/296fd3d6-8401-9232-0613-456a5aab74d8.png)
スクリーンショットにあるように、Datadog UIの右上のTimeframeの左側にFlex Logsを表示するためのトグルがあるため、Flex Logsを表示したい場合にはこちらを有効にしてください。

### まとめ
Flex Logsの主なポイントは下記となります
- ストレージとコンピューティングを分けて考え、コスト効率よくログをDatadog上に保持します
- 最大15ヶ月間Log Explorer上でのクエリを可能
- Index Logsと同じくLog Explorer上でのクエリや分析が可能

使用例として下記のような例が挙げられます。
- 定期的な監査のためにログを保持する
- 社内コンプライアンスおよび法的理由でログを保持する
- 定期的なセキュリティチェックや設定変更などの履歴確認のために過去のログを参照する
- Index化したログをMonitorの評価に使用し、Flex化したログは後の調査で使用するなどシーン毎に使い分ける

また、最近のアップデートでログにCalculated fieldが追加されました。これにより、Log Explorer上でのログの分析がさらに強化されました。こちらはFlex Logsにも適用でき、最大過去15ヶ月間より詳細な分析を行うことが可能です。
https://docs.datadoghq.com/logs/explorer/calculated_fields/
https://www.datadoghq.com/blog/calculated-fields-log-management-datadog/

### 最後に
今までアプリケーションログの調査を行っていた際に、調査の最中にIndex期間を超過した古いログがLog Explorer上で見えなくなったりした問題の解決や、決まった期間過去のログを参照したい場合などのログの保持を可能にすることから、Flex Logsは今まで手が届かなかったような隙間を埋めてくれるような機能になるように思います。
Datadogのログ管理には他にもまだまだ機能が存在しており、日々アップデートやリリースが行われています。全ての機能を理解するというのはなかなか難しいのですが、記事を読んだ方にとってのキャッチアップになれば幸いです。

![Screenshot 2024-12-02 at 15.35.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/8ac3a62f-ea81-2beb-2b98-56e06490eca2.png)