LoginSignup
2
0

ActiveGateを利用したDynatraceによるAWSの監視

Last updated at Posted at 2022-02-28

こちらの手順は古くなっているため、新しい設定手順をまとめ直しました。

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を利用する必要があります。

設定の流れ

  1. ActiveGate の構築
  2. AWS監視用ポリシーの作成
  3. AWSロールの作成
    1. AWS監視用ロールの作成
    2. ActiveGate用ロールの作成
  4. AWSアカウントとDynatraceの接続

オプションで以下を設定していきます。

  1. AWSのリソースタギング
  2. サポートサービスの追加
  3. アラートのためのメトリックイベントの設定

詳細な設定は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など)を設定します。
ポリシーの作成をクリックし、ポリシーを作成します。
image.png

AWSロールの作成

AWSロールを作成するには以下が必要になります。

  • DynatraceのAWSアカウントID: 509560245411
  • ActiveGate をホストしているAWSアカウントID
  • 監視対象となるAWSアカウントID
  • 外部ID

Step 1. 外部IDの取得

AWSロールを付与するための外部IDを取得します。
DynatraceのGUIにログインをし、左のメニューからの一番下にある管理 > 設定を開きます。

image.png

Cloud and virtualization > AWSを開きます。
image.png

Connect new instanceをクリックします。
image.png

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

Step 2. 監視用ロールの作成

監視対象のAWSアカウントに監視用ロールを作成します。もし、複数のAWSアカウントを監視する場合はこの手順を監視対象のAWSアカウント全てで行います。

AWSコンソールからロールのページに行き、ロールを作成をクリックします。

信頼されたエンティティタイプにはAWSアカウント > このアカウント(***)を選びます。外部IDを要求するにチェックを入れ、外部ID欄にStep 1.で取得した外部IDをペーストし、次へをクリックします。
image.png

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

Step 3. ActiveGate用ロールの作成

監視用ロールを作成したら、ActiveGateに割り当てる用のロールを作成します。

AWSコンソールからロールのページに行き、ロールを作成をクリックします。

AWSのサービス > EC2を選び、次へをクリックします。
image.png

許可ポリシーは何も設定せずに次へをクリックします。

ロール名にはわかりやすい名称(Dynatrace_ActiveGate_roleなど)を入力し、ロールを作成をクリックします。

image.png

作成した ActiveGate用ロール(Dynatrace_ActiveGate_role)を開き、インラインポリシーを作成をクリックします。
image.png

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など)を入力し、ポリシーの作成をクリックします。

image.png

Step 4. 監視用ロールへの信頼ポリシーの編集

Step 2で作成した監視用ロール(Dynatrace_monitoring_role)を開き、信頼関係タブから信頼ポリシーを編集をクリックします。

image.png

信頼ポリシーを編集画面で以下の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ロールを変更をクリックします。
image.png

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

Dynatraceとの接続

Connection nameにどのような任意の名前(どのようなアカウントなのかわかりやすいもの)を入力し、IAM role that Dynatrace should use to get monitoring dataに作成した監視用ロール名を、Your Amazon account IDに監視対象のAWSアカウントIDを入力します。最後に接続ボタンをクリックすることでAWSに接続し、監視が始まります。

image.png

以上の操作で、AWSの主要な機能に関する監視が行われます。

オプション設定

リソースタギング

以前の記事でも記載したように、AWSのタグを利用することで、監視する対象を制限でき、AWSに対するAPIコール数を制限することが可能です。

AWSコンソールから対象となるリソースに対して、タグを指定します。ここではキーにmonitor_dynatrace、値にtrueを設定しています。
image.png

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

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

ここで設定したキーと値が一致したリソースのみを監視するようになります。

サポートサービスの追加

ActiveGateを用いたAWSの監視のメリットはEC2やEBS、ELB、RDSなどの主要なサービス以外の様々なAWSサービスのメトリックを取得可能な点です。DynatraceがサポートしているAWSサービスについては以下から確認ができます。

AWS supporting service metrics

Dynatraceでは選択したサービスに対してAWS CloudWatchのメトリクスを選択して取得することができるため効率よくデータを取得できコスト削減につなげることができます。

リソースタギングと同様に設定したAWSの画面を開き、サポートサービスからAdd serviceボタンもしくはManage servicesボタン(一度、serviceを追加したらManage servicesに変わります)をクリックします。
image.png

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

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

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

取得するメトリックの編集

再度、設定 > Cloud and virtuallzation > AWSと進み、AWSの設定画面を開きます。サポートサービスの下のManage servicesをクリックします。
image.png

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

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

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

最後に忘れずに変更の保存ボタンをクリックします。
image.png

アラートのためのメトリックイベントの設定

サポートサービスで追加取得したメトリックについても、アラートの設定をすることが可能です。Dynatraceではあらかじめ推奨のアラートルールが定義されておりそれを有効にするだけで、細かい閾値の設定などは必要ありません(もちろん閾値を変更することも可能です)。

設定 > Cloud and virtuallzation > AWSと進み、AWSの設定画面を開き、Manage alerting rulesボタンをクリックします。
image.png

監視しているサポートサービスの内容に応じた推奨のアラートルールが表示されます。全てのルールを作成する場合はCreate all recommended alerting rulesボタンをクリックします。
image.png
特に保存ボタンなどはなく有効になります。個別に設定を変更したい場合はアラートルール名をクリックすることで閾値などを変更可能です。
image.png

まとめ

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0