こちらの手順は古くなっているため、新しい設定手順をまとめ直しました。
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上でアプリケーションを展開しているのであればぜひ導入を検討してみてください。