TL;DR
-
DatadogのAWS Integrationを利用する際に、AWSのタグを使ってフィルタリングすることが出来る
- 例えば、
Environment:production
タグを持つAWSリソースだけ監視に追加することが出来ます
- 例えば、
- EC2やLambda以外のリソースはDatadogのGUI上からではフィルタリング設定できないので、APIを叩きましょう
- terraformのバージョンを最新(2.21以上)にすればコード管理もできます
はじめに
DatadogのAWS Integrationを使ってAWS環境を監視する必要が発生しました。
しかし、該当のAWS環境では本番用のリソースとステージング用のリソースが稼働しています。
この状態で以下を達成しようとした結果を記載します。
- DatadogのAWS Integrationだけでどうにか監視したい
- 監視対象は本番用のリソースだけにしたい
2021年の1月末から対応していたのですが、その時はDatadog公式のドキュメントやインターネット上の資料を探しても
GUI上から設定できるEC2やLambdaリソースのフィルタリング方法しか見つけれなかった(そもそも機能としてなかった?)ため、メモとして記載しています。
やっていく
前提
以下を前提としています。
- DatadogのAWS Integrationが有効になっていること
- 各種AWSリソースには事前にタグが付与されていること
- 例:
Environment: production
- 例:
curlで実行する場合
全てはDatadog公式に書いてあるとおりですが・・・
### Environment:productionタグを持つRDSを監視したい場合
$ curl -X POST "https://api.datadoghq.com/api/v1/integration/aws/filtering" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: datadog-api-key" \
-H "DD-APPLICATION-KEY: datadog-application-key" \
-d @- << EOF
{
"account_id": "YOUR_AWS_ACCOUNT_ID",
"namespace": "rds",
"tag_filter_str": "Environment:production"
}
EOF
複数のリソースに対して実行したい場合は、それぞれのリソースに対してPOSTしてあげてください。
Terraformで実行する場合
Terraformのドキュメントに書いてあるとおりですが・・・
### Environment:productionタグを持つRDSを監視したい場合
resource "datadog_integration_aws_tag_filter" "rds" {
account_id = "YOUR_AWS_ACCOUNT_ID"
namespace = "rds"
tag_filter_str = "Environment:production"
}
### Environment:productionタグを持つALBを監視したい場合
resource "datadog_integration_aws_tag_filter" "alb" {
account_id = "YOUR_AWS_ACCOUNT_ID"
namespace = "applcation_elb"
tag_filter_str = "Environment:production"
}
フィルタリングしたいAWSリソースの分だけ記載しましょう。
なお、datadog_integration_aws_tag_filter
は2021/2/10にリリースされたv2.21から使えるようです。
忘れずに最新のバージョンを使うように指定しておきましょう。
例えば、以下のような感じです。
### main.tf
provider "datadog" {
version = "~> 2.21.0"
}
さいごに
custom
リソースも定義できるよ、とのことですが、こちらはまだ試せていません。
おそらく、 こちらに記載の無いecs
や elasticache
などをフィルタリングできるのかもしれません。
本記事は、自力で見つけたのではなくDatadogのサポートに問い合わせて教えてもらった内容になります。
Datadogのサポートさんにはお世話になりました・・・