ログ収集を継続しながら Datadog のインフラストラクチャー料金を削減してみた
こんにちは。テクニカルサポートチームのShiinaです。
はじめに
Datadog によるログ収集は、システムの可観測性を確保する上で重要な機能です。
監視は必須ではないものの、ログの収集を行いたいと考えるケースが一般的に想定されます。
例えば、開発環境ではシステムの安定性を重視した監視は不要ですが、トラブルシューティングやデバッグのためにログの収集を行いたい場合があります。
本記事では、Datadog エージェントのメトリクス収集を無効化しながらログ収集を継続する方法を解説します。
ログ保管や監査といったコンプライアンス要件を満たしつつコスト最適化を実現する運用方法をご紹介します。
前提
AWS インテグレーションのメトリクス収集は CloudWatch APIs を利用している必要があります。
インフラストラクチャーの料金
Datadog ではメトリクスを収集・報告を行なっている EC2 インスタンスに対してインフラストラクチャーの料金が発生します。
- 発生条件
・AWS インテグレーションによってメトリクス収集・報告を実施している EC2 インスタンス
・Datadog エージェントによってメトリクス収集・報告を実施している EC2 インスタンス
両方に該当する場合は1ホストとしてカウントされます。 - 価格
Datadog サイトとプランによって異なります。
US サイトで PRO プラン利用した場合、最小価格は1ホストあたり月額 $15 です。
最新の価格は公式ドキュメント[1]を参照してください。
EC2 インスタンスのメトリクス収集状況を確認する方法
EC2 インスタンスがどのようにメトリクスを収集し、報告しているかを、ホスト情報を基に確認する方法について説明します。
Datadog コンソールメニュー Infrastrucure の Hosts を選択します。
Host List 一覧から対象のホストを確認します。
-
AWS インテグレーションによりメトリクス収集・報告している場合
AWS アイコンが表示されます。
-
Datadog エージェントによりメトリクス収集・報告している場合
ホネアイコンが表示されます。
-
Datadog エージェントと AWS インテグレーションによりメトリクス収集・報告している場合
AWS アイコンとホネアイコンが表示されます。
-
メトリクス収集・報告していない場合
料金は発生せず、Host List 一覧にも表示はされません。
設定の流れ
料金を発生させないためには両方のメトリクス収集・報告を無効化する必要があります。
はじめに AWS インテグレーションの設定を行い、メトリクス収集・報告を行う EC2 インスタンスをフィルタします。
その後、Datadog エージェントの設定でメトリクス収集・報告を無効化し、ログ収集のみを継続させます。
AWS インテグレーションの設定
メトリクス収集・報告対象はタグでフィルタすることができます。
Datadog コンソールメニューより Integrations を選択します。
Integrations 一覧から 「Amazon Web Services」 にカーソルを移動し、[CONFIGURE]をクリックします。
Metric Collection タブを選択します。
Limit Metric Collection to Specific Resources に対して次のように設定を行い、 [SAVE] をクリックします。
- AWS SERVICE
EC2 - RESOURCE TAGS
タグキー:値
AWS インテグレーションの RESOURCE TAGS 設定では、環境を区別するためのタグを設定するケースが考えられます。
例えば、EC2 インスタンスに環境を示すタグキーenv
が付与されている場合、本番環境を示す値prd
のみの EC2 インスタンスのメトリクスを収集・報告するようにフィルタすることができます。
この場合、env:prd
という形式でタグを指定することで、設定を行います。
タグの値が一致しない場合や、タグキーが付与されていない EC2 インスタンスについては、メトリクスの収集が行われません。
Datadog エージェントの設定(Linux)
メトリクスペイロード送信の無効化
Datadog エージェントでメトリクスペイロードの送信を無効化する設定を行います。
/etc/datadog-agent/datadog.yaml
に対して下記の定義を追加します。
(中略)
enable_payloads:
series: false
events: false
service_checks: false
sketches: false
(中略)
設定反映のため、Datadog エージェントを再起動します。
sudo systemctl restart datadog-agent
無効化後のメトリクス確認
Datadog コンソールメニューより Infrastrucure の Hosts を選択します。
Host List 一覧から対象のホストをクリックします。
Metrics タブを選択します。
下記メトリクスの記録が止まったことを確認します。
・CPU Usage
・Load Averages
無効化後のステータス確認
Datadog コンソールメニュー Infrastrucure の Hosts を選択します。
Host List 一覧から対象のホストをクリックします。
しばらくしてから STATUS が ACTIVE
から INACTIVE
に変わったことを確認します。
一覧から表示が消えている場合でも無効化は完了しています。
Datadog エージェントの設定(Windows)
メトリクスペイロード送信の無効化
Datadog エージェントでメトリクスペイロードの送信を無効化する設定を行います。
C:\ProgramData\Datadog\datadog.yaml
に対して下記の定義を追加します。
(中略)
enable_payloads:
series: false
events: false
service_checks: false
sketches: false
(中略)
設定反映のため、Datadog エージェントを再起動します。
& "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service
無効化後のメトリクス確認
Datadog コンソールメニュー Infrastrucure の Hosts を選択します。
Host List 一覧から対象のホストをクリックします。
Metrics タブを選択します。
下記メトリクスの記録が止まったことを確認します。
・Process Queue Length
・Disk Queue Length
・CPU usage
無効化後のステータス確認
Datadog コンソールメニュー Infrastrucure の Hosts を選択します。
Host List 一覧から対象のホストをクリックします。
しばらくしてから STATUS が ACTIVE
から INACTIVE
に変わったことを確認します。
一覧から表示が消えている場合でも無効化は完了しています。
ログ収集の継続確認
メトリクスペイロードの送信を無効化したインスタンスでログ収集が継続されていることを確認します。
Datadog コンソールメニュー Logs の Explorer を選択します。
Host 属性で無効化したインスタンスをフィルタし、ログメッセージが表示されていることを確認します。
まとめ
メトリクスを収集・報告を行なっている EC2 インスタンスに対してインフラストラクチャーの料金が発生します。
コスト削減のために対象を絞るには AWS インテグレーションおよび Datadog エージェントの設定を行う必要があります。
設定後もログ収集は継続できるため、コストを最適化しつつ、コンプライアンス要件を満たすことができます。
Datadog エージェントを利用せず、AWS インテグレーションのみを使用している場合でも AWS インテグレーションの「Limit Metric Collection to Specific Resources」機能(特定のリソースに対してメトリクス収集を制限する機能)を利用することで料金削減が可能です。
本記事が誰かのお役に立てれば幸いです。
参考