DynatraceによるAWSの監視の始め方


はじめに

Dynatraceと言えばアプリケーションモニタリング管理ツールとして有名ですが、AWSなどのクラウドインフラを監視することも簡単に行うことができます。
完全に自動化されたAIがAWSにおけるクラウドインフラ環境を完全に可視化することが可能です。
絶えず変化・更新されるクラウドインフラ環境においてDynatraceは自動でその更新に追従します。またOneAgentというエージェントをEC2などのホスト上に展開することでAIエンジンは問題点を見つけるだけでなくその解決策までも提供してくれます。
これらの機能により、従来の運用監視に割かれていたリソースをより生産的な仕事に割り振ることが可能となりビジネスの拡大に繋げることが可能となります。

本記事では、DynatraceによるAWSの監視方法について紹介していきたいと思います。

15日間の無料トライアルを利用することができるので、自分の環境でも簡単に試してみることができます。
Dynatraceフリートライアル

Dynatraceで監視可能なAWSリソース

DynatraceとAWSが連携することによるメリットについては以下の公式サイトに詳しく書かれているのでそちらに譲りたいと思います。

AWS監視|Dynatrace

DynatraceではEC2インスタンスだけでなくAmazon ECS、AWS Lambda、AWS Fargate、Amazon EKSをはじめとした多くのサービスを監視することが可能です。
サポートしているサービスについては以下のサイトから確認することが可能です。

AWS supporting services

設定の流れ

大まかな流れは以下のようになります。

  1. AWS監視用ポリシーの作成
  2. アクセス方法の選定
    1. アクセスキーによるアクセス
    2. ロールベースによるアクセス
  3. タグを用いた監視リソースの設定(オプション)

監視のための操作は基本的にはAWSのコンソールが中心であり、Dynatrace側で必要な設定は多くありません。

AWS監視用ポリシーの作成

マネジメントコンソールからIAMのページを開きます。
ポリシーのページに行き、ポリシーの作成をクリックします。
JSONタブを選び、以下のjsonポリシーを貼り付けます。

JSONポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "apigateway:GET",
                "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など)を設定します。
ポリシーの作成をクリックし、ポリシーを作成します。

アクセス方法の選定

Dynatraceの環境からAWSへアクセスする方法については以下の2つがあります。

  1. Dynatrace用のアクセスキーを利用したアクセス(キーベースアクセス)
  2. Dynatrace用のロールを利用したアクセス(ロールベースアクセス)

本記事では、ロールベースアクセスによるアクセス方法について試したいと思います。

すでにDynatrace を利用していて、AWS EC2にActiveGateを展開している方もいらっしゃるかもしれませんが、今回はActiveGateがないという前提で進めたいと思います。

外部IDの取得

DynatraceのAWSアカウントにロールを付与するため、外部IDを取得します。

DynatraceのGUIにログインをし、左側ナビゲーションパネルの一番下にあるSettingsをクリックします。

Settingsメニューが表示されるのでCloud and virtualizationを選び、AWSをクリックします。

Connect new instanceをクリックします。

Authentication methodをRole-based authenticationに変更し、Tokenの横のCopyをクリックします。
showをクリックすることで実際の値を確認することも可能です。

この画面は後ほど戻ってきますので、このままにしておきます。

ロールの作成

再び「IAM」のページを開きます。
ロールのページに行き、「ロールの作成」をクリックします。
「別のAWSアカウント」を選択し、アカウントIDにはDynatraceのアカウントID(509560245411)を入力し、外部IDが必要にチェックを入れ
Dynatraceの画面でCopyした外部IDを貼り付けます。

先ほど作成ポリシーをロールにアタッチします。タグについては任意で設定します。

ロール名にはわかりやすい名称(Dynatrace_monitoring_roleなど)を設定します。
ロールの作成をクリックし、ロールを作成します。

タグの追加

DynatraceではAWSリソースの全てを監視することも可能ですが、監視対象を本番環境だけにしたいことがあると思います。その場合はリソースに任意のタグ(dynatrace_monitoringなど)を追加します。

AWSアカウントとDynatraceの接続

Dynatraceの画面に戻ります。
Connection nameにわかりやすい名前を付けます。
IAM role that Dynatrace should use to get monitoring dataに先ほどAWSで作成したロールを指定します。
Your Amazon account IDにはアクセスしたいAWSアカウントIDを指定します。
Resources to be monitoredには全てを指定するか特定のタグが付いているリソースのみを対象にするか選ぶことができます。
Monitor resources selected by tagsを選んだ場合は、リソースに指定したタグのKeyとValueを指定します。
全て設定が完了したらConnectをクリックします。

問題なく接続ができたら左側のナビゲーションパネルからMonitor AWSを選択することで先ほど登録したものが表示されるはずです。
さらに表示されたタイルをクリックすることで詳細情報が確認できます。

お疲れ様でした。これでDynatraceによるAWSの監視が可能になりました!

まとめ

今回はDynatraceによるAWSの監視の始め方について紹介しました。
複雑な操作なしに非常に簡単に監視を始めることができるのがお判りいただけたかと思います。
次回はさらに個別のリソースに対してDynatraceではどのような情報を確認することができるかなどを紹介したいと思います。

最後に

Dynatraceは5月11日(火)、12日(水)に行われるAWS Summit Onlineにグローバルスポンサーとして参加いたします。
バーチャルブースでは、可観測性、自動化、AIに関するホワイトペーパー、デモ動画などをご覧いただくことができます。

  • AWSクラウドの運用とトラブル対応の効率化
  • お客様導入事例
  • AIOpsの正しい活用法
  • AWSクラウド移行のためのソフトウェアインテリジェンス

ぜひAWS Summit Online Dynatrace Virtual Booth までお越しください。