こちらの手順は古くなっているため、新しい設定手順をまとめ直しました。
ActiveGate を利用したDynatrace によるAWSの監視 2024年版
今後は上記サイトをご参照ください。
はじめに
以前にDynatraceによるAWSの監視の始め方という記事を書きました。このときは、ActiveGateは利用せずDynatraceから直接AWSを監視する方法について、記載しました。
本記事では、ActiveGateを利用して、AWSを監視する方法について紹介していきます。
ActiveGateの導入方法については以下の記事で紹介していますので、ご参考ください!
ActiveGateを利用してAWSを監視する場合、ActiveGateにIAM Roleを割り当てる必要があるためActiveGateはEC2インスタンスに立てる必要があります。
ActiveGateを利用する必要があるケース
以前の記事の通り、ActiveGateを利用しなくともAWSを監視することは可能です。ただし、ActiveGateを利用しない場合は、EC2やEBS、ELB、RDSなどに限定されます。それ以外の様々なサービスの監視を行うためにはActiveGateを利用する必要があります。
設定の流れ
- ActiveGate の構築
- AWS監視用ポリシーの作成
- AWSロールの作成
- AWS監視用ロールの作成
- ActiveGate用ロールの作成
- AWSアカウントとDynatraceの接続
オプションで以下を設定していきます。
- AWSのリソースタギング
- サポートサービスの追加
- アラートのためのメトリックイベントの設定
詳細な設定はDynatraceのマニュアルサイトをご参照ください。
ActiveGateの構築
別記事に掲載していますので、そちらを参考にEC2インスタンス上にActiveGateを構築します。
AWS監視用ポリシーの作成
AWSマネジメントコンソールからIAMのページを開きます。
ポリシーのページに行き、ポリシーの作成をクリックします。
JSONタブを選び、以下のjsonポリシーを貼り付けます。
JSONポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"acm-pca:ListCertificateAuthorities",
"apigateway:GET",
"apprunner:ListServices",
"appstream:DescribeFleets",
"appsync:ListGraphqlApis",
"athena:ListWorkGroups",
"autoscaling:DescribeAutoScalingGroups",
"cloudformation:ListStackResources",
"cloudfront:ListDistributions",
"cloudhsm:DescribeClusters",
"cloudsearch:DescribeDomains",
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics",
"codebuild:ListProjects",
"datasync:ListTasks",
"dax:DescribeClusters",
"directconnect:DescribeConnections",
"dms:DescribeReplicationInstances",
"dynamodb:ListTables",
"dynamodb:ListTagsOfResource",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeInstances",
"ec2:DescribeNatGateways",
"ec2:DescribeSpotFleetRequests",
"ec2:DescribeTransitGateways",
"ec2:DescribeVolumes",
"ec2:DescribeVpnConnections",
"ecs:ListClusters",
"eks:ListClusters",
"elasticache:DescribeCacheClusters",
"elasticbeanstalk:DescribeEnvironmentResources",
"elasticbeanstalk:DescribeEnvironments",
"elasticfilesystem:DescribeFileSystems",
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:DescribeListeners",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeRules",
"elasticloadbalancing:DescribeTags",
"elasticloadbalancing:DescribeTargetHealth",
"elasticmapreduce:ListClusters",
"elastictranscoder:ListPipelines",
"es:ListDomainNames",
"events:ListEventBuses",
"firehose:ListDeliveryStreams",
"fsx:DescribeFileSystems",
"gamelift:ListFleets",
"glue:GetJobs",
"inspector:ListAssessmentTemplates",
"kafka:ListClusters",
"kinesis:ListStreams",
"kinesisanalytics:ListApplications",
"kinesisvideo:ListStreams",
"lambda:ListFunctions",
"lambda:ListTags",
"lex:GetBots",
"logs:DescribeLogGroups",
"mediaconnect:ListFlows",
"mediaconvert:DescribeEndpoints",
"mediapackage-vod:ListPackagingConfigurations",
"mediapackage:ListChannels",
"mediatailor:ListPlaybackConfigurations",
"opsworks:DescribeStacks",
"qldb:ListLedgers",
"rds:DescribeDBClusters",
"rds:DescribeDBInstances",
"rds:DescribeEvents",
"rds:ListTagsForResource",
"redshift:DescribeClusters",
"robomaker:ListSimulationJobs",
"route53:ListHostedZones",
"route53resolver:ListResolverEndpoints",
"s3:ListAllMyBuckets",
"sagemaker:ListEndpoints",
"sns:ListTopics",
"sqs:ListQueues",
"storagegateway:ListGateways",
"sts:GetCallerIdentity",
"swf:ListDomains",
"tag:GetResources",
"tag:GetTagKeys",
"transfer:ListServers",
"workmail:ListOrganizations",
"workspaces:DescribeWorkspaces"
],
"Resource": "*"
}
]
}
ポリシーの名前にはわかりやすい名称(Dynatrace_monitoring_policyなど)を設定します。
ポリシーの作成をクリックし、ポリシーを作成します。

AWSロールの作成
AWSロールを作成するには以下が必要になります。
- DynatraceのAWSアカウントID: 509560245411
- ActiveGate をホストしているAWSアカウントID
- 監視対象となるAWSアカウントID
- 外部ID
Step 1. 外部IDの取得
AWSロールを付与するための外部IDを取得します。
DynatraceのGUIにログインをし、左のメニューからの一番下にある管理 > 設定を開きます。
Cloud and virtualization > AWSを開きます。

Authentication methodをRole-based authenticationに変更し、Copyボタンをクリックします。
この画面は後ほど戻ってきますので、このままにしておきます。

Step 2. 監視用ロールの作成
監視対象のAWSアカウントに監視用ロールを作成します。もし、複数のAWSアカウントを監視する場合はこの手順を監視対象のAWSアカウント全てで行います。
AWSコンソールからロールのページに行き、ロールを作成をクリックします。
信頼されたエンティティタイプにはAWSアカウント > このアカウント(***)を選びます。外部IDを要求するにチェックを入れ、外部ID欄にStep 1.で取得した外部IDをペーストし、次へをクリックします。

許可ポリシーでは先ほど作成したポリシー(Dynatrace_monitoring_policy)を選択し、次へをクリックします。
ロール名にはわかりやすい名称(Dynatrace_monitoring_roleなど)を入力し、ロールを作成をクリックします。

Step 3. ActiveGate用ロールの作成
監視用ロールを作成したら、ActiveGateに割り当てる用のロールを作成します。
AWSコンソールからロールのページに行き、ロールを作成をクリックします。
許可ポリシーは何も設定せずに次へをクリックします。
ロール名にはわかりやすい名称(Dynatrace_ActiveGate_roleなど)を入力し、ロールを作成をクリックします。
作成した ActiveGate用ロール(Dynatrace_ActiveGate_role)を開き、インラインポリシーを作成をクリックします。

JSONタブを選び、以下のjsonポリシーを貼り付け、自身の環境に合うように編集します。
複数のAWSアカウントを監視する場合はStatement.Resourceに全て記載をします。
編集が完了したら、ポリシーの確認をクリックします。
JSONポリシー
{
"Statement": [
{
"Resource": [
"arn:aws:iam::<12桁の監視対象のAWSアカウントID>:role/<Step 2で作成した監視用ロール名 (Dynatrace_monitoring_role)>"
],
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow"
}
],
"Version": "2012-10-17"
}
インラインポリシーにわかりやすい名称(Dynatrace_assume_policyなど)を入力し、ポリシーの作成をクリックします。
Step 4. 監視用ロールへの信頼ポリシーの編集
Step 2で作成した監視用ロール(Dynatrace_monitoring_role)を開き、信頼関係タブから信頼ポリシーを編集をクリックします。
信頼ポリシーを編集画面で以下のjsonポリシーを貼り付け、自身の環境に合うように編集します。
JSONポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": [
"arn:aws:iam::<12桁の監視対象のAWSアカウントID>:role/<Step 3で作成したActiveGate用のロール (Dynatrace_ActiveGate_role)>",
"arn:aws:iam::509560245411:root"
]
},
"Condition": {
"StringEquals": {
"sts:ExternalId": "<Step 1で取得した外部ID>"
}
}
}
]
}
更新が完了したら、ポリシーを更新をクリックします。
Step 5. ActiveGateへロールの適用
AWSコンソールからEC2を開き、ActiveGateのインスタンスを選択します。
アクション > セキュリティ > IAMロールを変更をクリックします。

Step 3で作成したActiveGate用ロールを選択して、保存をクリックします。

Dynatraceとの接続
Connection nameにどのような任意の名前(どのようなアカウントなのかわかりやすいもの)を入力し、IAM role that Dynatrace should use to get monitoring dataに作成した監視用ロール名を、Your Amazon account IDに監視対象のAWSアカウントIDを入力します。最後に接続ボタンをクリックすることでAWSに接続し、監視が始まります。
以上の操作で、AWSの主要な機能に関する監視が行われます。
オプション設定
リソースタギング
以前の記事でも記載したように、AWSのタグを利用することで、監視する対象を制限でき、AWSに対するAPIコール数を制限することが可能です。
AWSコンソールから対象となるリソースに対して、タグを指定します。ここではキーにmonitor_dynatrace、値にtrueを設定しています。

設定 > Cloud and virtuallzation > AWSと進んで、先ほど作成した設定の右側にあるペンシルアイコンをクリックします。

Resource to be monitored欄をMonitor resources selected by tagsに変更し、主要と値にAWSの監視対象と同一のものを入力し、保存ボタンをクリックします。

ここで設定したキーと値が一致したリソースのみを監視するようになります。
サポートサービスの追加
ActiveGateを用いたAWSの監視のメリットはEC2やEBS、ELB、RDSなどの主要なサービス以外の様々なAWSサービスのメトリックを取得可能な点です。DynatraceがサポートしているAWSサービスについては以下から確認ができます。
AWS supporting service metrics
Dynatraceでは選択したサービスに対してAWS CloudWatchのメトリクスを選択して取得することができるため効率よくデータを取得できコスト削減につなげることができます。
リソースタギングと同様に設定したAWSの画面を開き、サポートサービスからAdd serviceボタンもしくはManage servicesボタン(一度、serviceを追加したらManage servicesに変わります)をクリックします。

Select service to be monitored...フィールドから監視したいサービスを選択し、Add serviceボタンをクリックします。

Add serviceボタンをクリックし、監視したいサービスを全て登録したら変更の保存ボタンをクリックします。

インフラストラクチャ > AWSを開き、作成したAWS名をクリックすることでAWSの監視画面を開きます。サポートサービスをクリックすることで先ほど設定したサービスを監視していることが確認できます。

これらのサービスをクリックすることで、詳細を確認することが可能です。
取得するメトリックの編集
再度、設定 > Cloud and virtuallzation > AWSと進み、AWSの設定画面を開きます。サポートサービスの下のManage servicesをクリックします。

監視しているサービスの一覧が表示されるので、メトリックを編集したいAWSサービスの名前をクリックします。

メトリックを追加する場合は、メトリックの追加ボタンを削除する場合は、該当メトリックの×アイコンをディメンションなどの変更を行う場合は、下矢印アイコンクリックします。

追加したいメトリックを選び、Choose dimension(s)からディメンションを選択し、メトリックの追加ボタンをクリックします。


アラートのためのメトリックイベントの設定
サポートサービスで追加取得したメトリックについても、アラートの設定をすることが可能です。Dynatraceではあらかじめ推奨のアラートルールが定義されておりそれを有効にするだけで、細かい閾値の設定などは必要ありません(もちろん閾値を変更することも可能です)。
設定 > Cloud and virtuallzation > AWSと進み、AWSの設定画面を開き、Manage alerting rulesボタンをクリックします。

監視しているサポートサービスの内容に応じた推奨のアラートルールが表示されます。全てのルールを作成する場合はCreate all recommended alerting rulesボタンをクリックします。

特に保存ボタンなどはなく有効になります。個別に設定を変更したい場合はアラートルール名をクリックすることで閾値などを変更可能です。

まとめ
今回はActiveGateを利用したDynatraceによるAWSの監視の設定方法について紹介しました。ActiveGateを利用することで監視の幅が広がりますので、ぜひご活用いただければ幸いです。
また、AWSの監視についてはEC2インスタンスにOneAgentをインストールすることで、自動でAWSのタグをホスト情報に紐付けてくれたりするので、AWS上でアプリケーションを展開しているのであればぜひ導入を検討してみてください。







